Friday, January 25, 2019

Class: JSONObject not found in namespace - Solution

When you run the jmeter and if you see the error - Class: JSONObject not found in namespace

This mean that you dont have the class in jmeter lib you mentioned in the BeanShell script. To fix this copy the jar needed and paste it under lib folder in jmeter and restart it.

Download json jar from here - https://github.com/stleary/JSON-java

Thursday, January 24, 2019

How to get response data using BeanShell post possessor

In the BeanShell post possessor the script section has the following -

ctx, vars, props, prev, data and log.

In the above, the data is byte array of the parent sampler. So we can use string class from java to construct a string from the byte array like this -

String myResponseData = new String(data);


If you want to parse json from the above string you can use the following -

JSONObject jsonObj = new JSONObject(myResponseData);

Wednesday, January 16, 2019

Curl https error

When curl says https error just change the single quote to double quote it will work.

For example -



This is windows default installed libcurl.

Monday, July 18, 2016

How to generate html report from jmeter output? ie., JTL -> HTML


How to generate html report from jmeter output? ie., JTL -> HTML


Steps
1) Find and replace the special characters in the jtl file.

Making use of vim find and replace commands will replace all special characters like &#xw;, &#xww;, &#xwww;, &#xwwww; and &#x12123 with empty space. This step have to be done because xsltproc will not work if these characters present.

vim -c ":%s/&#x\w;//g" -c ":wq" log.jtl
vim -c ":%s/&#x\w\w;//g" -c ":wq" log.jtl
vim -c ":%s/&#x\w\w\w;//g" -c ":wq" log.jtl
vim -c ":%s/&#x\w\w\w\w;//g" -c ":wq" log.jtl
vim -c ":%s/&#x0//g" -c ":wq" log.jtl
vim -c ":%s/&#x\d+//g" -c ":wq" log.jtl

2) Execute xsltproc command using the attached style sheet Jmeter-Results-Details.xsl.

xsltproc Jmeter-Results-Details.xsl log.jtl  > output/result.html

Here log.jtl is the jmeter result file. The result.html is the converted html file we want.

Note:

A) The steps are for linux machine. If you have a windows machine the utility xsltproc can be installed separately and find and replace can be done using any document editing software.

B) Style sheet used - XSLT Style Sheet for JTL to HTML

Monday, January 16, 2012

How to start chrome browser using selenium webdriver?

For starting the chrome browser follow the instructions here - http://code.google.com/p/selenium/wiki/ChromeDriver

If you find it is difficult then dont worry just download the appropriate driver associated with your OS and then use the following code -

System.setProperty("webdriver.chrome.driver","path/to/chromedriver.exe");

It is the path to your downloaded chromedriver.exe

If you have a certificate warning for your product which uses https then use the following code -

       System.setProperty("webdriver.chrome.driver","path/to/chromedriver.exe");
        DesiredCapabilities dc = DesiredCapabilities.chrome();
        String[] options = { "--ignore-certificate-errors" };
        dc.setCapability("chrome.switches", Arrays.asList(options));
        return new ChromeDriver(dc);

Internet explorer is not starting using selenium webdriver. Message : Protected Mode must be set to the same value

If internet explorer is not starting using selenium webdriver and shows the error message says that "Unexpected error launching Internet Explorer. Protected Mode must be set to the same value (enabled or disabled) for all zones. "

Create a desired capabilities instance and use it while creating the internet explorer driver. This is what the configuration done for this error as per the docs in selenium wiki. selenium help wiki link - http://code.google.com/p/selenium/wiki/InternetExplorerDriver
Required Configuration

    On IE 7 or higher on Windows Vista or Windows 7, you must set the Protected Mode settings for each zone to be the same value. The value can be on or off, as long as it is the same for every zone. To set the Protected Mode settings, choose "Internet Options..." from the Tools menu, and click on the Security tab. For each zone, there will be a check box at the bottom of the tab labeled "Enable Protected Mode".
    The browser zoom level must be set to 100% so that the native mouse events can be set to the correct coordinates.

Even if it does not start the browser, create a desired capabilities instance and set ingnore flakiness boolean to true. Here is the code for code for ignoring the the protected mode security for all zones.
   
    DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
 capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
        WebDriver driver = new InternetExplorerDriver(capabilities);

Thursday, May 19, 2011

How to download java sources using ant?

How to download java sources using ant?

It is very easy to download the source files using ant. For that you have to add a target which logins to the cvs using the cvspass tag. First set the property cvs.root to the actual cvs root. You can get this value in "Root" file under CVS folder in the source directories.

Step 1:

        <property name="cvs.root"   value=":pserver:anonymous@product-server:/url/of/the/product" />


Now add a target which logins to the cvs -

Step 2 :

<target name="cvslogin" description="Log in to CVS">
                <echo message="Setting Password for : ${cvs.root}" />
                <cvspass cvsRoot="${cvs.root}" password="anon"/>
</target>


The cvspass tag will look into the file ".cvspass" by default in windows xp it will look at "C:\Documents and Settings\jerald\.cvspass".

Step 4:

Check the .cvspass file for the cvs.root value ie., ":pserver:anonymous@product-server:/url/of/the/product" is present. If not open up a command prompt and login to cvs by issuing the following commands.

C:\>set cvsroot=:pserver:anonymous@product-server:/url/of/the/product

C:\>cvs login
Logging in to :pserver:anonymous@product-server:2401:/url/of/the/product
CVS Password:

Step 5:

Add another target to download the source code. You can also download the source from the same target but am separating this login target for clarity. Here is the target for downloading the source -

    <target name="downloadsource" depends="cvslogin">
                <cvs cvsRoot="${cvs.root}" package="product/package1" dest="${destinationdirectory}" />
    </target>


Possible errors:

1)  If you see any error "[cvs] Empty password used - try 'cvs login' with a real password" then the problem is there is no entry in ".cvspass" file. Do the step 4 and check the entry is added in the ".cvspass" file. Also do remember the ".cvspass" file is created when "cvs login" is invoked for the first time. If there is a change in cvsroot then a new line is added in that file. It is stored in this file for later access to the repository.

2)  If you see " cvs checkout: warning: unrecognized response `'ssh' is not recognized as an internal or external command,....." then check the correctness of cvs root string. Ie., ":pserver:anonymous@product-server:/url/of/the/product" some times you may miss the ":" or spelling mistakes.