Share TestModel schema context
[mdsal.git] / dom / mdsal-dom-broker / src / test / java / org / opendaylight / mdsal / dom / broker / ShardedDOMDataTreeProducerMultiShardTest.java
index 83996f6cf1188e90376f98d087d7f3f6c1c16302..25bc4b2bf98786671e116335b546b26fcdae94b4 100644 (file)
@@ -9,16 +9,18 @@ package org.opendaylight.mdsal.dom.broker;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyCollection;
-import static org.mockito.Matchers.anyMap;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyCollection;
+import static org.mockito.ArgumentMatchers.anyMap;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 
+import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.Futures;
 import java.util.Collection;
 import java.util.Collections;
@@ -31,7 +33,6 @@ import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
 import org.mockito.InOrder;
-import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
@@ -39,10 +40,10 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeListener;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor;
 import org.opendaylight.mdsal.dom.broker.util.TestModel;
-import org.opendaylight.mdsal.dom.store.inmemory.DOMDataTreeShardProducer;
-import org.opendaylight.mdsal.dom.store.inmemory.DOMDataTreeShardWriteTransaction;
+import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardProducer;
+import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardWriteTransaction;
+import org.opendaylight.mdsal.dom.spi.shard.WriteableDOMDataTreeShard;
 import org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataTreeShard;
-import org.opendaylight.mdsal.dom.store.inmemory.WriteableDOMDataTreeShard;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
@@ -51,30 +52,14 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
-public class ShardedDOMDataTreeProducerMultiShardTest {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ShardedDOMDataTreeProducerMultiShardTest.class);
-
-    private static SchemaContext schemaContext = null;
-
-    static {
-        try {
-            schemaContext = TestModel.createTestContext();
-        } catch (final ReactorException e) {
-            LOG.error("Unable to create schema context for TestModel", e);
-        }
-    }
+public class ShardedDOMDataTreeProducerMultiShardTest extends AbstractDatastoreTest {
 
     private static final DOMDataTreeIdentifier ROOT_ID =
-            new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.EMPTY);
+            new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.empty());
     private static final DOMDataTreeIdentifier TEST_ID =
             new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, TestModel.TEST_PATH);
 
@@ -107,7 +92,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
         MockitoAnnotations.initMocks(this);
 
         rootShard = InMemoryDOMDataTreeShard.create(ROOT_ID, executor, 1);
-        rootShard.onGlobalContextUpdated(schemaContext);
+        rootShard.onGlobalContextUpdated(SCHEMA_CONTEXT);
 
         final ShardedDOMDataTree dataTree = new ShardedDOMDataTree();
         final DOMDataTreeProducer shardRegProducer = dataTree.createProducer(Collections.singletonList(ROOT_ID));
@@ -117,7 +102,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
         dataTreeService = dataTree;
     }
 
-    @Test(expected=IllegalStateException.class)
+    @Test(expected = IllegalStateException.class)
     public void testTxReadyMultiples() throws Exception {
         final DOMDataTreeShardProducer producer = rootShard.createProducer(Collections.singletonList(TEST_ID));
         final DOMDataTreeShardWriteTransaction transaction = producer.createTransaction();
@@ -132,7 +117,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
         transaction.ready();
     }
 
