Change the Perf async test

This commit is contained in:
luoyan35714
2014-12-09 17:35:25 +08:00
parent f47887aab4
commit fd77b8e66e
17 changed files with 2051 additions and 1688 deletions
@@ -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);
}
}
@@ -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();
}
}
@@ -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) + "]");
@@ -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();
}
}