From 56f405763e8ecc2b5b8b6c064f23e6ba3b30adc2 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 26 Aug 2019 12:41:47 +0200 Subject: [PATCH] More SchemaContext reuse This reuses SchemaContext across test invocations, speeding up testing a bit. Change-Id: I036fa6ce065b6a895b5926e10123af038ae5593e Signed-off-by: Robert Varga --- .../sal/NetconfDeviceDataBrokerTest.java | 24 +++++++++++---- .../netconf/sal/NetconfDeviceRpcTest.java | 29 ++++++++++++------- 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java index 60a7b3b711..1b68063d23 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java @@ -17,8 +17,10 @@ import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTr import com.google.common.collect.Lists; import java.net.InetSocketAddress; import java.util.Arrays; +import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -44,21 +46,31 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; public class NetconfDeviceDataBrokerTest { + private static SchemaContext SCHEMA_CONTEXT; @Mock private DOMRpcService rpcService; - private SchemaContext schemaContext; private NetconfDeviceDataBroker dataBroker; - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); + @BeforeClass + public static void beforeClass() { final ModuleInfoBackedContext moduleInfoBackedContext = ModuleInfoBackedContext.create(); moduleInfoBackedContext.addModuleInfos( Lists.newArrayList($YangModuleInfoImpl.getInstance(), org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns .netconf.base._1._0.rev110601.$YangModuleInfoImpl.getInstance())); - schemaContext = moduleInfoBackedContext.tryToCreateSchemaContext().get(); + SCHEMA_CONTEXT = moduleInfoBackedContext.tryToCreateSchemaContext().get(); + } + + @AfterClass + public static void afterClass() { + SCHEMA_CONTEXT = null; + } + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + DOMRpcResult result = new DefaultDOMRpcResult(); when(rpcService.invokeRpc(any(SchemaPath.class), any(NormalizedNode.class))) .thenReturn(FluentFutures.immediateFluentFuture(result)); @@ -107,7 +119,7 @@ public class NetconfDeviceDataBrokerTest { NetconfSessionPreferences prefs = NetconfSessionPreferences.fromStrings(Arrays.asList(caps)); final RemoteDeviceId id = new RemoteDeviceId("device-1", InetSocketAddress.createUnresolved("localhost", 17830)); - return new NetconfDeviceDataBroker(id, schemaContext, rpcService, prefs); + return new NetconfDeviceDataBroker(id, SCHEMA_CONTEXT, rpcService, prefs); } } diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java index 1882e217bb..06dbca5dd9 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java @@ -16,8 +16,10 @@ import com.google.common.util.concurrent.Futures; import java.util.Collection; import java.util.Collections; import java.util.Set; +import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; @@ -47,6 +49,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.w3c.dom.Node; public class NetconfDeviceRpcTest { + private static SchemaContext SCHEMA_CONTEXT; @Mock private DOMRpcAvailabilityListener listener; @@ -56,13 +59,23 @@ public class NetconfDeviceRpcTest { private NetconfDeviceRpc rpc; private SchemaPath path; private DOMRpcResult expectedReply; - private SchemaContext schema; + + @BeforeClass + public static void beforeClass() { + final ModuleInfoBackedContext moduleInfoBackedContext = ModuleInfoBackedContext.create(); + moduleInfoBackedContext.addModuleInfos(Collections.singleton($YangModuleInfoImpl.getInstance())); + SCHEMA_CONTEXT = moduleInfoBackedContext.tryToCreateSchemaContext().get(); + } + + @AfterClass + public static void afterClass() { + SCHEMA_CONTEXT = null; + } @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - schema = getSchema(); - NetconfMessageTransformer transformer = new NetconfMessageTransformer(schema, true); + NetconfMessageTransformer transformer = new NetconfMessageTransformer(SCHEMA_CONTEXT, true); final NetconfMessage reply = new NetconfMessage(XmlUtil.readXmlToDocument( "\n" + "\n" @@ -72,7 +85,7 @@ public class NetconfDeviceRpcTest { RpcResult result = RpcResultBuilder.success(reply).build(); doReturn(Futures.immediateFuture(result)) .when(communicator).sendRequest(any(NetconfMessage.class), any(QName.class)); - rpc = new NetconfDeviceRpc(schema, communicator, transformer); + rpc = new NetconfDeviceRpc(SCHEMA_CONTEXT, communicator, transformer); path = SchemaPath .create(true, QName.create("urn:ietf:params:xml:ns:netconf:base:1.0", "2011-06-01", "get-config")); @@ -103,7 +116,7 @@ public class NetconfDeviceRpcTest { verify(listener).onRpcAvailable(argument.capture()); final Collection argValue = argument.getValue(); - final Set operations = schema.getOperations(); + final Set operations = SCHEMA_CONTEXT.getOperations(); Assert.assertEquals(argValue.size(), operations.size()); for (RpcDefinition operation : operations) { final DOMRpcIdentifier domRpcIdentifier = DOMRpcIdentifier.create(operation.getPath()); @@ -116,10 +129,4 @@ public class NetconfDeviceRpcTest { return Builders.containerBuilder().withNodeIdentifier( new YangInstanceIdentifier.NodeIdentifier(QName.create(namespace, date, localName))).build(); } - - private static SchemaContext getSchema() { - final ModuleInfoBackedContext moduleInfoBackedContext = ModuleInfoBackedContext.create(); - moduleInfoBackedContext.addModuleInfos(Collections.singleton($YangModuleInfoImpl.getInstance())); - return moduleInfoBackedContext.tryToCreateSchemaContext().get(); - } } -- 2.36.6