- @Test
- public void testChangeListenerRegistration() throws Exception {
- new IntegrationTestKit(getSystem(), datastoreContextBuilder) {
- {
- try (AbstractDataStore dataStore = setupAbstractDataStore(
- testParameter, "testChangeListenerRegistration", "test-1")) {
-
- testWriteTransaction(dataStore, TestModel.TEST_PATH,
- ImmutableNodes.containerNode(TestModel.TEST_QNAME));
-
- final MockDataChangeListener listener = new MockDataChangeListener(1);
-
- final ListenerRegistration<MockDataChangeListener> listenerReg = dataStore
- .registerChangeListener(TestModel.TEST_PATH, listener, DataChangeScope.SUBTREE);
-
- assertNotNull("registerChangeListener returned null", listenerReg);
-
- IntegrationTestKit.verifyShardState(dataStore, "test-1",
- state -> assertEquals("getDataChangeListenerActors", 1,
- state.getDataChangeListenerActors().size()));
-
- // Wait for the initial notification
- listener.waitForChangeEvents(TestModel.TEST_PATH);
- listener.reset(2);
-
- // Write 2 updates.
- testWriteTransaction(dataStore, TestModel.OUTER_LIST_PATH,
- ImmutableNodes.mapNodeBuilder(TestModel.OUTER_LIST_QNAME).build());
-
- YangInstanceIdentifier listPath = YangInstanceIdentifier.builder(TestModel.OUTER_LIST_PATH)
- .nodeWithKey(TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 1).build();
- testWriteTransaction(dataStore, listPath,
- ImmutableNodes.mapEntry(TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 1));
-
- // Wait for the 2 updates.
- listener.waitForChangeEvents(TestModel.OUTER_LIST_PATH, listPath);
- listenerReg.close();
-
- IntegrationTestKit.verifyShardState(dataStore, "test-1",
- state -> assertEquals("getDataChangeListenerActors", 0,
- state.getDataChangeListenerActors().size()));
-
- testWriteTransaction(dataStore,
- YangInstanceIdentifier.builder(TestModel.OUTER_LIST_PATH)
- .nodeWithKey(TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 2).build(),
- ImmutableNodes.mapEntry(TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 2));
-
- listener.expectNoMoreChanges("Received unexpected change after close");
- }
- }
- };
- }
-