From: Robert Varga Date: Thu, 12 Apr 2018 22:05:00 +0000 (+0200) Subject: Harden yang-model-util test suite X-Git-Tag: v2.0.4~25 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=705b3896231f4d91305f44ddbb1acdca34fc7c17;p=yangtools.git Harden yang-model-util test suite Update the test suite to use yangtools mockito configuration, forcing all mocking to be done. Change-Id: Icbf0cd0bc6932b6b807bb6a5ac0fd3712543c99e Signed-off-by: Robert Varga --- diff --git a/yang/yang-model-util/pom.xml b/yang/yang-model-util/pom.xml index 93a3a6a061..d9802501a3 100644 --- a/yang/yang-model-util/pom.xml +++ b/yang/yang-model-util/pom.xml @@ -41,15 +41,12 @@ ${project.groupId} yang-model-api + - junit - junit + org.opendaylight.yangtools + mockito-configuration test - - org.mockito - mockito-core - ch.qos.logback logback-classic diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/InMemorySchemaSourceCacheTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/InMemorySchemaSourceCacheTest.java index d416d33155..6f86695ebe 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/InMemorySchemaSourceCacheTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/InMemorySchemaSourceCacheTest.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.model.repo.util; import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import com.google.common.base.MoreObjects; @@ -49,7 +50,8 @@ public class InMemorySchemaSourceCacheTest { @Before public void setUp() throws Exception { - doReturn(this.registration).when(this.registry).registerSchemaSource(any(SchemaSourceProvider.class), + doNothing().when(registration).close(); + doReturn(registration).when(registry).registerSchemaSource(any(SchemaSourceProvider.class), any(PotentialSchemaSource.class)); } @@ -99,7 +101,7 @@ public class InMemorySchemaSourceCacheTest { } @Test - public void inMemorySchemaSourceCache3test() throws Exception { + public void inMemorySchemaSourceCache3test() throws InterruptedException, ExecutionException { final InMemorySchemaSourceCache inMemorySchemaSourceCache = InMemorySchemaSourceCache.createSoftCache(this.registry, REPRESENTATION); final InMemorySchemaSourceCache inMemorySchemaSourceCache2 = diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/RefcountedRegistrationTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/RefcountedRegistrationTest.java index 4cdb023357..3bd3a7b45f 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/RefcountedRegistrationTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/RefcountedRegistrationTest.java @@ -7,37 +7,50 @@ */ package org.opendaylight.yangtools.yang.model.repo.util; -import org.junit.Assert; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import org.junit.Before; import org.junit.Test; -import org.mockito.Mockito; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistration; +@RunWith(MockitoJUnitRunner.class) public class RefcountedRegistrationTest { + @Mock + private SchemaSourceRegistration reg; + + @Before + public void before() { + doNothing().when(reg).close(); + } @Test public void refcountDecTrue() { - final SchemaSourceRegistration reg = Mockito.mock(SchemaSourceRegistration.class); final RefcountedRegistration ref = new RefcountedRegistration(reg); - Assert.assertTrue(ref.decRef()); - Mockito.verify(reg, Mockito.times(1)).close(); + assertTrue(ref.decRef()); + verify(reg, times(1)).close(); } @Test public void refcountIncDecFalse() { - final SchemaSourceRegistration reg = Mockito.mock(SchemaSourceRegistration.class); final RefcountedRegistration ref = new RefcountedRegistration(reg); ref.incRef(); - Assert.assertFalse(ref.decRef()); - Mockito.verify(reg, Mockito.times(0)).close(); + assertFalse(ref.decRef()); + verify(reg, times(0)).close(); } @Test public void refcountIncDecTrue() { - final SchemaSourceRegistration reg = Mockito.mock(SchemaSourceRegistration.class); final RefcountedRegistration ref = new RefcountedRegistration(reg); ref.incRef(); - Assert.assertFalse(ref.decRef()); - Assert.assertTrue(ref.decRef()); - Mockito.verify(reg, Mockito.times(1)).close(); + assertFalse(ref.decRef()); + assertTrue(ref.decRef()); + verify(reg, times(1)).close(); } } diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/SchemaSourceTransformerTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/SchemaSourceTransformerTest.java index 71482cab8f..51b8f91978 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/SchemaSourceTransformerTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/repo/util/SchemaSourceTransformerTest.java @@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.model.repo.util; import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; import java.util.Arrays; import java.util.concurrent.Future; import javax.annotation.Nonnull; @@ -16,7 +17,6 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactory; @@ -134,7 +134,7 @@ public class SchemaSourceTransformerTest { @Override public ListenableFuture getSource( final SourceIdentifier sourceIdentifier) { - return Mockito.mock(ListenableFuture.class); + return SettableFuture.create(); } } diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/BitsTypeTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/BitsTypeTest.java index 4714fb2b8c..66f41f838d 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/BitsTypeTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/BitsTypeTest.java @@ -16,23 +16,25 @@ import static org.mockito.Mockito.doReturn; import java.util.Collections; import java.util.Optional; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition; import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; +@RunWith(MockitoJUnitRunner.class) public class BitsTypeTest { - @Mock private BitsTypeDefinition.Bit bit; @Test public void canCreateBitsType() { - MockitoAnnotations.initMocks(this); doReturn("test").when(bit).getName(); + doReturn(0L).when(bit).getPosition(); + doReturn("toString").when(bit).toString(); QName qname = QName.create("namespace", "localname"); SchemaPath schemaPath = SchemaPath.create(true, qname); @@ -56,7 +58,5 @@ public class BitsTypeTest { assertNotEquals("bitsType shouldn't equal to null", null, bitsType); assertEquals("bitsType should equals to itself", bitsType, bitsType); assertNotEquals("bitsType shouldn't equal to object of other type", "str", bitsType); - } - } diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/DataNodeIteratorTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/DataNodeIteratorTest.java index 799dd63463..bab599b3ee 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/DataNodeIteratorTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/DataNodeIteratorTest.java @@ -21,26 +21,51 @@ import java.util.Set; import java.util.SortedMap; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CopyableNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; +import org.opendaylight.yangtools.yang.model.api.OperationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; +@RunWith(MockitoJUnitRunner.class) public class DataNodeIteratorTest { - private DataNodeIterator dataNodeIterator; @Before - public void setUp() { - DataNodeContainer dataNodeContainer = mock(DataNodeContainer.class); - this.dataNodeIterator = new DataNodeIterator(dataNodeContainer); + public void before() { + this.dataNodeIterator = new DataNodeIterator(mockDataNodeContainer(DataNodeContainer.class)); + } + + private static T mockDataNodeContainer(final Class clazz) { + final T mock = mock(clazz); + doReturn(Collections.emptyList()).when(mock).getChildNodes(); + doReturn(Collections.emptySet()).when(mock).getGroupings(); + doReturn(Collections.emptySet()).when(mock).getTypeDefinitions(); + return mock; + } + + private static T mockOperationDefinition(final T mock) { + doReturn(Collections.emptySet()).when(mock).getGroupings(); + doReturn(Collections.emptySet()).when(mock).getTypeDefinitions(); + doReturn(mockDataNodeContainer(ContainerSchemaNode.class)).when(mock).getInput(); + doReturn(mockDataNodeContainer(ContainerSchemaNode.class)).when(mock).getOutput(); + return mock; + } + + @Deprecated + private static T mockCopyableNode(final boolean augmenting, final T node) { + doReturn(augmenting).when(node).isAugmenting(); + return node; } @Test(expected = IllegalArgumentException.class) @@ -70,19 +95,18 @@ public class DataNodeIteratorTest { @Test public void testTraversal() { - final Module mockedModule = mock(Module.class); - - final ContainerSchemaNode mockedAugmentingContainer = mock(ContainerSchemaNode.class); - doReturn(true).when(mockedAugmentingContainer).isAugmenting(); + final Module mockedModule = mockDataNodeContainer(Module.class); - final ContainerSchemaNode mockedContainer = mock(ContainerSchemaNode.class); + final ContainerSchemaNode mockedAugmentingContainer = mockCopyableNode(true, mock(ContainerSchemaNode.class)); + final ContainerSchemaNode mockedContainer = mockCopyableNode(false, mockDataNodeContainer( + ContainerSchemaNode.class)); - final ListSchemaNode mockedList = mock(ListSchemaNode.class); + final ListSchemaNode mockedList = mockCopyableNode(false, mockDataNodeContainer(ListSchemaNode.class)); - final ChoiceSchemaNode mockedChoice = mock(ChoiceSchemaNode.class); - final CaseSchemaNode mockedCase1 = mock(CaseSchemaNode.class); + final ChoiceSchemaNode mockedChoice = mockCopyableNode(false, mock(ChoiceSchemaNode.class)); + final CaseSchemaNode mockedCase1 = mockDataNodeContainer(CaseSchemaNode.class); final QName mockedCase1QName = QName.create("", "case1"); - final CaseSchemaNode mockedCase2 = mock(CaseSchemaNode.class); + final CaseSchemaNode mockedCase2 = mockDataNodeContainer(CaseSchemaNode.class); final QName mockedCase2QName = QName.create("", "case2"); final SortedMap cases = ImmutableSortedMap.of(mockedCase1QName, mockedCase1, mockedCase2QName, mockedCase2); @@ -92,17 +116,19 @@ public class DataNodeIteratorTest { mockedChoice); doReturn(childNodes).when(mockedModule).getChildNodes(); - final NotificationDefinition mockedNotification = mock(NotificationDefinition.class); - final ContainerSchemaNode mockedContainerInNotification = mock(ContainerSchemaNode.class); + final NotificationDefinition mockedNotification = mockDataNodeContainer(NotificationDefinition.class); + final ContainerSchemaNode mockedContainerInNotification = mockCopyableNode(false, + mockDataNodeContainer(ContainerSchemaNode.class)); final Set notificationChildNodes = ImmutableSet.of(mockedContainerInNotification); doReturn(notificationChildNodes).when(mockedNotification).getChildNodes(); final Set notifications = ImmutableSet.of(mockedNotification); doReturn(notifications).when(mockedModule).getNotifications(); - final RpcDefinition mockedRpc = mock(RpcDefinition.class); - final ContainerSchemaNode mockedContainerInRpcInput = mock(ContainerSchemaNode.class); - final ListSchemaNode mockedListInRpcInputContainer = mock(ListSchemaNode.class); + final RpcDefinition mockedRpc = mockOperationDefinition(mock(RpcDefinition.class)); + final ContainerSchemaNode mockedContainerInRpcInput = mockDataNodeContainer(ContainerSchemaNode.class); + final ListSchemaNode mockedListInRpcInputContainer = mockCopyableNode(false, + mockDataNodeContainer(ListSchemaNode.class)); final Set rpcInputChildNodes = ImmutableSet.of(mockedListInRpcInputContainer); doReturn(rpcInputChildNodes).when(mockedContainerInRpcInput).getChildNodes(); doReturn(mockedContainerInRpcInput).when(mockedRpc).getInput(); @@ -110,7 +136,7 @@ public class DataNodeIteratorTest { doReturn(rpcs).when(mockedModule).getRpcs(); - final GroupingDefinition mockedGrouping = mock(GroupingDefinition.class); + final GroupingDefinition mockedGrouping = mockDataNodeContainer(GroupingDefinition.class); final Set groupings = ImmutableSet.of(mockedGrouping); doReturn(groupings).when(mockedModule).getGroupings(); diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtilTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtilTest.java index b2fde22a0b..580ec72c53 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtilTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtilTest.java @@ -38,6 +38,7 @@ public class SchemaContextUtilTest { MockitoAnnotations.initMocks(this); doReturn(Optional.empty()).when(mockSchemaContext).findModule(any(QNameModule.class)); + doReturn("test").when(mockModule).getName(); doReturn("test").when(mockModule).getPrefix(); doReturn(NAMESPACE).when(mockModule).getNamespace(); doReturn(QNameModule.create(NAMESPACE)).when(mockModule).getQNameModule(); diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SimpleSchemaContextTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SimpleSchemaContextTest.java index 1218471b2f..365f5c855c 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SimpleSchemaContextTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/SimpleSchemaContextTest.java @@ -76,6 +76,7 @@ public class SimpleSchemaContextTest { doReturn(mod.getRevision()).when(ret).getRevision(); doReturn(mod).when(ret).getQNameModule(); doReturn(mod.toString()).when(ret).toString(); + doReturn(ImmutableSet.of()).when(ret).getImports(); return ret; } } diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/TypeTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/TypeTest.java index ec173dc398..50a0b40910 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/TypeTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/type/TypeTest.java @@ -13,6 +13,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import com.google.common.collect.ImmutableList; @@ -107,6 +108,7 @@ public class TypeTest { public void identityrefTypeTest() { final IdentityrefTypeBuilder identityrefTypeBuilder1 = BaseTypes.identityrefTypeBuilder(SCHEMA_PATH); final IdentitySchemaNode identitySchemaNode = mock(IdentitySchemaNode.class); + doReturn("identitySchemaNode").when(identitySchemaNode).toString(); identityrefTypeBuilder1.addIdentity(identitySchemaNode); final IdentityrefTypeDefinition identityrefTypeDefinition1 = identityrefTypeBuilder1.build(); final IdentityrefTypeBuilder identityrefTypeBuilder2 = BaseTypes.identityrefTypeBuilder(SCHEMA_PATH);