51Testing软件测试论坛

标题: Jmeter 工具 [打印本页]

作者: liran_04    时间: 2012-8-17 10:39
标题: Jmeter 工具
1、线程组设置:
线程数为 :1
线程循环次数 :2
2、添加 java Sampler
3、开始执行
结果,显示:
2012/08/17 10:22:21 ERROR - jmeter.samplers.SampleResult: sampleStart called twice java.lang.Throwable: Invalid call sequence
    at org.apache.jmeter.samplers.SampleResult.sampleStart(SampleResult.java:991)
    at org.apache.jmeter.protocol.java.test.Login.runTest(Login.java:43)
    at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:161)
    at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:416)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
    at java.lang.Thread.run(Thread.java:619)

2012/08/17 10:22:21 ERROR - jmeter.samplers.SampleResult: sampleEnd called twice java.lang.Throwable: Invalid call sequence
    at org.apache.jmeter.samplers.SampleResult.sampleEnd(SampleResult.java:1003)
    at org.apache.jmeter.protocol.java.test.Login.runTest(Login.java:45)
    at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:161)
    at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:416)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
    at java.lang.Thread.run(Thread.java:619)
作者: Donly    时间: 2012-8-17 15:23
我设置运行了,没遇到这样的错。楼主要不把jmx文件贴出来看看吧
作者: m1014519748    时间: 2015-1-21 19:55
楼主,可以问下这个问题你怎么解决的不?我设置成运行1次时,没报错。设置成循环多次,就会抛这个错误~~
作者: 52芭比兔    时间: 2015-9-10 15:25
m1014519748 发表于 2015-1-21 19:55
楼主,可以问下这个问题你怎么解决的不?我设置成运行1次时,没报错。设置成循环多次,就会抛这个错误~~

这个问题是由于你写的java脚本中,sr = new SampleResult();        实例化位置没放对,我放入了初始化里面了,放在run里就正常了
作者: TristaHan    时间: 2015-10-22 18:39
52芭比兔 发表于 2015-9-10 15:25
这个问题是由于你写的java脚本中,sr = new SampleResult();        实例化位置没放对,我放入了初始化里面了, ...

您确定这样就能解决问题吗?我是定义成成员变量,然后在runtest方法里初始化的,为啥还是报这个错?
作者: TristaHan    时间: 2015-10-22 18:51
public SampleResult runTest(JavaSamplerContext arg0) {
                // TODO Auto-generated method stub
                //获取sessionId事务
                //results.sampleStart();
               
                //results.sampleEnd();
                SampleResult results=new SampleResult();
                try {
                        //建立socket连接
                        socket=new Socket(cmhost,cmport);
                        BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
                        //向CM请求sessionId
                        dos.write(HostConvertToNet.intToByte(56));
                        dos.write(HostConvertToNet.intToByte(5));
                        dos.writeBytes(fetchSesssionIdStr);
                        dos.flush();
                        System.out.println("发送fetchsessionId的请求完毕");
                        //读取服务器响应并获取sessionId
                        char[] chars=new char[60];
                        StringBuffer stringBuffer=new StringBuffer();
//                        System.out.println(chars.length);的返回值为60
                        if (br.read(chars)!=40) {
                                results.setSuccessful(false);
                                results.setResponseCode("201");
                        } else {
                               
                                results.setSuccessful(true);
                                results.setResponseCode("200");
                                sessionId=stringBuffer.append(chars).toString().substring(21, 40);
                                //发送login时的stream信息
                                dos.write(HostConvertToNet.intToByte(198));
                                dos.write(HostConvertToNet.intToByte(1));
                                dos.writeBytes(sessionId);
                                dos.writeBytes(loginStreamStr);
                                dos.writeBytes(sessionId);
                                dos.writeBytes("\">");
                                dos.flush();
                                System.out.println("发送stream信息请求完毕");
                                //发送login时的auth信息
                                dos.write(HostConvertToNet.intToByte(139));
                                dos.write(HostConvertToNet.intToByte(1));
                                dos.writeBytes(sessionId);
                                dos.writeBytes(loginAuthStr);
                                dos.flush();
                                System.out.println("发送auth请求完毕");
                                //发送login时的presence信息
                                dos.write(HostConvertToNet.intToByte(51));
                                dos.write(HostConvertToNet.intToByte(1));
                                dos.writeBytes(sessionId);
                                dos.writeBytes(loginPreStr);
                                dos.flush();
                               
                                System.out.println("发送pre信息完毕");
                                //发送chatMsg
                                for (int i = 0; i < msgcount; i++) {
                                        results.sampleStart();
                                        dos.write(HostConvertToNet.intToByte(304));
                                        dos.write(HostConvertToNet.intToByte(3));
                                        dos.writeBytes(sessionId);
                                        dos.writeBytes(chatMsgStr);
                                        dos.flush();
                                        results.sampleEnd();
                                        Thread.sleep(1000);
                                }
                       
                                System.out.println("发送chatMsg完毕");
                        }
                        dos.close();
                        br.close();
                        socket.close();
                       
                } catch (Exception e) {
                        // TODO: handle exception
                        e.printStackTrace();                       
                       
                }
               
                return results;
        } 看下我的代码
作者: jmeterstudy    时间: 2016-8-24 11:31
TristaHan 发表于 2015-10-22 18:51
public SampleResult runTest(JavaSamplerContext arg0) {
                // TODO Auto-generated method stub
                //获 ...

请问你设置多线程循环时下面错误是怎么解决的
2016/08/24 10:45:14 ERROR - jmeter.samplers.SampleResult: sampleStart called twice java.lang.Throwable: Invalid call sequence
        at org.apache.jmeter.samplers.SampleResult.sampleStart(SampleResult.java:1052)
        at com.boco.health.oos.controller.Performence.runTest(Performence.java:30)
        at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:191)
        at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:434)
        at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:261)
        at java.lang.Thread.run(Thread.java:745)





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2