Gatling and XPath problems - xpath

Using IntelliJ and a xml soap response, I get a xpath generated that is unique using IntelliJs built in functionality.
Putting this into gatling scala script
val scn = scenario("RuleEngineSimulation")
.exec(http("request_0")
.post("/EngasjementBasisA2A")
.headers(headers_0)
.body(RawFileBody("RuleEngineSimulation_request.xml"))
.basicAuth("test234","test234")
.check(xpath("/SOAP-ENV:Envelope/SOAP-ENV:Body/e:HentRisikoOversiktResponse/ef:engasjementOversiktRisikoer/ef:risikogrupper/ef:risikogruppe/ef:risikoer/ef:risiko/ef:partref/text()").saveAs("partref")))
Running this gives me the following:
Namespace prefix 'SOAP-ENV' has not been declared
Please advice.
Thanks
Magnus

Related

Unable to locate element using HtmlUnit and WebDriver on Spring Boot

Same title question already exists, however the environment seems to be different.
I'm trying to execute Spring Boot Web MVC test using MockMvc and WebDriver, so I don't need to run Selenium Server.
I created sample project on GitHub as public repository.
I try to impelent the code referencing Spring Framework Document and Spring Boot Document.
The test code works when using MockMvc and HtmlUnit (MessageControllerMockMvcAndHtmlUnitTest.java).
However, when I execute the test using MockMvc and WebDriver (MessageControllerMockMvcAndWebDriverTest.java), the error occurs as follows:
java.lang.IllegalStateException: Unable to locate element by name for com.gargoylesoftware.htmlunit.TextPage#~
Does anyone know what is wrong and how to fix it?
I finally solved the problem by myself.
I just made 2 mistakes.
I misstyped the URL (messages not messagges)
I tried to operate hidden element. So I need to operate by JavaScript.
before (wrong)
this.id.sendKeys(id);
after (correct)
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
javascriptExecutor.executeScript("document.getElementById('id').value = '" + id + "';");

How to test Database methods in Apache jmeter?

I am trying to test some JDBC methods using apache jmeter like getFunctions. I have successfully created DB connection and executed a query to create one function.
Now I wanted to test the output of getFunctions method. For this I am using JDBC Request Sampler. I have done below configuration for the JDBC request Sampler to test this method
When I run this Test I am getting below error
Response message: java.sql.SQLSyntaxErrorException: [XXXX][SQLServer JDBC Driver][SQLServer]Line 1: Incorrect syntax near 'NULL'.
I tried 'NULL' , "NULL" and $NULL$ but all are giving same exception.
Can someone please guide me how can I test such methods using JDBC request in Apache Jemeter
As far as I can see from getFunctions() method description it is applicable to DatabaseMetaData therefore unfortunately you won't be able to use JDBC Request sampler for testing this method.
The solution would be switching to JSR223 Sampler and Groovy language, the relevant code would be something like:
def conn = org.apache.jmeter.protocol.jdbc.config.DataSourceElement.getConnection('foo')
def resultSet = conn.getMetaData().getFunctions(null,null,null)
Demo:

spring-integration-dsl-groovy-http return null when i use httpGet method

