From 01be8429be666ac9d92918e287a50486720936ea Mon Sep 17 00:00:00 2001 From: cheney Date: Mon, 8 Jun 2026 14:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=B5=8B=E8=AF=95=E9=80=9A?= =?UTF-8?q?=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 21 + jmeter/boc 测试.jmx | 16 + jmeter/招行测试计划.jmx | 749 +++++++++++++++++++++++ src/test/java/cmbpoc/FunctionTest.java | 6 +- src/test/java/cmbpoc/JmeterTest.java | 2 +- src/test/java/cmbpoc/JmeterTestTest.java | 51 ++ 6 files changed, 841 insertions(+), 4 deletions(-) create mode 100644 jmeter/boc 测试.jmx create mode 100644 jmeter/招行测试计划.jmx create mode 100644 src/test/java/cmbpoc/JmeterTestTest.java diff --git a/README.md b/README.md index 203bdce..3a42fa6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,24 @@ # sydapi4j 加密机 java 接口,基于 jna。 + + + +## 启动 Slave +在作为负载机的 Slave 机器上进行配置,主要有两种方式: + +方法一:配置 jmeter.properties 文件 +编辑 $JMETER_HOME/bin/jmeter.properties 文件,确认或取消注释以下配置: +``` +server.rmi.ssl.disable=true # 禁用SSL,简化内网配置 +server.rmi.localport=1099 # 固定RMI端口,方便防火墙放行 +java.rmi.server.hostname=Slave_IP # 绑定本机网卡IP,避免多网卡问题 +``` + +配置完成后,在 Slave 的 bin 目录下启动服务: + +Windows: 双击 jmeter-server.bat +Linux/Mac: 运行 ./jmeter-server + + + diff --git a/jmeter/boc 测试.jmx b/jmeter/boc 测试.jmx new file mode 100644 index 0000000..9235b7f --- /dev/null +++ b/jmeter/boc 测试.jmx @@ -0,0 +1,16 @@ + + + + + + false + true + false + + + + D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\bcpkix-jdk15on-1.65.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\bcprov-jdk15on-1.65.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\groovy-all-2.4.15.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\hutool-core-5.8.4.M1.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\proto-1.0.20220921.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\dependences\sydapi4j-1.13.20221010.jar,D:\sunyard\sydapi-boc\Shujujiaohuan\pack\jar\cfitsignapi-1.0.jar + + + + diff --git a/jmeter/招行测试计划.jmx b/jmeter/招行测试计划.jmx new file mode 100644 index 0000000..0a261aa --- /dev/null +++ b/jmeter/招行测试计划.jmx @@ -0,0 +1,749 @@ + + + + + + false + true + true + + + + + + + continue + + false + 1000 + + 1 + 1 + false + + + true + + + + + + + function + sleep + = + + + sleep + 100 + = + + + plainDataLen + 1024 + = + + + publicKey4Ende + + = + + + privateKey4Ende + + = + + + ip + 192.168.100.145 + = + + + ip2 + 172.1.41.96 + = + + + port + 8889 + = + + + timeout + 3000 + = + + + + cmbpoc.JmeterTest + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 1000 + false + + + + + false + false + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 500 + false + + + + + false + false + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + + continue + + false + 10000 + + 1 + 1 + false + + + true + + + + + + + function + sleep + = + + + sleep + 1 + = + + + plainDataLen + 1024 + = + + + publicKey4Ende + + = + + + privateKey4Ende + + = + + + ip + 192.168.100.145 + = + + + ip2 + 172.1.41.96 + = + + + port + 8889 + = + + + timeout + 3000 + = + + + + cmbpoc.JmeterTest + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 1000 + false + + + + + false + false + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 500 + false + + + + + false + false + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + + continue + + false + 10 + + 1 + 1 + false + + + true + + + + + + + function + SYD_SM2_Encrypt + = + + + sleep + 1 + = + + + plainDataLen + 2048 + = + + + publicKey4Ende + 03420004AF3D4E55D26564C6C937E6EA9232691C01AC5E7916AD2136F788CE7C1E4D0AE8C4754DEC2F7F6A78962D51A171A6F5B4F11823390AEC8B5B0246CD2CCF8052B7 + = + + + privateKey4Ende + 00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000 + = + + + ip + 192.168.100.145 + = + + + ip2 + 172.1.41.96 + = + + + port + 8889 + = + + + timeout + 3000 + = + + + + cmbpoc.JmeterTest + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 500 + false + + + + + false + false + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + false + true + false + false + false + true + 0 + true + true + true + true + true + true + + + + 1000 + false + + + + + false + false + + + + + + diff --git a/src/test/java/cmbpoc/FunctionTest.java b/src/test/java/cmbpoc/FunctionTest.java index aa40682..e9e85a4 100644 --- a/src/test/java/cmbpoc/FunctionTest.java +++ b/src/test/java/cmbpoc/FunctionTest.java @@ -120,7 +120,7 @@ public class FunctionTest { @Test public void SYD_SM2_Encrypt_2M(){ byte[] enData = this.api.SYD_SM2Encrypt(publicKey4Ende, orgData2M); - System.out.println("密文=" + Util.bytes2HexString(enData)); + System.out.println("密文长度=" + enData.length); byte[] deData = this.api.SYD_SM2Decrypt(privateKey4Ende, enData); Assert.assertArrayEquals(orgData2M, deData); } @@ -130,8 +130,8 @@ public class FunctionTest { public void SYD_SM2_Encrypt_10M(){ byte[] enData = this.api.SYD_SM2Encrypt(publicKey4Ende, orgData10M); System.out.println("密文=" + Util.bytes2HexString(enData)); -// byte[] deData = this.api.SYD_SM2Decrypt(privateKey4Ende, enData); -// Assert.assertArrayEquals(orgData10M, deData); + byte[] deData = this.api.SYD_SM2Decrypt(privateKey4Ende, enData); + Assert.assertArrayEquals(orgData10M, deData); } } diff --git a/src/test/java/cmbpoc/JmeterTest.java b/src/test/java/cmbpoc/JmeterTest.java index 2309c00..f610bd0 100644 --- a/src/test/java/cmbpoc/JmeterTest.java +++ b/src/test/java/cmbpoc/JmeterTest.java @@ -100,7 +100,7 @@ public class JmeterTest extends AbstractJavaSamplerClient { try { switch (function) { case "SYD_SM2_Encrypt": - this.api.get().SYD_SM2Encrypt(privateKey4Ende, this.plainData); + this.api.get().SYD_SM2Encrypt(publicKey4Ende, this.plainData); break; case "SYD_SM2_Decrypt": this.api.get().SYD_SM2Decrypt(privateKey4Ende, this.encryptedData); diff --git a/src/test/java/cmbpoc/JmeterTestTest.java b/src/test/java/cmbpoc/JmeterTestTest.java new file mode 100644 index 0000000..de11b89 --- /dev/null +++ b/src/test/java/cmbpoc/JmeterTestTest.java @@ -0,0 +1,51 @@ +package cmbpoc; + +import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; + + +import org.apache.jmeter.config.Arguments; +import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; +import org.apache.jmeter.samplers.SampleResult; + +public class JmeterTestTest { + + public static void main(String[] args) { + // 1. 创建 JMeter 参数集,并填入您提供的所有参数 + Arguments jmeterArgs = new Arguments(); + jmeterArgs.addArgument("function", "SYD_SM2_Encrypt"); + jmeterArgs.addArgument("sleep", "1"); + jmeterArgs.addArgument("plainDataLen", "2048"); + jmeterArgs.addArgument("publicKey4Ende", "03420004AF3D4E55D26564C6C937E6EA9232691C01AC5E7916AD2136F788CE7C1E4D0AE8C4754DEC2F7F6A78962D51A171A6F5B4F11823390AEC8B5B0246CD2CCF8052B7"); + jmeterArgs.addArgument("privateKey4Ende", "00010000963F7C3A98B7810F52D2861A060E18A9D4D59796CF33967DD61EEDA091E1AD9B0000000000000000000000000000000000000000000000000000000000000000"); + jmeterArgs.addArgument("ip", "192.168.100.145"); + jmeterArgs.addArgument("ip2", "172.1.41.96"); + jmeterArgs.addArgument("port", "8889"); + jmeterArgs.addArgument("timeout", "3000"); + + // 2. 基于参数集创建 JMeter 上下文对象 + JavaSamplerContext context = new JavaSamplerContext(jmeterArgs); + + // 3. 创建您的测试类实例 + JmeterTest jmeterTest = new JmeterTest(); + + try { + // 4. 模拟 JMeter 执行周期:setup -> run -> teardown + jmeterTest.setupTest(context); + + SampleResult result = jmeterTest.runTest(context); + if (result != null) { + System.out.println("SampleResult 状态: " + result.getResponseCode()); + System.out.println("响应数据: " + result.getResponseDataAsString()); + System.out.println("是否成功: " + result.isSuccessful()); + } else { + System.out.println("runTest 返回 null,请检查实现逻辑"); + } + + jmeterTest.teardownTest(context); + + } catch (Exception e) { + System.err.println("执行测试时发生异常:"); + e.printStackTrace(); + } + } +} \ No newline at end of file