Bug 1471 : Fixing the Open_vSwitch Schema Controller Table's Target as String (from... 13/9613/1
authorMadhu Venugopal <mavenugo@gmail.com>
Sat, 2 Aug 2014 17:20:29 +0000 (10:20 -0700)
committerMadhu Venugopal <mavenugo@gmail.com>
Sat, 2 Aug 2014 17:20:29 +0000 (10:20 -0700)
Also added a IT test to cover this case.
This issue was uncovered while fixing https://git.opendaylight.org/gerrit/#/c/9606

Change-Id: Icf1b242f65a58aa6a38259ee0f7195d1ec946d7c
Signed-off-by: Madhu Venugopal <mavenugo@gmail.com>
plugin/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java
schemas/openvswitch/src/main/java/org/opendaylight/ovsdb/schema/openvswitch/Controller.java
schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/ControllerTestCases.java
schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/MonitorTestCases.java

index c80f424ea42a49521804d2f1e50b4a4559c0391a..c5490fccac800b6637be2964c7639c81e30a9c02 100644 (file)
@@ -510,7 +510,7 @@ public class ConfigurationService implements IPluginInBridgeDomainConfigService,
         for (InetAddress ofControllerAddress : ofControllerAddrs) {
             String newController = "tcp:"+ofControllerAddress.getHostAddress()+":"+ofControllerPort;
             Controller controllerRow = connection.getClient().createTypedRowWrapper(Controller.class);
-            controllerRow.setTarget(ImmutableSet.of(newController));
+            controllerRow.setTarget(newController);
             //ToDo: Status gets overwritten on each iteration. If any operation other than the last fails it's ignored.
             status = this.insertRow(node, controllerRow.getSchema().getName(), bridgeUUID, controllerRow.getRow());
         }
