When using the GetTransactionName function the return value is returned in UPPERCASE. For example, in the following code transaction TMain var sTranName : string; begin sTranName := GetTransactionName(); sTranName will contain the value "TMAIN" not "TMain" This is a known issue and is scheduled to be fixed
↧
Wiki Page: GetTransactionName ( ) function does not return the correct transaction name ?
↧
Wiki Page: Goal Session Time and Baseline Session Time differ within the 'Calculate the Virtual Users' Workflow screen
When you accept the Baseline Results within Silk Performer, the Baseline Session Time and the Goal Session Time should be similar within the 'Calculate the Virtual Users' screen. Each time you accept a new set of Baseline results, the subsequent 'Baseline Session Time' and 'Goal Session Time' should also be updated. However, a known issue exists that on some instances the 'Goal Session Time' will stay static from a previous baseline run. A workaround to the problem is to alter the 'Goal Session Time' within the 'Calculate the Virtual Users' screen, so that it is similar to the Baseline Session Time or meets the requires which you set. The 'Goal Session Time' is utilized by the formula within the 'Calculate the Virtual Users' screen to determine Sessions Per Peak Hour and Max VUsers. The Goal Session Time is not static and can be configured based on your requirements. For example, if you are returned a value of 1.20 s for the Baseline Session Time and you feel that 1.30s would be a suitable session time, the Goal Session Time can be configured to this requirement, using the Static and Dynamic Thinktime options within the 'Calculate the Virtual Users' dialogue. The static and dynamic thinktime options modify the thinktimes by adding a static or dynamic think factor to the scripted value to reach specific goal session times. For a fuller understanding of this please see How do I set up a test workload so that the arrival rate remains constant at x transactions per second
↧
↧
Wiki Page: Graphs missing from print preview of overview report
When clicking on Print Print Preview in an overview report sometimes graphs may be missing from the preview and also from the print job. The same may apply when printing to a file like a pdf. To print or to show in print preview Slowest Actions (Action Time) graph (and some other histograms) you have to: 1) Run Print Preview dialog for overview report 2) Click Page Setup icon 3) Check "Print Background Colors and Images" in the Page Setup dialog
↧
Wiki Page: How can I configure SilkPerformer so that I minimize risk of data loss due to connectivity issues with remote (WAN) agents?
LoadTest data may be lost from Remote agents if there are connectivity problems. Such problems are typified by errors such as: Loadtest Controller - 3223: Agent connection lost When running a load test. In order to avoid such issues it is important to use the correct SilkPerformer settings for the Agent and to minimize traffic between the Controller and Agent(s) during the load test. During the load test each time the monitor panel within the Controller, or the Controller data source within Performance Explorer refreshes, a roundtrip to all SilkPerformer agents is required. Changing of these settings results in less data during real-time monitoring of loadtest progress. Nevertheless, all data will still be available for analysis after the test. Configuring SilkPerformer First, for remote agents it is important to use SilkPerformer WAN settings. Secondly, when running a loadtest you should reduce agent-controller communications to help reduce risk of connectivity problems. 1 Add and configure the remote WAN Agent(s): 1.1 Add the agent Open SETTINGS | SYSTEM | AGENT POOL tab Click Add WAN Agent Enter the hostname or IP Address and configure any additional settings as required. Details for additional settings should be obtained from your LoadTesting System Administrator. To check the Controller can communicate with the Agent click Check connection. If any problems are reported review the settings and retry. 1.2 Configure the Agent Open SETTINGS | SYSTEM | CONTROL tab In the Remote agent connection frame check the radio button WAN Click OK 2. Configure the Controller to minimize communications during the loadtest 2.1 Optimize the SilkPerformer Monitor to reduce Controller-Agent communications In the monitor window of SilkPerformer set the Data collection interval of the monitor to "Manually". The default setting for this is 1 sec. To check status during the loadtest click the Refresh Now button. Deselect the button "Display all Errors of all Users" in the Toolbar of the monitor window. By default this is selected. Do not check "Show output of WebUser..." in the context menu of the virtual user view of the monitor window during. By default this is not checked. 2.2. Optimize Performance Explorer to minimize communications during the loadtest Do not monitor the SilkPerformer Controller data source (Active users, Transaction Rate, Hits/s etc). By default these are monitored. To stop monitoring you can choose Remove Data Source from the context menu in Performance Explorer.
↧
Wiki Page: How can I configure SilkPerformer to add custom BDH files to a Source Control database?
If you wish to add custom BDH (include) files to a Source Control system such as Microsoft's VSS there are a number of steps which need to be implemented before this is possible. Ensure the Source Control client software is installed on the SilkPerformer MMC machine, and that it can connect to the Source Control Database correctly outside of SilkPerformer. In SilkPerformer go to SETTINGS | SYSTEM | WORKBENCH | SOURCE CONTROL Tab Ensure the GENERAL SETTINGS for source control are configured correctly - that Source Control Integration is enabled. Add the SCC path: CUSTOM FILE SETTINGS | CUSTOM INCLUDE FILES In the SilkPerformer Project Pane right-click on the include file in the "Include Files" tree note and and select "Add to Source Control". Please note that you can only add "custom" BDH files to Source Control, standard SilkPerformer BDH file such as WebApi.BDH cannot be added. Select the check box for the BDH file you wish to add to source control and then press ADD. See also SilkPerformer Help section "Source Control" - Overview of Source Control Integration. Source Control Integration was added in SilkPerformer 7.2.
↧
↧
Wiki Page: How can I configure SilkPerformer to use a PAC file during replay?
The release of SilkPerformer 2007 saw the introduction of automated support for the use of PAC files during replay. To take advantage of the new capability in SilkPerformer go to: SETTINGS | ACTIVE PROFILE | REPLAY | WEB | PROXY and enable the radio button named 'Automatic Proxy Configuration URI' before specifying the location of your PAC file. The location of the PAC file may be a web location like http://localhost:81/proxy.pac or it may be a file location like "C:\temp\proxy.pac". There is also a corresponding BDL function 'WebSetProxyAutoConfigFile' which provides the same capability (see the SilkPerformer Help for further details). If you are using an earlier version of SilkPerformer (a release prior to SilkPerformer 2007) then please refer to the information below: ---------------------------------- Note: There is an update available for SilkPerformer 7.3.1 (SP731_Patch_06_ProxyList) which enhances the WebSetProxy function with a domain parameter. For details please review the following resolution: How can I specify a domain parameter or a wildcard character in the WebSetProxy function? Browsers may use a Proxy Automatic Configuration script (PAC) for connection through specified proxy servers. This PAC file allows you to specify the location of many different proxy servers. For MS Internet Explorer this is specified in: TOOLS | INTERNET OPTIONS | CONNECTIONS | LAN SETTINGS | Use Automatic Configuration script. On record, the PAC script is accessed by the browser to find the proxy server required for each URL requested. Only the actual request is recorded by SilkPerformer. On replay, SilkPerformer does not read the PAC file to find the proxy server to use. Therefore the proxy server hostname and port must be specified in SilkPerformer, this can be done by going to: SETTINGS | ACTIVE PROFILE | REPLAY | WEB | PROXY then selecting the radio button "Connect simulated browsers through a proxy server" and entering the Hostname/IP address and Port Number of the proxy server to be used for replay. However please be aware that unlike the PAC file in the browser SilkPerformer only allows you to specify a single proxy server:port for each of the protocols. Alternatively, you could specify multiple proxy servers in the script using the function WebSetProxy to simulate the options provided in the PAC file. For example, if SERVER := "US" then WebSetProxy(WEB_PROXY_HTTP, "USProxy", 80); elseif SERVER := "Europe" then WebSetProxy(WEB_PROXY_HTTP, "EuroProxy", 80); end; You can use the PAC file to locate the proxy server required by the SilkPerformer Replay Engine. The PAC is normally a text file which can be edited with any text editor.
↧
Wiki Page: How can I configure the Overview Report so that German umlaut characters are displayed correctly?
By default strings which contain umlaut characters will appear corrupted in SilkPerformer's Overview Report. This is because the Overview Report uses "Western Europe" character encoding. This default encoding can be changed to allow umlaut characters to be displayed correctly. In the Overview Report RIGHT-CLICK | Select ENCODING | Select UNICODE (UTF-8) Figure 1 : Displays the corrupted string Figure 2 : Displays how to enable Unicode support: Figure 3 : Displays the string in the correct format:
↧
Wiki Page: How can I convert a decimal number to a hexadecimal number in BDL?
The following script shows one way to convert a decimal number to a hexadecimal number. It should correctly convert positive numbers between 0 and 2147483647. The script prints the hexadecimal value of a random decimal number and can be adapted as required. benchmark WebBenchmarkName use "WebAPI.bdh" dclrand rNum : RndUniN(100..6000); dclfunc // converts decimal numbers under 15 to their hex equivalent function fConvertNumToHex(i : number) : number begin if i = 0 then fConvertNumToHex:= ord('0'); elseif i = 1 then fConvertNumToHex:= ord('1'); elseif i = 2 then fConvertNumToHex:= ord('2'); elseif i = 3 then fConvertNumToHex:= ord('3'); elseif i = 4 then fConvertNumToHex:= ord('4'); elseif i = 5 then fConvertNumToHex:= ord('5'); elseif i = 6 then fConvertNumToHex:= ord('6'); elseif i = 7 then fConvertNumToHex:= ord('7'); elseif i = 8 then fConvertNumToHex:= ord('8'); elseif i = 9 then fConvertNumToHex:= ord('9'); elseif i = 10 then fConvertNumToHex:= ord('A'); elseif i = 11 then fConvertNumToHex:= ord('B'); elseif i = 12 then fConvertNumToHex:= ord('C'); elseif i = 13 then fConvertNumToHex:= ord('D'); elseif i = 14 then fConvertNumToHex:= ord('E'); elseif i = 15 then fConvertNumToHex:= ord('F'); end; end fConvertNumToHex; // converts decimal number to hex - requires function fConvertNumToHex function fConvert (i : number) : string var count : number; sTemp:string; begin count := 0; while (i 0) do count := count + 1; sTemp[count] := chr(fConvertNumToHex(i mod 16)); i := i / 16; end; fConvert := strRev(sTemp); end fConvert;
↧
Wiki Page: How can I convert a number into a float or string?
The following code shows how to convert a number into a float or string. dcltrans transaction TInit var fValue : float; nValue : number; sValue : String; begin fValue := float(nValue); //convert number to float sValue := string(nValue); //convert number to string end TInit; For more information on the conversion of data types please search for "Conversion" in the On-Line Help
↧
↧
Wiki Page: How can I convert a PKCS#12 [ pfx ] format certificate to a pem format, for use in SilkPerformer, using OpenSSL?
The SilkPerformer Active Profile | RECORD | INTERNET | RECORDING option for Recorder Server Certificate import requires .pem format. If you have a Server certificate in , for example, PKCS#12, .p12 or.pfx format, a way to change to the required .pem format using the OpenSSL libraries is to run the following in a command prompt:- Download and install OpenSSL Right click on My Computer and select PROPERTIES | ADVANCED tab | ENVIRONMENT VARIABLES Highlight the path variable and select EDIT Append value with the path to the bin directory of the OpenSSL eg "C:\OpenSSL\bin" Select START | RUN | Type "cmd" Change directory to where the pfx-file is located Execute the command: openssl pkcs12 -in -out More information can be found at:- http://www.openssl.org It is also possible to make this conversion using SilkPerformer instead of the OpenSSL libraries, please follow this link for more information:- Conversion with SilkPerformer .
↧
Wiki Page: How can I convert a Windows Performance Monitor file from .blg to .csv?
The relog.exe utility, found in the WINDOWS\System32 directory, can create new performance logs from existing performance logs. To convert a binary PerfMon log to a CSV file, use the command: relog logfile.blg -f csv -o logfile.csv Click here for information on how to How can I save performance data from Windows Performance Monitor (PerfMon)? Click here for information on how to Is it possible to convert/import CSV format to Time Series Data (TSD)?
↧
Wiki Page: How can I convert the ASCII representation of Binary data into a string containing its equivalent Hexadecimal notation?
The following code will allow you to convert a String buffer containing the binary data to hexadecimal notation benchmark BenchmarkName use "kernel.bdh" dcluser user VirtUser transactions TmyTrans1 : 1 ; dcltrans transaction TmyTrans1 var sData,sString2: string ; begin sData := "Boy"; print (sData); Bin2Hex(sData, binlen(sData), sString); print(sString2); end TmyTrans1; Output sData := Boy sString := 426F79 NB. In the function Bin2Hex if you enter binary data which is already in hexademcinal notation (i.e. "\h110022") as an input paramEter in the "sData" parameter then the function will convert the Hex data from a Binary string into a normal string (i.e. "110022").
↧
Wiki Page: How can I correct the error "compile error SEM 12: variable is not declared: Key _XXX _XXX" when using Citrix Key* functions?
This error can occur if you have copied the functions from the Help file in Silk Performer, because the format here is slightly different to that in the CitrixAPI.bdh. For example, the help file shows a function as KEY_PAGE_UP, but it should be scripted as KEY_PageUp as listed in the bdh. The following functions from Help are listed differently in the bdh: KEY_PAGE_UP KEY_PAGE_DOWN KEY_LEFT_ARROW KEY_UP_ARROW KEY_RIGHT_ARROW KEY_DOWN_ARROW KEY_NUM_LOCK To correct this you should use the functions as defined in the bdh, the script will then compile. This issue has been fixed in Silk Performer 7.2.
↧
↧
Wiki Page: How can I correct the error "FRM-92050: Failed to connect to server:/forms90/I90servlet:-1" when I try to replay my Oracle 9i application?
This is caused by the TrueLog Explorer that displays the initial Oracle Application page, trying to instantiate the Oracle Applet. This is unnecessary because the TrueLog Explorer has its own representation style for Oracle Forms/Applications windows. To prevent the applet from being instantiated go to SETTINGS | OPTIONS in TrueLog Explorer and uncheck "Applet execution":
↧
Wiki Page: How can I correctly display the Japanese characters which appear garbled in TrueLog Explorer?
The Japanese characters in the TrueLog Explorer may not display correctly, due to a different encoding being used by the installed Internet Explorer browser. To resolve the issue please try out the following steps 1. Close TrueLog Explorer 2. Open Internet Explorer and choose encoding value Japanese (shift-jis) from View | Encoding option 3. Restart TrueLog Explorer and verify that the message text is displayed correctly.
↧
Wiki Page: How can I create a "Decreasing" workload in Silk Performer?
When load testing with Silk Performer, there is a standard option to use an Increasing workload model which involves adding virtual users to a test over a specified period of time. In some circumstances, it may be desirable to use a decreasing workload, where the virtual users would begin the test at their maximum value, then gradually decrease the number of users over a period of time. This workload is not built into Silk Performer as standard, though it is still possible to create such a workload. To achieve this, you can use either the Dynamic or All-Day workload. To use the Dynamic workload, you could begin the test with the maximum number of virtual users you wish to run in the test. You can then gradually reduce the number of active users that are running in the test by using the sliding bar provided. This would be recommended for tests that will last for a relatively short period of time, as altering the number of active users is performed manually with this workload model. To use the All-Day workload, you can specify multiple points in the test where you wish the number of active users to be modified. For example, you may begin a test with 100 users, then specify this to drop to 80 users after 3 minutes, then drop to 60 users after 5 minutes, etc. To make use of this workload for a decreasing model context, you can follow an approach of starting the test with the maximum number of active users, then specify time stamps where the number of active users will be decreased. You can see an example of how this may appear in the All-Day workload below: Notice that the plotted graph of users that will be active during the test is a decreasing line. To simulate a true decreasing pattern opposite to the increasing workload pattern, ensure that "Start VUsers" value for a row is the same as the "End VUsers" value from the previous row, i.e. if one time section ended on 200 virtual users, the next time section should begin with 200 virtual users.
↧
Wiki Page: How can I create an event handler which will exit a transaction if an expected MessageBox or Window is not returned by the Oracle Forms Server?
During replay of an Oracle Forms BDF script if an expected Message Box or Window is not returned then an error message similar to following will be returned: OraForms: 5 - Handler not found, Healthy Living Demo Note: "5 - Handler not found" is the error message and "Healthy Living Demo" is the name of the MessageBox Window. During a loadtest it often does not make sense for a virtual user to continue executing the BDF script if an expected MessageBox or Window is not returned (as this will only lead to subsequent error messages being reported). Therefore it can make sense to trap this type of error and force the virtual user to exit the Transaction. The sample code below does this by first catching the error "OraForms: 5 - Handler not found", then writing the full error message (including the name of the MessageBox or Window to the Output (.wrt) file before writing a custom error message to the SilkPerformer Log files (.Err, .Log and .Rpt) and exiting the transaction. dclevent handler HandlerStopIteration var x : number; sErrorNumber : string; sFacility : string; sSeverity : string; sUsr : string; sAddedInfo : string; sErrorMessage : string; sTemp : string; begin // capture the last error message to occur during runtime x := GetLastError(0, 0, SEVERITY_ERROR, sAddedInfo); sErrorNumber := String(GetErrorCode(x)); sFacility := String(GetErrorFacility(x)); sSeverity := String(GetErrorSeverity(x)); sUsr := GetUser(); sTemp := GetErrorMsg(x); sErrorMessage := sTemp + " - " + sAddedInfo; // write error information to the output (.wrt) file writeln("===================Last Error Handled======================="); writeln("Error Nr. : " + sErrorNumber); writeln("Facility : " + sFacility); writeln("Severity : " + sSeverity); writeln("Error Msg : " + sErrorMessage); writeln("Virtual User : " + sUsr); writeln("============================================================"); // if error OraForms: 5 - Handler not found is the last error to occur then exit transaction else exit event handler and return to runtime if GetErrorCode(GetLastError()) = 5 then RepMessage("Message Box not returned; Virtual User will be Terminated", SEVERITY_TRANS_EXIT); else throw; end; end HandlerStopIteration;
↧
↧
Wiki Page: How can I create random string of a particular length?
The following code will take a number that will be used to define the number of times a loop is performed. Each time the loop is performed a new random character is added to the end of the string. benchmark BenchmarkName use "kernel.bdh" var dclrand rsletter : RndStr (1..1); dcluser user VirtUser transactions TmyTrans1 : 1; // Transactions dclfunc function FMyFunction(size : number) : string // takes a number in and returns a string var sMainString : string; count : number; randletter : string; begin for count := 0 to size do // add 1 character the number of times specified by the size parameter randletter := rsletter ; //assign randomstring into variable sMainString := Strcat(sMainString,randletter); //concatenate the letter to the current string end; //end loop FMyFunction := sMainString; writeln ("final =" +sMainString); end FMyFunction; dcltrans transaction TmyTrans1 begin fMyfunction(5); //call function with size of 5 end TmyTrans1;
↧
Wiki Page: How can I customise session-specific information hardcoded in WebPageAddUrls?
Customizing data in a WebPageAddUrl function call is similar to other functions, you simply use a variable containing the dynamic value - e.g. for a session ID: WebPageAddUrl("http://server/sessionid=0101222-5556678.gif"); WebPageUrl("http://server"... Becomes: WebPageAddUrl("http://server/sessionid="+sSessionVariable+".gif"); WebPageUrl("http://server"... A problem can arise where the value you want to parse is not available until after the subsequent page is called - making it impossible to use the WebPageAddUrl function. In this case replace the WebPageAddUrl with a WebUrl function and move it after the next function / page containing the data you need to parse. WebParseHtmlBound(sSessionVariable, ... // parse value here WebPageUrl("http://server"... WebUrl("http://server/sessionid="+sSessionVariable+".gif"); // use parsed value here It is possible to configure the SilkPerformer recorder not to use the WebPageAddUrl function see How can I suppress WebPageAddUrl calls being recorded? for details.
↧
Wiki Page: How can I customize the colors in the Overview Report?
To customise the colours in the overview report you must edit the file overview.xsl which is located in the \Working\Include folder of SilkPerformer’s home directory. NOTE: It is NOT recommended that you edit the overview.xsl as it contains code for generating the report and could be corrupted. If you need to customise the overview report you are strongly advised to make a backup of overview.xsl before you start. The default background colour for the top row of the table in the Overview Report is defined on line 658 of Overview.xsl as #59805E: This is the RGB value for the dark green colour. To change the colour this RGB value should be changed accordingly. For example, the following sets the top row background colour to black: All the colours within the overview report can be changed in this manner. The following URL gives a list of different colours and their respective hexadecimal values http://hotwired.lycos.com/webmonkey/reference/color_codes/ When adding a colour to a Web page with HTML, XML,,XSL etc it may be possible to use the name of the colour. However, it is recommended to use the RGB hexadecimal value to ensure that the browser can interpret it correctly.
↧