1   package org.sim0mq.test;
2   
3   import java.util.Arrays;
4   
5   import org.sim0mq.Sim0MQException;
6   import org.zeromq.ZContext;
7   import org.zeromq.ZMQ;
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  public class Tic
18  {
19      
20  
21  
22  
23      public static void main(final String[] args) throws Sim0MQException
24      {
25          long time = System.currentTimeMillis();
26          int nummessages = 100000;
27          try (ZContext context = new ZContext(1))
28          {
29              
30              System.out.println("Connecting to server on port 5556...");
31  
32              ZMQ.Socket requester = context.createSocket(ZMQ.REQ);
33              requester.connect("tcp://localhost:5556");
34  
35              for (int i = 0; i < nummessages; i++)
36              {
37                  
38                  byte[] message = string2byte("TIC");
39                  requester.send(message, 0);
40  
41                  
42                  byte[] reply = requester.recv(0);
43                  String rs = byte2string(reply);
44                  if (!rs.equals("TOC"))
45                  {
46                      System.err.println("Answer was not TOC");
47                  }
48              }
49  
50              
51              byte[] message = string2byte("STOP");
52              requester.send(message, 0);
53  
54              requester.close();
55              context.destroy();
56          }
57          long delta = (System.currentTimeMillis() - time);
58          System.out.println("RUNTIME = " + delta + " ms");
59          System.out.println("Transactions/second = " + 1000.0 * nummessages / delta + " tps");
60          System.out.println("Messages/second (req + rep) = " + 2000.0 * nummessages / delta + " mps");
61      }
62  
63      
64  
65  
66  
67  
68      public static byte[] string2byte(final String s)
69      {
70          byte[] b = s.getBytes();
71          return Arrays.copyOf(b, b.length + 1);
72      }
73  
74      
75  
76  
77  
78  
79      public static String byte2string(final byte[] b)
80      {
81          return new String(Arrays.copyOf(b, b.length - 1));
82      }
83  
84  }