1 package org.opendaylight.ovsdb.internal.jsonrpc;
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;
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;
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;
31 import java.util.ArrayList;
32 import java.util.Arrays;
33 import java.util.HashMap;
34 import java.util.List;
37 import java.util.concurrent.ExecutionException;
38 import java.util.concurrent.Future;
41 public class OVSDBNettyFactoryTest {
44 public void testSome() throws InterruptedException, ExecutionException {
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);
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);
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);
68 binderHandler.setNode(node);
71 OVSDB ovsdb = factory.getClient(node, OVSDB.class);
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);
80 MonitorRequestBuilder monitorReq = new MonitorRequestBuilder();
81 for (Table table : Tables.getTables()) {
82 monitorReq.monitor(table);
85 ListenableFuture<TableUpdates> monResponse = ovsdb.monitor(monitorReq);
86 System.out.println("Monitor Request sent :");
87 TableUpdates updates = monResponse.get();
89 Set<Table.Name> available = updates.availableUpdates();
90 for (Table.Name name : available) {
91 System.out.println(name.getName() +":"+ updates.getUpdate(name).toString());
95 ListenableFuture<List<String>> some = ovsdb.echo();
96 Object s = some.get();
97 System.out.printf("Result of echo is %s \n", s);
99 // TEST ECHO REQUEST/REPLY
102 service.disconnect(node);