使用jmeter中的javasampler
package com.roiland.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.Map;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
public class TestDBConnection extends AbstractJavaSamplerClient {
private final static String TEST_LABEL = "TcpDB";
private final static short EXPECTED_HEAD = 0x8900 & 0xff;
private final static byte EXPECTED_HEART = 0x00;
BufferedOutputStream bos;
BufferedInputStream bis;
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
String ip = arg0.getParameter("ip");
int port = arg0.getIntParameter("port");
SampleResult sr = new SampleResult();
sr.setSampleLabel(TEST_LABEL);
Socket socket = null;
try {
socket = new Socket(ip, port);
socket.setSoTimeout(2000);
bos = new BufferedOutputStream(socket.getOutputStream());
bis = new BufferedInputStream(socket.getInputStream());
byte[] data = { 9, 0, 1, 1, 4, 0, 29, 1, 1, 13, 8, 13, 9, 18, 24,
3, 0, 2, 0, -71, 103, 43, 0, 3, 0, 59, 69, -57, 0, 11, 0,
4, 56, 120, -48, 39 };
byte[] auth = { 9, 0, 1, 1, 1, 0, 30, 1, 65, 65, 49, 50, 51, 52,
53, 54, 55, 56, 57, 48, 49, 50, 51, 52, 53, 49, 49, 49, 49,
49, 49, 49, 49, -69, -100, -123, 117 };
ByteBuffer buf = ByteBuffer.allocate(auth.length);
ByteBuffer buf1 = ByteBuffer.allocate(data.length);
buf.put(auth);
buf1.put(data);
buf1.flip();
buf.flip();
int i = 0;
// byte[] reHead = new byte[2];
while (true) {
try {
if (i == 0) {
bos.write(buf.array());
bos.flush();
}
int length = bis.available();
if (length != 0) {
byte[] dataT = new byte[length];
if (length > 3) {
byte serial = dataT[3];
}
if (length == 4) {
} else {
bis.read(dataT);
short head = (short) (((dataT[1] & 0xFF) << 8) | (dataT[0] & 0xff));
if (head != EXPECTED_HEAD) {
break;
}
}
}
} catch (IOException e) {
sr.setSuccessful(false);
}
if (i == 2) {
try {
bos.write(buf1.array());
bos.flush();
sr.setSuccessful(true);
break;
} catch (IOException e) {
sr.setSuccessful(false);
}
break;
}
i++;
}
} catch (UnknownHostException e1) {
sr.setSuccessful(false);
} catch (IOException e1) {
sr.setSuccessful(false);
} finally {
try {
bos.close();
bis.close();
socket.close();
} catch (IOException e) {
sr.setSuccessful(false);
}
}
return sr;
}
}
分享到:
相关推荐
本文将详细介绍如何使用JMeter进行TCP服务器的并发压力测试,包括环境搭建、软件下载与安装、以及具体的操作实例。 首先,要使用JMeter进行测试,需要确保你的环境中安装了JDK(Java开发工具包)。JMeter要求JDK...
进行TCP服务器压力测试,我们通常会使用一些专门的工具,如`nc`(netcat)、`ab`(Apache Bench)、`jmeter`、`wrk`或自定义的客户端程序,如压缩包中的`mystressclient`。这些工具可以模拟大量并发连接,向服务器...
在本文中,我们将深入探讨如何使用Apache JMeter进行TCP长连接性能测试,特别是在模拟1万个终端设备场景下。首先,我们需要了解的是物联网(IoT)背景下的设备通信协议,这通常涉及身份认证、数据传输等多个步骤。在这...
总结来说,这个示例展示了如何使用JMeter与基于Vert.x和Kotlin的服务端进行TCP通信,涉及到了protobuf的序列化和反序列化,以及JMeter的TCP测试功能。通过这个实践,开发者可以更好地理解网络通信、性能测试和协议...
7. **监控工具**:开发和维护过程中,可能使用Wireshark抓包分析网络流量,用Nmap扫描网络设备,用JMeter测试服务器性能,以及利用各种日志分析工具进行问题排查。 8. **云平台集成**:现代视频监控系统常常与...
为了进行这样的测试,通常会使用专门的压力测试工具,如Apache JMeter、LoadRunner、Tsung等,它们可以自定义测试脚本,模拟各种用户行为,并提供丰富的报告和图表来展示测试结果。 在文件列表中的"Pressure"可能是...
本文将详细介绍如何利用JMeter与plugins插件进行服务器性能监控。 首先,性能测试的关注点分为两个主要方面: 1. 服务本身:并发、响应时间和QPS(Queries Per Second)是衡量服务性能的关键指标。并发指的是系统...
本篇文章将详细探讨如何使用JMeter来测试TCP服务器,以及在进行此类测试时需要注意的关键知识点。 首先,理解TCP协议至关重要。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在进行...
Socket是网络编程中的基本概念,它是进程间通信的一种方式,特别是在分布式系统中,通过Socket可以实现...在实际应用中,可能还需要结合实际业务需求,对测试脚本进行定制化开发,以更好地模拟真实世界中的用户行为。
- **定义**:接口测试主要是指对系统中的接口进行测试,确保接口能够正确地进行数据交换和控制管理。 - **作用**:确保接口的稳定性和可靠性,发现可能存在的问题。 - **实现方式**:使用JMeter发送请求并接收响应,...
JMeter,一个流行的开源性能测试工具,也支持对WebSocket服务进行测试。下面我们将详细讨论如何使用JMeter来测试WebSocket服务,以及提供的文件在测试过程中的作用。 首先,我们要理解“jmeter 测试 websocket”这...
Apache JMeter 3.1是开源的性能测试工具,主要用于测试Web应用的负载和压力。它的源码提供了深入了解其工作原理的机会,同时也为开发者提供了定制和扩展JMeter的可能性。在这个"apache-jmeter-3.1_src.zip"压缩包中...
JMeter是一款开源、免费的性能测试工具,广泛应用于Web应用的压力测试、负载测试以及功能测试。本教程将从基础入门,逐步介绍如何使用JMeter进行HTTP请求测试、TCP连接测试、SQL查询以及生成和查看测试报告。 首先...
用户可以根据需要添加或更新这些库,以扩展JMeter的功能,例如添加对特定协议的支持,或者使用自定义插件进行复杂的数据处理和分析。 总结来说,JMeter的远程性能测试功能为我们提供了强大的工具,可以跨多台机器...
- 通过对这些示例代码的学习,可以更好地理解如何使用JMeter进行Java环境下的接口测试开发。 通过上述知识点的学习,开发者能够更深入地了解如何利用JMeter进行高效的接口自动化测试,从而提高软件质量。
- 性能测试:模拟大量并发连接,测试服务器的并发处理能力,可以使用Apache JMeter或自定义的C#程序来实现。 - 压力测试:通过发送大量数据来测试网络带宽和TCP缓冲区的处理能力,评估系统在高负载下的稳定性。 6...
JMeter是一款广泛使用的开源压力测试工具,主要用于测试Web应用的性能和稳定性。它不仅支持HTTP、HTTPS协议,还支持其他多种协议,包括我们在此文档中关注的TCP协议。在本文中,我们将详细介绍如何在Windows环境下...
作为100%纯Java应用程序,它被设计用于测试Web应用,但现在已经扩展到支持对其他各种应用、服务器和协议类型的负载及性能测试。JMeter具有以下核心特性: 1. **支持多种应用和服务的测试**:JMeter可以测试...
5. **JMeter**:虽然主要为压力测试设计,但也可用于测试TCP和UDP服务的性能,模拟大量并发连接,检查服务器承受能力。 6. **hping3**:一个功能强大的TCP/IP协议测试工具,可以测试TCP SYN Flood、UDP Flood等攻击...