-    @Test(expected=IllegalStateException.class)
+    @Test(expected = IllegalStateException.class)
     public void testSubmitUnclosedCursor() throws Exception {
         final DOMDataTreeShardProducer producer = rootShard.createProducer(Collections.singletonList(TEST_ID));
         final DOMDataTreeShardWriteTransaction transaction = producer.createTransaction();
@@ -148,10 +133,11 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
 
     @Test
     public void testMultipleCursorsFromOneTx() throws Exception {
-        final DOMDataTreeListener mockedDataTreeListener = Mockito.mock(DOMDataTreeListener.class);
+        final DOMDataTreeListener mockedDataTreeListener = mock(DOMDataTreeListener.class);
         doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap());
 
-        dataTreeService.registerListener(mockedDataTreeListener, Collections.singletonList(INNER_CONTAINER_ID), true, Collections.emptyList());
+        dataTreeService.registerListener(mockedDataTreeListener, Collections.singletonList(INNER_CONTAINER_ID),
+                true, Collections.emptyList());
 
         final DOMDataTreeShardProducer producer = rootShard.createProducer(Collections.singletonList(TEST_ID));
         final DOMDataTreeShardWriteTransaction transaction = producer.createTransaction();
@@ -179,53 +165,62 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
         transaction.ready();
         transaction.submit();
 
-        verify(mockedDataTreeListener, timeout(1000).times(2)).onDataTreeChanged(captorForChanges.capture(), captorForSubtrees.capture());
+        verify(mockedDataTreeListener, timeout(1000).times(2)).onDataTreeChanged(
+                captorForChanges.capture(), captorForSubtrees.capture());
         final Collection<DataTreeCandidate> capturedValue = captorForChanges.getValue();
         assertTrue(capturedValue.size() == 1);
 
-        final ContainerNode dataAfter = (ContainerNode) capturedValue.iterator().next().getRootNode().getDataAfter().get();
+        final ContainerNode dataAfter =
+                (ContainerNode) capturedValue.iterator().next().getRootNode().getDataAfter().get();
         assertEquals(innerContainer, dataAfter);
         verifyNoMoreInteractions(mockedDataTreeListener);
     }
 
     @Test
     public void testSingleShardListener() throws Exception {
-        final DOMDataTreeListener mockedDataTreeListener = Mockito.mock(DOMDataTreeListener.class);
+        final DOMDataTreeListener mockedDataTreeListener = mock(DOMDataTreeListener.class);
         doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap());
 
-        dataTreeService.registerListener(mockedDataTreeListener, Collections.singletonList(INNER_CONTAINER_ID), true, Collections.emptyList());
+        dataTreeService.registerListener(mockedDataTreeListener, Collections.singletonList(INNER_CONTAINER_ID), true,
+                Collections.emptyList());
 
         final DOMDataTreeShardProducer producer = rootShard.createProducer(Collections.singletonList(TEST_ID));
         final DOMDataTreeShardWriteTransaction transaction = producer.createTransaction();
         writeCrossShardContainer(transaction);
 
-        verify(mockedDataTreeListener, timeout(1000).times(2)).onDataTreeChanged(captorForChanges.capture(), captorForSubtrees.capture());
+        verify(mockedDataTreeListener, timeout(1000).times(2)).onDataTreeChanged(
+                captorForChanges.capture(), captorForSubtrees.capture());
         final Collection<DataTreeCandidate> capturedValue = captorForChanges.getValue();
         assertTrue(capturedValue.size() == 1);
 
-        final ContainerNode dataAfter = (ContainerNode) capturedValue.iterator().next().getRootNode().getDataAfter().get();
-        assertEquals(crossShardContainer.getChild(TestModel.INNER_CONTAINER_PATH.getLastPathArgument()).get(), dataAfter);
+        final ContainerNode dataAfter =
+                (ContainerNode) capturedValue.iterator().next().getRootNode().getDataAfter().get();
+        assertEquals(crossShardContainer.getChild(
+                TestModel.INNER_CONTAINER_PATH.getLastPathArgument()).get(), dataAfter);
 
         final Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>> capturedSubtrees = captorForSubtrees.getValue();
         assertTrue(capturedSubtrees.size() == 1);
         assertTrue(capturedSubtrees.containsKey(INNER_CONTAINER_ID));
-        assertEquals(crossShardContainer.getChild(TestModel.INNER_CONTAINER_PATH.getLastPathArgument()).get(), capturedSubtrees.get(INNER_CONTAINER_ID));
+        assertEquals(crossShardContainer.getChild(TestModel.INNER_CONTAINER_PATH.getLastPathArgument()).get(),
+                capturedSubtrees.get(INNER_CONTAINER_ID));
 
         verifyNoMoreInteractions(mockedDataTreeListener);
     }
 
     @Test
     public void testMultipleShards() throws Exception {
-        final DOMDataTreeListener mockedDataTreeListener = Mockito.mock(DOMDataTreeListener.class);
+        final DOMDataTreeListener mockedDataTreeListener = mock(DOMDataTreeListener.class);
         doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap());
 
         final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1);
