Introducing the Modification classses
[controller.git] / opendaylight / md-sal / sal-remoterpc-connector / implementation / src / test / java / org / opendaylight / controller / sal / connector / remoterpc / utils / RemoteServerTestClient.java
1 package org.opendaylight.controller.sal.connector.remoterpc.utils;
2
3 import java.util.concurrent.ExecutorService;
4 import java.util.concurrent.Executors;
5
6 import org.opendaylight.controller.sal.connector.api.RpcRouter;
7 import org.opendaylight.controller.sal.connector.remoterpc.dto.Message;
8 import org.opendaylight.controller.sal.connector.remoterpc.util.XmlUtils;
9 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
10 import org.zeromq.ZMQ;
11
12 public class RemoteServerTestClient {
13
14
15
16   public static void main(String args[]) throws Exception{
17     String serverAddress = "tcp://10.195.128.108:5666";
18     ZMQ.Context ctx = ZMQ.context(1);
19     ExecutorService executor = Executors.newSingleThreadExecutor();
20     RemoteServerTestClient client = new RemoteServerTestClient();
21     executor.execute(
22         MessagingUtil.sendAMessage(ctx, serverAddress, client.createPingMessage(serverAddress))
23     );
24     MessagingUtil.sendAMessage(ctx, serverAddress, client.createPingMessage(serverAddress));
25
26     Thread.sleep(5000);
27     MessagingUtil.closeZmqContext(ctx);
28     executor.shutdown();
29   }
30
31   public Message createPingMessage(String serverAddress){
32     Message ping = new Message.MessageBuilder()
33         .type(Message.MessageType.PING)
34         .sender("localhost:5444")
35         .recipient(serverAddress)
36         .build();
37
38     return ping;
39   }
40   public Message createAddFlowMessage(String serverAddress ){
41
42     RpcRouter.RouteIdentifier<?, ?, ?> routeIdentifier = getAddFlowRpcIdentifier();
43
44     Message addFlow = new Message.MessageBuilder()
45         .type(Message.MessageType.REQUEST)
46         .sender("localhost:5444")
47         .recipient(serverAddress)
48         .route(routeIdentifier)
49         .payload(getAddFlowPayload(1,1))
50         .build();
51
52     return addFlow;
53   }
54
55   private RpcRouter.RouteIdentifier<?, ?, ?> getAddFlowRpcIdentifier(){
56     throw new UnsupportedOperationException();
57   }
58
59   private CompositeNode getAddFlowPayload(int flowId, int tableId){
60     final String xml =
61     "<flow xmlns=\"urn:opendaylight:flow:inventory\">"
62     + "<priority>5</priority>"
63     + "<flow-name>Foo</flow-name>"
64     + "<match>"
65     + "<ethernet-match>"
66     + "<ethernet-type>"
67     + "<type>2048</type>"
68     + "</ethernet-type>"
69     + "</ethernet-match>"
70     + "<ipv4-destination>10.0.10.2/24</ipv4-destination>"
71     + "</match>"
72     + "<id>" + flowId + "</id>"
73     + "<table_id>" + tableId + "</table_id>"
74     + "<instructions>"
75     + "<instruction>"
76     + "<order>0</order>"
77     + "<apply-actions>"
78     + "<action>"
79     + "<order>0</order>"
80     + "<dec-nw-ttl/>"
81     + "</action>"
82     + "</apply-actions>"
83     + "</instruction>"
84     + "</instructions>"
85     + "</flow>";
86
87     return XmlUtils.xmlToCompositeNode(xml);
88   }
89 }