1 diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java
2 index f2828d1..d3026b8 100644
3 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java
4 +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/SimulatedOperationProvider.java
5 @@ -26,6 +26,7 @@ import org.opendaylight.netconf.test.tool.rpc.SimulatedDiscardChanges;
6 import org.opendaylight.netconf.test.tool.rpc.SimulatedEditConfig;
7 import org.opendaylight.netconf.test.tool.rpc.SimulatedGet;
8 import org.opendaylight.netconf.test.tool.rpc.SimulatedGetConfig;
9 +import org.opendaylight.netconf.test.tool.rpc.SimulatedGetConnectionPortTrail;
10 import org.opendaylight.netconf.test.tool.rpc.SimulatedLock;
11 import org.opendaylight.netconf.test.tool.rpc.SimulatedUnLock;
13 @@ -38,19 +39,19 @@ class SimulatedOperationProvider implements NetconfOperationServiceFactory {
14 final Optional<File> notificationsFile,
15 final Optional<File> initialConfigXMLFile) {
17 - simulatedOperationService = new SimulatedOperationService(
18 + this.simulatedOperationService = new SimulatedOperationService(
19 idProvider.getCurrentSessionId(), notificationsFile, initialConfigXMLFile);
23 public Set<Capability> getCapabilities() {
29 public AutoCloseable registerCapabilityListener(
30 final CapabilityListener listener) {
31 - listener.onCapabilitiesChanged(caps, Collections.emptySet());
32 + listener.onCapabilitiesChanged(this.caps, Collections.emptySet());
36 @@ -58,7 +59,7 @@ class SimulatedOperationProvider implements NetconfOperationServiceFactory {
38 public NetconfOperationService createService(
39 final String netconfSessionIdForReporting) {
40 - return simulatedOperationService;
41 + return this.simulatedOperationService;
44 static class SimulatedOperationService implements NetconfOperationService {
45 @@ -76,19 +77,24 @@ class SimulatedOperationProvider implements NetconfOperationServiceFactory {
47 public Set<NetconfOperation> getNetconfOperations() {
48 final DataList storage = new DataList();
49 - final SimulatedGet sGet = new SimulatedGet(String.valueOf(currentSessionId), storage);
50 - final SimulatedEditConfig sEditConfig = new SimulatedEditConfig(String.valueOf(currentSessionId), storage);
51 + final SimulatedGet sGet = new SimulatedGet(String.valueOf(this.currentSessionId), storage,
52 + this.initialConfigXMLFile);
53 + final SimulatedEditConfig sEditConfig = new SimulatedEditConfig(String.valueOf(this.currentSessionId),
55 final SimulatedGetConfig sGetConfig = new SimulatedGetConfig(
56 - String.valueOf(currentSessionId), storage, initialConfigXMLFile);
57 - final SimulatedCommit sCommit = new SimulatedCommit(String.valueOf(currentSessionId));
58 - final SimulatedLock sLock = new SimulatedLock(String.valueOf(currentSessionId));
59 - final SimulatedUnLock sUnlock = new SimulatedUnLock(String.valueOf(currentSessionId));
60 + String.valueOf(this.currentSessionId), storage, this.initialConfigXMLFile);
61 + final SimulatedGetConnectionPortTrail sSimulatedConnectionPortTrail = new SimulatedGetConnectionPortTrail(
62 + String.valueOf(this.currentSessionId));
63 + final SimulatedCommit sCommit = new SimulatedCommit(String.valueOf(this.currentSessionId));
64 + final SimulatedLock sLock = new SimulatedLock(String.valueOf(this.currentSessionId));
65 + final SimulatedUnLock sUnlock = new SimulatedUnLock(String.valueOf(this.currentSessionId));
66 final SimulatedCreateSubscription sCreateSubs = new SimulatedCreateSubscription(
67 - String.valueOf(currentSessionId), notificationsFile);
68 + String.valueOf(this.currentSessionId), this.notificationsFile);
69 final SimulatedDiscardChanges sDiscardChanges = new SimulatedDiscardChanges(
70 - String.valueOf(currentSessionId));
71 + String.valueOf(this.currentSessionId));
72 return Sets.newHashSet(
73 - sGet, sGetConfig, sEditConfig, sCommit, sLock, sUnlock, sCreateSubs, sDiscardChanges);
74 + sGet, sGetConfig, sEditConfig, sCommit, sLock, sUnlock, sCreateSubs, sDiscardChanges,
75 + sSimulatedConnectionPortTrail);
79 diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/config/Configuration.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/config/Configuration.java
80 index 6654425..d5bebd6 100644
81 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/config/Configuration.java
82 +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/config/Configuration.java
83 @@ -95,7 +95,7 @@ public class Configuration {
86 public PublickeyAuthenticator getPublickeyAuthenticator() {
87 - return publickeyAuthenticator;
88 + return this.publickeyAuthenticator;
91 public void setPublickeyAuthenticator(final PublickeyAuthenticator publickeyAuthenticator) {
92 @@ -103,7 +103,7 @@ public class Configuration {
95 public AuthProvider getAuthProvider() {
96 - return authProvider;
97 + return this.authProvider;
100 public void setAuthProvider(final AuthProvider authProvider) {
101 @@ -111,7 +111,7 @@ public class Configuration {
104 public Set<YangResource> getDefaultYangResources() {
105 - return defaultYangResources;
106 + return this.defaultYangResources;
109 public void setDefaultYangResources(final Set<YangResource> defaultYangResources) {
110 @@ -119,7 +119,7 @@ public class Configuration {
113 public int getThreadPoolSize() {
114 - return threadPoolSize;
115 + return this.threadPoolSize;
118 public void setThreadPoolSize(final int threadPoolSize) {
119 @@ -127,7 +127,7 @@ public class Configuration {
122 public int getStartingPort() {
123 - return startingPort;
124 + return this.startingPort;
127 public void setStartingPort(final int startingPort) {
128 @@ -135,7 +135,7 @@ public class Configuration {
131 public int getDeviceCount() {
132 - return deviceCount;
133 + return this.deviceCount;
136 public void setDeviceCount(final int deviceCount) {
137 @@ -143,7 +143,7 @@ public class Configuration {
140 public int getGenerateConfigsTimeout() {
141 - return generateConfigsTimeout;
142 + return this.generateConfigsTimeout;
145 public void setGenerateConfigsTimeout(final int generateConfigsTimeout) {
146 @@ -151,7 +151,7 @@ public class Configuration {
149 public boolean isSsh() {
154 public void setSsh(final boolean ssh) {
155 @@ -159,7 +159,7 @@ public class Configuration {
158 public String getIp() {
163 public void setIp(final String ip) {
164 @@ -167,7 +167,7 @@ public class Configuration {
167 public Set<String> getModels() {
169 + return this.models;
172 public void setModels(final Set<String> models) {
173 @@ -175,7 +175,7 @@ public class Configuration {
176 public Set<String> getCapabilities() {
177 - return capabilities;
178 + return this.capabilities;
181 public void setCapabilities(final Set<String> capabilities) {
182 @@ -183,7 +183,7 @@ public class Configuration {
185 public RpcHandler getRpcHandler() {
187 + return this.rpcHandler;
190 public void setRpcHandler(final RpcHandler rpcHandler) {
191 @@ -191,7 +191,7 @@ public class Configuration {
194 public OperationsCreator getOperationsCreator() {
195 - return operationsCreator;
196 + return this.operationsCreator;
199 public void setOperationsCreator(final OperationsCreator operationsCreator) {
200 @@ -200,7 +200,7 @@ public class Configuration {
203 public boolean isMdSal() {
209 @@ -210,7 +210,7 @@ public class Configuration {
212 public File getRpcConfigFile() {
213 - return rpcConfigFile;
214 + return this.rpcConfigFile;
218 @@ -220,7 +220,7 @@ public class Configuration {
221 public File getNotificationFile() {
222 - return notificationFile;
223 + return this.notificationFile;
227 @@ -230,7 +230,7 @@ public class Configuration {
230 public File getInitialConfigXMLFile() {
231 - return initialConfigXMLFile;
232 + return this.initialConfigXMLFile;
236 @@ -240,12 +240,12 @@ public class Configuration {
239 public boolean isXmlConfigurationProvided() {
240 - return initialConfigXMLFile != null && notificationFile != null;
241 + return this.initialConfigXMLFile != null;//&& notificationFile != null;
245 public File getSchemasDir() {
247 + return this.schemasDir;
251 diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/operations/DefaultOperationsCreator.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/operations/DefaultOperationsCreator.java
252 index edfdf6e..0bc0b9d 100644
253 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/operations/DefaultOperationsCreator.java
254 +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/operations/DefaultOperationsCreator.java
255 @@ -30,14 +30,14 @@ public final class DefaultOperationsCreator implements OperationsCreator {
256 private final SimulatedOperationService simulatedOperationService;
258 private DefaultOperationsCreator(final long currentSessionId) {
259 - simulatedOperationService = new SimulatedOperationService(currentSessionId);
260 + this.simulatedOperationService = new SimulatedOperationService(currentSessionId);
264 public NetconfOperationService getNetconfOperationService(final Set<Capability> caps,
265 final SessionIdProvider idProvider,
266 final String netconfSessionIdForReporting) {
267 - return simulatedOperationService;
268 + return this.simulatedOperationService;
271 public static DefaultOperationsCreator getDefaultOperationServiceCreator(final long currentSessionId) {
272 @@ -55,17 +55,19 @@ public final class DefaultOperationsCreator implements OperationsCreator {
274 public Set<NetconfOperation> getNetconfOperations() {
275 final DataList storage = new DataList();
276 - final SimulatedGet sGet = new SimulatedGet(String.valueOf(currentSessionId), storage);
277 - final SimulatedEditConfig sEditConfig = new SimulatedEditConfig(String.valueOf(currentSessionId), storage);
278 + final SimulatedGet sGet = new SimulatedGet(String.valueOf(this.currentSessionId), storage,
279 + Optional.absent());
280 + final SimulatedEditConfig sEditConfig = new SimulatedEditConfig(String.valueOf(this.currentSessionId),
282 final SimulatedGetConfig sGetConfig = new SimulatedGetConfig(
283 - String.valueOf(currentSessionId), storage, Optional.absent());
284 - final SimulatedCommit sCommit = new SimulatedCommit(String.valueOf(currentSessionId));
285 - final SimulatedLock sLock = new SimulatedLock(String.valueOf(currentSessionId));
286 - final SimulatedUnLock sUnlock = new SimulatedUnLock(String.valueOf(currentSessionId));
287 + String.valueOf(this.currentSessionId), storage, Optional.absent());
288 + final SimulatedCommit sCommit = new SimulatedCommit(String.valueOf(this.currentSessionId));
289 + final SimulatedLock sLock = new SimulatedLock(String.valueOf(this.currentSessionId));
290 + final SimulatedUnLock sUnlock = new SimulatedUnLock(String.valueOf(this.currentSessionId));
291 final SimulatedCreateSubscription sCreateSubs = new SimulatedCreateSubscription(
292 - String.valueOf(currentSessionId), Optional.absent());
293 + String.valueOf(this.currentSessionId), Optional.absent());
294 final SimulatedDiscardChanges sDiscardChanges = new SimulatedDiscardChanges(
295 - String.valueOf(currentSessionId));
296 + String.valueOf(this.currentSessionId));
297 return Sets.newHashSet(
298 sGet, sGetConfig, sEditConfig, sCommit, sLock, sUnlock, sCreateSubs, sDiscardChanges);
300 diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGet.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGet.java
301 index e5b197d..92f71fc 100644
302 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGet.java
303 +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGet.java
305 package org.opendaylight.netconf.test.tool.rpc;
307 import com.google.common.base.Optional;
308 +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
309 +import java.io.File;
310 +import java.io.IOException;
311 +import java.util.Collections;
312 +import java.util.List;
313 import org.opendaylight.netconf.api.xml.XmlElement;
314 import org.opendaylight.netconf.api.xml.XmlNetconfConstants;
315 import org.opendaylight.netconf.api.xml.XmlUtil;
316 import org.opendaylight.netconf.util.mapping.AbstractLastNetconfOperation;
317 +import org.slf4j.Logger;
318 +import org.slf4j.LoggerFactory;
319 import org.w3c.dom.Document;
320 import org.w3c.dom.Element;
321 +import org.xml.sax.SAXException;
323 public class SimulatedGet extends AbstractLastNetconfOperation {
325 private final DataList storage;
326 + private static final Logger LOG = LoggerFactory.getLogger(SimulatedGet.class);
328 - public SimulatedGet(final String netconfSessionIdForReporting, final DataList storage) {
329 + public SimulatedGet(final String netconfSessionIdForReporting, final DataList storage,
330 + final Optional<File> initialConfigXMLFile) {
331 super(netconfSessionIdForReporting);
332 - this.storage = storage;
334 + if (initialConfigXMLFile.isPresent()) {
335 + LOG.info("File is present: {}", initialConfigXMLFile.get().getName());
336 + this.storage = loadInitialConfigXMLFile(initialConfigXMLFile.get());
338 + this.storage = storage;
342 + @SuppressFBWarnings(value = "DLS_DEAD_LOCAL_STORE")
343 + private DataList loadInitialConfigXMLFile(final File file) {
344 + LOG.info("Loading initial config xml file: {}", file.getName());
345 + DataList configData = new DataList();
346 + List<XmlElement> xmlElementList = Collections.emptyList();
348 + Element element = XmlUtil.readXmlToElement(file);
349 + XmlElement xmlElement = XmlElement.fromDomElement(element);
350 + xmlElementList = xmlElement.getChildElements();
351 + configData.setConfigList(xmlElementList);
352 + } catch (IOException e) {
353 + LOG.info("IO exception loading xml file: {} ", e.getMessage());
355 + } catch (SAXException e) {
356 + LOG.info("SAXException {}", e.getMessage());
362 protected Element handleWithNoSubsequentOperations(final Document document, final XmlElement operationElement) {
363 final Element element = XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent());
365 - for (final XmlElement e : storage.getConfigList()) {
366 + for (final XmlElement e : this.storage.getConfigList()) {
367 final Element domElement = e.getDomElement();
368 element.appendChild(element.getOwnerDocument().importNode(domElement, true));
370 diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGetConnectionPortTrail.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGetConnectionPortTrail.java
372 index 0000000..551eb71
374 +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/rpc/SimulatedGetConnectionPortTrail.java
377 + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
379 + * This program and the accompanying materials are made available under the
380 + * terms of the Eclipse Public License v1.0 which accompanies this distribution,
381 + * and is available at http://www.eclipse.org/legal/epl-v10.html
383 +package org.opendaylight.netconf.test.tool.rpc;
385 +import org.opendaylight.netconf.api.DocumentedException;
386 +import org.opendaylight.netconf.api.xml.XmlElement;
387 +import org.opendaylight.netconf.util.mapping.AbstractLastNetconfOperation;
388 +import org.w3c.dom.Document;
389 +import org.w3c.dom.Element;
391 +public class SimulatedGetConnectionPortTrail extends AbstractLastNetconfOperation {
393 + public SimulatedGetConnectionPortTrail(final String netconfSessionIdForReporting) {
394 + super(netconfSessionIdForReporting);
398 + protected Element handleWithNoSubsequentOperations(Document document, XmlElement operationElement)
399 + throws DocumentedException {
400 + Element portname = document.createElement("port-name");
401 + portname.appendChild(document.createTextNode("L1"));
402 + Element circuitpackname = document.createElement("circuit-pack-name");
403 + circuitpackname.appendChild(document.createTextNode("2/0"));
404 + Element ports = document.createElement("ports");
405 + ports.setAttribute("xmlns", "http://org/openroadm/device");
406 + ports.appendChild(portname);
407 + ports.appendChild(circuitpackname);
412 + protected String getOperationName() {
413 + return "get-connection-port-trail";