jmeter-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sebb <seb...@gmail.com>
Subject Re: Remote testing problem - Works for one testplan does not work for the second
Date Thu, 20 Oct 2011 12:42:37 GMT
On 20 October 2011 13:15, sasidharsmit <sasidharsmit@gmail.com> wrote:
> Dear All,
> I've been using JMeter for sometime now, to execute my load tests. It has
> been working well for me. But, recently when I had to test a new
> application, I faced a problem.
>
> Please find below my test environment specification and problem description.
>
> *Test environment:*
>
> Testplan development environment - Windows 7 32-bit
> Testplan execution environment - Redhat enterprise linux
> JMeter version - Version 2.4 r961953
> java.version - 1.6.0_10
>
> Test execution servers - Server1;Server2
> Testplan names - Plan1.jmx;Plan2.jmx
>
>
> *Problem description:*
>
> 1. Plan1 is a test plan I've been using in the past to do testing.
> 2. Server1 is used to initiate the test

i.e. it is the client in client-server mode.

> 3. Server2 is where the actual test runs (remotely)
> 4. I key in the below commands in Server1, to get the jmeter-server started
>
> [Server1]$ /./jmeter-server&/
> [Server1]$ /Created remote object: UnicastServerRef [liveRef:
> [endpoint:[Server1:45143](local),objID:[589e87a1:13320f5764d:-7fff,
> 2996288215291058752]]]/

Why? I thought you said the plan is run on Server2.

> 5. I key in the below commands in Server2, to get the jmeter-server started
>
> [Server2]$ /./jmeter-server&/
> [Server2]$ /Created remote object: UnicastServerRef [liveRef:
> [endpoint:[Server2:34288](local),objID:[-20f5670c:13320be5c62:-7fff,
> 2518394132361662963]]]/

OK.

> 5. Now, I key in the below command in Server1, to start the test
>
> [Server1]$ /./jmeter -n -R Server2 -t Plan1.jmx -l smoke_result_log.jtl -j
> smoke_output.log &/

OK.

> 6. I get the following message in Server1
>
> [Server1]$ /./jmeter -n -R Server2 -t Plan1.jmx -l result_log.jtl -j
> output.log &/
> /[2] 5668/
> [Server1]$ /Created the tree successfully using Plan1.jmx
> Configuring remote engine for Server2
> Using remote object: UnicastRef [liveRef:
> [endpoint:[Server2:34288](remote),objID:[-20f5670c:13320be5c62:-7fff,
> 2518394132361662963]]]
> Starting remote engines
> Starting the test @ Thu Oct 20 10:54:50 UTC 2011 (1319108090548)
> Remote engines have been started/

OK

>
> 7. In Server2, I get the below message
>
> [Server2]$ /Starting the test on host 10.0.103.109 @ Thu Oct 20 11:54:47
> CEST 2011 (1319104487972)/
>
> 8. Everything is working fine. I can see things getting logged in
> smoke_result.jtl
>
> 9. No errors in smoke_output.log
>
> 10. Now, when I try to do the same with Plan2, I observe the following
> behaviour:
>
>     a. I get the below message in Server1
>
>         /[2] 6926
>         [Server1]$ Created the tree successfully using Plan2.jmx
>         Configuring remote engine for Server2
>         Using remote object: UnicastRef [liveRef:
> [endpoint:[Server2:41813](remote),objID:[9cf936a:13320f89080:-7fff,
> 4276509621820231896]]]
>         Starting remote engines
>         Starting the test @ Thu Oct 20 11:56:20 UTC 2011 (1319111780015)
>         Remote engines have been started/
>
>    b. But, in Server2, I do not get any notification
>
>    c. Also, I do not see the smoke_result.jtl file getting created
>
>    d. smoke_output.log logs the following error message:
>
>
> /2011/10/20 11:56:19 INFO  - jmeter.util.JMeterUtils: Setting Locale to
> en_US
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: Loading user properties from:
> /home/test/jakarta-jmeter-2.4/bin/user.properties
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: Loading system properties from:
> /home/test/jakarta-jmeter-2.4/bin/system.properties
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: Copyright (c) 1998-2010 The
> Apache Software Foundation
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: Version 2.4 r961953
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: java.version=1.6.0_10
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: java.vm.name=Java HotSpot(TM)
> 64-Bit Server VM
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: os.name=Linux
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: os.arch=amd64
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: os.version=2.6.18-128.1.1.el5
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: file.encoding=UTF-8
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: Default Locale=English (United
> States)
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: JMeter  Locale=English (United
> States)
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter:
> JMeterHome=/home/test/jakarta-jmeter-2.4
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: user.dir
> =/home/test/jakarta-jmeter-2.4/bin
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: PWD
> =/home/test/jakarta-jmeter-2.4/bin
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: IP: Server1 Name: Server1
> FullName: Server1
> 2011/10/20 11:56:19 INFO  - jmeter.services.FileServer: Default
> base=/home/test/jakarta-jmeter-2.4/bin
> 2011/10/20 11:56:19 INFO  - jmeter.services.FileServer: Set new
> base=/home/test/jakarta-jmeter-2.4/bin
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: Loading file: Plan2.jmx
> 2011/10/20 11:56:19 INFO  - jmeter.save.SaveService: Testplan (JMX) version:
> 2.2. Testlog (JTL) version: 2.2
> 2011/10/20 11:56:19 INFO  - jmeter.save.SaveService: Using SaveService
> properties file encoding UTF-8
> 2011/10/20 11:56:19 INFO  - jmeter.save.SaveService: Using SaveService
> properties file version 959116
> 2011/10/20 11:56:19 INFO  - jmeter.save.SaveService: Using SaveService
> properties version 2.1
> 2011/10/20 11:56:19 INFO  - jmeter.save.SaveService: All converter versions
> present and correct
> 2011/10/20 11:56:19 INFO  - jmeter.JMeter: Configuring remote engine for
> Server2
> 2011/10/20 11:56:20 INFO  - jmeter.engine.ClientJMeterEngine: about to run
> remote test on Server2
> 2011/10/20 11:56:20 INFO  - jmeter.engine.ClientJMeterEngine: done
> initiating run command
> 2011/10/20 11:56:20 INFO  - jmeter.engine.ClientJMeterEngine: running
> clientengine run method
> 2011/10/20 11:56:20 INFO  - jmeter.engine.util.CompoundVariable: Note:
> Function class names must contain the string: '.functions.'
> 2011/10/20 11:56:20 INFO  - jmeter.engine.util.CompoundVariable: Note:
> Function class names must not contain the string: '.gui.'
> 2011/10/20 11:56:20 INFO  - jmeter.engine.ConvertListeners: num threads = 1
> 2011/10/20 11:56:20 INFO  - jmeter.samplers.StandardSampleSender: Using
> Standard Remote Sampler for this test run
> 2011/10/20 11:56:20 INFO  - jmeter.samplers.StandardSampleSender: Using
> Standard Remote Sampler for this test run
> 2011/10/20 11:56:20 INFO  - jmeter.samplers.StandardSampleSender: Using
> Standard Remote Sampler for this test run
> 2011/10/20 11:56:20 INFO  - jmeter.samplers.StandardSampleSender: Using
> Standard Remote Sampler for this test run
> 2011/10/20 11:56:20 ERROR - jmeter.engine.ClientJMeterEngine:
> java.rmi.MarshalException: error marshalling arguments; nested exception is:
>        java.io.NotSerializableException: java.nio.DirectByteBuffer

