summaryrefslogtreecommitdiffstats
path: root/infra/translate-utils/src/test
diff options
context:
space:
mode:
authorMaros Marsalek <mmarsale@cisco.com>2016-11-08 10:13:36 +0100
committerMaros Marsalek <mmarsale@cisco.com>2016-11-08 13:17:57 +0100
commit757222979bc02d0aaba1870eea36413383d15bde (patch)
tree3fe2a502026fbfa9a4ae5627e1a453a057f6c1fa /infra/translate-utils/src/test
parent03a638b95da83e150d4f69451c8733b5f09c37aa (diff)
HONEYCOMB-270 Add isPresent() to Readers/Customizers
So that they can influence whether empty data is to be considered as present + Move registries implementations from util to impl + Introduce DelegatingReader trait + Extend GenericReader where possible to reduce duplication Change-Id: I5a416acd0c4eab1fbc30fcbe585719991dbe9215 Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
Diffstat (limited to 'infra/translate-utils/src/test')
-rw-r--r--infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderRegistryBuilderTest.java114
-rw-r--r--infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderRegistryTest.java112
-rw-r--r--infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderTest.java124
-rw-r--r--infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/SubtreeReaderTest.java124
-rw-r--r--infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/TypeHierarchyTest.java72
-rw-r--r--infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/FlatWriterRegistryBuilderTest.java193
-rw-r--r--infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/FlatWriterRegistryTest.java328
-rw-r--r--infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/SubtreeWriterTest.java84
8 files changed, 0 insertions, 1151 deletions
diff --git a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderRegistryBuilderTest.java b/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderRegistryBuilderTest.java
deleted file mode 100644
index d742575be..000000000
--- a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderRegistryBuilderTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.translate.util.read.registry;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.when;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import io.fd.honeycomb.translate.read.Reader;
-import io.fd.honeycomb.translate.read.registry.ReaderRegistry;
-import io.fd.honeycomb.translate.util.DataObjects;
-import java.util.List;
-import java.util.Map;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.opendaylight.yangtools.concepts.Builder;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class CompositeReaderRegistryBuilderTest {
-
- private Reader<DataObjects.DataObject1, Builder<DataObjects.DataObject1>> reader1 =
- mock(DataObjects.DataObject1.class);
- private Reader<DataObjects.DataObject2, Builder<DataObjects.DataObject2>> reader2 =
- mock(DataObjects.DataObject2.class);
- private Reader<DataObjects.DataObject3, Builder<DataObjects.DataObject3>> reader3 =
- mock(DataObjects.DataObject3.class);
- private Reader<DataObjects.DataObject3.DataObject31, Builder<DataObjects.DataObject3.DataObject31>> reader31 =
- mock(DataObjects.DataObject3.DataObject31.class);
-
- private Reader<DataObjects.DataObject4, Builder<DataObjects.DataObject4>> reader4 =
- mock(DataObjects.DataObject4.class);
- private Reader<DataObjects.DataObject4.DataObject41, Builder<DataObjects.DataObject4.DataObject41>> reader41 =
- mock(DataObjects.DataObject4.DataObject41.class);
- private Reader<DataObjects.DataObject4.DataObject41.DataObject411, Builder<DataObjects.DataObject4.DataObject41.DataObject411>> reader411 =
- mock(DataObjects.DataObject4.DataObject41.DataObject411.class);
- private Reader<DataObjects.DataObject4.DataObject42, Builder<DataObjects.DataObject4.DataObject42>> reader42 =
- mock(DataObjects.DataObject4.DataObject42.class);
-
- @SuppressWarnings("unchecked")
- private <D extends DataObject> Reader<D, Builder<D>> mock(final Class<D> dataObjectType) {
- final Reader<D, Builder<D>> mock = Mockito.mock(Reader.class);
- try {
- when(mock.getManagedDataObjectType())
- .thenReturn(((InstanceIdentifier<D>) dataObjectType.getDeclaredField("IID").get(null)));
- } catch (IllegalAccessException | NoSuchFieldException e) {
- throw new RuntimeException(e);
- }
- return mock;
- }
-
- @Test
- public void testCompositeStructure() throws Exception {
- final CompositeReaderRegistryBuilder compositeReaderRegistryBuilder = new CompositeReaderRegistryBuilder();
- /*
- Composite reader structure ordered left from right
-
- 1, 2, 3, 4
- 31 42, 41
- 411
- */
- compositeReaderRegistryBuilder.add(reader1);
- compositeReaderRegistryBuilder.addAfter(reader2, reader1.getManagedDataObjectType());
- compositeReaderRegistryBuilder.addAfter(reader3, reader2.getManagedDataObjectType());
- compositeReaderRegistryBuilder.addAfter(reader31, reader1.getManagedDataObjectType());
- compositeReaderRegistryBuilder.addAfter(reader4, reader3.getManagedDataObjectType());
- compositeReaderRegistryBuilder.add(reader41);
- compositeReaderRegistryBuilder.addBefore(reader42, reader41.getManagedDataObjectType());
- compositeReaderRegistryBuilder.add(reader411);
-
- final ReaderRegistry build = compositeReaderRegistryBuilder.build();
-
- final Map<Class<? extends DataObject>, Reader<? extends DataObject, ? extends Builder<?>>> rootReaders =
- ((CompositeReaderRegistry) build).getRootReaders();
- final List<Class<? extends DataObject>> rootReaderOrder = Lists.newArrayList(rootReaders.keySet());
-
- assertEquals(reader1.getManagedDataObjectType().getTargetType(), rootReaderOrder.get(0));
- assertEquals(reader2.getManagedDataObjectType().getTargetType(), rootReaderOrder.get(1));
- assertEquals(reader3.getManagedDataObjectType().getTargetType(), rootReaderOrder.get(2));
- assertEquals(reader4.getManagedDataObjectType().getTargetType(), rootReaderOrder.get(3));
-
- assertFalse(rootReaders.get(DataObjects.DataObject1.class) instanceof CompositeReader);
- assertFalse(rootReaders.get(DataObjects.DataObject2.class) instanceof CompositeReader);
- assertTrue(rootReaders.get(DataObjects.DataObject3.class) instanceof CompositeReader);
- assertTrue(rootReaders.get(DataObjects.DataObject4.class) instanceof CompositeReader);
-
- final ImmutableMap<Class<?>, Reader<? extends DataObject, ? extends Builder<?>>> childReaders =
- ((CompositeReader<? extends DataObject, ? extends Builder<?>>) rootReaders
- .get(DataObjects.DataObject4.class)).getChildReaders();
- final List<Class<?>> orderedChildReaders = Lists.newArrayList(childReaders.keySet());
-
- assertEquals(reader42.getManagedDataObjectType().getTargetType(), orderedChildReaders.get(0));
- assertEquals(reader41.getManagedDataObjectType().getTargetType(), orderedChildReaders.get(1));
- assertTrue(childReaders.get(DataObjects.DataObject4.DataObject41.class) instanceof CompositeReader);
- assertFalse(childReaders.get(DataObjects.DataObject4.DataObject42.class) instanceof CompositeReader);
- }
-} \ No newline at end of file
diff --git a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderRegistryTest.java b/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderRegistryTest.java
deleted file mode 100644
index 06cb8498f..000000000
--- a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderRegistryTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.translate.util.read.registry;
-
-import static io.fd.honeycomb.translate.util.DataObjects.DataObject3;
-import static io.fd.honeycomb.translate.util.DataObjects.DataObject3.DataObject31;
-import static io.fd.honeycomb.translate.util.DataObjects.DataObject4;
-import static io.fd.honeycomb.translate.util.DataObjects.DataObject4.DataObject41;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import io.fd.honeycomb.translate.read.ReadContext;
-import io.fd.honeycomb.translate.read.Reader;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.InOrder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.opendaylight.yangtools.concepts.Builder;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class CompositeReaderRegistryTest {
-
- @Mock
- private ReadContext ctx;
- private CompositeReaderRegistry reg;
- private Reader<DataObject31, Builder<DataObject31>> reader31;
- private Reader<DataObject3, Builder<DataObject3>> rootReader3;
- private Reader<DataObject41, Builder<DataObject41>> reader41;
- private Reader<DataObject4, Builder<DataObject4>> rootReader4;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
-
- reader31 = mockReader(DataObject31.class);
- rootReader3 =
- spy(CompositeReader.createForReader(
- mockReader(DataObject3.class),
- ImmutableMap.of(DataObject31.class, reader31)));
-
- reader41 = mockReader(DataObject41.class);
- rootReader4 =
- spy(CompositeReader.createForReader(
- mockReader(DataObject4.class), ImmutableMap.of(
- DataObject41.class, reader41)));
-
- reg = new CompositeReaderRegistry(Lists.newArrayList(rootReader3, rootReader4));
- }
-
- @Test
- public void testReadAll() throws Exception {
- reg.readAll(ctx);
-
- // Invoked according to composite ordering
- final InOrder inOrder = inOrder(rootReader3, rootReader4, reader31, reader41);
- inOrder.verify(rootReader3).read(any(InstanceIdentifier.class), any(ReadContext.class));
- inOrder.verify(reader31).read(any(InstanceIdentifier.class), any(ReadContext.class));
- inOrder.verify(rootReader4).read(any(InstanceIdentifier.class), any(ReadContext.class));
- inOrder.verify(reader41).read(any(InstanceIdentifier.class), any(ReadContext.class));
- }
-
- @Test
- public void testReadSingleRoot() throws Exception {
- reg.read(DataObject3.IID, ctx);
-
- // Invoked according to composite ordering
- final InOrder inOrder = inOrder(rootReader3, rootReader4, reader31, reader41);
- inOrder.verify(rootReader3).read(any(InstanceIdentifier.class), any(ReadContext.class));
- inOrder.verify(reader31).read(any(InstanceIdentifier.class), any(ReadContext.class));
-
- // Only subtree under DataObject3 should be read
- verify(rootReader4, times(0)).read(any(InstanceIdentifier.class), any(ReadContext.class));
- verify(reader41, times(0)).read(any(InstanceIdentifier.class), any(ReadContext.class));
- }
-
- @SuppressWarnings("unchecked")
- static <D extends DataObject, B extends Builder<D>> Reader<D, B> mockReader(final Class<D> dataType)
- throws Exception {
- final Reader r = mock(Reader.class);
- final Object iid = dataType.getDeclaredField("IID").get(null);
- when(r.getManagedDataObjectType()).thenReturn((InstanceIdentifier) iid);
- final Builder builder = mock(Builder.class);
- when(builder.build()).thenReturn(mock(dataType));
- when(r.getBuilder(any(InstanceIdentifier.class))).thenReturn(builder);
- when(r.read(any(InstanceIdentifier.class), any(ReadContext.class))).thenReturn(Optional.of(mock(dataType)));
- return (Reader<D, B>) r;
- }
-} \ No newline at end of file
diff --git a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderTest.java b/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderTest.java
deleted file mode 100644
index 9ae036013..000000000
--- a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/CompositeReaderTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.translate.util.read.registry;
-
-import static io.fd.honeycomb.translate.util.DataObjects.DataObject4;
-import static io.fd.honeycomb.translate.util.DataObjects.DataObject4.DataObject41;
-import static io.fd.honeycomb.translate.util.DataObjects.DataObjectK;
-import static io.fd.honeycomb.translate.util.DataObjects.DataObjectKey;
-import static io.fd.honeycomb.translate.util.read.registry.CompositeReaderRegistryTest.mockReader;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import io.fd.honeycomb.translate.read.ListReader;
-import io.fd.honeycomb.translate.read.ReadContext;
-import io.fd.honeycomb.translate.read.Reader;
-import io.fd.honeycomb.translate.util.DataObjects;
-import java.util.List;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.opendaylight.yangtools.concepts.Builder;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.Identifiable;
-import org.opendaylight.yangtools.yang.binding.Identifier;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class CompositeReaderTest {
-
- @Mock
- private ReadContext ctx;
- private Reader<DataObject41, Builder<DataObject41>> reader41;
- private Reader<DataObject4, Builder<DataObject4>> reader4;
- private Reader<DataObject4, Builder<DataObject4>> compositeReader;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
-
- reader41 = mockReader(DataObject41.class);
- reader4 = mockReader(DataObject4.class);
- compositeReader = CompositeReader
- .createForReader(reader4, ImmutableMap.of(DataObject41.class, reader41));
- }
-
- @Test
- public void testReadCurrent() throws Exception {
- compositeReader.read(DataObject4.IID, ctx);
- verify(reader4).readCurrentAttributes(eq(DataObject4.IID), any(Builder.class), eq(ctx));
- verify(reader41).read(DataObject41.IID, ctx);
- }
-
- @Test
- public void testReadJustChild() throws Exception {
- // Delegating read to child
- compositeReader.read(DataObject41.IID, ctx);
- verify(reader4, times(0))
- .readCurrentAttributes(any(InstanceIdentifier.class), any(Builder.class), any(ReadContext.class));
- verify(reader41).read(DataObject41.IID, ctx);
- }
-
- @Test
- public void testReadFallback() throws Exception {
- // Delegating read to delegate as a fallback since IID does not fit, could be handled by the delegate if its
- // a subtree handler
- compositeReader.read(DataObjects.DataObject4.DataObject42.IID, ctx);
- verify(reader4).read(DataObjects.DataObject4.DataObject42.IID, ctx);
- verify(reader41, times(0)).read(any(InstanceIdentifier.class), any(ReadContext.class));
- }
-
- @Test
- public void testList() throws Exception {
- final Reader<DataObjectK.DataObjectK1, Builder<DataObjectK.DataObjectK1>> readerK1 =
- mockReader(DataObjectK.DataObjectK1.class);
- final ListReader<DataObjectK, DataObjectKey, Builder<DataObjectK>> readerK =
- mockListReader(DataObjectK.class, Lists.newArrayList(new DataObjectKey(), new DataObjectKey()));
- final ListReader<DataObjectK, DataObjectKey, Builder<DataObjectK>>
- compositeReaderK = (ListReader<DataObjectK, DataObjectKey, Builder<DataObjectK>>)
- CompositeReader.createForReader(readerK, ImmutableMap.of(DataObject41.class, readerK1));
-
- compositeReaderK.readList(DataObjectK.IID, ctx);
-
- verify(readerK).getAllIds(DataObjectK.IID, ctx);
- verify(readerK, times(2))
- .readCurrentAttributes(any(InstanceIdentifier.class), any(Builder.class), any(ReadContext.class));
- }
-
- @SuppressWarnings("unchecked")
- static <D extends DataObject & Identifiable<K>, K extends Identifier<D>, B extends Builder<D>> ListReader<D, K, B> mockListReader(
- final Class<D> dataType, List<K> keys)
- throws Exception {
- final ListReader r = mock(ListReader.class);
- final Object iid = dataType.getDeclaredField("IID").get(null);
- when(r.getManagedDataObjectType()).thenReturn((InstanceIdentifier) iid);
- final Builder builder = mock(Builder.class);
- when(builder.build()).thenReturn(mock(dataType));
- when(r.getBuilder(any(InstanceIdentifier.class))).thenReturn(builder);
- when(r.read(any(InstanceIdentifier.class), any(ReadContext.class))).thenReturn(Optional.of(mock(dataType)));
- when(r.getAllIds(any(InstanceIdentifier.class), any(ReadContext.class))).thenReturn(keys);
- return (ListReader<D, K, B>) r;
- }
-
-} \ No newline at end of file
diff --git a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/SubtreeReaderTest.java b/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/SubtreeReaderTest.java
deleted file mode 100644
index 799b9553f..000000000
--- a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/SubtreeReaderTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.translate.util.read.registry;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.Sets;
-import io.fd.honeycomb.translate.read.ReadContext;
-import io.fd.honeycomb.translate.read.Reader;
-import io.fd.honeycomb.translate.util.DataObjects;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.opendaylight.yangtools.concepts.Builder;
-import org.opendaylight.yangtools.yang.binding.ChildOf;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class SubtreeReaderTest {
-
- @Mock
- private Reader<DataObjects.DataObject4, Builder<DataObjects.DataObject4>> delegate;
- @Mock
- private Reader<DataObject1, Builder<DataObject1>> delegateLocal;
- @Mock
- private ReadContext ctx;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- doReturn(DataObjects.DataObject4.IID).when(delegate).getManagedDataObjectType();
- doReturn(DataObject1.IID).when(delegateLocal).getManagedDataObjectType();
- }
-
- @Test
- public void testCreate() throws Exception {
- final Reader<DataObjects.DataObject4, Builder<DataObjects.DataObject4>> subtreeR =
- SubtreeReader.createForReader(Sets.newHashSet(DataObjects.DataObject4.DataObject41.IID), delegate);
-
- subtreeR.getBuilder(DataObjects.DataObject4.IID);
- verify(delegate).getBuilder(DataObjects.DataObject4.IID);
-
- subtreeR.getManagedDataObjectType();
- verify(delegate, atLeastOnce()).getManagedDataObjectType();
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testCreateInvalid() throws Exception {
- SubtreeReader.createForReader(Sets.newHashSet(DataObjects.DataObject1.IID), delegate);
- }
-
- @Test(expected = IllegalStateException.class)
- public void testReadOnlySubtreeCannotFilter() throws Exception {
- final Reader<DataObjects.DataObject4, Builder<DataObjects.DataObject4>> subtreeR =
- SubtreeReader.createForReader(Sets.newHashSet(DataObjects.DataObject4.DataObject41.IID), delegate);
-
- doReturn(Optional.fromNullable(mock(DataObjects.DataObject4.class))).when(delegate).read(DataObjects.DataObject4.IID, ctx);
- subtreeR.read(DataObjects.DataObject4.DataObject41.IID, ctx);
- }
-
- @Test
- public void testReadOnlySubtreeNotPresent() throws Exception {
- final Reader<DataObjects.DataObject4, Builder<DataObjects.DataObject4>> subtreeR =
- SubtreeReader.createForReader(Sets.newHashSet(DataObjects.DataObject4.DataObject41.IID), delegate);
-
- doReturn(Optional.absent()).when(delegate).read(DataObjects.DataObject4.IID, ctx);
- assertFalse(subtreeR.read(DataObjects.DataObject4.DataObject41.IID, ctx).isPresent());
- }
-
- @Test
- public void testReadOnlySubtreeChild() throws Exception {
- final Reader<DataObject1, Builder<DataObject1>> subtreeR =
- SubtreeReader.createForReader(Sets.newHashSet(DataObject1.DataObject11.IID), delegateLocal);
-
- final DataObject1 mock = mock(DataObject1.class);
- final DataObject1.DataObject11 mock11 = mock(DataObject1.DataObject11.class);
- doReturn(mock11).when(mock).getDataObject11();
- doReturn(Optional.fromNullable(mock)).when(delegateLocal).read(DataObject1.IID, ctx);
- assertEquals(mock11, subtreeR.read(DataObject1.DataObject11.IID, ctx).get());
- }
-
- @Test
- public void testReadEntireSubtree() throws Exception {
- final Reader<DataObject1, Builder<DataObject1>> subtreeR =
- SubtreeReader.createForReader(Sets.newHashSet(DataObject1.DataObject11.IID), delegateLocal);
-
- final DataObject1 mock = mock(DataObject1.class);
- final DataObject1.DataObject11 mock11 = mock(DataObject1.DataObject11.class);
- doReturn(mock11).when(mock).getDataObject11();
- doReturn(Optional.fromNullable(mock)).when(delegateLocal).read(DataObject1.IID, ctx);
- assertEquals(mock, subtreeR.read(DataObject1.IID, ctx).get());
- }
-
- public abstract static class DataObject1 implements DataObject {
- public static InstanceIdentifier<DataObject1> IID = InstanceIdentifier.create(DataObject1.class);
-
- public abstract DataObject11 getDataObject11();
-
- public abstract static class DataObject11 implements DataObject, ChildOf<DataObject1> {
- public static InstanceIdentifier<DataObject11> IID = DataObject1.IID.child(DataObject11.class);
- }
- }
-}
diff --git a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/TypeHierarchyTest.java b/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/TypeHierarchyTest.java
deleted file mode 100644
index 3b3ea3a35..000000000
--- a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/read/registry/TypeHierarchyTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.translate.util.read.registry;
-
-import static org.hamcrest.CoreMatchers.hasItem;
-import static org.hamcrest.CoreMatchers.hasItems;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-import com.google.common.collect.Sets;
-import io.fd.honeycomb.translate.util.DataObjects;
-import org.hamcrest.CoreMatchers;
-import org.junit.Test;
-
-public class TypeHierarchyTest {
-
- @Test
- public void testHierarchy() throws Exception {
- final TypeHierarchy typeHierarchy = TypeHierarchy.create(Sets.newHashSet(
- DataObjects.DataObject4.DataObject41.DataObject411.IID,
- DataObjects.DataObject4.DataObject41.IID,/* Included in previous already */
- DataObjects.DataObject1.IID,
- DataObjects.DataObject3.DataObject31.IID));
-
- // Roots
- assertThat(typeHierarchy.getRoots().size(), is(3));
- assertThat(typeHierarchy.getRoots(), CoreMatchers
- .hasItems(DataObjects.DataObject1.IID, DataObjects.DataObject3.IID, DataObjects.DataObject4.IID));
-
- // Leaves
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject1.IID).size(), is(0));
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject3.DataObject31.IID).size(), is(0));
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject4.DataObject41.DataObject411.IID).size(), is(0));
-
- // Intermediate leaves
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject3.IID).size(), is(1));
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject3.IID), CoreMatchers
- .hasItem(DataObjects.DataObject3.DataObject31.IID));
- assertEquals(typeHierarchy.getDirectChildren(DataObjects.DataObject3.IID), typeHierarchy.getAllChildren(
- DataObjects.DataObject3.IID));
-
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject4.DataObject41.IID).size(), is(1));
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject4.DataObject41.IID), CoreMatchers.hasItem(
- DataObjects.DataObject4.DataObject41.DataObject411.IID));
- assertEquals(typeHierarchy.getDirectChildren(DataObjects.DataObject4.DataObject41.IID), typeHierarchy.getAllChildren(
- DataObjects.DataObject4.DataObject41.IID));
-
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject4.IID).size(), is(1));
- assertThat(typeHierarchy.getDirectChildren(DataObjects.DataObject4.IID), CoreMatchers
- .hasItem(DataObjects.DataObject4.DataObject41.IID));
- assertThat(typeHierarchy.getAllChildren(DataObjects.DataObject4.IID).size(), is(2));
- assertTrue(typeHierarchy.getAllChildren(DataObjects.DataObject4.IID).contains(DataObjects.DataObject4.DataObject41.IID));
- assertTrue(typeHierarchy.getAllChildren(DataObjects.DataObject4.IID).contains(DataObjects.DataObject4.DataObject41.DataObject411.IID));
- }
-}
-
diff --git a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/FlatWriterRegistryBuilderTest.java b/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/FlatWriterRegistryBuilderTest.java
deleted file mode 100644
index 7822c8926..000000000
--- a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/FlatWriterRegistryBuilderTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.translate.util.write.registry;
-
-import static org.hamcrest.CoreMatchers.anyOf;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.hasItems;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Multimaps;
-import com.google.common.collect.Sets;
-import io.fd.honeycomb.translate.util.DataObjects;
-import io.fd.honeycomb.translate.write.DataObjectUpdate;
-import io.fd.honeycomb.translate.write.WriteContext;
-import io.fd.honeycomb.translate.write.Writer;
-import io.fd.honeycomb.translate.write.registry.WriterRegistry;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import org.junit.Test;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class FlatWriterRegistryBuilderTest {
-
- @Test
- public void testRelationsBefore() throws Exception {
- final FlatWriterRegistryBuilder flatWriterRegistryBuilder = new FlatWriterRegistryBuilder();
- /*
- 1 -> 2 -> 3
- -> 4
- */
- flatWriterRegistryBuilder.add(mockWriter(DataObjects.DataObject3.class));
- flatWriterRegistryBuilder.add(mockWriter(DataObjects.DataObject4.class));
- flatWriterRegistryBuilder.addBefore(mockWriter(DataObjects.DataObject2.class),
- Lists.newArrayList(DataObjects.DataObject3.IID, DataObjects.DataObject4.IID));
- flatWriterRegistryBuilder.addBefore(mockWriter(DataObjects.DataObject1.class), DataObjects.DataObject2.IID);
- final ImmutableMap<InstanceIdentifier<?>, Writer<?>> mappedWriters =
- flatWriterRegistryBuilder.getMappedHandlers();
-
- final ArrayList<InstanceIdentifier<?>> typesInList = Lists.newArrayList(mappedWriters.keySet());
- assertEquals(DataObjects.DataObject1.IID, typesInList.get(0));
- assertEquals(DataObjects.DataObject2.IID, typesInList.get(1));
- assertThat(typesInList.get(2), anyOf(equalTo(DataObjects.DataObject3.IID), equalTo(DataObjects.DataObject4.IID)));
- assertThat(typesInList.get(3), anyOf(equalTo(DataObjects.DataObject3.IID), equalTo(DataObjects.DataObject4.IID)));
- }
-
- @Test
- public void testBuild() throws Exception {
- final FlatWriterRegistryBuilder flatWriterRegistryBuilder = new FlatWriterRegistryBuilder();
- final Writer<? extends DataObject> writer = mockWriter(DataObjects.DataObject3.class);
- flatWriterRegistryBuilder.add(writer);
- final WriterRegistry build = flatWriterRegistryBuilder.build();
-
- final InstanceIdentifier<DataObjects.DataObject3> id = InstanceIdentifier.create(DataObjects.DataObject3.class);
- final DataObjectUpdate update = mock(DataObjectUpdate.class);
- doReturn(id).when(update).getId();
- final DataObjects.DataObject3 before = mock(DataObjects.DataObject3.class);
- final DataObjects.DataObject3 after = mock(DataObjects.DataObject3.class);
- when(update.getDataBefore()).thenReturn(before);
- when(update.getDataAfter()).thenReturn(after);
-
- WriterRegistry.DataObjectUpdates updates = new WriterRegistry.DataObjectUpdates(
- Multimaps.forMap(Collections.singletonMap(id, update)),
- Multimaps.forMap(Collections.emptyMap()));
- final WriteContext ctx = mock(WriteContext.class);
- build.update(updates, ctx);
-
- verify(writer).update(id, before, after, ctx);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testBuildUnknownWriter() throws Exception {
- final FlatWriterRegistryBuilder flatWriterRegistryBuilder = new FlatWriterRegistryBuilder();
- final Writer<? extends DataObject> writer = mockWriter(DataObjects.DataObject3.class);
- flatWriterRegistryBuilder.add(writer);
- final WriterRegistry build = flatWriterRegistryBuilder.build();
-
- final InstanceIdentifier<DataObjects.DataObject1> id2 = InstanceIdentifier.create(DataObjects.DataObject1.class);
- final DataObjectUpdate update2 = mock(DataObjectUpdate.class);
- final WriterRegistry.DataObjectUpdates updates = new WriterRegistry.DataObjectUpdates(
- Multimaps.forMap(Collections.singletonMap(id2, update2)),
- Multimaps.forMap(Collections.emptyMap()));
- build.update(updates, mock(WriteContext.class));
- }
-
- @Test
- public void testRelationsAfter() throws Exception {
- final FlatWriterRegistryBuilder flatWriterRegistryBuilder = new FlatWriterRegistryBuilder();
- /*
- 1 -> 2 -> 3
- -> 4
- */
- flatWriterRegistryBuilder.add(mockWriter(DataObjects.DataObject1.class));
- flatWriterRegistryBuilder.addAfter(mockWriter(DataObjects.DataObject2.class), DataObjects.DataObject1.IID);
- flatWriterRegistryBuilder.addAfter(mockWriter(DataObjects.DataObject3.class), DataObjects.DataObject2.IID);
- flatWriterRegistryBuilder.addAfter(mockWriter(DataObjects.DataObject4.class),
- Lists.newArrayList(DataObjects.DataObject2.IID, DataObjects.DataObject3.IID));
- final ImmutableMap<InstanceIdentifier<?>, Writer<?>> mappedWriters =
- flatWriterRegistryBuilder.getMappedHandlers();
-
- final List<InstanceIdentifier<?>> typesInList = Lists.newArrayList(mappedWriters.keySet());
- assertEquals(DataObjects.DataObject1.IID, typesInList.get(0));
- assertEquals(DataObjects.DataObject2.IID, typesInList.get(1));
- assertThat(typesInList.get(2), anyOf(equalTo(DataObjects.DataObject3.IID), equalTo(DataObjects.DataObject4.IID)));
- assertThat(typesInList.get(3), anyOf(equalTo(DataObjects.DataObject3.IID), equalTo(DataObjects.DataObject4.IID)));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testRelationsLoop() throws Exception {
- final FlatWriterRegistryBuilder flatWriterRegistryBuilder = new FlatWriterRegistryBuilder();
- /*
- 1 -> 2 -> 1
- */
- flatWriterRegistryBuilder.add(mockWriter(DataObjects.DataObject1.class));
- flatWriterRegistryBuilder.addAfter(mockWriter(DataObjects.DataObject2.class), DataObjects.DataObject1.IID);
- flatWriterRegistryBuilder.addAfter(mockWriter(DataObjects.DataObject1.class), DataObjects.DataObject2.IID);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testAddWriterTwice() throws Exception {
- final FlatWriterRegistryBuilder flatWriterRegistryBuilder = new FlatWriterRegistryBuilder();
- flatWriterRegistryBuilder.add(mockWriter(DataObjects.DataObject1.class));
- flatWriterRegistryBuilder.add(mockWriter(DataObjects.DataObject1.class));
- }
-
- @Test
- public void testAddSubtreeWriter() throws Exception {
- final FlatWriterRegistryBuilder flatWriterRegistryBuilder = new FlatWriterRegistryBuilder();
- flatWriterRegistryBuilder.subtreeAdd(
- Sets.newHashSet(DataObjects.DataObject4.DataObject41.IID,
- DataObjects.DataObject4.DataObject41.IID),
- mockWriter(DataObjects.DataObject4.class));
- final ImmutableMap<InstanceIdentifier<?>, Writer<?>> mappedWriters =
- flatWriterRegistryBuilder.getMappedHandlers();
- final ArrayList<InstanceIdentifier<?>> typesInList = Lists.newArrayList(mappedWriters.keySet());
-
- assertEquals(DataObjects.DataObject4.IID, typesInList.get(0));
- assertEquals(1, typesInList.size());
- }
-
- @Test
- public void testCreateSubtreeWriter() throws Exception {
- final Writer<?> forWriter = SubtreeWriter.createForWriter(Sets.newHashSet(
- DataObjects.DataObject4.DataObject41.IID,
- DataObjects.DataObject4.DataObject41.DataObject411.IID,
- DataObjects.DataObject4.DataObject42.IID),
- mockWriter(DataObjects.DataObject4.class));
- assertThat(forWriter, instanceOf(SubtreeWriter.class));
- assertThat(((SubtreeWriter<?>) forWriter).getHandledChildTypes().size(), is(3));
- assertThat(((SubtreeWriter<?>) forWriter).getHandledChildTypes(), hasItems(DataObjects.DataObject4.DataObject41.IID,
- DataObjects.DataObject4.DataObject42.IID, DataObjects.DataObject4.DataObject41.DataObject411.IID));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testCreateInvalidSubtreeWriter() throws Exception {
- SubtreeWriter.createForWriter(Sets.newHashSet(
- InstanceIdentifier.create(DataObjects.DataObject3.class).child(DataObjects.DataObject3.DataObject31.class)),
- mockWriter(DataObjects.DataObject4.class));
- }
-
- @SuppressWarnings("unchecked")
- private Writer<? extends DataObject> mockWriter(final Class<? extends DataObject> doClass)
- throws NoSuchFieldException, IllegalAccessException {
- final Writer mock = mock(Writer.class);
- when(mock.getManagedDataObjectType()).thenReturn((InstanceIdentifier<?>) doClass.getDeclaredField("IID").get(null));
- return mock;
- }
-
-} \ No newline at end of file
diff --git a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/FlatWriterRegistryTest.java b/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/FlatWriterRegistryTest.java
deleted file mode 100644
index 5566fca47..000000000
--- a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/FlatWriterRegistryTest.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.translate.util.write.registry;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.Multimap;
-import io.fd.honeycomb.translate.util.DataObjects;
-import io.fd.honeycomb.translate.util.DataObjects.DataObject1;
-import io.fd.honeycomb.translate.write.DataObjectUpdate;
-import io.fd.honeycomb.translate.write.WriteContext;
-import io.fd.honeycomb.translate.write.Writer;
-import io.fd.honeycomb.translate.write.registry.WriterRegistry;
-import org.hamcrest.CoreMatchers;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.InOrder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class FlatWriterRegistryTest {
-
- @Mock
- private Writer<DataObject1> writer1;
- @Mock
- private Writer<DataObjects.DataObject2> writer2;
- @Mock
- private Writer<DataObjects.DataObject3> writer3;
- @Mock
- private Writer<DataObjects.DataObject1ChildK> writer4;
- @Mock
- private WriteContext ctx;
- @Mock
- private WriteContext revertWriteContext;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- when(writer1.getManagedDataObjectType()).thenReturn(DataObjects.DataObject1.IID);
- when(writer2.getManagedDataObjectType()).thenReturn(DataObjects.DataObject2.IID);
- when(writer3.getManagedDataObjectType()).thenReturn(DataObjects.DataObject3.IID);
- }
-
- @Test
- public void testMultipleUpdatesForSingleWriter() throws Exception {
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(ImmutableMap.of(DataObjects.DataObject1.IID, writer1, DataObjects.DataObject2.IID, writer2));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates = HashMultimap.create();
- final InstanceIdentifier<DataObjects.DataObject1> iid = InstanceIdentifier.create(DataObjects.DataObject1.class);
- final InstanceIdentifier<DataObjects.DataObject1> iid2 = InstanceIdentifier.create(DataObjects.DataObject1.class);
- final DataObjects.DataObject1 dataObject = mock(DataObjects.DataObject1.class);
- updates.put(DataObjects.DataObject1.IID, DataObjectUpdate.create(iid, dataObject, dataObject));
- updates.put(DataObjects.DataObject1.IID, DataObjectUpdate.create(iid2, dataObject, dataObject));
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(updates, ImmutableMultimap.of()), ctx);
-
- verify(writer1).update(iid, dataObject, dataObject, ctx);
- verify(writer1).update(iid2, dataObject, dataObject, ctx);
- // Invoked when registry is being created
- verifyNoMoreInteractions(writer1);
- verifyZeroInteractions(writer2);
- }
-
- @Test
- public void testMultipleUpdatesForMultipleWriters() throws Exception {
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(ImmutableMap.of(DataObjects.DataObject1.IID, writer1, DataObjects.DataObject2.IID, writer2));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates = HashMultimap.create();
- final InstanceIdentifier<DataObjects.DataObject1> iid = InstanceIdentifier.create(DataObjects.DataObject1.class);
- final DataObjects.DataObject1 dataObject = mock(DataObjects.DataObject1.class);
- updates.put(DataObjects.DataObject1.IID, DataObjectUpdate.create(iid, dataObject, dataObject));
- final InstanceIdentifier<DataObjects.DataObject2> iid2 = InstanceIdentifier.create(DataObjects.DataObject2.class);
- final DataObjects.DataObject2 dataObject2 = mock(DataObjects.DataObject2.class);
- updates.put(DataObjects.DataObject2.IID, DataObjectUpdate.create(iid2, dataObject2, dataObject2));
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(updates, ImmutableMultimap.of()), ctx);
-
- final InOrder inOrder = inOrder(writer1, writer2);
- inOrder.verify(writer1).update(iid, dataObject, dataObject, ctx);
- inOrder.verify(writer2).update(iid2, dataObject2, dataObject2, ctx);
-
- verifyNoMoreInteractions(writer1);
- verifyNoMoreInteractions(writer2);
- }
-
- @Test
- public void testMultipleDeletesForMultipleWriters() throws Exception {
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(ImmutableMap.of(DataObjects.DataObject1.IID, writer1, DataObjects.DataObject2.IID, writer2));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate.DataObjectDelete> deletes = HashMultimap.create();
- final InstanceIdentifier<DataObjects.DataObject1> iid = InstanceIdentifier.create(DataObjects.DataObject1.class);
- final DataObjects.DataObject1 dataObject = mock(DataObjects.DataObject1.class);
- deletes.put(DataObjects.DataObject1.IID, ((DataObjectUpdate.DataObjectDelete) DataObjectUpdate.create(iid, dataObject, null)));
- final InstanceIdentifier<DataObjects.DataObject2> iid2 = InstanceIdentifier.create(DataObjects.DataObject2.class);
- final DataObjects.DataObject2 dataObject2 = mock(DataObjects.DataObject2.class);
- deletes.put(DataObjects.DataObject2.IID, ((DataObjectUpdate.DataObjectDelete) DataObjectUpdate.create(iid2, dataObject2, null)));
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(ImmutableMultimap.of(), deletes), ctx);
-
- final InOrder inOrder = inOrder(writer1, writer2);
- // Reversed order of invocation, first writer2 and then writer1
- inOrder.verify(writer2).update(iid2, dataObject2, null, ctx);
- inOrder.verify(writer1).update(iid, dataObject, null, ctx);
-
- verifyNoMoreInteractions(writer1);
- verifyNoMoreInteractions(writer2);
- }
-
- @Test
- public void testMultipleUpdatesAndDeletesForMultipleWriters() throws Exception {
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(ImmutableMap.of(DataObjects.DataObject1.IID, writer1, DataObjects.DataObject2.IID, writer2));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate.DataObjectDelete> deletes = HashMultimap.create();
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates = HashMultimap.create();
- final InstanceIdentifier<DataObjects.DataObject1> iid = InstanceIdentifier.create(DataObjects.DataObject1.class);
- final DataObjects.DataObject1 dataObject = mock(DataObjects.DataObject1.class);
- // Writer 1 delete
- deletes.put(DataObjects.DataObject1.IID, ((DataObjectUpdate.DataObjectDelete) DataObjectUpdate.create(iid, dataObject, null)));
- // Writer 1 update
- updates.put(DataObjects.DataObject1.IID, DataObjectUpdate.create(iid, dataObject, dataObject));
- final InstanceIdentifier<DataObjects.DataObject2> iid2 = InstanceIdentifier.create(DataObjects.DataObject2.class);
- final DataObjects.DataObject2 dataObject2 = mock(DataObjects.DataObject2.class);
- // Writer 2 delete
- deletes.put(DataObjects.DataObject2.IID, ((DataObjectUpdate.DataObjectDelete) DataObjectUpdate.create(iid2, dataObject2, null)));
- // Writer 2 update
- updates.put(DataObjects.DataObject2.IID, DataObjectUpdate.create(iid2, dataObject2, dataObject2));
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(updates, deletes), ctx);
-
- final InOrder inOrder = inOrder(writer1, writer2);
- // Reversed order of invocation, first writer2 and then writer1 for deletes
- inOrder.verify(writer2).update(iid2, dataObject2, null, ctx);
- inOrder.verify(writer1).update(iid, dataObject, null, ctx);
- // Then also updates are processed
- inOrder.verify(writer1).update(iid, dataObject, dataObject, ctx);
- inOrder.verify(writer2).update(iid2, dataObject2, dataObject2, ctx);
-
- verifyNoMoreInteractions(writer1);
- verifyNoMoreInteractions(writer2);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testMultipleUpdatesOneMissing() throws Exception {
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(ImmutableMap.of(DataObjects.DataObject1.IID, writer1));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates = HashMultimap.create();
- addUpdate(updates, DataObjects.DataObject1.class);
- addUpdate(updates, DataObjects.DataObject2.class);
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(updates, ImmutableMultimap.of()), ctx);
- }
-
- @Test
- public void testMultipleUpdatesOneFailing() throws Exception {
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(ImmutableMap.of(DataObjects.DataObject1.IID, writer1, DataObjects.DataObject2.IID, writer2));
-
- // Writer1 always fails
- doThrow(new RuntimeException()).when(writer1)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class), any(WriteContext.class));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates = HashMultimap.create();
- addUpdate(updates, DataObjects.DataObject1.class);
- addUpdate(updates, DataObjects.DataObject2.class);
-
- try {
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(updates, ImmutableMultimap.of()), ctx);
- fail("Bulk update should have failed on writer1");
- } catch (WriterRegistry.BulkUpdateException e) {
- assertThat(e.getFailedIds().size(), is(2));
- assertThat(e.getFailedIds(), CoreMatchers.hasItem(InstanceIdentifier.create(DataObjects.DataObject2.class)));
- assertThat(e.getFailedIds(), CoreMatchers.hasItem(InstanceIdentifier.create(DataObjects.DataObject1.class)));
- }
- }
-
- @Test
- public void testMultipleUpdatesOneFailingThenRevertWithSuccess() throws Exception {
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(
- ImmutableMap.of(DataObjects.DataObject1.IID, writer1, DataObjects.DataObject2.IID, writer2, DataObjects.DataObject3.IID, writer3));
-
- // Writer1 always fails
- doThrow(new RuntimeException()).when(writer3)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class), any(WriteContext.class));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates = HashMultimap.create();
- addUpdate(updates, DataObjects.DataObject1.class);
- addUpdate(updates, DataObjects.DataObject3.class);
- final InstanceIdentifier<DataObjects.DataObject2> iid2 = InstanceIdentifier.create(DataObjects.DataObject2.class);
- final DataObjects.DataObject2 before2 = mock(DataObjects.DataObject2.class);
- final DataObjects.DataObject2 after2 = mock(DataObjects.DataObject2.class);
- updates.put(DataObjects.DataObject2.IID, DataObjectUpdate.create(iid2, before2, after2));
-
- try {
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(updates, ImmutableMultimap.of()), ctx);
- fail("Bulk update should have failed on writer1");
- } catch (WriterRegistry.BulkUpdateException e) {
- assertThat(e.getFailedIds().size(), is(1));
-
- final InOrder inOrder = inOrder(writer1, writer2, writer3);
- inOrder.verify(writer1)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class), any(WriteContext.class));
- inOrder.verify(writer2)
- .update(iid2, before2, after2, ctx);
- inOrder.verify(writer3)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class), any(WriteContext.class));
-
- e.revertChanges(revertWriteContext);
- // Revert changes. Successful updates are iterated in reverse
- // also binding other write context,to verify if update context is not reused
- inOrder.verify(writer2)
- .update(iid2, after2, before2, revertWriteContext);
- inOrder.verify(writer1)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class), eq(revertWriteContext));
- verifyNoMoreInteractions(writer3);
- }
- }
-
- @Test
- public void testMultipleUpdatesOneFailingThenRevertWithFail() throws Exception {
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(
- ImmutableMap.of(DataObjects.DataObject1.IID, writer1, DataObjects.DataObject2.IID, writer2, DataObjects.DataObject3.IID, writer3));
-
- // Writer1 always fails
- doThrow(new RuntimeException()).when(writer3)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class), any(WriteContext.class));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates = HashMultimap.create();
- addUpdate(updates, DataObjects.DataObject1.class);
- addUpdate(updates, DataObjects.DataObject2.class);
- addUpdate(updates, DataObjects.DataObject3.class);
-
- try {
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(updates, ImmutableMultimap.of()), ctx);
- fail("Bulk update should have failed on writer1");
- } catch (WriterRegistry.BulkUpdateException e) {
- // Writer1 always fails from now
- doThrow(new RuntimeException()).when(writer1)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class), any(WriteContext.class));
- try {
- e.revertChanges(revertWriteContext);
- } catch (WriterRegistry.Reverter.RevertFailedException e1) {
- assertThat(e1.getNotRevertedChanges().size(), is(1));
- assertThat(e1.getNotRevertedChanges(), CoreMatchers
- .hasItem(InstanceIdentifier.create(DataObjects.DataObject1.class)));
- }
- }
- }
-
- @Test
- public void testMutlipleUpdatesWithOneKeyedContainer() throws Exception {
- final InstanceIdentifier internallyKeyedIdentifier = InstanceIdentifier.create(DataObject1.class)
- .child(DataObjects.DataObject1ChildK.class, new DataObjects.DataObject1ChildKey());
-
- final FlatWriterRegistry flatWriterRegistry =
- new FlatWriterRegistry(
- ImmutableMap.of(DataObjects.DataObject1.IID, writer1, DataObjects.DataObject1ChildK.IID,writer4));
-
- // Writer1 always fails
- doThrow(new RuntimeException()).when(writer1)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class),
- any(WriteContext.class));
-
- final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates = HashMultimap.create();
- addKeyedUpdate(updates,DataObjects.DataObject1ChildK.class);
- addUpdate(updates, DataObjects.DataObject1.class);
- try {
- flatWriterRegistry.update(new WriterRegistry.DataObjectUpdates(updates, ImmutableMultimap.of()), ctx);
- fail("Bulk update should have failed on writer1");
- } catch (WriterRegistry.BulkUpdateException e) {
- // Writer1 always fails from now
- doThrow(new RuntimeException()).when(writer1)
- .update(any(InstanceIdentifier.class), any(DataObject.class), any(DataObject.class),
- any(WriteContext.class));
- try {
- e.revertChanges(revertWriteContext);
- } catch (WriterRegistry.Reverter.RevertFailedException e1) {
- assertThat(e1.getNotRevertedChanges().size(), is(1));
- assertThat(e1.getNotRevertedChanges(), CoreMatchers
- .hasItem(InstanceIdentifier.create(DataObjects.DataObject1.class)));
- }
- }
- }
-
- private <D extends DataObject> void addKeyedUpdate(final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates,
- final Class<D> type) throws Exception {
- final InstanceIdentifier<D> iid = (InstanceIdentifier<D>) type.getDeclaredField("IID").get(null);
- final InstanceIdentifier<D> keyedIid = (InstanceIdentifier<D>) type.getDeclaredField("INTERNALLY_KEYED_IID").get(null);
- updates.put(iid, DataObjectUpdate.create(keyedIid, mock(type), mock(type)));
- }
-
- private <D extends DataObject> void addUpdate(final Multimap<InstanceIdentifier<?>, DataObjectUpdate> updates,
- final Class<D> type) throws Exception {
- final InstanceIdentifier<D> iid = (InstanceIdentifier<D>) type.getDeclaredField("IID").get(null);
- updates.put(iid, DataObjectUpdate.create(iid, mock(type), mock(type)));
- }
-} \ No newline at end of file
diff --git a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/SubtreeWriterTest.java b/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/SubtreeWriterTest.java
deleted file mode 100644
index 313dd34a8..000000000
--- a/infra/translate-utils/src/test/java/io/fd/honeycomb/translate/util/write/registry/SubtreeWriterTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package io.fd.honeycomb.translate.util.write.registry;
-
-import static org.hamcrest.CoreMatchers.hasItem;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.when;
-
-import com.google.common.collect.Sets;
-import io.fd.honeycomb.translate.util.DataObjects;
-import io.fd.honeycomb.translate.write.Writer;
-import java.util.Collections;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-public class SubtreeWriterTest {
-
- @Mock
- Writer<DataObjects.DataObject4> writer;
- @Mock
- Writer<DataObjects.DataObject4.DataObject41> writer11;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- when(writer.getManagedDataObjectType()).thenReturn(DataObjects.DataObject4.IID);
- when(writer11.getManagedDataObjectType()).thenReturn(DataObjects.DataObject4.DataObject41.IID);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testSubtreeWriterCreationFail() throws Exception {
- // The subtree node identified by IID.c(DataObject.class) is not a child of writer.getManagedDataObjectType
- SubtreeWriter.createForWriter(Collections.singleton(InstanceIdentifier.create(DataObject.class)), writer);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testSubtreeWriterCreationFailInvalidIid() throws Exception {
- // The subtree node identified by IID.c(DataObject.class) is not a child of writer.getManagedDataObjectType
- SubtreeWriter.createForWriter(Collections.singleton(DataObjects.DataObject4.IID), writer);
- }
-
- @Test
- public void testSubtreeWriterCreation() throws Exception {
- final SubtreeWriter<?> forWriter = (SubtreeWriter<?>) SubtreeWriter.createForWriter(Sets.newHashSet(
- DataObjects.DataObject4.DataObject41.IID,
- DataObjects.DataObject4.DataObject41.DataObject411.IID,
- DataObjects.DataObject4.DataObject42.IID),
- writer);
-
- assertEquals(writer.getManagedDataObjectType(), forWriter.getManagedDataObjectType());
- assertEquals(3, forWriter.getHandledChildTypes().size());
- }
-
- @Test
- public void testSubtreeWriterHandledTypes() throws Exception {
- final SubtreeWriter<?> forWriter = (SubtreeWriter<?>) SubtreeWriter.createForWriter(Sets.newHashSet(
- DataObjects.DataObject4.DataObject41.DataObject411.IID),
- writer);
-
- assertEquals(writer.getManagedDataObjectType(), forWriter.getManagedDataObjectType());
- assertEquals(1, forWriter.getHandledChildTypes().size());
- assertThat(forWriter.getHandledChildTypes(), hasItem(DataObjects.DataObject4.DataObject41.DataObject411.IID));
- }
-
-} \ No newline at end of file