-        innerShard.onGlobalContextUpdated(schemaContext);
-        final DOMDataTreeProducer shardRegProducer = dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID));
+        innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT);
+        final DOMDataTreeProducer shardRegProducer =
+                dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID));
         innerShardReg = dataTreeService.registerDataTreeShard(INNER_CONTAINER_ID, innerShard, shardRegProducer);
         shardRegProducer.close();
 
-        dataTreeService.registerListener(mockedDataTreeListener, Collections.singletonList(TEST_ID), true, Collections.emptyList());
+        dataTreeService.registerListener(mockedDataTreeListener, Collections.singletonList(TEST_ID),
+                true, Collections.emptyList());
 
         final DOMDataTreeShardProducer producer = rootShard.createProducer(Collections.singletonList(TEST_ID));
         final DOMDataTreeShardWriteTransaction transaction = producer.createTransaction();
@@ -236,9 +231,11 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
                 .build();
 
         //verify listeners have been notified
-        verify(mockedDataTreeListener, timeout(1000).times(4)).onDataTreeChanged(captorForChanges.capture(), captorForSubtrees.capture());
+        verify(mockedDataTreeListener, timeout(1000).times(4)).onDataTreeChanged(
+                captorForChanges.capture(), captorForSubtrees.capture());
         final List<Collection<DataTreeCandidate>> capturedChanges = captorForChanges.getAllValues();
-        final List<Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>>> capturedSubtrees = captorForSubtrees.getAllValues();
+        final List<Map<DOMDataTreeIdentifier, NormalizedNode<?, ?>>> capturedSubtrees =
+                captorForSubtrees.getAllValues();
         final DataTreeCandidate firstNotificationCandidate = capturedChanges.get(2).iterator().next();
 
         assertTrue(capturedSubtrees.get(2).size() == 1);
@@ -253,12 +250,141 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
         verifyNoMoreInteractions(mockedDataTreeListener);
     }
 
