From a6eaa85b523c7d96fdbb3f695dc3511d848bfef7 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Mon, 9 Feb 2015 11:40:57 +0100 Subject: [PATCH] Bug-2674 Notification support for netconf testtool Change-Id: Ib301e2cccf85d4eae75629ddf681d9157b0cb585 Signed-off-by: Maros Marsalek --- .../controller/netconf/test/tool/Main.java | 8 + .../test/tool/NetconfDeviceSimulator.java | 26 ++- .../netconf/test/tool/{ => rpc}/DataList.java | 2 +- .../test/tool/{ => rpc}/SimulatedCommit.java | 6 +- .../tool/rpc/SimulatedCreateSubscription.java | 173 ++++++++++++++++++ .../tool/{ => rpc}/SimulatedEditConfig.java | 6 +- .../test/tool/{ => rpc}/SimulatedGet.java | 6 +- .../tool/{ => rpc}/SimulatedGetConfig.java | 6 +- .../test/tool/{ => rpc}/SimulatedLock.java | 6 +- .../test/tool/{ => rpc}/SimulatedUnLock.java | 6 +- 10 files changed, 219 insertions(+), 26 deletions(-) rename opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/{ => rpc}/DataList.java (93%) rename opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/{ => rpc}/SimulatedCommit.java (85%) create mode 100644 opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedCreateSubscription.java rename opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/{ => rpc}/SimulatedEditConfig.java (91%) rename opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/{ => rpc}/SimulatedGet.java (87%) rename opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/{ => rpc}/SimulatedGetConfig.java (87%) rename opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/{ => rpc}/SimulatedLock.java (85%) rename opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/{ => rpc}/SimulatedUnLock.java (85%) diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/Main.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/Main.java index e52fce7ae0..e4cc80fa74 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/Main.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/Main.java @@ -78,6 +78,9 @@ public final class Main { @Arg(dest = "debug") public boolean debug; + @Arg(dest = "notification-file") + public File notificationFile; + static ArgumentParser getParser() { final ArgumentParser parser = ArgumentParsers.newArgumentParser("netconf testool"); @@ -95,6 +98,11 @@ public final class Main { .help("Directory containing yang schemas to describe simulated devices. Some schemas e.g. netconf monitoring and inet types are included by default") .dest("schemas-dir"); + parser.addArgument("--notification-file") + .type(File.class) + .help("Xml file containing notifications that should be sent to clients after create subscription is called") + .dest("notification-file"); + parser.addArgument("--starting-port") .type(Integer.class) .setDefault(17830) diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/NetconfDeviceSimulator.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/NetconfDeviceSimulator.java index a5f4947474..0d7ee3b945 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/NetconfDeviceSimulator.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/NetconfDeviceSimulator.java @@ -26,6 +26,7 @@ import io.netty.channel.local.LocalAddress; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.util.HashedWheelTimer; import java.io.Closeable; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -71,6 +72,14 @@ import org.opendaylight.controller.netconf.monitoring.osgi.NetconfMonitoringOper import org.opendaylight.controller.netconf.ssh.SshProxyServer; import org.opendaylight.controller.netconf.ssh.SshProxyServerConfiguration; import org.opendaylight.controller.netconf.ssh.SshProxyServerConfigurationBuilder; +import org.opendaylight.controller.netconf.test.tool.rpc.DataList; +import org.opendaylight.controller.netconf.test.tool.rpc.SimulatedCommit; +import org.opendaylight.controller.netconf.test.tool.rpc.SimulatedCreateSubscription; +import org.opendaylight.controller.netconf.test.tool.rpc.SimulatedEditConfig; +import org.opendaylight.controller.netconf.test.tool.rpc.SimulatedGet; +import org.opendaylight.controller.netconf.test.tool.rpc.SimulatedGetConfig; +import org.opendaylight.controller.netconf.test.tool.rpc.SimulatedLock; +import org.opendaylight.controller.netconf.test.tool.rpc.SimulatedUnLock; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation; @@ -116,7 +125,7 @@ public class NetconfDeviceSimulator implements Closeable { this.nioExecutor = nioExecutor; } - private NetconfServerDispatcher createDispatcher(final Map moduleBuilders, final boolean exi, final int generateConfigsTimeout) { + private NetconfServerDispatcher createDispatcher(final Map moduleBuilders, final boolean exi, final int generateConfigsTimeout, final Optional notificationsFile) { final Set capabilities = Sets.newHashSet(Collections2.transform(moduleBuilders.keySet(), new Function() { @Override @@ -132,7 +141,7 @@ public class NetconfDeviceSimulator implements Closeable { final SessionIdProvider idProvider = new SessionIdProvider(); - final SimulatedOperationProvider simulatedOperationProvider = new SimulatedOperationProvider(idProvider, capabilities); + final SimulatedOperationProvider simulatedOperationProvider = new SimulatedOperationProvider(idProvider, capabilities, notificationsFile); final NetconfMonitoringOperationService monitoringService = new NetconfMonitoringOperationService(new NetconfMonitoringServiceImpl(simulatedOperationProvider)); simulatedOperationProvider.addService(monitoringService); @@ -183,7 +192,7 @@ public class NetconfDeviceSimulator implements Closeable { final Map moduleBuilders = parseSchemasToModuleBuilders(params); - final NetconfServerDispatcher dispatcher = createDispatcher(moduleBuilders, params.exi, params.generateConfigsTimeout); + final NetconfServerDispatcher dispatcher = createDispatcher(moduleBuilders, params.exi, params.generateConfigsTimeout, Optional.fromNullable(params.notificationFile)); int currentPort = params.startingPort; @@ -392,9 +401,9 @@ public class NetconfDeviceSimulator implements Closeable { private final Set netconfOperationServices; - public SimulatedOperationProvider(final SessionIdProvider idProvider, final Set caps) { + public SimulatedOperationProvider(final SessionIdProvider idProvider, final Set caps, final Optional notificationsFile) { this.idProvider = idProvider; - final SimulatedOperationService simulatedOperationService = new SimulatedOperationService(caps, idProvider.getCurrentSessionId()); + final SimulatedOperationService simulatedOperationService = new SimulatedOperationService(caps, idProvider.getCurrentSessionId(), notificationsFile); this.netconfOperationServices = Sets.newHashSet(simulatedOperationService); } @@ -433,10 +442,12 @@ public class NetconfDeviceSimulator implements Closeable { static class SimulatedOperationService implements NetconfOperationService { private final Set capabilities; private final long currentSessionId; + private final Optional notificationsFile; - public SimulatedOperationService(final Set capabilities, final long currentSessionId) { + public SimulatedOperationService(final Set capabilities, final long currentSessionId, final Optional notificationsFile) { this.capabilities = capabilities; this.currentSessionId = currentSessionId; + this.notificationsFile = notificationsFile; } @Override @@ -453,7 +464,8 @@ public class NetconfDeviceSimulator implements Closeable { final SimulatedCommit sCommit = new SimulatedCommit(String.valueOf(currentSessionId)); final SimulatedLock sLock = new SimulatedLock(String.valueOf(currentSessionId)); final SimulatedUnLock sUnlock = new SimulatedUnLock(String.valueOf(currentSessionId)); - return Sets.newHashSet(sGet, sGetConfig, sEditConfig, sCommit, sLock, sUnlock); + final SimulatedCreateSubscription sCreateSubs = new SimulatedCreateSubscription(String.valueOf(currentSessionId), notificationsFile); + return Sets.newHashSet(sGet, sGetConfig, sEditConfig, sCommit, sLock, sUnlock, sCreateSubs); } @Override diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/DataList.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/DataList.java similarity index 93% rename from opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/DataList.java rename to opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/DataList.java index d6dd55cb4e..abc954e807 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/DataList.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/DataList.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.netconf.test.tool; +package org.opendaylight.controller.netconf.test.tool.rpc; import java.util.Collections; import java.util.List; diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedCommit.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedCommit.java similarity index 85% rename from opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedCommit.java rename to opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedCommit.java index db3717fab4..cb91319699 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedCommit.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedCommit.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.netconf.test.tool; +package org.opendaylight.controller.netconf.test.tool.rpc; import com.google.common.base.Optional; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; @@ -17,9 +17,9 @@ import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; -class SimulatedCommit extends AbstractConfigNetconfOperation { +public class SimulatedCommit extends AbstractConfigNetconfOperation { - SimulatedCommit(final String netconfSessionIdForReporting) { + public SimulatedCommit(final String netconfSessionIdForReporting) { super(null, netconfSessionIdForReporting); } diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedCreateSubscription.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedCreateSubscription.java new file mode 100644 index 0000000000..abf51c4764 --- /dev/null +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedCreateSubscription.java @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.netconf.test.tool.rpc; + +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import java.io.File; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlRootElement; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; +import org.opendaylight.controller.netconf.api.NetconfMessage; +import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; +import org.opendaylight.controller.netconf.impl.NetconfServerSession; +import org.opendaylight.controller.netconf.impl.mapping.operations.DefaultNetconfOperation; +import org.opendaylight.controller.netconf.util.mapping.AbstractLastNetconfOperation; +import org.opendaylight.controller.netconf.util.xml.XmlElement; +import org.opendaylight.controller.netconf.util.xml.XmlUtil; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +public class SimulatedCreateSubscription extends AbstractLastNetconfOperation implements DefaultNetconfOperation { + + private NetconfServerSession session; + private final Optional notifications; + private ScheduledExecutorService scheduledExecutorService; + + public SimulatedCreateSubscription(final String id, final Optional notificationsFile) { + super(id); + if(notificationsFile.isPresent()) { + notifications = Optional.of(loadNotifications(notificationsFile.get())); + scheduledExecutorService = Executors.newScheduledThreadPool(1); + } else { + notifications = Optional.absent(); + } + } + + private Notifications loadNotifications(final File file) { + try { + final JAXBContext jaxbContext = JAXBContext.newInstance(Notifications.class); + final Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); + return (Notifications) jaxbUnmarshaller.unmarshal(file); + } catch (final JAXBException e) { + throw new IllegalArgumentException("Canot parse file " + file + " as a notifications file", e); + } + } + + @Override + protected String getOperationName() { + return "create-subscription"; + } + + @Override + protected String getOperationNamespace() { + return "urn:ietf:params:xml:ns:netconf:notification:1.0"; + } + + @Override + protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) throws NetconfDocumentedException { + + + if(notifications.isPresent()) { + long delayAggregator = 0; + System.console().writer().println("Scheduling notifications " + notifications.get()); + + for (final Notification notification : notifications.get().getNotificationList()) { + for (int i = 0; i <= notification.getTimes(); i++) { + + delayAggregator += notification.getDelayInSeconds(); + + System.console().writer().println("Times " + notification.getTimes()); + scheduledExecutorService.schedule(new Runnable() { + @Override + public void run() { + try { + System.console().writer().println("Sending actual notification " + notification); + Preconditions.checkState(session != null, "Session is not set, cannot process notifications"); + session.sendMessage(parseNetconfNotification(notification.getContent())); + } catch (IOException | SAXException e) { + throw new IllegalStateException("Unable to process notification " + notification, e); + } + } + }, delayAggregator, TimeUnit.SECONDS); + } + } + } + return XmlUtil.createElement(document, XmlNetconfConstants.OK, Optional.absent()); + } + + private static NetconfMessage parseNetconfNotification(String content) throws IOException, SAXException { + final int startEventTime = content.indexOf("") + "".length(); + final int endEventTime = content.indexOf(""); + final String eventTime = content.substring(startEventTime, endEventTime); + if(eventTime.equals("XXXX")) { + content = content.replace(eventTime, new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").format(new Date())); + } + + return new NetconfMessage(XmlUtil.readXmlToDocument(content)); + } + + @Override + public void setNetconfSession(final NetconfServerSession s) { + this.session = s; + } + + @XmlRootElement(name = "notifications") + public static final class Notifications { + + @javax.xml.bind.annotation.XmlElement(nillable = false, name = "notification", required = true) + private List notificationList; + + public List getNotificationList() { + return notificationList; + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("Notifications{"); + sb.append("notificationList=").append(notificationList); + sb.append('}'); + return sb.toString(); + } + } + + public static final class Notification { + + @javax.xml.bind.annotation.XmlElement(nillable = false, name = "delay") + private long delayInSeconds; + + @javax.xml.bind.annotation.XmlElement(nillable = false, name = "times") + private long times; + + @javax.xml.bind.annotation.XmlElement(nillable = false, name = "content", required = true) + private String content; + + public long getDelayInSeconds() { + return delayInSeconds; + } + + public long getTimes() { + return times; + } + + public String getContent() { + return content; + } + + @Override + public String toString() { + final StringBuffer sb = new StringBuffer("Notification{"); + sb.append("delayInSeconds=").append(delayInSeconds); + sb.append(", times=").append(times); + sb.append(", content='").append(content).append('\''); + sb.append('}'); + return sb.toString(); + } + } +} diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedEditConfig.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedEditConfig.java similarity index 91% rename from opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedEditConfig.java rename to opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedEditConfig.java index fd4cd136fd..9ba73f4e3a 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedEditConfig.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedEditConfig.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.netconf.test.tool; +package org.opendaylight.controller.netconf.test.tool.rpc; import com.google.common.base.Optional; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; @@ -19,13 +19,13 @@ import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; -class SimulatedEditConfig extends AbstractConfigNetconfOperation { +public class SimulatedEditConfig extends AbstractConfigNetconfOperation { private static final String DELETE_EDIT_CONFIG = "delete"; private static final String OPERATION = "operation"; private static final String REMOVE_EDIT_CONFIG = "remove"; private final DataList storage; - SimulatedEditConfig(final String netconfSessionIdForReporting, final DataList storage) { + public SimulatedEditConfig(final String netconfSessionIdForReporting, final DataList storage) { super(null, netconfSessionIdForReporting); this.storage = storage; } diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedGet.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedGet.java similarity index 87% rename from opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedGet.java rename to opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedGet.java index 1c24213ca7..24d2fcc35e 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedGet.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedGet.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.netconf.test.tool; +package org.opendaylight.controller.netconf.test.tool.rpc; import com.google.common.base.Optional; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; @@ -17,11 +17,11 @@ import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; -class SimulatedGet extends AbstractConfigNetconfOperation { +public class SimulatedGet extends AbstractConfigNetconfOperation { private final DataList storage; - SimulatedGet(final String netconfSessionIdForReporting, final DataList storage) { + public SimulatedGet(final String netconfSessionIdForReporting, final DataList storage) { super(null, netconfSessionIdForReporting); this.storage = storage; } diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedGetConfig.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedGetConfig.java similarity index 87% rename from opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedGetConfig.java rename to opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedGetConfig.java index cc1258eee4..985cb4015e 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedGetConfig.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedGetConfig.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.netconf.test.tool; +package org.opendaylight.controller.netconf.test.tool.rpc; import com.google.common.base.Optional; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; @@ -17,11 +17,11 @@ import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; -class SimulatedGetConfig extends AbstractConfigNetconfOperation { +public class SimulatedGetConfig extends AbstractConfigNetconfOperation { private final DataList storage; - SimulatedGetConfig(final String netconfSessionIdForReporting, final DataList storage) { + public SimulatedGetConfig(final String netconfSessionIdForReporting, final DataList storage) { super(null, netconfSessionIdForReporting); this.storage = storage; } diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedLock.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedLock.java similarity index 85% rename from opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedLock.java rename to opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedLock.java index 4717e5464f..71b77a0825 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedLock.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedLock.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.netconf.test.tool; +package org.opendaylight.controller.netconf.test.tool.rpc; import com.google.common.base.Optional; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; @@ -17,9 +17,9 @@ import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; -class SimulatedLock extends AbstractConfigNetconfOperation { +public class SimulatedLock extends AbstractConfigNetconfOperation { - SimulatedLock(final String netconfSessionIdForReporting) { + public SimulatedLock(final String netconfSessionIdForReporting) { super(null, netconfSessionIdForReporting); } diff --git a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedUnLock.java b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedUnLock.java similarity index 85% rename from opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedUnLock.java rename to opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedUnLock.java index 31f9fc13ab..9d970b7bb5 100644 --- a/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/SimulatedUnLock.java +++ b/opendaylight/netconf/netconf-testtool/src/main/java/org/opendaylight/controller/netconf/test/tool/rpc/SimulatedUnLock.java @@ -6,7 +6,7 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.netconf.test.tool; +package org.opendaylight.controller.netconf.test.tool.rpc; import com.google.common.base.Optional; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; @@ -17,9 +17,9 @@ import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; -class SimulatedUnLock extends AbstractConfigNetconfOperation { +public class SimulatedUnLock extends AbstractConfigNetconfOperation { - SimulatedUnLock(final String netconfSessionIdForReporting) { + public SimulatedUnLock(final String netconfSessionIdForReporting) { super(null, netconfSessionIdForReporting); } -- 2.36.6