I use spring integration 4.1.4 and spring integration dsl groovy 1.1.0
I included spring integration core, http in dependency.
When i am executing spring integration dsl groovy http sample, it throwing null value in console. I am not sure what i missed.
Here is my code looks like
IntegrationBuilder builder = new IntegrationBuilder("http");
def flow = builder.messageFlow {
transform {"http://www.google.com/finance/info?q=$it"}
httpGet(url:{"${it}"},responseType:String)
}
Object result = flow.sendAndReceive("vmw");
Can someone please help me?
This has been fixed on the master branch. Meanwhile a simple work-around is
url:{"http://www.google.com/finance/info?q=$it".toString()}
or
url:{"http://www.google.com/finance/info?q=$it" as String}
What version of the DSL? You need to build from master to use with Spring Integration 4.1.x.
I will warn you that the groovy DSL has had little attention done for several years; it was never really gained any traction in the community.
The Java DSL is preferred; it is actively maintained and enhanced.
I've just tested your case and haven't seen any null value, but there was another error like this:
Caused by: java.lang.IllegalStateException: 'uriExpression' evaluation must result in a 'String' or 'URI' instance, not: class org.codehaus.groovy.runtime.GStringImpl
So, it is really a bug and feel free to raise a JIRA ticket and will take care soon.
From other side, please, let me ask the question to you: what is the reason to be on this non-stable, unmaintained stuff, when we have already Java DSL. From other side we can use any Spring Integration namespace from the regular Spring Groovy Configuration support, for example:
beans {
xmlns([si: 'http://www.springframework.org/schema/integration'])
def headers = environment.getProperty('headers')
def parser = new JsonSlurper()
def result = parser.parseText(headers)
si.channel(id:'input')
si.channel(id:'output')
si.'header-enricher'('input-channel':'input','output-channel':'output') {
result.each {k,v->
si.'header'(name:k,expression:v)
}
}
}

How can we write java code in JMETER?

How can we write java code in JMETER?
I got some information from google,Java Sampler is using for that and I tried that way
Just i did copy paste some codes from googe,but getting errors from import also ,Always org.apache.jmeter is showing error,Any body can tell me about implementation and sample code alao
This is my java code
package com.code4reference.jmeter.functions;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
public class JavaRequestSamplerDemo extends AbstractJavaSamplerClient {
#Override
public SampleResult runTest(JavaSamplerContext ctx) {
JMeterVariables vars = JMeterContextService.getContext().getVariables();
vars.put("demo", "demoVariableContent");
SampleResult sampleResult = new SampleResult();
sampleResult.setSuccessful(true);
sampleResult.setResponseCodeOK();
sampleResult.setResponseMessageOK();
return sampleResult;
}
}
If you're missing org.apache.jmeter.* package you need to add everything all jars from /lib/ext folder of your JMeter installation to Java build classpath. Refer to your IDE documentation on how to do it.
In Eclipse it can be done via Project -> Properties -> Java Build Path
In Idea it's in Project -> Dependencies
If you're using Apache Ant, you need to do something like
<path id="build.classpath">
<fileset dir="${path.to.your.jmeter.lib.ext.folder">
<include name="*.jar"/>
</fileset>
<path>
There are at least 3 places where you can inject your Java code.
1. Java Request.
Examples:
/src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java
/src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java
Which are source code for JavaTest and SleepTest Java Request Samplers
2. Your own Sampler
Example:
/src/examples/org/apache/jmeter/examples/sampler/ExampleSampler.java
3. Beanshell or JSR233 Sampler
JMeter supports Beanshell and JSR233 scripting, both can understand Java syntax.
JMeter source code is available from JMeter Downloads page.
Except Java Sampler which requires
knowledge with specific JMeter context, other options:
You can write Java code in JSR223 element which is capable to execute any JSR223 supported language as groovy.
The JSR223 Sampler allows JSR223 script code
Inside other JMeter elements, as If Controller, You can execute Java code inside __BeanShell function or __groovy
For performance it is better to use __groovy function
Package your code in a jar and put it in JMeter's lib folder. Then you can execute its public methods.
I would say use BeanShell for something like this unless what you are going for is to wrap some of the JMeter functionality into a Java app. It seems common for people to create test plans adding some more advanced functionality using BSF or BeanShell then running it all headlesss with Ant.

weblogic-maven-plugin WS clientgen creates SequenceCodec instead of class

I am coverting an ant project to Maven. Using the class
weblogic.wsee.tools.anttasks.ClientGenTask
Ant was generating the classes from the WSDL. Example:
com.company.ArrayOfQualifyingActivity
But now using Maven plugin, it's creating
com.company.ArrayOfQualifyingActivitySequenceCodec
Has anyone else run into this before?
Edit:
Never mind. Resolved the issue. The previous clientgen was wrapping arrays of classes (for QualifyingActivity[] ) in a wrapper class.
The maven clientgen is not doing that. So I can use the QualifyingArray[] or String[] etc... as is.
Thanks

Resources