+    @Test
+    public void testMultipleShardsProducerClose() throws Exception {
+        final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1);
+        innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT);
+
+        assertTrue(rootShard.getProducers().isEmpty());
+
+        final DOMDataTreeProducer innerShardRegProducer =
+                dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID));
+        assertTrue(rootShard.getProducers().size() == 1);
+        final DOMDataTreeShardProducer rootShardProducer = Iterables.getOnlyElement(rootShard.getProducers());
+        assertEquals(rootShardProducer.getPrefixes().toString(),
+                Collections.singletonList(INNER_CONTAINER_ID).toString());
+
+        dataTreeService.registerDataTreeShard(INNER_CONTAINER_ID, innerShard, innerShardRegProducer);
+
+        assertTrue(rootShard.getProducers().isEmpty());
+        assertTrue(innerShard.getProducers().size() == 1);
+        final DOMDataTreeShardProducer innerShardProducer = Iterables.getOnlyElement(innerShard.getProducers());
+        assertEquals(innerShardProducer.getPrefixes().toString(),
+                Collections.singletonList(INNER_CONTAINER_ID).toString());
+
+        innerShardRegProducer.close();
+        assertTrue(rootShard.getProducers().isEmpty());
+        assertTrue(innerShard.getProducers().isEmpty());
+
+        final DOMDataTreeProducer testProducer =
+                dataTreeService.createProducer(Collections.singletonList(TEST_ID));
+        assertTrue(rootShard.getProducers().size() == 1);
+        final DOMDataTreeShardProducer rootShardProducer2 = Iterables.getOnlyElement(rootShard.getProducers());
+        assertEquals(rootShardProducer2.getPrefixes().toString(),
+                Collections.singletonList(TEST_ID).toString());
+
+        assertTrue(innerShard.getProducers().size() == 1);
+        final DOMDataTreeShardProducer innerShardProducer2 = Iterables.getOnlyElement(innerShard.getProducers());
+        assertEquals(innerShardProducer2.getPrefixes().toString(),
+                Collections.singletonList(INNER_CONTAINER_ID).toString());
+
+        testProducer.close();
+        assertTrue(rootShard.getProducers().isEmpty());
+        assertTrue(innerShard.getProducers().isEmpty());
+    }
+
+    @Test
+    public void testMultipleShardsChildProducerClose() throws Exception {
+        final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1);
+        innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT);
+
+        final DOMDataTreeProducer innerShardRegProducer =
+                dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID));
+        dataTreeService.registerDataTreeShard(INNER_CONTAINER_ID, innerShard, innerShardRegProducer);
+        innerShardRegProducer.close();
+        assertTrue(rootShard.getProducers().isEmpty());
+        assertTrue(innerShard.getProducers().isEmpty());
+
+        final DOMDataTreeProducer testProducer =
+                dataTreeService.createProducer(Collections.singletonList(TEST_ID));
+        final DOMDataTreeProducer testChildProducer = testProducer.createProducer(
+                Collections.singletonList(INNER_CONTAINER_ID));
+        assertTrue(rootShard.getProducers().size() == 1);
+        assertTrue(innerShard.getProducers().size() == 2);
+
+        final DOMDataTreeShardProducer rootShardProducer = Iterables.getOnlyElement(rootShard.getProducers());
+        assertEquals(rootShardProducer.getPrefixes().toString(),
+                Collections.singletonList(TEST_ID).toString());
+
+        for (DOMDataTreeShardProducer producer : innerShard.getProducers()) {
+            assertEquals(producer.getPrefixes().toString(),
+                    Collections.singletonList(INNER_CONTAINER_ID).toString());
+        }
+
+        testProducer.close();
+        assertTrue(rootShard.getProducers().isEmpty());
+        assertTrue(innerShard.getProducers().size() == 1);
+        final DOMDataTreeShardProducer innerShardProducer = Iterables.getOnlyElement(innerShard.getProducers());
+        assertEquals(innerShardProducer.getPrefixes().toString(),
+                Collections.singletonList(INNER_CONTAINER_ID).toString());
+
+        testChildProducer.close();
+        assertTrue(rootShard.getProducers().isEmpty());
+        assertTrue(innerShard.getProducers().isEmpty());
+    }
+
+    @Test
+    public void testMultipleShardsProducerCloseForSubshardAttached() throws Exception {
+        final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1);
+        innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT);
+
+        final DOMDataTreeProducer innerShardRegProducer =
+                dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID));
+        dataTreeService.registerDataTreeShard(INNER_CONTAINER_ID, innerShard, innerShardRegProducer);
+        innerShardRegProducer.close();
+        assertTrue(rootShard.getProducers().isEmpty());
+        assertTrue(innerShard.getProducers().isEmpty());
+
+        final DOMDataTreeProducer testProducer =
+                dataTreeService.createProducer(Collections.singletonList(TEST_ID));
+        assertTrue(rootShard.getProducers().size() == 1);
+        assertTrue(innerShard.getProducers().size() == 1);
+
+        final DOMDataTreeShardProducer rootShardProducer = Iterables.getOnlyElement(rootShard.getProducers());
+        assertEquals(rootShardProducer.getPrefixes().toString(),
+                Collections.singletonList(TEST_ID).toString());
+
+        final DOMDataTreeShardProducer innerShardProducer = Iterables.getOnlyElement(innerShard.getProducers());
+        assertEquals(innerShardProducer.getPrefixes().toString(),
+                Collections.singletonList(INNER_CONTAINER_ID).toString());
+
+        final InMemoryDOMDataTreeShard test2Shard = InMemoryDOMDataTreeShard.create(TEST2_ID, executor, 1);
+        innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT);
+
+        final DOMDataTreeProducer test2ShardRegProducer =
+                dataTreeService.createProducer(Collections.singletonList(TEST2_ID));
+        dataTreeService.registerDataTreeShard(TEST2_ID, test2Shard, test2ShardRegProducer);
+        test2ShardRegProducer.close();
+
+        assertTrue(rootShard.getProducers().size() == 1);
+        assertTrue(innerShard.getProducers().size() == 1);
+
+        final DOMDataTreeShardProducer rootShardProducer2 = Iterables.getOnlyElement(rootShard.getProducers());
+        assertEquals(rootShardProducer2.getPrefixes().toString(),
+                Collections.singletonList(TEST_ID).toString());
+
+        final DOMDataTreeShardProducer innerShardProducer2 = Iterables.getOnlyElement(innerShard.getProducers());
+        assertEquals(innerShardProducer2.getPrefixes().toString(),
+                Collections.singletonList(INNER_CONTAINER_ID).toString());
+    }
+
     @Test
     public void testMultipleWritesIntoSingleShard() throws Exception {
-        final DOMDataTreeListener mockedDataTreeListener = Mockito.mock(DOMDataTreeListener.class);
+        final DOMDataTreeListener mockedDataTreeListener = mock(DOMDataTreeListener.class);
         doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap());
 
