LoadRunner and Performance Center
Showing results for 
Search instead for 
Did you mean: 

Re: The New Virtual Table Server (VTS) in LoadRunner 11.52

NaveenKumar N

Thanks for the insight article about VTS. New VTS is rocking. Thanks to HP RnD!

0 Kudos
About the Author

NaveenKumar N

NaveenKumar N

Thanks for the insight article about VTS. New VTS is rocking. Thanks to HP RnD!

Lionel Giavelli

You're referencing a restricted internal KB into a public post...


To get more tips, you can also go to How to setup Virtual Table Server (VTS), download the previous VTS and document (it will require a HP passport account). All the old VTS APIs are supported by the new version, therefore, the API usage doc still applies.




I would like to know the maximum no. of connections that would be supported.


I am looking for testing an application which has 4000 concurrent users. Please let me know if new VTS can support these many connections.


Appreciate your suggestions!





this is a good step forward HP well done - always thought vts would be good integrated into LR

Bill Desjarlais

Can the VTS functions only be called from "C" scripts?


i.e. A .net script that generates C# can/cannot use the VTS?

Sachin Ohal

Hi Jason


Greetings for the day!


As discussed in a status call. Below article have information that ALM PC 11.52 is supported or compatible with all old VTS version. However, it is not true.





We have faced lot of issue with ALM PC 11.52 and VTS 2.12. Finally when we have upgrade the VTS to ALM VTS 11.52 all issue resolved. We request you please give your valuable time and read the article and below information




Error While running load test: This error clearly indicate the VTS version issue



 VTS Error





Need to make the changes in Script for below function for VTS 11.52



  1. Comment out the linelr_load_dll("vtclient.dll"); in your script. Also, there is no need to include the header file vts2.h in your script


  1. To connect to the VTS server, please use the below code snippet:


PVCI2  ppp;

