summaryrefslogtreecommitdiffstats
path: root/infra/it
diff options
context:
space:
mode:
authorJan Srnicek <jsrnicek@cisco.com>2017-11-03 13:33:53 +0100
committerMarek Gradzki <mgradzki@cisco.com>2017-11-03 12:58:01 +0000
commit9779f4b3ffe24bb2338630c66169da92c880ffbb (patch)
treefac37c53b70b7bbfcea00f180554b3a0dfddd59c /infra/it
parent054eb07de938df56000a8fc5cb41cb77f84bf2b5 (diff)
HONEYCOMB-359 - Wildcarded writers
Adds option to specify subtree writer that can handle whole subtree of nodes without having whole subtree specified. Its checking if node is children at runtime, rather than having pre-computed tree Change-Id: Ic46f2bd6de84f0dd14865825399f5a90a1f80859 Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'infra/it')
-rw-r--r--infra/it/it-test/src/test/java/io/fd/honeycomb/data/impl/HoneycombWriteInfraTest.java56
1 files changed, 53 insertions, 3 deletions
diff --git a/infra/it/it-test/src/test/java/io/fd/honeycomb/data/impl/HoneycombWriteInfraTest.java b/infra/it/it-test/src/test/java/io/fd/honeycomb/data/impl/HoneycombWriteInfraTest.java
index a740e0121..54b93c768 100644
--- a/infra/it/it-test/src/test/java/io/fd/honeycomb/data/impl/HoneycombWriteInfraTest.java
+++ b/infra/it/it-test/src/test/java/io/fd/honeycomb/data/impl/HoneycombWriteInfraTest.java
@@ -22,6 +22,7 @@ import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
@@ -29,6 +30,7 @@ import static org.mockito.Mockito.when;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import io.fd.honeycomb.data.DataModification;
+import io.fd.honeycomb.test.model.Ids;
import io.fd.honeycomb.translate.impl.write.registry.FlatWriterRegistryBuilder;
import io.fd.honeycomb.translate.util.YangDAG;
import io.fd.honeycomb.translate.write.WriteContext;
@@ -40,6 +42,8 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import org.junit.Test;
import org.mockito.InOrder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hc.test.rev150105.ComplexAugment;
@@ -75,7 +79,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree;
import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType;
import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
-import io.fd.honeycomb.test.model.Ids;
/**
* Testing honeycomb writes from data tree up to mocked writers.
@@ -103,6 +106,31 @@ public class HoneycombWriteInfraTest extends AbstractInfraTest {
private static <D extends DataObject> Writer<D> mockWriter(final InstanceIdentifier<D> id) {
final Writer<D> mock = (Writer<D>) mock(Writer.class);
when(mock.getManagedDataObjectType()).thenReturn(id);
+ //TODO - HONEYCOMB-412 - to call default impl of canProcess()
+ when(mock.canProcess(any())).thenAnswer(invocationOnMock -> {
+ final Writer writer = Writer.class.cast(invocationOnMock.getMock());
+ final Writer delegatingWriter = new Writer() {
+ @Nonnull
+ @Override
+ public InstanceIdentifier getManagedDataObjectType() {
+ return writer.getManagedDataObjectType();
+ }
+
+ @Override
+ public boolean supportsDirectUpdate() {
+ return writer.supportsDirectUpdate();
+ }
+
+ @Override
+ public void processModification(@Nonnull final InstanceIdentifier id,
+ @Nullable final DataObject dataBefore,
+ @Nullable final DataObject dataAfter, @Nonnull final WriteContext ctx)
+ throws WriteFailedException {
+ writer.processModification(id, dataBefore, dataAfter, ctx);
+ }
+ };
+ return delegatingWriter.canProcess(InstanceIdentifier.class.cast(invocationOnMock.getArguments()[0]));
+ });
return mock;
}
@@ -226,8 +254,19 @@ public class HoneycombWriteInfraTest extends AbstractInfraTest {
for (Writer<?> orderedWriter : orderedWriters) {
verify(orderedWriter).getManagedDataObjectType();
- verifyNoMoreInteractions(orderedWriter);
+ //TODO - HONEYCOMB-412
+ //verifyNoMoreInteractions(orderedWriter);
}
+
+ verify(complexAugmentContainerWriter, times(1)).processModification(any(), any(), any(), any());
+ verify(c3Writer, times(1)).processModification(any(), any(), any(), any());
+ verify(simpleAugmentWriter, times(1)).processModification(any(), any(), any(), any());
+ verify(simpleContainerWriter, times(1)).processModification(any(), any(), any(), any());
+ verify(containerWithChoiceWriter, times(1)).processModification(any(), any(), any(), any());
+ verify(containerFromGroupingWriter, times(1)).processModification(any(), any(), any(), any());
+ verify(nestedListWriter, times(2)).processModification(any(), any(), any(), any());
+ verify(listInContainerWriter, times(2)).processModification(any(), any(), any(), any());
+ verify(containerInListWriter, times(2)).processModification(any(), any(), any(), any());
}
private Writer<?>[] getOrderedWriters() {
@@ -316,8 +355,19 @@ public class HoneycombWriteInfraTest extends AbstractInfraTest {
for (Writer<?> orderedWriter : orderedWriters) {
verify(orderedWriter).getManagedDataObjectType();
- verifyNoMoreInteractions(orderedWriter);
+ //TODO - HONEYCOMB-412
+ // verifyNoMoreInteractions(orderedWriter);
}
+
+ verify(complexAugmentContainerWriter, times(2)).processModification(any(), any(), any(), any());
+ verify(c3Writer, times(2)).processModification(any(), any(), any(), any());
+ verify(simpleAugmentWriter, times(2)).processModification(any(), any(), any(), any());
+ verify(simpleContainerWriter, times(2)).processModification(any(), any(), any(), any());
+ verify(containerWithChoiceWriter, times(2)).processModification(any(), any(), any(), any());
+ verify(containerFromGroupingWriter, times(2)).processModification(any(), any(), any(), any());
+ verify(nestedListWriter, times(4)).processModification(any(), any(), any(), any());
+ verify(listInContainerWriter, times(4)).processModification(any(), any(), any(), any());
+ verify(containerInListWriter, times(4)).processModification(any(), any(), any(), any());
}
private void writeContainerWithList(final DataModification dataModification) {