-        dataTreeService.registerListener(mockedDataTreeListener, Collections.singletonList(INNER_CONTAINER_ID), true, Collections.emptyList());
+        dataTreeService.registerListener(mockedDataTreeListener, Collections.singletonList(INNER_CONTAINER_ID),
+                true, Collections.emptyList());
 
         final DOMDataTreeShardProducer producer = rootShard.createProducer(Collections.singletonList(TEST_ID));
         final DOMDataTreeShardWriteTransaction transaction = producer.createTransaction();
@@ -272,14 +398,14 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
 
     @Test
     public void testMockedSubshards() throws Exception {
-        final WriteableDOMDataTreeShard mockedInnerShard = Mockito.mock(WriteableDOMDataTreeShard.class);
-        final ShardedDOMDataTreeProducer shardRegProducer = Mockito.mock(ShardedDOMDataTreeProducer.class);
+        final WriteableDOMDataTreeShard mockedInnerShard = mock(WriteableDOMDataTreeShard.class);
+        final DOMDataTreeShardProducer mockedProducer = mock(DOMDataTreeShardProducer.class);
+        doReturn(mockedProducer).when(mockedInnerShard).createProducer(anyCollection());
+        final ShardedDOMDataTreeProducer shardRegProducer = mock(ShardedDOMDataTreeProducer.class);
         doReturn(Collections.singleton(INNER_CONTAINER_ID)).when(shardRegProducer).getSubtrees();
         doNothing().when(shardRegProducer).subshardAdded(anyMap());
 
         dataTreeService.registerDataTreeShard(INNER_CONTAINER_ID, mockedInnerShard, shardRegProducer);
-        final DOMDataTreeShardProducer mockedProducer = Mockito.mock(DOMDataTreeShardProducer.class);
-        doReturn(mockedProducer).when(mockedInnerShard).createProducer(any(Collection.class));
 
         final DOMDataTreeShardProducer producer = rootShard.createProducer(Collections.singletonList(TEST_ID));
 
@@ -288,11 +414,14 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
         cursor.enter(TestModel.TEST_PATH.getLastPathArgument());
 
         final LeafNode<String> shardedValue1 =
-                ImmutableLeafNodeBuilder.<String>create().withNodeIdentifier(new NodeIdentifier(TestModel.SHARDED_VALUE_1)).withValue("sharded value 1").build();
+                ImmutableLeafNodeBuilder.<String>create().withNodeIdentifier(
+                        new NodeIdentifier(TestModel.SHARDED_VALUE_1)).withValue("sharded value 1").build();
         final LeafNode<String> shardedValue2 =
-                ImmutableLeafNodeBuilder.<String>create().withNodeIdentifier(new NodeIdentifier(TestModel.SHARDED_VALUE_2)).withValue("sharded value 2").build();
+                ImmutableLeafNodeBuilder.<String>create().withNodeIdentifier(
+                        new NodeIdentifier(TestModel.SHARDED_VALUE_2)).withValue("sharded value 2").build();
 
-        final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> containerNodeBuilder = ImmutableContainerNodeBuilder.create();
+        final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> containerNodeBuilder =
+                ImmutableContainerNodeBuilder.create();
         final ContainerNode containerNode =
                 containerNodeBuilder
                         .withNodeIdentifier(new NodeIdentifier(TestModel.INNER_CONTAINER))
@@ -300,7 +429,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
                         .withChild(shardedValue2)
                         .build();
 
-        final DOMDataTreeShardWriteTransaction mockedTx = Mockito.mock(DOMDataTreeShardWriteTransaction.class);
+        final DOMDataTreeShardWriteTransaction mockedTx = mock(DOMDataTreeShardWriteTransaction.class);
         doReturn(mockedTx).when(mockedProducer).createTransaction();
 
         doNothing().when(mockedTx).ready();
@@ -308,7 +437,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
         doReturn(Futures.immediateFuture(null)).when(mockedTx).prepare();
         doReturn(Futures.immediateFuture(null)).when(mockedTx).commit();
 
-        final DOMDataTreeWriteCursor mockedCursor = Mockito.mock(DOMDataTreeWriteCursor.class);
+        final DOMDataTreeWriteCursor mockedCursor = mock(DOMDataTreeWriteCursor.class);
         doNothing().when(mockedCursor).write(any(PathArgument.class), any(NormalizedNode.class));
         doNothing().when(mockedCursor).close();
         doReturn(mockedCursor).when(mockedTx).createCursor(any(DOMDataTreeIdentifier.class));
@@ -318,7 +447,8 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
 
         final ContainerNode lowerShardContainer = ImmutableContainerNodeBuilder.create()
                 .withNodeIdentifier(new NodeIdentifier(TestModel.ANOTHER_SHARD_CONTAINER))
-                .withChild(ImmutableLeafNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(TestModel.ANOTHER_SHARD_VALUE)).build())
+                .withChild(ImmutableLeafNodeBuilder.create().withNodeIdentifier(
+                        new NodeIdentifier(TestModel.ANOTHER_SHARD_VALUE)).withValue("").build())
                 .build();
 
         cursor.write(TestModel.ANOTHER_SHARD_PATH.getLastPathArgument(), lowerShardContainer);