index 29feee8989e7b11f7c1f57cf4c9809b360f943f9..270770982b2c87495598708636035384d989c021 100644 (file)
@@ -27,10 +27,10 @@ import java.util.Set;
 public interface Controller extends TypedBaseTable<GenericTableSchema> {
 
     @TypedColumn (name = "target", method = MethodType.GETCOLUMN, fromVersion = "1.0.0")
-    public Column<GenericTableSchema, Set <String>> getTargetColumn();
+    public Column<GenericTableSchema, String> getTargetColumn();
 
     @TypedColumn (name = "target", method = MethodType.SETDATA, fromVersion = "1.0.0")
-    public void setTarget(Set <String> target);
+    public void setTarget(String target);
 
     @TypedColumn (name = "controller_burst_limit", method = MethodType.GETCOLUMN, fromVersion = "1.0.0")
     public Column<GenericTableSchema, Long> getBurstLimitColumn();
index 68ff0be1bfd2fe866982112c09fe7060324c516d..91e539827e064a608fcd54241302a93aef010a33 100644 (file)
@@ -10,6 +10,9 @@
 
 package org.opendaylight.ovsdb.schema.openvswitch;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 
 import java.io.IOException;
@@ -17,9 +20,6 @@ import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
-import com.google.common.collect.ImmutableSet;
-
-import junit.framework.Assert;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -47,9 +47,9 @@ public class ControllerTestCases extends OpenVswitchSchemaTestBase {
     @Test
     public void createTypedController() throws IOException, InterruptedException, ExecutionException, NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
         Controller controller1 = ovs.createTypedRowWrapper(Controller.class);
-        controller1.setTarget(ImmutableSet.of("tcp:1.1.1.1:6640"));
+        controller1.setTarget("tcp:1.1.1.1:6640");
         Controller controller2 = ovs.createTypedRowWrapper(Controller.class);
-        controller2.setTarget(ImmutableSet.of("tcp:2.2.2.2:6640"));
+        controller2.setTarget("tcp:2.2.2.2:6640");
 
         Bridge bridge = ovs.getTypedRowWrapper(Bridge.class, null);
 
@@ -66,19 +66,25 @@ public class ControllerTestCases extends OpenVswitchSchemaTestBase {
 
         ListenableFuture<List<OperationResult>> results = transactionBuilder.execute();
         List<OperationResult> operationResults = results.get();
-        Assert.assertFalse(operationResults.isEmpty());
+        assertFalse(operationResults.isEmpty());
         // Check if Results matches the number of operations in transaction
-        Assert.assertEquals(transactionBuilder.getOperations().size(), operationResults.size());
+        assertEquals(transactionBuilder.getOperations().size(), operationResults.size());
         logger.info("Insert & Mutate operation results for controller1 = " + operationResults);
         // Check for any errors
         for (OperationResult result : operationResults) {
-            Assert.assertNull(result.getError());
+            assertNull(result.getError());
         }
 
+        UUID controllerUUID = operationResults.get(0).getUuid();
         Thread.sleep(3000); // Wait for cache to catchup
+
+        Row controllerRow = OpenVswitchSchemaSuiteIT.getTableCache().get(controller1.getSchema().getName()).get(controllerUUID);
+        Controller monitoredController = ovs.getTypedRowWrapper(Controller.class, controllerRow);
+        assertEquals(controller1.getTargetColumn().getData(), monitoredController.getTargetColumn().getData());
+
         Row bridgeRow = OpenVswitchSchemaSuiteIT.getTableCache().get(bridge.getSchema().getName()).get(OpenVswitchSchemaSuiteIT.getTestBridgeUuid());
         Bridge monitoredBridge = ovs.getTypedRowWrapper(Bridge.class, bridgeRow);
-        Assert.assertEquals(1, monitoredBridge.getControllerColumn().getData().size());
+        assertEquals(1, monitoredBridge.getControllerColumn().getData().size());
 
         transactionBuilder = ovs.transactBuilder(OpenVswitchSchemaSuiteIT.dbSchema)
                 .add(op.insert(controller2.getSchema())
@@ -92,18 +98,18 @@ public class ControllerTestCases extends OpenVswitchSchemaTestBase {
 
         results = transactionBuilder.execute();
         operationResults = results.get();
-        Assert.assertFalse(operationResults.isEmpty());
+        assertFalse(operationResults.isEmpty());
         // Check if Results matches the number of operations in transaction
-        Assert.assertEquals(transactionBuilder.getOperations().size(), operationResults.size());
+        assertEquals(transactionBuilder.getOperations().size(), operationResults.size());
         logger.info("Insert & Mutate operation results for controller2 = " + operationResults);
         // Check for any errors
         for (OperationResult result : operationResults) {
-            Assert.assertNull(result.getError());
+            assertNull(result.getError());
         }
         Thread.sleep(3000); // Wait for cache to catchup
         bridgeRow = OpenVswitchSchemaSuiteIT.getTableCache().get(bridge.getSchema().getName()).get(OpenVswitchSchemaSuiteIT.getTestBridgeUuid());
         monitoredBridge = ovs.getTypedRowWrapper(Bridge.class, bridgeRow);
-        Assert.assertEquals(2, monitoredBridge.getControllerColumn().getData().size());
+        assertEquals(2, monitoredBridge.getControllerColumn().getData().size());
     }
 
     @Override
index 2cadb22b9065977329efa8b5359dd5abeeec0924..205efcb5b0464411b30735557b4c2bd270dd97ba 100644 (file)
@@ -57,6 +57,7 @@ public class MonitorTestCases extends OpenVswitchSchemaTestBase {
         List<MonitorRequest<GenericTableSchema>> monitorRequests = Lists.newArrayList();
         monitorRequests.add(this.getAllColumnsMonitorRequest(Bridge.class));
         monitorRequests.add(this.getAllColumnsMonitorRequest(OpenVSwitch.class));
+        monitorRequests.add(this.getAllColumnsMonitorRequest(Controller.class));
 
         TableUpdates updates = ovs.monitor(OpenVswitchSchemaSuiteIT.dbSchema, monitorRequests, new UpdateMonitor());
         Assert.assertNotNull(updates);
@@ -77,8 +78,8 @@ public class MonitorTestCases extends OpenVswitchSchemaTestBase {
      */
     public <T extends TypedBaseTable<GenericTableSchema>> MonitorRequest<GenericTableSchema> getAllColumnsMonitorRequest (Class <T> klazz) {
         TypedBaseTable<GenericTableSchema> table = ovs.createTypedRowWrapper(klazz);
-        GenericTableSchema bridgeSchema = table.getSchema();
-        Set<String> columns = bridgeSchema.getColumns();
+        GenericTableSchema tableSchema = table.getSchema();
+        Set<String> columns = tableSchema.getColumns();
         MonitorRequestBuilder<GenericTableSchema> bridgeBuilder = MonitorRequestBuilder.builder(table.getSchema());
         for (String column : columns) {
             bridgeBuilder.addColumn(column);