X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-dom-it%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Ftest%2Fconnect%2Fdom%2FChangeOriginatedInDomBrokerTest.java;h=a3b0819501c57ffdcf3764c243a20e680d8d9ecf;hp=6f938b15ed19391ad0de52e941bb0cd2311ec8f7;hb=c222e37f2a0f0f3f6266242fbea2d3b018f4e6e3;hpb=335a9cfe42385a217ef002e4ab42f9cd958ad202 diff --git a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/ChangeOriginatedInDomBrokerTest.java b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/ChangeOriginatedInDomBrokerTest.java index 6f938b15ed..a3b0819501 100644 --- a/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/ChangeOriginatedInDomBrokerTest.java +++ b/opendaylight/md-sal/sal-binding-dom-it/src/test/java/org/opendaylight/controller/sal/binding/test/connect/dom/ChangeOriginatedInDomBrokerTest.java @@ -15,14 +15,13 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; -import org.junit.Ignore; import org.junit.Test; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; +import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; +import org.opendaylight.controller.sal.binding.api.data.DataChangeListener; import org.opendaylight.controller.sal.binding.test.AbstractDataServiceTest; -import org.opendaylight.controller.sal.common.util.CommitHandlerTransactions; import org.opendaylight.controller.sal.core.api.data.DataModificationTransaction; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpVersion; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; @@ -46,27 +45,31 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder; -import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableMap; +import com.google.common.util.concurrent.SettableFuture; +// FIXME: Migrate to use new Data Broker APIs +@SuppressWarnings("deprecation") public class ChangeOriginatedInDomBrokerTest extends AbstractDataServiceTest { + private static final Logger LOG = LoggerFactory.getLogger(ChangeOriginatedInDomBrokerTest.class); + private static final QName NODE_ID_QNAME = QName.create(Node.QNAME, "id"); private static final QName FLOW_ID_QNAME = QName.create(Flow.QNAME, "id"); - private static final QName FLOW_NODE_QNAME = QName.create(Flow.QNAME, "node"); private static final QName TABLE_ID_QNAME = QName.create(Table.QNAME, "id"); private static final String NODE_ID = "node:1"; @@ -76,7 +79,7 @@ public class ChangeOriginatedInDomBrokerTest extends AbstractDataServiceTest { private static final NodeKey NODE_KEY = new NodeKey(new NodeId(NODE_ID)); private static final FlowKey FLOW_KEY = new FlowKey(FLOW_ID); - private DataModification, DataObject> modificationCapture; + private final SettableFuture, DataObject>> modificationCapture = SettableFuture.create(); private static final Map NODE_KEY_BI = Collections. singletonMap(NODE_ID_QNAME, NODE_ID); @@ -84,21 +87,14 @@ public class ChangeOriginatedInDomBrokerTest extends AbstractDataServiceTest { private static final InstanceIdentifier NODE_INSTANCE_ID_BA = InstanceIdentifier.builder(Nodes.class) // .child(Node.class, NODE_KEY).toInstance(); - private static final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier NODE_INSTANCE_ID_BI = // - org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.builder() // - .node(Nodes.QNAME) // - .nodeWithKey(Node.QNAME, NODE_KEY_BI) // - .toInstance(); - private static final NodeRef NODE_REF = new NodeRef(NODE_INSTANCE_ID_BA); - private static final Map FLOW_KEY_BI = // ImmutableMap. of(FLOW_ID_QNAME, FLOW_ID.getValue()); private static final Map TABLE_KEY_BI = // ImmutableMap. of(TABLE_ID_QNAME, TABLE_ID);; - private static final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier FLOW_INSTANCE_ID_BI = // - org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.builder() // + private static final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier FLOW_INSTANCE_ID_BI = // + org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.builder() // .node(Nodes.QNAME) // .nodeWithKey(Node.QNAME, NODE_KEY_BI) // .nodeWithKey(Table.QNAME, TABLE_KEY_BI) // @@ -107,52 +103,46 @@ public class ChangeOriginatedInDomBrokerTest extends AbstractDataServiceTest { private static final TableKey TABLE_KEY_BA = new TableKey((short) 0); private static final InstanceIdentifier FLOWS_PATH_BA = // - InstanceIdentifier.builder(NODE_INSTANCE_ID_BA) // + NODE_INSTANCE_ID_BA.builder() // .augmentation(FlowCapableNode.class) // .child(Table.class, TABLE_KEY_BA) // .child(Flow.class) // .toInstance(); private static final InstanceIdentifier FLOW_INSTANCE_ID_BA = // - InstanceIdentifier.builder(FLOWS_PATH_BA.firstIdentifierOf(Table.class)) // - .child(Flow.class, FLOW_KEY) // - .toInstance(); + FLOWS_PATH_BA.firstIdentifierOf(Table.class).child(Flow.class, FLOW_KEY); @Test - @Ignore public void simpleModifyOperation() throws Exception { assertNull(biDataService.readConfigurationData(FLOW_INSTANCE_ID_BI)); - registerCommitHandler(); + registerChangeListener(); CompositeNode domflow = createTestFlow(); DataModificationTransaction biTransaction = biDataService.beginTransaction(); biTransaction.putConfigurationData(FLOW_INSTANCE_ID_BI, domflow); RpcResult biResult = biTransaction.commit().get(); assertEquals(TransactionStatus.COMMITED, biResult.getResult()); - assertNotNull(modificationCapture); - Flow flow = (Flow) modificationCapture.getCreatedConfigurationData().get(FLOW_INSTANCE_ID_BA); + DataChangeEvent, DataObject> event = modificationCapture.get(1000,TimeUnit.MILLISECONDS); + assertNotNull(event); + LOG.info("Created Configuration :{}",event.getCreatedConfigurationData()); + Flow flow = (Flow) event.getCreatedConfigurationData().get(FLOW_INSTANCE_ID_BA); assertNotNull(flow); assertNotNull(flow.getMatch()); assertEquals(TransactionStatus.COMMITED, biResult.getResult()); } - private void registerCommitHandler() { - DataCommitHandler, DataObject> flowTestCommitHandler = new DataCommitHandler, DataObject>() { + private void registerChangeListener() { + baDataService.registerDataChangeListener(FLOWS_PATH_BA, new DataChangeListener() { @Override - public org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction, DataObject> requestCommit( - final DataModification, DataObject> modification) { - modificationCapture = modification; - return CommitHandlerTransactions.allwaysSuccessfulTransaction(modification); + public void onDataChanged(final DataChangeEvent, DataObject> change) { + LOG.info("Data Change listener invoked."); + modificationCapture.set(change); } - - }; - Registration, DataObject>> registration = baDataService - .registerCommitHandler(FLOWS_PATH_BA, flowTestCommitHandler); - assertNotNull(registration); + }); } private CompositeNode createTestFlow() { @@ -195,6 +185,7 @@ public class ChangeOriginatedInDomBrokerTest extends AbstractDataServiceTest { // Wrap our Apply Action in an Instruction InstructionBuilder ib = new InstructionBuilder(); + ib.setOrder(0); ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build()); // Put our Instruction in a list of Instructions