This commit is contained in:
Administrator
2025-04-24 10:16:38 +08:00
parent 6de65562be
commit 7267aec1fd
108 changed files with 7621 additions and 1890 deletions
@@ -0,0 +1,91 @@
package org.kne.cloud.network.perf;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.ServerSocketChannel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import org.kne.cloud.network.MultipurposeSocketAddress;
import org.kne.cloud.network.SocketChannelListener;
import org.kne.cloud.network.ThreadTool;
import org.kne.cloud.network.klalb.KLALBController;
import org.kne.cloud.network.klalb.KLALBRemoteLine;
import org.kne.cloud.network.klalb.StreamChannelKLALBPacketLink;
public class NodeBenchmark implements Runnable{
private List<NodeEntry> nodeList=new ArrayList<>();
private class NodeEntry{
private SocketChannelListener scl;
private KLALBController kc;
public SocketChannelListener getScl() {
return scl;
}
public KLALBController getKc() {
return kc;
}
public NodeEntry(SocketChannelListener scl, KLALBController kc) {
super();
this.scl = scl;
this.kc = kc;
}
}
private KLALBController klalbController;
private int nodes;
public NodeBenchmark(KLALBController klalbController,int nodes) {
this.klalbController=klalbController;
this.nodes=nodes;
}
public void run() {
Random r=new Random();
for (int i = 0; i < nodes; i++) {
KLALBController kct=new KLALBController(false);
try {
SocketChannelListener scl=new SocketChannelListener(ServerSocketChannel.open().bind(new InetSocketAddress("127.0.0.8",0)));
scl.setCon((c)->{
try {
kct.addRemoteLine(new KLALBRemoteLine(new StreamChannelKLALBPacketLink(c)));
} catch (IOException e) {
e.printStackTrace();
}
});
System.out.println("KLALBController "+i+" created,locator:"+kct.getSelf());
int size=nodeList.size();
if(size>0) {
for (int j = 0; j < 1; j++) {
int ind=r.nextInt(size);
NodeEntry ne=nodeList.get(ind);
MultipurposeSocketAddress mpsa=new MultipurposeSocketAddress((InetSocketAddress) ne.getScl().getServerSocketChannel().getLocalAddress());
kct.addRemoteLines(mpsa);
System.out.println("connect:" +ne.getKc().getSelf().getAddress());
}
}
nodeList.add(new NodeEntry( scl, kct));
Thread.sleep(100);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
NodeEntry ne=nodeList.get(0);
MultipurposeSocketAddress mpsa=new MultipurposeSocketAddress((InetSocketAddress) ne.getScl().getServerSocketChannel().getLocalAddress());
klalbController.addRemoteLines(mpsa);
} catch (IOException e) {
e.printStackTrace();
}
}
public void startPerfing() {
ThreadTool.makeVThreadIfSupport("节点数量测试线程" ,this).start();
}
}