Unit tests for Cluster Metadata Manager
Change-Id: I81de294844414778798645b95b5aaa18060e4c44
diff --git a/utils/junit/BUCK b/utils/junit/BUCK
index c2fea21..cf8c29a 100644
--- a/utils/junit/BUCK
+++ b/utils/junit/BUCK
@@ -2,6 +2,7 @@
'//lib:junit',
'//lib:hamcrest-all',
'//lib:guava',
+ '//lib:slf4j-api',
]
TEST_DEPS = [
diff --git a/utils/junit/src/main/java/org/onlab/junit/HttpResourceUrlInterceptor.java b/utils/junit/src/main/java/org/onlab/junit/HttpResourceUrlInterceptor.java
new file mode 100644
index 0000000..045fd4c
--- /dev/null
+++ b/utils/junit/src/main/java/org/onlab/junit/HttpResourceUrlInterceptor.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * 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.onlab.junit;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import java.net.URLStreamHandlerFactory;
+
+/**
+ * Intercepts HTTP URL connections and supplies predefined data from a resource. Used for supplying data to HTTP
+ * connections in unit tests.
+ */
+public class HttpResourceUrlInterceptor {
+
+ /**
+ * Handles creation of HTTP Connections to the resource data.
+ */
+ private static class HttpResourceUrlInterceptorHandler extends URLStreamHandler {
+
+ String resourceName;
+
+ HttpResourceUrlInterceptorHandler(String resourceName) {
+ this.resourceName = resourceName;
+ }
+
+ @Override
+ protected URLConnection openConnection(URL u) throws IOException {
+ return new InterceptedHttpUrlConnection(u, resourceName);
+ }
+ }
+
+ /**
+ * Creates stream handlers for the interceptor.
+ */
+ public static class HttpResourceUrlInterceptorFactory implements URLStreamHandlerFactory {
+
+ String resourceName;
+
+ public HttpResourceUrlInterceptorFactory(String resourceName) {
+ this.resourceName = resourceName;
+ }
+
+ @Override
+ public URLStreamHandler createURLStreamHandler(String protocol) {
+ return new HttpResourceUrlInterceptorHandler(resourceName);
+ }
+ }
+
+ /**
+ * HTTP Url Connection that is backed by the data in the resource.
+ */
+ private static final class InterceptedHttpUrlConnection extends HttpURLConnection {
+
+ private final String resourceName;
+
+ private InterceptedHttpUrlConnection(URL url, String resourceName) {
+ super(url);
+ this.resourceName = resourceName;
+ }
+
+ @Override
+ public int getResponseCode() {
+ return HTTP_OK;
+ }
+
+ @Override
+ public boolean usingProxy() {
+ return false;
+ }
+
+ @Override
+ public void disconnect() {
+ // noop
+ }
+
+ @Override
+ public void connect() {
+ // noop
+ }
+
+ @Override
+ public InputStream getInputStream() throws IOException {
+ return this.getClass().getResource(resourceName).openStream();
+ }
+
+ }
+}
+
+
diff --git a/utils/junit/src/main/java/org/onlab/junit/LoggerAdapter.java b/utils/junit/src/main/java/org/onlab/junit/LoggerAdapter.java
new file mode 100644
index 0000000..5e4f635e
--- /dev/null
+++ b/utils/junit/src/main/java/org/onlab/junit/LoggerAdapter.java
@@ -0,0 +1,327 @@
+/*
+ * Copyright 2017-present Open Networking Foundation
+ *
+ * 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.onlab.junit;
+
+import org.slf4j.Logger;
+import org.slf4j.Marker;
+
+public class LoggerAdapter implements Logger {
+ @Override
+ public String getName() {
+ return "Adapter";
+ }
+
+ @Override
+ public boolean isTraceEnabled() {
+ return false;
+ }
+
+ @Override
+ public void trace(String s) {
+
+ }
+
+ @Override
+ public void trace(String s, Object o) {
+
+ }
+
+ @Override
+ public void trace(String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void trace(String s, Object... objects) {
+
+ }
+
+ @Override
+ public void trace(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isTraceEnabled(Marker marker) {
+ return false;
+ }
+
+ @Override
+ public void trace(Marker marker, String s) {
+
+ }
+
+ @Override
+ public void trace(Marker marker, String s, Object o) {
+
+ }
+
+ @Override
+ public void trace(Marker marker, String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void trace(Marker marker, String s, Object... objects) {
+
+ }
+
+ @Override
+ public void trace(Marker marker, String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isDebugEnabled() {
+ return false;
+ }
+
+ @Override
+ public void debug(String s) {
+
+ }
+
+ @Override
+ public void debug(String s, Object o) {
+
+ }
+
+ @Override
+ public void debug(String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void debug(String s, Object... objects) {
+
+ }
+
+ @Override
+ public void debug(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isDebugEnabled(Marker marker) {
+ return false;
+ }
+
+ @Override
+ public void debug(Marker marker, String s) {
+
+ }
+
+ @Override
+ public void debug(Marker marker, String s, Object o) {
+
+ }
+
+ @Override
+ public void debug(Marker marker, String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void debug(Marker marker, String s, Object... objects) {
+
+ }
+
+ @Override
+ public void debug(Marker marker, String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isInfoEnabled() {
+ return false;
+ }
+
+ @Override
+ public void info(String s) {
+
+ }
+
+ @Override
+ public void info(String s, Object o) {
+
+ }
+
+ @Override
+ public void info(String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void info(String s, Object... objects) {
+
+ }
+
+ @Override
+ public void info(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isInfoEnabled(Marker marker) {
+ return false;
+ }
+
+ @Override
+ public void info(Marker marker, String s) {
+
+ }
+
+ @Override
+ public void info(Marker marker, String s, Object o) {
+
+ }
+
+ @Override
+ public void info(Marker marker, String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void info(Marker marker, String s, Object... objects) {
+
+ }
+
+ @Override
+ public void info(Marker marker, String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isWarnEnabled() {
+ return false;
+ }
+
+ @Override
+ public void warn(String s) {
+
+ }
+
+ @Override
+ public void warn(String s, Object o) {
+
+ }
+
+ @Override
+ public void warn(String s, Object... objects) {
+
+ }
+
+ @Override
+ public void warn(String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void warn(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isWarnEnabled(Marker marker) {
+ return false;
+ }
+
+ @Override
+ public void warn(Marker marker, String s) {
+
+ }
+
+ @Override
+ public void warn(Marker marker, String s, Object o) {
+
+ }
+
+ @Override
+ public void warn(Marker marker, String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void warn(Marker marker, String s, Object... objects) {
+
+ }
+
+ @Override
+ public void warn(Marker marker, String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isErrorEnabled() {
+ return false;
+ }
+
+ @Override
+ public void error(String s) {
+
+ }
+
+ @Override
+ public void error(String s, Object o) {
+
+ }
+
+ @Override
+ public void error(String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void error(String s, Object... objects) {
+
+ }
+
+ @Override
+ public void error(String s, Throwable throwable) {
+
+ }
+
+ @Override
+ public boolean isErrorEnabled(Marker marker) {
+ return false;
+ }
+
+ @Override
+ public void error(Marker marker, String s) {
+
+ }
+
+ @Override
+ public void error(Marker marker, String s, Object o) {
+
+ }
+
+ @Override
+ public void error(Marker marker, String s, Object o, Object o1) {
+
+ }
+
+ @Override
+ public void error(Marker marker, String s, Object... objects) {
+
+ }
+
+ @Override
+ public void error(Marker marker, String s, Throwable throwable) {
+
+ }
+}
diff --git a/utils/junit/src/main/resources/org/onlab/junit/cluster-info.json b/utils/junit/src/main/resources/org/onlab/junit/cluster-info.json
new file mode 100644
index 0000000..152635b
--- /dev/null
+++ b/utils/junit/src/main/resources/org/onlab/junit/cluster-info.json
@@ -0,0 +1,18 @@
+{
+ "nodes": [
+ {
+ "ip": "10.128.11.141",
+ "id": "10.128.11.141",
+ "port": 9876
+ }
+ ],
+ "name": "MyCluster",
+ "partitions": [
+ {
+ "id": 1,
+ "members": [
+ "10.128.11.141"
+ ]
+ }
+ ]
+}