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.IBuffer; 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.InputBuffer; import uk.ac.imperial.lsds.seepworker.core.input.NetworkDataStream; public class BasicWorkerWorkerCommunicationTest { public static void main(String args[]) { // // Create inputAdapter map that is used to configure networkselector // int opId = 99; // int clientId = 100; // int streamId = 101; // Schema s = SchemaBuilder.getInstance().newField(Type.INT, "userId").newField(Type.LONG, "ts").build(); // Properties p = new Properties(); // p.setProperty("master.ip", "127.0.0.1"); // p.setProperty("batch.size", "10"); // p.setProperty("properties.file", ""); // WorkerConfig config = new WorkerConfig(p); //// NetworkDataStream nds = new NetworkDataStream(, opId, clientId, s); // InputBuffer buffer; // NetworkDataStream nds = new NetworkDataStream(config, streamId, buffer, s); // IBuffer iBuffer; // Map<Integer, InputAdapter> iapMap = null; // iapMap = new HashMap<>(); // iapMap.put(opId, nds); // // TODO: build this // NetworkSelector ds = NetworkSelector.makeNetworkSelectorWithMap(opId); // // 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; // ds.configureServerToListen(myIp, listeningPort); // // // create outputbuffer for the client // Connection c = new Connection(new EndPoint(clientId, myIp, listeningPort)); // int batch_size = config.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(); // } // // /** 1 send **/ // // // Create tuple and send it to the other worker // byte[] serializedData = OTuple.create(s, new String[]{"userId", "ts"}, new Object[]{3, 23423L}); // //byte[] serializedData2 = OTuple.create(s, new String[]{"userId", "ts"}, new Object[]{4, 8384L}); // System.out.println("Tuple length: "+serializedData.length); // //ob.write(serializedData); // ob.write(serializedData); //// if(canSend){ //// System.out.println("Notifying to send"); //// ((EventAPI)ds).readyForWrite(clientId); //// } else{ //// System.out.println("CANNOT send yet"); //// } // // DataItem _incomingTuple = nds.pullDataItem(500); // blocking until there's something to receive // ITuple incomingTuple = _incomingTuple.consume(); // System.out.println(incomingTuple.toString()); // //// ITuple incomingTuple2 = nds.pullDataItem(); // blocking until there's something to receive //// System.out.println(incomingTuple2.toString()); // // /** 2 send **/ // // Create tuple and send it to the other worker // byte[] serializedData2 = OTuple.create(s, new String[]{"userId", "ts"}, new Object[]{4, 848448L}); // System.out.println("Tuple length: "+serializedData2.length); // ob.write(serializedData2); //// if(canSend2){ //// System.out.println("Notifying to send"); //// ((EventAPI)ds).readyForWrite(clientId); //// } else{ //// System.out.println("CANNOT send yet"); //// } // // DataItem _incomingTuple2 = nds.pullDataItem(500); // blocking until there's something to receive // ITuple incomingTuple2 = _incomingTuple2.consume(); // System.out.println(incomingTuple2.toString()); // // DataItem _incomingTuple3 = nds.pullDataItem(500); // blocking until there's something to receive // ITuple incomingTuple3 = _incomingTuple3.consume(); // System.out.println(incomingTuple3.toString()); // // while(true){ // try { // Thread.sleep(1000); // } // catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } } }