mirror of
https://github.com/luoyan35714/OPC_Client.git
synced 2026-04-18 00:01:30 +08:00
Change the Perf async test
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
package com.freud.opc.dcom.perf;
|
||||
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.CLSID;
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.DOMAIN;
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.HOST;
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.PASSWORD;
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.USERNAME;
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.getProp;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import org.jinterop.dcom.common.JISystem;
|
||||
import org.jinterop.dcom.core.IJIComObject;
|
||||
import org.jinterop.dcom.core.JIClsid;
|
||||
import org.jinterop.dcom.core.JIComServer;
|
||||
import org.jinterop.dcom.core.JISession;
|
||||
import org.openscada.opc.dcom.common.KeyedResult;
|
||||
import org.openscada.opc.dcom.common.KeyedResultSet;
|
||||
import org.openscada.opc.dcom.common.ResultSet;
|
||||
import org.openscada.opc.dcom.da.IOPCDataCallback;
|
||||
import org.openscada.opc.dcom.da.OPCITEMDEF;
|
||||
import org.openscada.opc.dcom.da.OPCITEMRESULT;
|
||||
import org.openscada.opc.dcom.da.ValueData;
|
||||
import org.openscada.opc.dcom.da.impl.OPCGroupStateMgt;
|
||||
import org.openscada.opc.dcom.da.impl.OPCServer;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Freud
|
||||
*
|
||||
*/
|
||||
public class SyncPerfTest {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
JISystem.setAutoRegisteration(true);
|
||||
|
||||
JISession session = JISession.createSession(getProp(DOMAIN),
|
||||
getProp(USERNAME), getProp(PASSWORD));
|
||||
|
||||
final JIComServer comServer = new JIComServer(
|
||||
JIClsid.valueOf(getProp(CLSID)), getProp(HOST), session);
|
||||
|
||||
final IJIComObject serverObject = comServer.createInstance();
|
||||
|
||||
OPCServer server = new OPCServer(serverObject);
|
||||
|
||||
OPCGroupStateMgt group = server.addGroup("", true, 1000, 1234, 0, 0.0f,
|
||||
1033);
|
||||
|
||||
//group.getSyncIO().read(source, serverHandles)
|
||||
|
||||
OPCITEMDEF item = new OPCITEMDEF();
|
||||
|
||||
item.setActive(true);
|
||||
item.setItemID("Random.real10");
|
||||
item.setClientHandle(new Random().nextInt());
|
||||
|
||||
group.attach(new IOPCDataCallback() {
|
||||
|
||||
@Override
|
||||
public void writeComplete(int arg0, int arg1, int arg2,
|
||||
ResultSet<Integer> arg3) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readComplete(int arg0, int arg1, int arg2, int arg3,
|
||||
KeyedResultSet<Integer, ValueData> arg4) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataChange(int arg0, int arg1, int arg2, int arg3,
|
||||
KeyedResultSet<Integer, ValueData> items) {
|
||||
for (KeyedResult<Integer, ValueData> item : items) {
|
||||
System.out.println(item.getKey() + "-------"
|
||||
+ item.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelComplete(int arg0, int arg1) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
KeyedResultSet<OPCITEMDEF, OPCITEMRESULT> test = group
|
||||
.getItemManagement().add(item);
|
||||
|
||||
System.out.println(test.size());
|
||||
|
||||
Thread.sleep(10 * 1000);
|
||||
|
||||
}
|
||||
}
|
||||
+64
-13
@@ -3,14 +3,20 @@ package com.freud.opc.utgard.perf;
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.config;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.openscada.opc.lib.da.AccessBase;
|
||||
import org.openscada.opc.dcom.common.KeyedResult;
|
||||
import org.openscada.opc.dcom.common.KeyedResultSet;
|
||||
import org.openscada.opc.dcom.common.ResultSet;
|
||||
import org.openscada.opc.dcom.da.IOPCDataCallback;
|
||||
import org.openscada.opc.dcom.da.OPCDATASOURCE;
|
||||
import org.openscada.opc.dcom.da.ValueData;
|
||||
import org.openscada.opc.dcom.da.impl.OPCAsyncIO2;
|
||||
import org.openscada.opc.lib.common.NotConnectedException;
|
||||
import org.openscada.opc.lib.da.Group;
|
||||
import org.openscada.opc.lib.da.Server;
|
||||
import org.openscada.opc.lib.da.SyncAccess;
|
||||
|
||||
import com.freud.opc.utgard.perf.common.DataCallBackListener;
|
||||
|
||||
public class AsyncOPCPerfTest {
|
||||
|
||||
@@ -32,17 +38,62 @@ public class AsyncOPCPerfTest {
|
||||
|
||||
server.connect();
|
||||
|
||||
AccessBase access = new SyncAccess(server, 1000);
|
||||
int limit = count * NUMBER;
|
||||
for (int i = 0; i < limit; i++) {
|
||||
access.addItem("Random.Real" + i, new DataCallBackListener(limit));
|
||||
}
|
||||
Group group = server.addGroup("Freud");
|
||||
// AsyncResult result = group.getAsyncIO20().read(transactionId,
|
||||
// serverHandles);
|
||||
|
||||
access.bind();
|
||||
Thread.sleep(5000);
|
||||
access.unbind();
|
||||
group.addItem("Read Error.Int1");
|
||||
group.addItem("Random.Int1");
|
||||
|
||||
OPCAsyncIO2 async20 = group.getAsyncIO20();
|
||||
|
||||
if (async20 == null)
|
||||
throw new NotConnectedException();
|
||||
async20.refresh(OPCDATASOURCE.OPC_DS_DEVICE, 0);
|
||||
|
||||
group.attach(new IOPCDataCallback() {
|
||||
|
||||
@Override
|
||||
public void writeComplete(int arg0, int arg1, int arg2,
|
||||
ResultSet<Integer> arg3) {
|
||||
System.out.println("Write Complete");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readComplete(int arg0, int arg1, int arg2, int arg3,
|
||||
KeyedResultSet<Integer, ValueData> arg4) {
|
||||
System.out.println("Read Complete");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataChange(int arg0, int arg1, int arg2, int arg3,
|
||||
KeyedResultSet<Integer, ValueData> arg4) {
|
||||
Iterator<KeyedResult<Integer, ValueData>> ite = arg4.iterator();
|
||||
int i = 0;
|
||||
while (ite.hasNext()) {
|
||||
KeyedResult<Integer, ValueData> value = ite.next();
|
||||
System.out.println((++i) + "-" + value.getKey() + "--"
|
||||
+ value.getValue().getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelComplete(int arg0, int arg1) {
|
||||
System.out.println("Cancel Complete");
|
||||
}
|
||||
});
|
||||
|
||||
// AccessBase access = new SyncAccess(server, 1000);
|
||||
//
|
||||
// int limit = count * NUMBER;
|
||||
// for (int i = 0; i < limit; i++) {
|
||||
// access.addItem("Random.Real" + i, new DataCallBackListener(limit));
|
||||
// }
|
||||
//
|
||||
// access.bind();
|
||||
Thread.sleep(100000);
|
||||
// access.unbind();
|
||||
|
||||
server.dispose();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+34
-22
@@ -3,23 +3,25 @@ package com.freud.opc.utgard.perf;
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.config;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.openscada.opc.lib.da.AccessBase;
|
||||
import org.openscada.opc.dcom.common.KeyedResultSet;
|
||||
import org.openscada.opc.dcom.common.ResultSet;
|
||||
import org.openscada.opc.dcom.da.IOPCDataCallback;
|
||||
import org.openscada.opc.dcom.da.ValueData;
|
||||
import org.openscada.opc.lib.da.Async20Access;
|
||||
import org.openscada.opc.lib.da.AutoReconnectController;
|
||||
import org.openscada.opc.lib.da.DataCallback;
|
||||
import org.openscada.opc.lib.da.Group;
|
||||
import org.openscada.opc.lib.da.Item;
|
||||
import org.openscada.opc.lib.da.ItemState;
|
||||
import org.openscada.opc.lib.da.Server;
|
||||
|
||||
public class PublishOPCPerfTest {
|
||||
|
||||
private static Logger LOGGER = Logger.getLogger(PublishOPCPerfTest.class);
|
||||
|
||||
private static final int NUMBER = 10;
|
||||
private static final int WAN_NUMBER = 10;
|
||||
private static final int NUMBER = 10000;
|
||||
private static final int WAN_NUMBER = 1;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
for (int i = 1; i <= WAN_NUMBER; i++) {
|
||||
@@ -35,26 +37,36 @@ public class PublishOPCPerfTest {
|
||||
|
||||
Server server = new Server(config(),
|
||||
Executors.newSingleThreadScheduledExecutor());
|
||||
AutoReconnectController controller = new AutoReconnectController(server);
|
||||
|
||||
controller.connect();
|
||||
server.connect();
|
||||
|
||||
AccessBase access = new Async20Access(server, 1000, true);
|
||||
Group group = server.addGroup("Group");
|
||||
|
||||
int limit = count * NUMBER;
|
||||
for (int i = 0; i < limit; i++) {
|
||||
access.addItem("Random.Real" + i, new DataCallback() {
|
||||
@Override
|
||||
public void changed(Item item, ItemState is) {
|
||||
LOGGER.info("Item:[" + item.getId() + "], Value:["
|
||||
+ is.getValue() + "]");
|
||||
}
|
||||
});
|
||||
}
|
||||
Map<String, Item> map = group.addItems("Random.int" + 1);
|
||||
|
||||
group.attach(new IOPCDataCallback() {
|
||||
|
||||
@Override
|
||||
public void writeComplete(int i, int j, int k,
|
||||
ResultSet<Integer> resultset) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readComplete(int i, int j, int k, int l,
|
||||
KeyedResultSet<Integer, ValueData> keyedresultset) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataChange(int i, int j, int k, int l,
|
||||
KeyedResultSet<Integer, ValueData> keyedresultset) {
|
||||
System.out.println("DataChanged");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelComplete(int i, int j) {
|
||||
}
|
||||
});
|
||||
|
||||
access.bind();
|
||||
Thread.sleep(2 * 24 * 60 * 60 * 1000);
|
||||
access.unbind();
|
||||
long end = System.currentTimeMillis();
|
||||
LOGGER.info("EndDate[" + new Date() + "],CurrentMillis:" + end);
|
||||
LOGGER.info("Total Spend:[" + (end - start) + "]");
|
||||
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
package com.freud.opc.utgard.perf;
|
||||
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.config;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.openscada.opc.lib.da.Group;
|
||||
import org.openscada.opc.lib.da.Item;
|
||||
import org.openscada.opc.lib.da.Server;
|
||||
|
||||
public class SyncMultiThreadTest {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
for (int i = 1; i <= 20; i++) {
|
||||
new Thread(new TestMultiple(i)).start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TestMultiple implements Runnable {
|
||||
|
||||
private static Logger LOGGER = Logger.getLogger(TestMultiple.class);
|
||||
|
||||
private static final int NUMBER = 20000;
|
||||
|
||||
private int count_number;
|
||||
|
||||
public TestMultiple(int count_number) {
|
||||
this.count_number = count_number;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
try {
|
||||
testSteps();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void testSteps() throws Exception {
|
||||
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
int limit = count_number * NUMBER;
|
||||
|
||||
LOGGER.info("[" + limit + "W:]" + "Step-" + limit + "W:");
|
||||
LOGGER.info("[" + limit + "W:]" + "startDate[" + new Date()
|
||||
+ "],CurrentMillis:" + start);
|
||||
|
||||
Server server = new Server(config(), null);
|
||||
|
||||
server.connect();
|
||||
|
||||
Group group = server.addGroup();
|
||||
|
||||
Item[] items = new Item[NUMBER];
|
||||
|
||||
long createStart = System.currentTimeMillis();
|
||||
LOGGER.info("[" + limit + "W:]" + "Create the items[" + new Date()
|
||||
+ "],CurrentMillis:" + createStart);
|
||||
|
||||
for (int i = (count_number - 1) * NUMBER; i < limit; i++) {
|
||||
Item item = group.addItem("Random.Real" + i);
|
||||
items[i % NUMBER] = item;
|
||||
}
|
||||
|
||||
long createEnd = System.currentTimeMillis();
|
||||
LOGGER.info("[" + limit + "W:]" + "Create finish [" + new Date()
|
||||
+ "],CurrentMillis:" + createEnd);
|
||||
|
||||
long read = System.currentTimeMillis();
|
||||
LOGGER.info("[" + limit + "W:]" + "Start Read[" + new Date()
|
||||
+ "],CurrentMillis:" + read);
|
||||
|
||||
group.read(true, items);
|
||||
|
||||
long end = System.currentTimeMillis();
|
||||
LOGGER.info("[" + limit + "W:]" + "End Read[" + new Date()
|
||||
+ "],CurrentMillis:" + end);
|
||||
|
||||
LOGGER.info(MessageFormat.format("[" + limit + "W:]"
|
||||
+ "Total[{0}], CreateItem[{1}], Read[{2}]", end - start,
|
||||
createEnd - createStart, end - read));
|
||||
|
||||
group.remove();
|
||||
server.dispose();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.freud.opc.utgard.perf;
|
||||
|
||||
import static com.freud.opc.utgard.perf.config.ConfigReader.config;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.openscada.opc.dcom.common.KeyedResultSet;
|
||||
import org.openscada.opc.dcom.common.ResultSet;
|
||||
import org.openscada.opc.dcom.da.IOPCDataCallback;
|
||||
import org.openscada.opc.dcom.da.ValueData;
|
||||
import org.openscada.opc.lib.da.Group;
|
||||
import org.openscada.opc.lib.da.Item;
|
||||
import org.openscada.opc.lib.da.Server;
|
||||
|
||||
public class Test {
|
||||
private static Logger LOGGER = Logger.getLogger(Test.class);
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
LOGGER.info("Step-" + 10 + "W:");
|
||||
LOGGER.info("StartDate[" + new Date() + "],CurrentMillis:" + start);
|
||||
|
||||
Server server = new Server(config(),
|
||||
Executors.newSingleThreadScheduledExecutor());
|
||||
|
||||
server.connect();
|
||||
|
||||
Group group = server.addGroup();
|
||||
Item item = group.addItem("Random.int4");
|
||||
|
||||
group.setActive(true);
|
||||
group.setActive(true, item);
|
||||
|
||||
group.attach(new IOPCDataCallback() {
|
||||
|
||||
@Override
|
||||
public void writeComplete(int i, int j, int k,
|
||||
ResultSet<Integer> resultset) {
|
||||
System.out.println("Write Complete");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readComplete(int i, int j, int k, int l,
|
||||
KeyedResultSet<Integer, ValueData> keyedresultset) {
|
||||
System.out.println("Read Complete");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dataChange(int i, int j, int k, int l,
|
||||
KeyedResultSet<Integer, ValueData> keyedresultset) {
|
||||
System.out.println("Data change");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelComplete(int i, int j) {
|
||||
System.out.println("Cancel Complete");
|
||||
}
|
||||
});
|
||||
|
||||
Thread.sleep(10 * 1000);
|
||||
|
||||
server.disconnect();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user