package uk.ac.imperial.lsds.seep.integration.comm; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.util.Set; import uk.ac.imperial.lsds.seep.api.data.DataItem; import uk.ac.imperial.lsds.seep.api.data.ITuple; import uk.ac.imperial.lsds.seep.api.data.OTuple; import uk.ac.imperial.lsds.seep.api.data.Schema; import uk.ac.imperial.lsds.seep.api.data.Schema.SchemaBuilder; import uk.ac.imperial.lsds.seep.api.data.Type; import uk.ac.imperial.lsds.seep.comm.Connection; import uk.ac.imperial.lsds.seep.core.InputAdapter; import uk.ac.imperial.lsds.seepworker.WorkerConfig; import uk.ac.imperial.lsds.seepworker.comm.NetworkSelector; import uk.ac.imperial.lsds.seepworker.core.input.NetworkDataStream; public class WorkerWorkerDataCommunicationTest { public static void main(String args[]){ WorkerWorkerDataCommunicationTest wwdct = new WorkerWorkerDataCommunicationTest(); Schema intLong = SchemaBuilder.getInstance().newField(Type.INT, "userId").newField(Type.LONG, "ts").build(); Schema string3 = SchemaBuilder.getInstance().newField(Type.STRING, "sentence") .newField(Type.STRING, "word").newField(Type.STRING, "pos").build(); wwdct.execute(intLong); } public void execute(Schema s) { // WorkerWorkerDataCommunicationTest wwdct = new WorkerWorkerDataCommunicationTest(); // // // Create inputAdapter map that is used to configure networkselector // int opId = 99; // int streamId = 100; // Map<Integer, InputAdapter> iapMap = null; // iapMap = new HashMap<>(); // Properties p = new Properties(); // p.setProperty("master.ip", "127.0.0.1"); // p.setProperty("batch.size", "10000"); // p.setProperty("properties.file", ""); // WorkerConfig fake = new WorkerConfig(p); // NetworkDataStream nds = new NetworkDataStream(new WorkerConfig(p), opId, streamId, s); // iapMap.put(opId, nds); // // TODO: build this // NetworkSelector ds = NetworkSelector.makeNetworkSelectorWithMap(opId, iapMap); // // Create client and server that will be interchanging data // InetAddress myIp = null; // try { // myIp = InetAddress.getByName("127.0.0.1"); // } // catch (UnknownHostException e) { // e.printStackTrace(); // } // int listeningPort = 5555; // int dataPort = listeningPort; // ds.configureAccept(myIp, listeningPort); // // // create outputbuffer for the client // Connection c = new Connection(new EndPoint(streamId, myIp, listeningPort, dataPort)); // int batch_size = fake.getInt(WorkerConfig.BATCH_SIZE); // OutputBuffer ob = new OutputBuffer(opId, c, streamId, batch_size); // Set<OutputBuffer> obs = new HashSet<>(); // obs.add(ob); // ds.configureConnect(obs); // // ds.initSelector(); // // try { // Thread.sleep(1000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // // ds.startSelector(); // // /** Continuous sending **/ // int interWriteTime = -1; // Writer w = wwdct.new Writer(streamId, ob, ds, interWriteTime, s); // Thread writer = new Thread(w); // writer.setName("ImTheWriter"); // // Reader r = wwdct.new Reader(nds); // Thread reader = new Thread(r); // reader.setName("ImTheReader"); // // reader.start(); // writer.start(); // // while(true){ // try { // Thread.sleep(1000); // } // catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } } class Writer implements Runnable{ // int clientId; // OutputBuffer ob; // NetworkSelector ds; // int sleep; // Schema s; // // public Writer(int clientId, OutputBuffer ob, NetworkSelector ds, int sleep, Schema s){ // this.clientId = clientId; // this.ob = ob; // this.ds = ds; // this.sleep = sleep; // this.s = s; // } @Override public void run() { // int userId = 0; // long ts = System.currentTimeMillis(); // while(true){ // ts = System.currentTimeMillis(); // userId++; // byte[] serializedData = OTuple.create(s, new String[]{"userId", "ts"}, new Object[]{userId, ts}); // //byte[] serializedData = OTuple.create(s, new String[]{"sentence", "word", "pos"}, // // new Object[]{"This is an example sentence used to make a point about a buggy system", "system", "UNR"}); // boolean complete = ob.write(serializedData); // if(complete){ // ds.readyForWrite(ob.id()); // } // if(sleep > -1){ // try { // Thread.sleep(sleep); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // } } } class Reader implements Runnable{ // NetworkDataStream nds; // public Reader(NetworkDataStream nds){ // this.nds = nds; // } @Override public void run() { // int counter = 0; // long ts = System.currentTimeMillis(); // while(true){ // DataItem dataItem = nds.pullDataItem(500); // blocking until there's something to receive // if(dataItem != null){ // boolean consume = true; // while(consume){ // ITuple incomingTuple = dataItem.consume(); // if(incomingTuple != null){ // counter++; // } // else{ // consume = false; // } // } // } // if((System.currentTimeMillis()) - ts > 1000){ // System.out.println("e/s: "+counter); // counter = 0; // ts = System.currentTimeMillis(); // } // } } } }