import java.io.IOException;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
public void testTransact() throws IOException, InterruptedException, ExecutionException {
Assert.assertNotNull(dbSchema);
TableSchema<GenericTableSchema> bridge = dbSchema.table("Bridge", GenericTableSchema.class);
- GenericTableSchema ovsTable = dbSchema.table("Open_vSwitch", GenericTableSchema.class);
- ColumnSchema<GenericTableSchema, Set<UUID>> bridges = ovsTable.multiValuedColumn("bridges", UUID.class);
+ ColumnSchema<GenericTableSchema, String> name = bridge.column("name", String.class);
+
+ createBridgeTransaction();
+ abortTransaction();
+ assertTransaction();
+ }
+
+ @Test
+ public void testMonitorRequest() throws ExecutionException, InterruptedException, IOException {
+ Assert.assertNotNull(dbSchema);
+ // Create Test Bridge before testing the Monitor operation
+ createBridgeTransaction();
+
+ GenericTableSchema bridge = dbSchema.table("Bridge", GenericTableSchema.class);
+
+ List<MonitorRequest<GenericTableSchema>> monitorRequests = Lists.newArrayList();
+ ColumnSchema<GenericTableSchema, Set<Integer>> flood_vlans = bridge.multiValuedColumn("flood_vlans", Integer.class);
+
+ monitorRequests.add(
+ MonitorRequestBuilder.builder(bridge)
+ .addColumn(bridge.column("name"))
+ .addColumn(bridge.column("fail_mode", String.class))
+ .addColumn(flood_vlans)
+ .with(new MonitorSelect(true, true, true, true))
+ .build());
+
+ final List<Object> results = Lists.newArrayList();
+
+ MonitorHandle monitor = ovs.monitor(dbSchema, monitorRequests, new MonitorCallBack() {
+ @Override
+ public void update(TableUpdates result) {
+ results.add(result);
+ System.out.println("result = " + result);
+ }
+
+ @Override
+ public void exception(Throwable t) {
+ results.add(t);
+ System.out.println("t = " + t);
+ }
+ });
- for (Map.Entry<String, ColumnSchema> names : bridge.getColumnSchemas().entrySet()) {
- System.out.println("names = " + names.getKey());
- System.out.println("names.getValue().getType() = " + names.getValue().getType().getBaseType());
+ for (int i = 0; i < 5 ; i++) { //wait 5 seconds to get a result
+ System.out.println("waiting");
+ Thread.sleep(1000);
+ }
+
+ Assert.assertTrue(!results.isEmpty());
+ Object result = results.get(0);
+ Assert.assertTrue(result instanceof TableUpdates);
+ TableUpdates updates = (TableUpdates) result;
+ org.opendaylight.ovsdb.lib.message.TableUpdate<GenericTableSchema> update = updates.getUpdate(bridge);
+ Row<GenericTableSchema> aNew = update.getNew();
+ for (Column<GenericTableSchema, ?> column: aNew.getColumns()) {
+ if (column.getSchema().equals(flood_vlans)) {
+ Set<Integer> data = column.getData(flood_vlans);
+ Assert.assertTrue(!data.isEmpty());
+ }
}
+ }
+
+ private void createBridgeTransaction() throws IOException, InterruptedException, ExecutionException {
+ Assert.assertNotNull(dbSchema);
+ TableSchema<GenericTableSchema> bridge = dbSchema.table("Bridge", GenericTableSchema.class);
+ GenericTableSchema ovsTable = dbSchema.table("Open_vSwitch", GenericTableSchema.class);
ColumnSchema<GenericTableSchema, String> name = bridge.column("name", String.class);
ColumnSchema<GenericTableSchema, String> fail_mode = bridge.column("fail_mode", String.class);
ColumnSchema<GenericTableSchema, Set<Integer>> flood_vlans = bridge.multiValuedColumn("flood_vlans", Integer.class);
+ ColumnSchema<GenericTableSchema, Set<UUID>> bridges = ovsTable.multiValuedColumn("bridges", UUID.class);
String namedUuid = "br_test";
int nOperations = 7;
+ int insertOperationIndex = 0;
ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
+ /*
+ * Make sure that the position of insert operation matches the insertOperationIndex.
+ * This will be used later when the Results are processed.
+ */
.add(op.insert(bridge)
.withId(namedUuid)
.value(name, testBridgeName)
// Check if Results matches the number of operations in transaction
Assert.assertEquals(nOperations, operationResults.size());
System.out.println("Insert & Update operation results = " + operationResults);
- testBridgeUuid = operationResults.get(0).getUuid();
+ testBridgeUuid = operationResults.get(insertOperationIndex).getUuid();
+ }
+
+ private void assertTransaction() throws InterruptedException, ExecutionException {
+ Assert.assertNotNull(dbSchema);
+ TableSchema<GenericTableSchema> bridge = dbSchema.table("Bridge", GenericTableSchema.class);
+ ColumnSchema<GenericTableSchema, String> name = bridge.column("name", String.class);
/*
- * Adding a separate Abort operation in a transaction. Lets not mix this with other
+ * Adding a separate Assert operation in a transaction. Lets not mix this with other
* valid transactions as above.
*/
- results = ovs.transactBuilder()
+ ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
.add(op.delete(bridge)
.where(name.opEqual(testBridgeName))
.build())
- .add(op.abort())
+ .add(op.assertion("Assert12345")) // Failing intentionally
.execute();
- operationResults = results.get();
+ List<OperationResult> operationResults = results.get();
Assert.assertFalse(operationResults.isEmpty());
- /* Testing for Abort Error */
+ /* Testing for an Assertion Error */
Assert.assertFalse(operationResults.get(1).getError() == null);
- System.out.println("Abort operation results = " + operationResults);
+ System.out.println("Assert operation results = " + operationResults);
+ }
+
+ private void abortTransaction() throws InterruptedException, ExecutionException {
+ Assert.assertNotNull(dbSchema);
+ TableSchema<GenericTableSchema> bridge = dbSchema.table("Bridge", GenericTableSchema.class);
+ ColumnSchema<GenericTableSchema, String> name = bridge.column("name", String.class);
/*
- * Adding a separate Assert operation in a transaction. Lets not mix this with other
+ * Adding a separate Abort operation in a transaction. Lets not mix this with other
* valid transactions as above.
*/
- results = ovs.transactBuilder()
+ ListenableFuture<List<OperationResult>> results = ovs.transactBuilder()
.add(op.delete(bridge)
.where(name.opEqual(testBridgeName))
.build())
- .add(op.assertion("Assert12345")) // Failing intentionally
+ .add(op.abort())
.execute();
- operationResults = results.get();
+ List<OperationResult> operationResults = results.get();
Assert.assertFalse(operationResults.isEmpty());
- /* Testing for an Assertion Error */
+ /* Testing for Abort Error */
Assert.assertFalse(operationResults.get(1).getError() == null);
- System.out.println("Assert operation results = " + operationResults);
- }
-
- @Test
- public void testMonitorRequest() throws ExecutionException, InterruptedException, IOException {
- Assert.assertNotNull(dbSchema);
- testTransact(); // Reuse the br-test create transactions
- GenericTableSchema bridge = dbSchema.table("Bridge", GenericTableSchema.class);
-
- List<MonitorRequest<GenericTableSchema>> monitorRequests = Lists.newArrayList();
- ColumnSchema<GenericTableSchema, Set<Integer>> flood_vlans = bridge.multiValuedColumn("flood_vlans", Integer.class);
-
- monitorRequests.add(
- MonitorRequestBuilder.builder(bridge)
- .addColumn(bridge.column("name"))
- .addColumn(bridge.column("fail_mode", String.class))
- .addColumn(flood_vlans)
- .with(new MonitorSelect(true, true, true, true))
- .build());
-
- final List<Object> results = Lists.newArrayList();
-
- MonitorHandle monitor = ovs.monitor(dbSchema, monitorRequests, new MonitorCallBack() {
- @Override
- public void update(TableUpdates result) {
- results.add(result);
- System.out.println("result = " + result);
- }
-
- @Override
- public void exception(Throwable t) {
- results.add(t);
- System.out.println("t = " + t);
- }
- });
-
- for (int i = 0; i < 5 ; i++) { //wait 5 seconds to get a result
- System.out.println("waiting");
- Thread.sleep(1000);
- }
-
- Assert.assertTrue(!results.isEmpty());
- Object result = results.get(0);
- Assert.assertTrue(result instanceof TableUpdates);
- TableUpdates updates = (TableUpdates) result;
- org.opendaylight.ovsdb.lib.message.TableUpdate<GenericTableSchema> update = updates.getUpdate(bridge);
- Row<GenericTableSchema> aNew = update.getNew();
- for (Column<GenericTableSchema, ?> column: aNew.getColumns()) {
- if (column.getSchema().equals(flood_vlans)) {
- Set<Integer> data = column.getData(flood_vlans);
- Assert.assertTrue(!data.isEmpty());
- }
- }
+ System.out.println("Abort operation results = " + operationResults);
}
public void testGetDBs() throws ExecutionException, InterruptedException {
}
@Before
- public void initalize() throws IOException, ExecutionException, InterruptedException {
+ public void setUp() throws IOException, ExecutionException, InterruptedException {
if (ovs != null) {
return;
}
ovs = new OvsDBClientImpl(rpc, executorService);
testGetDBs();
dbSchema = ovs.getSchema(OPEN_VSWITCH_SCHEMA, true).get();
- Assert.assertNotNull(dbSchema);
}
@After
- public void cleanup() throws InterruptedException, ExecutionException {
- Assert.assertNotNull(dbSchema);
- Assert.assertNotNull(testBridgeUuid);
+ public void tearDown() throws InterruptedException, ExecutionException {
TableSchema<GenericTableSchema> bridge = dbSchema.table("Bridge", GenericTableSchema.class);
ColumnSchema<GenericTableSchema, String> name = bridge.column("name", String.class);
GenericTableSchema ovsTable = dbSchema.table("Open_vSwitch", GenericTableSchema.class);
.execute();
List<OperationResult> operationResults = results.get();
- Assert.assertFalse(operationResults.isEmpty());
System.out.println("Delete operation results = " + operationResults);
}