mirror of
https://gitee.com/willfree/min-dev-java.git
synced 2026-10-04 19:42:01 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
31e995af1c
1 file changed
+214
@@ -0,0 +1,214 @@
|
||||
package logicface;
|
||||
|
||||
import component.ComponentException;
|
||||
import component.Identifier;
|
||||
import encoding.BlockException;
|
||||
import encoding.EncoderException;
|
||||
import encoding.SelfEncodingBase;
|
||||
import mgmt.MgmtException;
|
||||
import mgmt.RegisterPrefixHelper;
|
||||
import minsecurity.Common;
|
||||
import minsecurity.certificate.cert.CertUtils;
|
||||
import minsecurity.certificate.cert.Certificate;
|
||||
import minsecurity.crypto.sm2.SM2KeyPair;
|
||||
import minsecurity.identity.Identity;
|
||||
import minsecurity.identity.KeyParam;
|
||||
import org.junit.Test;
|
||||
import packet.CPacket;
|
||||
import packet.PacketException;
|
||||
import security.KeyChain;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
|
||||
/*
|
||||
* @Author: Wang Feng
|
||||
* @Description: 测试Face的传输速率
|
||||
* @Version: 1.0.0
|
||||
* @Date: 9:19 2021/5/27
|
||||
* @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
|
||||
*/
|
||||
public class FaceTransmissionSpeedTest {
|
||||
/**
|
||||
* 随机生成身份数据
|
||||
* @return Identity
|
||||
*/
|
||||
private Identity createRandomIdentity() throws Exception{
|
||||
// 测试PersistIdentity
|
||||
SM2KeyPair pair = SM2KeyPair.generateKeyPair();
|
||||
Identity identity = new Identity();
|
||||
identity.setName("/wzq"+Math.random()); // 身份名称必须以/开头 Identifier规定
|
||||
KeyParam keyParam = new KeyParam();
|
||||
keyParam.PublicKeyAlgorithm = 0;
|
||||
keyParam.SignatureAlgorithm = 0;
|
||||
identity.setKeyParam(keyParam);
|
||||
identity.setPrikey(pair.getSm2PrivateKey());
|
||||
identity.setPubkey(pair.getSm2PublicKey());
|
||||
identity.setPasswd("2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99");
|
||||
// identity.lock("0123456789abcdef", Common.SM4ECB);
|
||||
Certificate cert = new Certificate();
|
||||
cert.setVersion(1);
|
||||
cert.setSerialNumber(1);
|
||||
cert.setPublicKey(pair.getSm2PublicKey());
|
||||
cert.setSignatureAlgorithm(Common.SM3withSM2); // TODO 名字有误? SM2withSM3?
|
||||
cert.setPublicKeyAlgorithm(Common.SM2);
|
||||
cert.setIssueTo("root");
|
||||
cert.setIssuer("root");
|
||||
long timestamp = System.currentTimeMillis() / 1000;
|
||||
cert.setTimestamp(timestamp); // 10bit timestamp
|
||||
cert.setNotAfter(timestamp); // 10bit timestamp
|
||||
cert.setNotBefore(timestamp + 1000); // 10bit timestamp
|
||||
cert.setKeyUsage(Common.CertSign);
|
||||
cert.setCA(true);
|
||||
CertUtils.signCert(cert, pair.getSm2PrivateKey());
|
||||
|
||||
identity.setCert(cert);
|
||||
return identity;
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试方法:
|
||||
* UDP发送未签名的推式网络包(CPacket);
|
||||
* 每次测试发包100w个;
|
||||
* 控制变量为不同负载:1300、8000。
|
||||
* 负载-1300
|
||||
*
|
||||
* @throws ComponentException
|
||||
* @throws LogicFaceException
|
||||
*/
|
||||
@Test
|
||||
public void testSendCPacketByUdp_UnSign() throws ComponentException, LogicFaceException {
|
||||
int size=8000; //发包负载
|
||||
long npackets=1000000;
|
||||
// 初始化face
|
||||
LogicFace face = new LogicFace();
|
||||
face.initWithUdp("127.0.0.1", 13899);
|
||||
// 记录时间
|
||||
long startTime=System.currentTimeMillis();
|
||||
// 循环构造包、发包
|
||||
for (int i = 0; i < npackets; i++) {
|
||||
// 构造CPacket
|
||||
CPacket cPacket = new CPacket();
|
||||
byte[] value = new byte[size];
|
||||
cPacket.payload.setValue(value);
|
||||
Identifier name = new Identifier("/wefree");
|
||||
Identifier nameTo = new Identifier("/wf");
|
||||
cPacket.setSrcIdentifier(name);
|
||||
cPacket.setDstIdentifier(nameTo);
|
||||
// 发包
|
||||
face.sendCPacket(cPacket);
|
||||
}
|
||||
long endTime=System.currentTimeMillis();
|
||||
// 计算发包速率 cpacket头部长度约为80
|
||||
long bitNums= npackets *(size+80)*8; // 总传输比特数
|
||||
long times=(endTime-startTime)/1000; // 总耗时(/s)
|
||||
double speed1=((double) bitNums)/(double)(times*1024*1024);// 网速
|
||||
int speed2= (int) (npackets/times);
|
||||
System.out.println("**************************");
|
||||
System.out.println("发包类型:CPacket");
|
||||
System.out.println("发包负载:"+size+" byte, 总长度:"+(size+80)+" byte");
|
||||
System.out.println("发包个数:"+npackets);
|
||||
Date date=new Date();
|
||||
date.setTime(startTime);
|
||||
System.out.println("发包开始时间:"+date);
|
||||
date.setTime(endTime);
|
||||
System.out.println("发包结束时间:"+date);
|
||||
System.out.println("发包总耗时:"+times+" s");
|
||||
System.out.println("发包速率1:"+speed1+"Mbps");
|
||||
System.out.println("发包速率2:"+speed2+"个CPacket/s");
|
||||
System.out.println("**************************");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendCPacketByUdp_Sign() throws Exception {
|
||||
int size=8000; //发包负载
|
||||
long npackets=1000000;
|
||||
// 初始化face
|
||||
LogicFace face = new LogicFace();
|
||||
face.initWithUdp("127.0.0.1", 13899);
|
||||
// 初始化keychain
|
||||
KeyChain keyChain=new KeyChain("./");
|
||||
// Identity id = createRandomIdentity();
|
||||
// keyChain.getIdentifyManager().setDefaultIdentity(id, true);
|
||||
// 记录时间
|
||||
long startTime=System.currentTimeMillis();
|
||||
// 循环构造包、签名包、发包
|
||||
for (int i = 0; i < 10; i++) {
|
||||
// 构造CPacket
|
||||
CPacket cPacket = new CPacket();
|
||||
byte[] value = new byte[size];
|
||||
cPacket.payload.setValue(value);
|
||||
Identifier name = new Identifier("/wefree");
|
||||
Identifier nameTo = new Identifier("/wf");
|
||||
cPacket.setSrcIdentifier(name);
|
||||
cPacket.setDstIdentifier(nameTo);
|
||||
// 对该包进行签名签名
|
||||
keyChain.signCPacket(cPacket);
|
||||
// 发包
|
||||
face.sendCPacket(cPacket);
|
||||
}
|
||||
long endTime=System.currentTimeMillis();
|
||||
// 计算发包速率 cpacket头部长度约为80
|
||||
long bitNums= npackets *(size+80)*8; // 总传输比特数
|
||||
long times=(endTime-startTime)/1000; // 总耗时(/s)
|
||||
double speed1=((double) bitNums)/(double)(times*1024*1024);// 网速
|
||||
int speed2= (int) (npackets/times);
|
||||
System.out.println("**************************");
|
||||
System.out.println("发包类型:Signed CPacket");
|
||||
System.out.println("发包负载:"+size+" byte, 总长度:"+(size+80)+" byte");
|
||||
System.out.println("发包个数:"+npackets);
|
||||
Date date=new Date();
|
||||
date.setTime(startTime);
|
||||
System.out.println("发包开始时间:"+date);
|
||||
date.setTime(endTime);
|
||||
System.out.println("发包结束时间:"+date);
|
||||
System.out.println("发包总耗时:"+times+" s");
|
||||
System.out.println("发包速率1:"+speed1+"Mbps");
|
||||
System.out.println("发包速率2:"+speed2+"个CPacket/s");
|
||||
System.out.println("**************************");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendCPacketByTCP_UnSign() throws ComponentException, LogicFaceException {
|
||||
int size=8000; //发包负载
|
||||
long npackets=1000000;
|
||||
// 初始化face
|
||||
LogicFace face = new LogicFace();
|
||||
face.initWithTcp("127.0.0.1", 13899);
|
||||
// 记录时间
|
||||
long startTime=System.currentTimeMillis();
|
||||
// 循环构造包、发包
|
||||
for (int i = 0; i < npackets; i++) {
|
||||
// 构造CPacket
|
||||
CPacket cPacket = new CPacket();
|
||||
byte[] value = new byte[size];
|
||||
cPacket.payload.setValue(value);
|
||||
Identifier name = new Identifier("/wefree");
|
||||
Identifier nameTo = new Identifier("/wf");
|
||||
cPacket.setSrcIdentifier(name);
|
||||
cPacket.setDstIdentifier(nameTo);
|
||||
// 发包
|
||||
face.sendCPacket(cPacket);
|
||||
System.out.println(i);
|
||||
}
|
||||
long endTime=System.currentTimeMillis();
|
||||
// 计算发包速率 cpacket头部长度约为80
|
||||
long bitNums= npackets *(size+80)*8; // 总传输比特数
|
||||
long times=(endTime-startTime)/1000; // 总耗时(/s)
|
||||
double speed1=((double) bitNums)/(double)(times*1024*1024);// 网速
|
||||
int speed2= (int) (npackets/times);
|
||||
System.out.println("*************TCP*************");
|
||||
System.out.println("发包类型:CPacket");
|
||||
System.out.println("发包负载:"+size+" byte, 总长度:"+(size+80)+" byte");
|
||||
System.out.println("发包个数:"+npackets);
|
||||
Date date=new Date();
|
||||
date.setTime(startTime);
|
||||
System.out.println("发包开始时间:"+date);
|
||||
date.setTime(endTime);
|
||||
System.out.println("发包结束时间:"+date);
|
||||
System.out.println("发包总耗时:"+times+" s");
|
||||
System.out.println("发包速率1:"+speed1+"Mbps");
|
||||
System.out.println("发包速率2:"+speed2+"个CPacket/s");
|
||||
System.out.println("*************TCP*************");
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user