@@ -334,11 +464,13 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
 
     }
 
-    private ContainerNode createCrossShardContainer() {
+    private static ContainerNode createCrossShardContainer() {
         final LeafNode<String> shardedValue1 =
-                ImmutableLeafNodeBuilder.<String>create().withNodeIdentifier(new NodeIdentifier(TestModel.SHARDED_VALUE_1)).withValue("sharded value 1").build();
+                ImmutableLeafNodeBuilder.<String>create().withNodeIdentifier(
+                        new NodeIdentifier(TestModel.SHARDED_VALUE_1)).withValue("sharded value 1").build();
         final LeafNode<String> shardedValue2 =
-                ImmutableLeafNodeBuilder.<String>create().withNodeIdentifier(new NodeIdentifier(TestModel.SHARDED_VALUE_2)).withValue("sharded value 2").build();
+                ImmutableLeafNodeBuilder.<String>create().withNodeIdentifier(new NodeIdentifier(
+                        TestModel.SHARDED_VALUE_2)).withValue("sharded value 2").build();
 
 
         final ContainerNode lowerShardContainer = ImmutableContainerNodeBuilder.create()
@@ -365,7 +497,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest {
         return testContainer;
     }
 
-    private void writeCrossShardContainer(final DOMDataTreeShardWriteTransaction transaction) throws Exception{
+    private void writeCrossShardContainer(final DOMDataTreeShardWriteTransaction transaction) throws Exception {
         final DOMDataTreeWriteCursor cursor = transaction.createCursor(ROOT_ID);
 
         cursor.write(TestModel.TEST_PATH.getLastPathArgument(), crossShardContainer);