Test Plans are sent from client to server using serialisation.

For some reason, Test Plan2 depends (indirectly) on
java.nio.DirectByteBuffer which is not serialisable.
This may be due to a bug in the JMeter code.

>        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:138)
>        at
> org.apache.jmeter.engine.RemoteJMeterEngineImpl_Stub.configure(Unknown
> Source)
>        at
> org.apache.jmeter.engine.ClientJMeterEngine.run(ClientJMeterEngine.java:131)
>        at java.lang.Thread.run(Thread.java:619)
> Caused by: java.io.NotSerializableException: java.nio.DirectByteBuffer
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
>        at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>        at java.util.HashMap.writeObject(HashMap.java:1000)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
>        at
> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
>        at
> org.apache.jorphan.collections.HashTree.writeObject(HashTree.java:947)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>        at java.util.HashMap.writeObject(HashMap.java:1001)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
>        at
> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
>        at
> org.apache.jorphan.collections.HashTree.writeObject(HashTree.java:947)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>        at java.util.HashMap.writeObject(HashMap.java:1001)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
>        at
> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
>        at
> org.apache.jorphan.collections.HashTree.writeObject(HashTree.java:947)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>        at java.util.HashMap.writeObject(HashMap.java:1001)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
>        at
> java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
>        at
> org.apache.jorphan.collections.HashTree.writeObject(HashTree.java:947)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
>        at
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
>        at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
>        at
> java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
>        at
> java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
>        at sun.rmi.server.UnicastRef.marshalValue(UnicastRef.java:274)
>        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133)
>        ... 3 more/
>
> 11. This kind of error happens sometimes in the following cases:
>      a. When there is a mismatch of the JMeter versions

This is not supported.

>      b. When a particular file is available in one server and is not
> available in the other

That causes a different error.

> 12. I verified both and this is not the case. To confirm even further, I
> copied the complete "jakarta-jmeter-2.4" directory from Server1 to Server2,
> so that they have identical copies of all the files involved (including the
> jmeter jar files, data files etc.)

Good.

> 13. Still I'm facing the same problem
>
> 14. I also verified what happens if I execute Plan2, only in Server1
> (without using remote execution). It works perfectly
>
> Can any of you help me?

What sampler are you using in Plan2 that you are not using in Plan1?

If there are several unique ones, try disabling them one by one until
the plan works.
Or create separate test plans with one sampler in each. If the startup
gets beyond the serialisation error then it's not that sampler.

Or it could perhaps be a non-sampler test element, but try samplers first.

Then report back which test element is involved.

Unfortunately the log does not provide detail of the test element that
is causing the issue.

> Thanks and Regards,
> Sasidhar Sekar
>
>
> --
> View this message in context: http://jmeter.512774.n5.nabble.com/Remote-testing-problem-Works-for-one-testplan-does-not-work-for-the-second-tp4921259p4921259.html
> Sent from the JMeter - User mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jmeter-user-help@jakarta.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-user-help@jakarta.apache.org


Mime
View raw message