From: Madhu Venugopal Date: Sat, 2 Aug 2014 17:20:29 +0000 (-0700) Subject: Bug 1471 : Fixing the Open_vSwitch Schema Controller Table's Target as String (from... X-Git-Tag: release/helium~151^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=ae06b2fdd64ee44c3c62b46aa516b4c02e8e170b;p=ovsdb.git Bug 1471 : Fixing the Open_vSwitch Schema Controller Table's Target as String (from Set) 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 --- diff --git a/plugin/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java b/plugin/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java index c80f424ea..c5490fcca 100644 --- a/plugin/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java +++ b/plugin/src/main/java/org/opendaylight/ovsdb/plugin/ConfigurationService.java @@ -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()); } diff --git a/schemas/openvswitch/src/main/java/org/opendaylight/ovsdb/schema/openvswitch/Controller.java b/schemas/openvswitch/src/main/java/org/opendaylight/ovsdb/schema/openvswitch/Controller.java index 29feee898..270770982 100644 --- a/schemas/openvswitch/src/main/java/org/opendaylight/ovsdb/schema/openvswitch/Controller.java +++ b/schemas/openvswitch/src/main/java/org/opendaylight/ovsdb/schema/openvswitch/Controller.java @@ -27,10 +27,10 @@ import java.util.Set; public interface Controller extends TypedBaseTable { @TypedColumn (name = "target", method = MethodType.GETCOLUMN, fromVersion = "1.0.0") - public Column> getTargetColumn(); + public Column getTargetColumn(); @TypedColumn (name = "target", method = MethodType.SETDATA, fromVersion = "1.0.0") - public void setTarget(Set target); + public void setTarget(String target); @TypedColumn (name = "controller_burst_limit", method = MethodType.GETCOLUMN, fromVersion = "1.0.0") public Column getBurstLimitColumn(); diff --git a/schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/ControllerTestCases.java b/schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/ControllerTestCases.java index 68ff0be1b..91e539827 100644 --- a/schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/ControllerTestCases.java +++ b/schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/ControllerTestCases.java @@ -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> results = transactionBuilder.execute(); List 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 diff --git a/schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/MonitorTestCases.java b/schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/MonitorTestCases.java index 2cadb22b9..205efcb5b 100644 --- a/schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/MonitorTestCases.java +++ b/schemas/openvswitch/src/test/java/org/opendaylight/ovsdb/schema/openvswitch/MonitorTestCases.java @@ -57,6 +57,7 @@ public class MonitorTestCases extends OpenVswitchSchemaTestBase { List> 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 > MonitorRequest getAllColumnsMonitorRequest (Class klazz) { TypedBaseTable table = ovs.createTypedRowWrapper(klazz); - GenericTableSchema bridgeSchema = table.getSchema(); - Set columns = bridgeSchema.getColumns(); + GenericTableSchema tableSchema = table.getSchema(); + Set columns = tableSchema.getColumns(); MonitorRequestBuilder bridgeBuilder = MonitorRequestBuilder.builder(table.getSchema()); for (String column : columns) { bridgeBuilder.addColumn(column);