[ONOS-5254] JUNIT Mocks for FUJITSU NETCONF
Change-Id: Iac2b6473a71c1d981b6d2dadc316a31d9b4a02df
diff --git a/drivers/fujitsu/BUCK b/drivers/fujitsu/BUCK
index 2ab5166..2eeaa33 100644
--- a/drivers/fujitsu/BUCK
+++ b/drivers/fujitsu/BUCK
@@ -2,6 +2,7 @@
'//lib:CORE_DEPS',
'//drivers/utilities:onos-drivers-utilities',
'//protocols/netconf/api:onos-protocols-netconf-api',
+ '//protocols/netconf/ctl:onos-protocols-netconf-ctl',
'//lib:org.apache.karaf.shell.console',
'//cli:onos-cli',
'//apps/optical-model:onos-apps-optical-model',
diff --git a/drivers/fujitsu/pom.xml b/drivers/fujitsu/pom.xml
index 431ef9f..d540252 100644
--- a/drivers/fujitsu/pom.xml
+++ b/drivers/fujitsu/pom.xml
@@ -56,6 +56,11 @@
</dependency>
<dependency>
<groupId>org.onosproject</groupId>
+ <artifactId>onos-netconf-ctl</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
<artifactId>onos-drivers-utilities</artifactId>
<version>${project.version}</version>
</dependency>
@@ -69,6 +74,11 @@
<artifactId>org.apache.karaf.shell.console</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
</dependencies>
</project>
diff --git a/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuDriverHandlerAdapter.java b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuDriverHandlerAdapter.java
new file mode 100644
index 0000000..6d7aad3
--- /dev/null
+++ b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuDriverHandlerAdapter.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * 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 org.onosproject.drivers.fujitsu;
+
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.driver.Behaviour;
+import org.onosproject.net.driver.DefaultDriverHandler;
+import org.onosproject.net.driver.DriverData;
+import org.onosproject.mastership.MastershipService;
+import org.onosproject.mastership.MastershipServiceAdapter;
+import org.onosproject.netconf.NetconfController;
+
+
+/**
+ * Mock DefaultDriverHandler.
+ */
+public class FujitsuDriverHandlerAdapter extends DefaultDriverHandler {
+
+ private NetconfController controller;
+ private final MastershipService mastershipService = new InternalMastershipServiceMock();;
+
+ /**
+ * Creates new driver handler with the attached driver data.
+ *
+ * @param data driver data to attach
+ */
+ public FujitsuDriverHandlerAdapter(DriverData data) {
+ super(data);
+ }
+
+ @Override
+ public boolean hasBehaviour(Class<? extends Behaviour> behaviourClass) {
+ return true;
+ }
+
+ @Override
+ public <T> T get(Class<T> serviceClass) {
+ if (serviceClass == NetconfController.class) {
+ return (T) this.controller;
+ } else if (serviceClass == MastershipService.class) {
+ return (T) this.mastershipService;
+ }
+ return null;
+ }
+
+ /**
+ * Set up initial environment.
+ *
+ * @param controller NETCONF controller instance
+ */
+ public void setUp(NetconfController controller) {
+ this.controller = controller;
+ }
+
+ /**
+ * Mock MastershipServiceAdapter.
+ */
+ private class InternalMastershipServiceMock extends MastershipServiceAdapter {
+
+ @Override
+ public boolean isLocalMaster(DeviceId deviceId) {
+ return true;
+ }
+ }
+
+}
diff --git a/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfControllerMock.java b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfControllerMock.java
new file mode 100644
index 0000000..ee0c94c
--- /dev/null
+++ b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfControllerMock.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * 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 org.onosproject.drivers.fujitsu;
+
+import com.google.common.collect.ImmutableMap;
+import org.onlab.packet.IpAddress;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.driver.DefaultDriver;
+import org.onosproject.net.driver.DefaultDriverData;
+import org.onosproject.netconf.NetconfDevice;
+import org.onosproject.netconf.NetconfDeviceInfo;
+import org.onosproject.netconf.NetconfException;
+import org.onosproject.netconf.ctl.NetconfControllerImpl;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+
+/**
+ * Mock NetconfControllerImpl.
+ */
+class FujitsuNetconfControllerMock extends NetconfControllerImpl {
+
+ private static final String VOLT_DRIVER_NAME = "fujitsu-volt-netconf";
+ private static final String VOLT_DEVICE_USERNAME = "abc";
+ private static final String VOLT_DEVICE_PASSWORD = "123";
+ private static final String VOLT_DEVICE_IP = "10.10.10.11";
+ private static final int VOLT_DEVICE_PORT = 830;
+
+ private Map<DeviceId, NetconfDevice> netconfDeviceMap = new ConcurrentHashMap<>();
+
+ @Override
+ public NetconfDevice getNetconfDevice(DeviceId deviceInfo) {
+ return netconfDeviceMap.get(deviceInfo);
+ }
+
+ @Override
+ public NetconfDevice getNetconfDevice(IpAddress ip, int port) {
+ for (DeviceId info : netconfDeviceMap.keySet()) {
+ if (info.uri().getSchemeSpecificPart().equals(ip.toString() + ":" + port)) {
+ return netconfDeviceMap.get(info);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public NetconfDevice connectDevice(DeviceId deviceId) throws NetconfException {
+ if (netconfDeviceMap.containsKey(deviceId)) {
+ log.debug("Device {} is already present", deviceId);
+ return netconfDeviceMap.get(deviceId);
+ } else {
+ log.debug("Creating NETCONF device {}", deviceId);
+ String ip;
+ int port;
+ String[] info = deviceId.toString().split(":");
+ if (info.length == 3) {
+ ip = info[1];
+ port = Integer.parseInt(info[2]);
+ } else {
+ ip = Arrays.asList(info).stream().filter(el -> !el.equals(info[0])
+ && !el.equals(info[info.length - 1]))
+ .reduce((t, u) -> t + ":" + u)
+ .get();
+ log.debug("ip v6 {}", ip);
+ port = Integer.parseInt(info[info.length - 1]);
+ }
+ try {
+ NetconfDeviceInfo deviceInfo = new NetconfDeviceInfo(
+ VOLT_DEVICE_USERNAME,
+ VOLT_DEVICE_PASSWORD,
+ IpAddress.valueOf(ip),
+ port);
+ NetconfDevice netconfDevice = new FujitsuNetconfDeviceMock(deviceInfo);
+ netconfDeviceMap.put(deviceInfo.getDeviceId(), netconfDevice);
+ return netconfDevice;
+ } catch (NullPointerException e) {
+ throw new NetconfException("Cannot connect a device " + deviceId, e);
+ }
+ }
+ }
+
+ @Override
+ public void disconnectDevice(DeviceId deviceId, boolean remove) {
+ if (!netconfDeviceMap.containsKey(deviceId)) {
+ log.warn("Device {} is not present", deviceId);
+ } else {
+ netconfDeviceMap.remove(deviceId);
+ }
+ }
+
+ @Override
+ public Map<DeviceId, NetconfDevice> getDevicesMap() {
+ return netconfDeviceMap;
+ }
+
+ @Override
+ public Set<DeviceId> getNetconfDevices() {
+ return netconfDeviceMap.keySet();
+ }
+
+ @Override
+ public void removeDevice(DeviceId deviceId) {
+ if (!netconfDeviceMap.containsKey(deviceId)) {
+ log.warn("Device {} is not present", deviceId);
+ } else {
+ netconfDeviceMap.remove(deviceId);
+ }
+ }
+
+ /**
+ * Sets up initial test environment.
+ *
+ * @param listener listener to be added
+ * @return driver handler
+ * @throws NetconfException when there is a problem
+ */
+ public FujitsuDriverHandlerAdapter setUp(FujitsuNetconfSessionListenerTest listener) throws NetconfException {
+ try {
+ NetconfDeviceInfo deviceInfo = new NetconfDeviceInfo(
+ VOLT_DEVICE_USERNAME, VOLT_DEVICE_PASSWORD,
+ IpAddress.valueOf(VOLT_DEVICE_IP), VOLT_DEVICE_PORT);
+
+ NetconfDevice netconfDevice = connectDevice(deviceInfo.getDeviceId());
+
+ FujitsuNetconfSessionMock session = (FujitsuNetconfSessionMock) netconfDevice.getSession();
+ session.setListener(listener);
+
+ DeviceId deviceId = deviceInfo.getDeviceId();
+ DefaultDriver driver = new DefaultDriver(
+ VOLT_DRIVER_NAME, new ArrayList<>(),
+ "Fujitsu", "1.0", "1.0",
+ ImmutableMap.of(), ImmutableMap.of());
+
+ DefaultDriverData driverData = new DefaultDriverData(driver, deviceId);
+
+ FujitsuDriverHandlerAdapter driverHandler;
+ driverHandler = new FujitsuDriverHandlerAdapter(driverData);
+ driverHandler.setUp(this);
+
+ return driverHandler;
+ } catch (NetconfException e) {
+ throw new NetconfException("Cannot create a device ", e);
+ }
+ }
+
+}
diff --git a/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfDeviceMock.java b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfDeviceMock.java
new file mode 100644
index 0000000..c2c3e0a
--- /dev/null
+++ b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfDeviceMock.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * 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 org.onosproject.drivers.fujitsu;
+
+import org.onosproject.netconf.NetconfDevice;
+import org.onosproject.netconf.NetconfDeviceInfo;
+import org.onosproject.netconf.NetconfException;
+import org.onosproject.netconf.NetconfSession;
+
+
+/**
+* Mock DefaultNetconfDevice.
+*/
+class FujitsuNetconfDeviceMock implements NetconfDevice {
+
+ private NetconfDeviceInfo netconfDeviceInfo;
+ private boolean deviceState = false;
+ private NetconfSession netconfSession;
+
+ /**
+ * Creates a new NETCONF device with the information provided.
+ *
+ * @param deviceInfo information about the device to be created.
+ * @throws NetconfException if there are problems in creating or establishing
+ * the underlying NETCONF connection and session.
+ */
+ public FujitsuNetconfDeviceMock(NetconfDeviceInfo deviceInfo) throws NetconfException {
+ netconfDeviceInfo = deviceInfo;
+ try {
+ netconfSession = new FujitsuNetconfSessionMock();
+ deviceState = true;
+ } catch (Exception e) {
+ throw new NetconfException("Cannot create Connection and Session");
+ }
+ }
+
+ @Override
+ public boolean isActive() {
+ return deviceState;
+ }
+
+ @Override
+ public NetconfSession getSession() {
+ return netconfSession;
+ }
+
+ @Override
+ public void disconnect() {
+ deviceState = false;
+ netconfSession = null;
+ }
+
+ @Override
+ public NetconfDeviceInfo getDeviceInfo() {
+ return netconfDeviceInfo;
+ }
+
+}
diff --git a/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfSessionListenerTest.java b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfSessionListenerTest.java
new file mode 100644
index 0000000..c35ee21
--- /dev/null
+++ b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfSessionListenerTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * 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 org.onosproject.drivers.fujitsu;
+
+
+public interface FujitsuNetconfSessionListenerTest {
+
+ /**
+ * Verify editConfig request arguments.
+ *
+ * @param newConfiguration configuration to set
+ * @return true if everuthing as expected
+ */
+ boolean verifyEditConfig(String newConfiguration);
+
+ /**
+ * Verify editConfig request arguments.
+ *
+ * @param targetConfiguration the targetConfiguration to change
+ * @param mode selected mode to change the configuration
+ * @param newConfiguration configuration to set
+ * @return true if everuthing as expected
+ */
+ boolean verifyEditConfig(String targetConfiguration, String mode, String newConfiguration);
+
+ /**
+ * Verify get request arguments.
+ *
+ * @param filterSchema XML subtrees to include in the reply
+ * @param withDefaultsMode with-defaults mode
+ * @return true if everuthing as expected
+ */
+ boolean verifyGet(String filterSchema, String withDefaultsMode);
+
+ /**
+ * Build get RPC response if necessary.
+ *
+ * @return String or null if not support
+ */
+ String buildGetReply();
+
+ /**
+ * Verify rpc request arguments.
+ *
+ * @param request the XML containing the request to the server.
+ * @return true if everuthing as expected
+ */
+ boolean verifyWrappedRpc(String request);
+
+ /**
+ * Verify rpc request arguments.
+ *
+ * @param filterSchema XML subtrees to indicate specific notification
+ */
+ void verifyStartSubscription(String filterSchema);
+
+}
diff --git a/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfSessionMock.java b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfSessionMock.java
new file mode 100644
index 0000000..20c2dcd
--- /dev/null
+++ b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuNetconfSessionMock.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright 2015-present Open Networking Laboratory
+ *
+ * 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 org.onosproject.drivers.fujitsu;
+
+import com.google.common.annotations.Beta;
+import org.onosproject.netconf.NetconfDeviceOutputEventListener;
+import org.onosproject.netconf.NetconfException;
+import org.onosproject.netconf.NetconfSession;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+
+/**
+ * Mock NetconfSessionImpl.
+ */
+public class FujitsuNetconfSessionMock implements NetconfSession {
+
+ private FujitsuNetconfSessionListenerTest listener;
+
+ /**
+ * Registers a listener to be invoked for verification.
+ *
+ * @param listener listener to be added
+ */
+ public void setListener(FujitsuNetconfSessionListenerTest listener) {
+ this.listener = listener;
+ }
+
+ @Override
+ public CompletableFuture<String> request(String request) throws NetconfException {
+ return null;
+ }
+
+ @Override
+ public String get(String request) throws NetconfException {
+ return null;
+ }
+
+ @Override
+ public String get(String filterSchema, String withDefaultsMode)
+ throws NetconfException {
+ boolean result = true;
+ String reply = null;
+ if (listener != null) {
+ result = listener.verifyGet(filterSchema, withDefaultsMode);
+ if (result) {
+ reply = listener.buildGetReply();
+ }
+ }
+ return result ? ((reply == null) ? filterSchema : reply) : null;
+ }
+
+ @Override
+ public String doWrappedRpc(String request) throws NetconfException {
+ boolean result = true;
+ if (listener != null) {
+ result = listener.verifyWrappedRpc(request);
+ }
+ return result ? request : null;
+ }
+
+ @Override
+ public String requestSync(String request) throws NetconfException {
+ return null;
+ }
+
+ @Override
+ public String getConfig(String targetConfiguration) throws NetconfException {
+ return null;
+ }
+
+ @Override
+ public String getConfig(String targetConfiguration, String configurationFilterSchema)
+ throws NetconfException {
+ return null;
+ }
+
+ @Override
+ public boolean editConfig(String newConfiguration) throws NetconfException {
+ boolean result = true;
+ if (listener != null) {
+ result = listener.verifyEditConfig(newConfiguration);
+ }
+ return result;
+ }
+
+ @Override
+ public boolean editConfig(String targetConfiguration, String mode, String newConfiguration)
+ throws NetconfException {
+ boolean result = true;
+ if (listener != null) {
+ result = listener.verifyEditConfig(targetConfiguration, mode, newConfiguration);
+ }
+ return result;
+ }
+
+ @Override
+ public boolean copyConfig(String targetConfiguration, String newConfiguration)
+ throws NetconfException {
+ return false;
+ }
+
+ @Override
+ public boolean deleteConfig(String targetConfiguration) throws NetconfException {
+ return false;
+ }
+
+ @Override
+ public void startSubscription() throws NetconfException {
+ }
+
+ @Beta
+ @Override
+ public void startSubscription(String filterSchema) throws NetconfException {
+ if (listener != null) {
+ listener.verifyStartSubscription(filterSchema);
+ }
+ return;
+ }
+
+ @Override
+ public void endSubscription() throws NetconfException {
+ }
+
+ @Override
+ public boolean lock(String configType) throws NetconfException {
+ return false;
+ }
+
+ @Override
+ public boolean unlock(String configType) throws NetconfException {
+ return false;
+ }
+
+ @Override
+ public boolean lock() throws NetconfException {
+ return false;
+ }
+
+ @Override
+ public boolean unlock() throws NetconfException {
+ return false;
+ }
+
+ @Override
+ public boolean close() throws NetconfException {
+ return false;
+ }
+
+ @Override
+ public String getSessionId() {
+ return null;
+ }
+
+ @Override
+ public String getServerCapabilities() {
+ return null;
+ }
+
+ @Override
+ public void setDeviceCapabilities(List<String> capabilities) {
+ }
+
+ @Override
+ public void addDeviceOutputListener(NetconfDeviceOutputEventListener listener) {
+ }
+
+ @Override
+ public void removeDeviceOutputListener(NetconfDeviceOutputEventListener listener) {
+ }
+
+}
diff --git a/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuVoltXmlUtilityMock.java b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuVoltXmlUtilityMock.java
new file mode 100644
index 0000000..89d5ab9
--- /dev/null
+++ b/drivers/fujitsu/src/test/java/org/onosproject/drivers/fujitsu/FujitsuVoltXmlUtilityMock.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * 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 org.onosproject.drivers.fujitsu;
+
+/**
+ * Mock FujitsuVoltXmlUtility.
+ * This is to avoid using the same names/definitions
+ * in FujitsuVoltXmlUtility in test codes - not tied to actual codes.
+ */
+final class FujitsuVoltXmlUtilityMock {
+
+ public static final String TEST_COLON = ":";
+ public static final String TEST_DOT = ".";
+ public static final String TEST_HYPHEN = "-";
+ public static final String TEST_SLASH = "/";
+ public static final String TEST_SPACE = " ";
+ public static final String TEST_NEW_LINE = "\n";
+ public static final String TEST_ANGLE_LEFT = "<";
+ public static final String TEST_ANGLE_RIGHT = ">";
+
+ public static final String TEST_REPORT_ALL = "report-all";
+ public static final String TEST_RUNNING = "running";
+
+ public static final String TEST_VOLT_NE_NAMESPACE =
+ "xmlns=\"http://fujitsu.com/ns/volt/1.1\"";
+ public static final String TEST_VOLT_NE = "volt-ne";
+ public static final String TEST_PONLINK_ID = "ponlink-id";
+ public static final String TEST_ONU_ID = "onu-id";
+ public static final String TEST_ROOT = "fakeroot";
+
+ public static final String TEST_VOLT_NE_OPEN = TEST_ANGLE_LEFT + TEST_VOLT_NE + TEST_SPACE;
+ public static final String TEST_VOLT_NE_CLOSE = TEST_ANGLE_LEFT + TEST_SLASH + TEST_VOLT_NE + TEST_ANGLE_RIGHT;
+
+ public static final String TEST_BASE_NAMESPACE =
+ " xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">\n";
+
+ public static final String TEST_DUPLICATE_SPACES_REGEX = " +";
+ public static final String TEST_WHITESPACES_REGEX = "\\s+";
+ public static final String TEST_EMPTY_STRING = "";
+
+ public static final String TEST_VOLT_NAMESPACE = TEST_VOLT_NE_OPEN +
+ TEST_VOLT_NE_NAMESPACE;
+
+
+ private FujitsuVoltXmlUtilityMock() {
+ }
+
+ /**
+ * Builds XML start tag with name provided.
+ *
+ * @param name tag name
+ * @return string
+ */
+ public static String startTag(String name) {
+ return startTag(name, true);
+ }
+
+ /**
+ * Builds XML end tag with name provided.
+ *
+ * @param name tag name
+ * @return string
+ */
+ public static String endTag(String name) {
+ return endTag(name, true);
+ }
+
+ /**
+ * Builds XML empty tag with name provided.
+ *
+ * @param name tag name
+ * @return string
+ */
+ public static String emptyTag(String name) {
+ return emptyTag(name, true);
+ }
+
+ /**
+ * Builds XML start tag with name provided.
+ *
+ * @param name tag name
+ * @param addNewLine option to add new line character after tag
+ * @return string
+ */
+ public static String startTag(String name, boolean addNewLine) {
+ if (addNewLine) {
+ return (TEST_ANGLE_LEFT + name + TEST_ANGLE_RIGHT + TEST_NEW_LINE);
+ } else {
+ return (TEST_ANGLE_LEFT + name + TEST_ANGLE_RIGHT);
+ }
+ }
+
+ /**
+ * Builds XML end tag with name provided.
+ *
+ * @param name tag name
+ * @param addNewLine option to add new line character after tag
+ * @return string
+ */
+ public static String endTag(String name, boolean addNewLine) {
+ if (addNewLine) {
+ return (TEST_ANGLE_LEFT + TEST_SLASH + name + TEST_ANGLE_RIGHT + TEST_NEW_LINE);
+ } else {
+ return (TEST_ANGLE_LEFT + TEST_SLASH + name + TEST_ANGLE_RIGHT);
+ }
+ }
+
+ /**
+ * Builds XML empty element tag with name provided.
+ *
+ * @param name tag name
+ * @param addNewLine option to add new line character after tag
+ * @return string
+ */
+ public static String emptyTag(String name, boolean addNewLine) {
+ if (addNewLine) {
+ return (TEST_ANGLE_LEFT + name + TEST_SLASH + TEST_ANGLE_RIGHT + TEST_NEW_LINE);
+ } else {
+ return (TEST_ANGLE_LEFT + name + TEST_SLASH + TEST_ANGLE_RIGHT);
+ }
+ }
+
+}