f49df9cbc217d6878b78af418692d2347a97b73d
[ovsdb.git] / ovsdb / src / test / java / org / opendaylight / ovsdb / internal / jsonrpc / OVSDBNettyFactoryTest.java
1 package org.opendaylight.ovsdb.internal.jsonrpc;
2
3 import com.fasterxml.jackson.annotation.JsonAutoDetect;
4 import com.fasterxml.jackson.annotation.PropertyAccessor;
5 import com.fasterxml.jackson.databind.DeserializationFeature;
6 import com.fasterxml.jackson.databind.ObjectMapper;
7 import com.google.common.collect.Lists;
8 import com.google.common.util.concurrent.ListenableFuture;
9
10 import io.netty.channel.ChannelHandler;
11 import io.netty.handler.codec.string.StringEncoder;
12 import io.netty.handler.logging.LogLevel;
13 import io.netty.handler.logging.LoggingHandler;
14 import io.netty.util.CharsetUtil;
15 import junit.framework.TestCase;
16
17 import org.junit.Test;
18 import org.opendaylight.controller.sal.connection.ConnectionConstants;
19 import org.opendaylight.controller.sal.core.Node;
20 import org.opendaylight.ovsdb.database.DatabaseSchema;
21 import org.opendaylight.ovsdb.internal.ConnectionService;
22 import org.opendaylight.ovsdb.internal.MessageHandler;
23 import org.opendaylight.ovsdb.internal.jsonrpc.JsonRpcEndpoint;
24 import org.opendaylight.ovsdb.internal.ovsdb.OVSDB;
25 import org.opendaylight.ovsdb.message.EchoResponse;
26 import org.opendaylight.ovsdb.message.MonitorRequestBuilder;
27 import org.opendaylight.ovsdb.message.TableUpdates;
28 import org.opendaylight.ovsdb.table.internal.Table;
29 import org.opendaylight.ovsdb.table.internal.Tables;
30
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.HashMap;
34 import java.util.List;
35 import java.util.Map;
36 import java.util.Set;
37 import java.util.concurrent.ExecutionException;
38 import java.util.concurrent.Future;
39
40
41 public class OVSDBNettyFactoryTest {
42
43     @Test
44     public void testSome() throws InterruptedException, ExecutionException {
45
46         //todo(ashwin): this is a big mess without a bean factory like spring or guice
47         ConnectionService service = new ConnectionService();
48         ObjectMapper objectMapper = new ObjectMapper();
49         objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
50         JsonRpcEndpoint factory = new JsonRpcEndpoint(objectMapper, service);
51         JsonRpcServiceBinderHandler binderHandler = new JsonRpcServiceBinderHandler(factory);
52
53         List<ChannelHandler> _handlers = Lists.newArrayList();
54         _handlers.add(new LoggingHandler(LogLevel.INFO));
55         _handlers.add(new JsonRpcDecoder(100000));
56         _handlers.add(new StringEncoder(CharsetUtil.UTF_8));
57         _handlers.add(binderHandler);
58
59         service.init();
60         service.setHandlers(_handlers);
61         String identifier = "TEST";
62         Node.NodeIDType.registerIDType("OVS", String.class);
63         Map<ConnectionConstants, String> params = new HashMap<ConnectionConstants, String>();
64         params.put(ConnectionConstants.ADDRESS, "192.168.56.101");
65         params.put(ConnectionConstants.PORT, "6634");
66         Node node = service.connect(identifier, params);
67         if (node != null) {
68             binderHandler.setNode(node);
69         }
70
71         OVSDB ovsdb = factory.getClient(node, OVSDB.class);
72
73         //GET DB-SCHEMA
74         List<String> dbNames = Arrays.asList("Open_vSwitch");
75         ListenableFuture<DatabaseSchema> dbSchemaF = ovsdb.get_schema(dbNames);
76         DatabaseSchema databaseSchema = dbSchemaF.get();
77         System.out.println(databaseSchema);
78
79         //TEST MONITOR
80         MonitorRequestBuilder monitorReq = new MonitorRequestBuilder();
81         for (Table table : Tables.getTables()) {
82             monitorReq.monitor(table);
83         }
84
85         ListenableFuture<TableUpdates> monResponse = ovsdb.monitor(monitorReq);
86         System.out.println("Monitor Request sent :");
87         TableUpdates updates = monResponse.get();
88
89         Set<Table.Name> available = updates.availableUpdates();
90         for (Table.Name name : available) {
91             System.out.println(name.getName() +":"+ updates.getUpdate(name).toString());
92         }
93
94         // TEST ECHO
95         ListenableFuture<List<String>> some = ovsdb.echo();
96         Object s = some.get();
97         System.out.printf("Result of echo is %s \n", s);
98
99         // TEST ECHO REQUEST/REPLY
100
101         Thread.sleep(10);
102         service.disconnect(node);
103     }
104
105 }