ppp = lrvtc_connect("",8888,VTOPT_KEEP_ALIVE);//OLd VTS Server -
        lr_log_message("ppp=%d\n", ppp);
        if (ppp!=0) {
            lr_error_message("Not Able to connect to VTS Server = %d",rc);
           <Abort/Exit the Vuser>


else {

<Your Logic>



  1. To disconnect from the VTS server, please use the below code snippet:





  1. To Retrieve the value of a column use the below code snippet

int rc;

if ( (rc =  lrvtc_query_column("<VTS Table Column Name>",1))!=0)
                lr_output_message("Error Querying the column. Status =%d", rc);
                lr_output_message("Old Value is = = %s",lr_eval_string("{<VTS Table Column Name>}"));



  1. To increment the value of a column use the below code snippet

int newValue;

newValue=lrvtc_increment("<VTS Table Column Name>",1,1);

 lr_output_message("New Incremented Value is = %d",newValue);





Also AJAX Protocol issue and user is unable to



The below snippet was used (in globals section) for connecting to the new VTS; however, it was successful only for Web HTTP protocol, but failed for Ajax Click and SCript protocol.


Ajax Click and SCript throws the follwoing error while compilation: "Syntax error; found 'con' expecting ';'"


code snippet:

#include "as_web.h"


// Global Variables


#endif // _GLOBALS_H


int flagloop=0;

long fd;

char *a;


char **Address=NULL;

unsigned short status;


PVCI2 con=0;

int rc=0;

int           colSize;


char *VtsServer = "VTS Server Name Or IP ";



Sachin Ohal


Regarding the question of how many vusers one machine can support, we have tested running 5000 vusers against one VTS instance hosted on a VM machine, and it works. So the number of TCP connections is not a problem. The actual load to the VTS server depends on how frequent you make VTS API calls to the server.


The VTS currently only support "C" scripts and TruClient. It does not support NET protocol now.


I verified Ajax Click & Script on 11.52, and it can work with new VTS. For the issue you encountered, which is "Syntax error; found 'con' expecting ';'". I guess it may because the 11.52 (SP2) is not applied successfully? Because when you declare a variable with a type that is undefined, you will get this error. PVCI2 type is only defined after SP2 is applied.


Some may have problem connecting to old VTS from 11.52. This is because there is a problem in 11.52 that causes script to hang on vtc_connect when connecting to old VTS. It will be fixed in the next available patch. To work around this, please call lrvtc_noop() or vtc_noop(0) before calling lrvtc_connect, like the following:


        lrvtc_noop(  );

        lrvtc_connect( "<vts_server>", 8888, VTOPT_KEEP_ALIVE );


The lrvtc_noop operation does nothing in new vts mode, therefore calling it first won’t have any negative impact. After this API call, the initialization is done and then calling connect API will behave correctly.


Hi all,


Could anyone please provide me the link fot VTS server for LR11.52

Pete Mill

It's good to see the value of VTS being recognised and supported now.  It has been essential to our load testing for many years.


Is it possible to run multiple VTS servers on one machine using multiple port numbers using the new VTS?  If so, how is this done?  Under the old VTS I just ran multiple copies of vtconsole.exe but with different port numbers specified on the command line.  Can I do the same thing with NODE.EXE?  Can it be done on the command line or do I need to have multiple copies of configure.json?


I would give up running VTS as a service if that was what it took. I don't want to have to run a service for every instance of VTS that I need.  Under the old VTS we just run a command file for each VTS instance needed.






You can download from the following:




Click "LoadRunner 11.52 Additional Components" link under the bottom. so the VTS Server is one of the component in the package.



Regarding running multiple instances of VTS on one machine, the new VTS only enables one port per machine. We will support multiple instances in the future release. For the current release, please considering:


  •  Import all data to a single VTS if possible. There is no specific data size limit in the new VTS table, therefore importing all data should be able to work as long there is no conflicting columns.

  • The second workaround is relative complex, and descripted in the following steps:


1. Go to C:\Program Files\hp\VTS\web folder, copy the engine folder as another folder and put in the same folder. Copy it as engine1 folder.


2. Open engine1 -> configure.json file in notepad, and modify the following two keys to different value:

  • "dbPath": "C:/ProgramData/HP/VTS/db/data1",
  • "adminPort": 4001,

Notice that I changed the values above by appending “1” in each of them.


3. Open a command line, change directory to C:\Program Files\HP\VTS\web\engine1, and type command “..\node main.js”. now you run another instance of new VTS on admin port 4001, you can browse to it by typing, http://localhost:4001. And it runs side by side with your default instance http://localhost:4000.



Pete Mill

Thanks for your quick response and actions to consider.


I'm sure you'll agree both have their drawbacks compared with the original VTS solution.  Unfortunately I am experiencing the hang on vtc_connect to the old VTS server and the lrvtc_noop does not cure the problem so using 11.52 with old VTS is not possible.  We might continue using LR11.0 with the old VTS but that clearly won't be practical for too long.


We have had over a dozen scripts running in a scenario, each with its own data requirements.  To combine all these in  a single data file would be cumbersome.  


I expect that duplicating the engine folder will be our preferred option, so many thanks for the detailed description of how to do that. That will save a lot of trial and error in getting it working and with a bit of effort I can make it happen with command files.


I'm glad to hear that multiple instances is on the feature enhancement list for a future release








Hi Pete,


I hear from others that call lrvtc_noop before any connect will solve the hang problem, so not sure you still encounter it. Suggest you to raise a support ticket, so that we can trouble-shoot it for you.


One above mentioned problem in VTS 11.52, which hangs when connecting to old VTS, has been solved in Patch 1 and released. Check out the downloading page:




I have installed VTS 11.52.


The send message is giving error.


vtc_send_message( ppp,"Timestamp",lr_eval_string("{timestamp}"),&status );




RVC_Book.c(97): Error: vtc_send_message: Server error -





Hi PadPill,


Please make sure you are using new VTS syntax to when pointing to new VTS server, and use old VTS syntax to connect to old VTS server. There syntax differences are not so obvious, but important. E.g. including “vts2.h” header and load vtclient.dll is for old VTS. They are not needed for new VTS.


If you ensure the syntax is correct and pointing to the right server, you can trouble-shoot by studying the server side log, which is under %temp%\VTS, you can also view it by go to URL http://<server>:4000/data/diag/logs.


HI Silvia ,


Had a look on the new VTS ,Great work!


From the admin perspective it seems like VTS Supports basic authentication ,But as I see all the users are able to see each others data and can even delete if they want to .


Am I missing something here or is it the way it was built




Thomas Johnson

I really like the new VTS and so glad to see that it is now a fully supported application. I did read it only works with the C based scripts. I want positive confirmation that that means I will NOT be able to use it with a Java script. If that is correct, as I assume, is there any forcast on when it will be functional with the other protocols, including Java?


Tom Johnson


Hi Tom,


The new VTS does not support Java script yet. We may add support in some future release, but not in the recent LoadRunner 12.0 release. However, the communication between the LoadRunner script and VTS server is based on HTTP & JSON. Therefore, it will be not difficult for users to implement their own client in any languges they want. We have the VTS Communication Spec that describes the JSON format of the communication. You can check out the link below:


HP LoadRunner and HP Performance Center > Other Files > VTS3 Communication Specification








Can you let us know how VTS would be configured to work along with performance centre/application lifecycle managment.


Great article, helped me resolve VTS issue with LR 11.52 and i'm able to work with new UI.

Also the 11.52(SP2) pack im assuming it is 11.52 service pack 1 mentioned on the Support site since it help me solve issue with PVCI2 being unrecognised.


Great article, helped me resolve VTS issue with LR 11.52 and i'm able to work with new UI.


Also i could not find 11.52(SP2) pack and applied 11.52 service pack 1 mentioned on the Support site and it help me resolve issue with PVCI2 being unrecognised (Syntax error; found 'pvci' expecting ';')

Subrata Biswas

Only one comment. why do not have LDAP like authentication available? VTS is having basic authentication. Issue, to follow this is - if need to provide access to new member need to restart the service. where as easily it also could have implemented LDAP like authentication. Hope it will get included soonner. As per my requirement i needed to integrate it on top of VTS 11.5, Only I needed to spend more time to understand the architecture for integration where as for development it took marely 5 hours including testing. Hope HP will ingrate it sooner. I am ready to share the architecture the way I implemented it.


To answer vini05200:

You can use VTS with Performance Center, in similar way you did with LoadRunner, because it just provides a list of APIs to access the shared parameter data. If you have specific problems that you cannot solve with Performance Center, please let us know.


To vineetkhattar:

Yes, 11.52 Patch 1 is the expected client version


To Subrata Biswas:

We are still collecting requests on authentication part, to understand the common pattern of authentication in this component. The authentication in theory can be applied to either UI or API, or both. And currently, even though Admin UI can be configured to use basic authentication, the API can be used by any user to access the data. So the current authentication is not a complete protecting solution. Besides, all users authenticated (with basic authentication) can see the same data on UI. If you can provide detailed information on your usage scenario and how you expect authentication behave like, it will help us design the functionality in this area.


There are 2 ways of retrieving column (vtc_query_column and lrvtc_query_column).

We are able to populate data but not able to retrieve it using rvtc_query_column


VTCERR/VTCERR2 is not called explicitly how do we make the change


There are 2 ways of retrieving column (vtc_query_column and lrvtc_query_column).
We are able to populate data but not able to retrieve it using rvtc_query_column


It was mentioned make VTCERR to VTCERR2 since VTCERR is not called explicitly, any other way to ensure this change gets reflected.


does VTS work with RTE protocol?


Great feature, glad to see it is now officially supported by LR R&D

Currently, there is only one VTS table. For my performance test framework, I need to have multiple tables to be used by different scripts/Vusers

I can implement virtual tables within the same VTS table, but I would like to know if there is perhaps some build in way to implement multiple VTS tables in LR/PC

If not, is this planned in the future releases?


Thank you,




Hi Jason,


As a response to one of the comments, you provide a workaround to create multiple instances of VTS "

2. Open engine1 -> configure.json ... you can browse to it by typing,http://localhost:4001. "


How do I access those other instances of VTS via LR API?


Thank you,



Hi, When I'm trying to run my VTS script (old verion) ; some how Aafter the server is connected and the data is imported from XL (saved as CSV) ; the script is not abe to read the toaal row count from the VTS input table.

will appriciate a quick resposne.



VTS has an API to query total row count for a particular column, which is vtc_column_size (or lrvtc_column_size). Are you using this one, and what's the problem calling it? If you need some more prompt response, please submit a ticket so that we can help you directly.


Hi All,




We are using LoadRunner 11.52 for load testing. We implemeted VTS server to store key values.


Here, The script which connects to VTS server is working fine under localhost machine i.e where controller & VTS server is installed.


But, if we run the script in load generators getting an error as following.


vuser_init.c(15): Error: lrvtc_connect: Failed to connect server. Please check the server name, port number, network connectivity or whether server above 11.52 version is started. 


Load Generator is outside the network and connected through MI Listener.


Observation: http://localhost:4000/ is working when we accessed using browser. (replace localhost with controller or VTS server machine ip address) 


Note: Disabled Windows Firewall in all th machines. (controller, mi listener, load generator)


Please help us in resolving this issue.





For the connectivity problem, there is a list of things to check, for example:


  1. Whether you have enabled the API access from the web UI.
  2. Whether the firewall of the API port (e.g. 8888) has been disabled, to allow connecting from LG
  3. http://localhost:4000/ is the web UI port, API access VTS using a different port(default is 8888), please check you are using the correct port in script
  4. Whether you have replaced "localhost“ with the real server name


Try to access the API port in browser of the LG machine, for example http://<server>:8888/, you should see something like "Hello from Connect", which indicate the port is listened by VTS. If you cannot return a valid HTTP response, you should trouble-shoot the server side.


If still doesn't work, please try HP support.


theja p

hi i wanted to prepare a script for 


  • Connect to a VTS server (any mechine name)
  • Write at least 2 entries to a new or existing column in VTS
  • Read at least 1 entry from this column
  • Disconnect from the VTS server


can any one please help me out in this


Thanks in ADV



Is this VTS useful for SAP Application Performance Test? I think this is even more complicated compare to existing parameters functionality - As of now tester identify uniquness and dependance of data in SAP application him/her self. How VTS can be useful to identify unique data and data dependancy? If I am executing a test which has 2-3 interdependant transaction, Can this VTS handle it?


How to apply the  parameter settings using VTS such as Sequential-Each iteration , Random -.Each iteration ,Unique->Once ,Uique->each iteration etc.. ?  do we have a API to use these parameter settings ? if so could you please help me to get this implemented with different settings ?




Hi HP expert


I am trying to implement VTS in one of my web services scripts and i was successful. 


Later i was trying to implement VTS into a java protocol but i couldnt .


Does HP support VTS now in any of it recent releases


Please help me if there is any documentation to implement VTS in JAVA protocol

June 6 - 8, 2017
Las Vegas, Nevada
Discover 2017 Las Vegas
Join us for HPE Discover 2017 in Las Vegas. The event will be held at the Venetian | Palazzo from June 6-8, 2017.
Read more
Each Month in 2017
Software Expert Days - 2017
Join us online to talk directly with our Software experts during online Expert Days. Find information here about past, current, and upcoming Expert Da...
Read more
View all