+ final DOMDataTreeIdentifier rootId =
+ new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY);
+ final DOMDataTreeProducer producer = leaderShardFactory.createProducer(Collections.singletonList(
+ rootId));
+
+ DOMDataTreeCursorAwareTransaction transaction = producer.createTransaction(false);
+
+ DOMDataTreeWriteCursor cursor = transaction.createCursor(rootId);
+ assertNotNull(cursor);
+
+ final MapNode outerList =
+ ImmutableMapNodeBuilder.create()
+ .withNodeIdentifier(new NodeIdentifier(TestModel.OUTER_LIST_QNAME)).build();
+
+ final ContainerNode testNode =
+ ImmutableContainerNodeBuilder.create()
+ .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME))
+ .withChild(outerList)
+ .build();
+
+ cursor.write(testNode.getIdentifier(), testNode);
+
+ cursor.close();
+ transaction.submit().checkedGet();
+
+ final DOMDataTreeListener mockedDataTreeListener = mock(DOMDataTreeListener.class);
+ doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap());
+
+ final MapNode wholeList = ImmutableMapNodeBuilder.create(outerList)
+ .withValue(createOuterEntries(listSize, "testing-values")).build();
+
+ transaction = producer.createTransaction(false);
+ cursor = transaction.createCursor(TEST_ID);
+ assertNotNull(cursor);
+
+ cursor.write(wholeList.getIdentifier(), wholeList);
+ cursor.close();
+
+ transaction.submit().checkedGet();
+
+ leaderShardFactory.registerListener(mockedDataTreeListener, Collections.singletonList(TEST_ID),
+ true, Collections.emptyList());
+
+ // need 6 invocations, first initial thats from the parent shard, and then each individual subshard
+ verify(mockedDataTreeListener, timeout(10000).times(6)).onDataTreeChanged(captorForChanges.capture(),
+ captorForSubtrees.capture());
+ verifyNoMoreInteractions(mockedDataTreeListener);
+ final List<Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>>> allSubtrees = captorForSubtrees.getAllValues();
+
+ final Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>> lastSubtree = allSubtrees.get(allSubtrees.size() - 1);
+
+ final NormalizedNode<?, ?> actual = lastSubtree.get(TEST_ID);
+ assertNotNull(actual);
+
+ final NormalizedNode<?, ?> expected =
+ ImmutableContainerNodeBuilder.create()
+ .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME))
+ .withChild(ImmutableMapNodeBuilder.create(outerList)
+ .withValue(createOuterEntries(listSize, "testing-values")).build())
+ .build();
+
+ assertEquals(expected, actual);