`
maosheng
  • 浏览: 565998 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于LoadRunner平台Socket协议的JavaVuser

    博客分类:
  • Test
阅读更多
/*
* LoadRunner Java script.
* Loadrunner:11.00.0.0
*
* 脚本描述:
* 模拟基于Socket协议的即时消息系统中的客户端行为LR脚本,
* 为模拟真实POS终端,接收消息和发送消息分两个线程工作。
*
* 作者:maosheng
* 制作时间:2013-1-11

*/ 
 
import lrapi.lr; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.Socket; 
import java.net.UnknownHostException; 
import java.util.Iterator; 
import java.util.concurrent.atomic.AtomicBoolean; 
 
public class Actions 

    // 客户端 
    private Socket client;     
    // 输出流 
    private OutputStream out; 
    // 输入流 
    private InputStream in; 
    // 客户端是否连接标志 
    //private boolean connFlag = false; 
    private  AtomicBoolean connFlag =new AtomicBoolean(false);
 
 
    public int init() throws Throwable { 
        connect();  
       //lr.think_time(10); 
        return 0; 
    }//end of init 
 
 
    public int action() throws Throwable { 
        sendAction(); 
        return 0; 
    }//end of action 
 
 
    public int end() throws Throwable { 
        sendEnd(); 
        return 0; 
    }//end of end 
 
 
    //连接服务器 
    private void connect() { 
        try { 
                client = new Socket("172.16.4.168", 8888); 
                System.out.println("connect success!!!");
connFlag.set(true);
                out = client.getOutputStream(); 
                in = client.getInputStream();
        } catch (UnknownHostException e) { 
                System.out.println("UnknownHostException=" + e); 
                e.printStackTrace(); 
        } catch (IOException e) { 
                System.out.println("IOException=" + e); 
                e.printStackTrace(); 
        } 
    } 

 
    //发送消息 
    private void sendAction() { 
if(connFlag.get()){  
   
            //收到报文:[0001 1 0 31]0001123456789          e590986a
            //发送报文:
            byte[] byteMsg=new byte[]{
                    Byte.parseByte("0"),
    Byte.parseByte("1"),
    Byte.parseByte("0"),
    Byte.parseByte("1"),
    Byte.parseByte("0"),
    Byte.parseByte("0"),
    Byte.parseByte("31"),
    Byte.parseByte("48"),
    Byte.parseByte("48"),
    Byte.parseByte("48"),
    Byte.parseByte("49"),
    Byte.parseByte("49"),
    Byte.parseByte("50"),
    Byte.parseByte("51"),
    Byte.parseByte("52"),
    Byte.parseByte("53"),
    Byte.parseByte("54"),
    Byte.parseByte("55"),
    Byte.parseByte("56"),
    Byte.parseByte("57"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("32"),
    Byte.parseByte("101"),
    Byte.parseByte("53"),
    Byte.parseByte("57"),
    Byte.parseByte("48"),
    Byte.parseByte("57"),
    Byte.parseByte("56"),
    Byte.parseByte("54"),
    Byte.parseByte("97")
};

            String msg = new String(byteMsg);

            System.out.println("发送的消息:"+msg);
    sendMsg(msg);
    receiveMsg();

    } 
   
    //关闭客户端 
    private void sendEnd() { 
connFlag.set(false); 
try { 
    client.close(); 
            System.out.println("connect closed!!!");
} catch (IOException e) { 
    e.printStackTrace(); 

    } 
 
    //调用写入流方法 
    private void sendMsg(String msg) { 
//new SendThread(msg).start(); 
writeMsg(msg); 
    } 
 
    //将消息写入流 
    private void writeMsg(String msg) { 
    try { 
        if (out != null) { 
        out.write(msg.getBytes("GBK")); 
        out.flush(); 
        } 
    } catch (Exception e) { 
        System.out.println("Exception=" + e); 
    } 
    } 
   
     //接收消息
    private void receiveMsg() { 
      //new ReceiveThread().start(); 
getMsg();
    } 
 
    //得到返回结果 
    private void getMsg() {
       try { 
int len = in.available();  
if(len>0){ 
System.out.println(len); 
byte[] bytes = new byte[len]; 
in.read(bytes); 
String result = new String(bytes);
if(result != null && !"".equals(result)){ 
   System.out.println("接收到的消息:" + result); 

}
            } catch (Exception e) { 
               e.printStackTrace();  
            }   
    } 
 
/******************************************************************/
    /**
     * 接收消息线程类
     * 
     * @author maosheng
     * 
     */ 
    private class ReceiveThread extends Thread { 
    @Override 
    public void run() { 
        while(connFlag.get()) {
    getMsg();
            try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
        } 
      } 
    } 
 
 
   /**
     * 发送消息线程类
     * 
     * @author maosheng
     * 
     */  
    private class SendThread extends Thread {
   
    private String msg; 
     
    public SendThread(String msg) { 
        this.msg = msg; 
    } 
     
    @Override 
    public void run() { 
        while (connFlag.get()) { 
     writeMsg(msg);
             try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
        } 
    } 
  } 
 
}//end for class Actions 
分享到:
评论

相关推荐

    Loadrunner基于socket编程

    【LoadRunner基于Socket编程详解】 LoadRunner是一款强大的性能测试工具,它允许测试人员模拟大量并发用户执行业务流程,以此来评估系统在高负载下的性能。在某些特定的场景下,如测试网络通信或服务器间的数据交换...

    自行控制loadrunner的socket协议性能测试代码_sockettool

    包括: 1.自行控制loadrunner的socket协议性能测试代码 2.socket手工调试工具sockettool.exe,绿色的不需要安装

    10 Loadrunner中Java Vuser协议脚本1

    在LoadRunner中,Java Vuser协议是用于对Java应用程序进行负载和性能测试的重要工具。它允许测试人员模拟大量用户同时访问Java应用,以检测系统的稳定性和性能。以下将详细讲解如何使用Java Vuser协议创建和执行性能...

    自行控制loadrunner的socket协议性能测试

    自行控制loadrunner的socket协议性能测试 通过实例讲解 loadrunner 中的 socket 协议性能测试的一种测试方法

    web test LoadRunner SAP / java / Java Vuser / web_set_max_html_param_len

    3. **Java Vuser**:Java Vuser是LoadRunner的一种虚拟用户类型,它使用Java语言编写脚本,适用于测试基于Java技术的Web应用。Java Vuser提供了更灵活的脚本能力,可以调用Java类库,实现复杂逻辑的测试。 4. **...

    loadrunner(JavaVuser)将excel信息读到数据库所依赖的jar包

    这是loadrunner(Java_Vuser)将excel信息读到数据库所依赖的jar包,支持Excel 95-2003的所有版本(特别说明2007需要将excel另存为95-2003版本,才能被正常调用)。

    LoadRunner用Java Vuser做性能测试

    这篇文章写的很不错,是在http://www.open-open.com资料网站上发现的,很感谢站长的慷慨,在我积分不够的情况下,把此文章给我,互联网需要这样的行动,技术的发展需要共享资源。

    在Loadrunner中使用JAVAVuser协议如何将线程改为进程模式

    errorError在Loadrunner中使用JAVAVuser协议如何将线程改为进程模式当我们初始化java程序时,必须初始化classloader.这个会与JNDI校验时非常关键的!当Vuser作一个进程时时每个进程都会缺省的加载进来,这是没有什么...

    LR中使用Java Vuser测试Java类功能

    首先,理解Java Vuser是LoadRunner的一种虚拟用户类型,它允许我们编写基于Java语言的脚本来模拟用户对Java应用程序的行为。这使得测试人员可以深入到代码级别,对Java应用程序的特定功能进行精确的性能测试。 **...

    测试Socket协议的Loadrunner脚本(8583协议)+8583报文解析

    Loadrunner.Socket协议性能测试脚本详解 Loadrunner 是一款性能测试工具,常用于模拟大量用户对服务器的并发访问,以评估服务器的性能和可扩展性。在这个场景中,我们使用 Loadrunner 来测试 Socket 协议的性能,...

    Loadrunner之socket脚本参数化方法

    《Loadrunner之Socket脚本参数化深度解析》 在Loadrunner这款强大的性能测试工具中,参数化技术是一项关键技能,它允许用户将测试脚本中的静态数据替换为动态数据,从而实现更复杂、更真实的负载模拟。对于基于...

    loadrunner_java_vuser实现smtp邮件发送的脚本.doc

    在Vugen(虚拟用户生成器)中,选择Java VUser协议来创建一个新的脚本。脚本主要由三个方法组成:init()、action()和end()。init()方法在脚本开始时运行,end()方法在脚本结束时运行,而action()方法包含每次迭代...

    loadrunner java协议接口测试

    首先,LoadRunner支持多种协议,包括Java协议,它能够模拟大量用户对基于Java的应用程序进行并发访问,以此来测试系统性能和稳定性。Java协议主要应用于JDBC(Java Database Connectivity)、RMI(Remote Method ...

    11 LoadRunner中Scoket协议的使用1

    LoadRunner 中 Socket 协议的使用详解 LoadRunner 是 HP 公司开发的一款性能测试工具,主要用于模拟大量用户同时访问 Web 应用程序,以便测试其性能和可靠性。在 LoadRunner 中,Socket 协议是最基本也是最重要的一...

    LoadRunner详解(vuser/controller/analysis)之vuser

    ### LoadRunner vuser详解 #### 一、LoadRunner与Vuser概述 LoadRunner是一种软件性能测试工具,由Mercury Interactive Corporation开发,后被惠普收购。该工具主要用于预测系统行为和性能,特别是在高负载下。它...

    loadrunner测试TCP协议服务器性能

    TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,是互联网上应用最广泛的一种网络协议。它为两台机器之间的数据通信提供了规则和标准,确保数据的正确传输。TCP通过三...

    loadrunner 创建 vuser 脚本指南(一)

    【LoadRunner创建VUser脚本指南(一)】 在IT性能测试领域,LoadRunner是一款备受推崇的工具,它能够模拟大量虚拟用户(VUser)来对应用系统进行压力测试,从而评估系统的性能和稳定性。本指南将深入探讨如何使用...

Global site tag (gtag.js) - Google Analytics