Add a set of unit tests for openstack telemetry app
Change-Id: Ib5963c61ef0c0302a90a4f30d3dd1f0ec2862aea
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/DefaultInstancePortTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/DefaultInstancePortTest.java
index 50e8f01..ae0e4b4 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/DefaultInstancePortTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/impl/DefaultInstancePortTest.java
@@ -75,7 +75,7 @@
private InstancePort instancePort2;
/**
- * Checks that the DefaultInstancePort class is immutable.
+ * Tests class immutability.
*/
@Test
public void testImmutability() {
diff --git a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackAuthTest.java b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackAuthTest.java
index 6442aa0..723ea27 100644
--- a/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackAuthTest.java
+++ b/apps/openstacknode/app/src/test/java/org/onosproject/openstacknode/impl/DefaultOpenstackAuthTest.java
@@ -58,6 +58,9 @@
.build();
}
+ /**
+ * Tests object equality.
+ */
@Test
public void testEquality() {
new EqualsTester().addEqualityGroup(OS_AUTH_1, OS_AUTH_3)
@@ -65,6 +68,9 @@
.testEquals();
}
+ /**
+ * Test object construction.
+ */
@Test
public void testConstruction() {
OpenstackAuth auth = OS_AUTH_1;
diff --git a/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/OpenstackTelemetryService.java b/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/OpenstackTelemetryService.java
index 52ff745..8d5df0b 100644
--- a/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/OpenstackTelemetryService.java
+++ b/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/OpenstackTelemetryService.java
@@ -43,4 +43,11 @@
* @param flowInfos virtual flow information
*/
void publish(Set<FlowInfo> flowInfos);
+
+ /**
+ * Obtains a collection of openstack telemetry services.
+ *
+ * @return telemetry services
+ */
+ Set<TelemetryService> telemetryServices();
}
diff --git a/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/TelemetryConfigService.java b/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/TelemetryConfigService.java
index 156e8ff..51e4cea 100644
--- a/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/TelemetryConfigService.java
+++ b/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/TelemetryConfigService.java
@@ -17,6 +17,9 @@
import org.onosproject.openstacktelemetry.api.config.TelemetryConfig;
+/**
+ * Telemetry configuration service interface.
+ */
public interface TelemetryConfigService {
/**
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultFlowInfo.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultFlowInfo.java
index a631abc..6033483 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultFlowInfo.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultFlowInfo.java
@@ -205,6 +205,15 @@
}
/**
+ * Obtains a default flow info builder object.
+ *
+ * @return flow info builder object
+ */
+ public static Builder builder() {
+ return new DefaultBuilder();
+ }
+
+ /**
* Builder class of DefaultFlowInfo.
*/
public static final class DefaultBuilder implements FlowInfo.Builder {
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultInfluxRecord.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultInfluxRecord.java
index 8c45a60..d7ec2e1 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultInfluxRecord.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultInfluxRecord.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.openstacktelemetry.impl;
+import com.google.common.base.Strings;
import org.onosproject.openstacktelemetry.api.InfluxRecord;
import java.util.Objects;
@@ -22,14 +23,19 @@
import static com.google.common.base.MoreObjects.toStringHelper;
import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_INFLUXDB_MEASUREMENT;
-
+/**
+ * A default implementation of influx record.
+ *
+ * @param <K> key of influx record
+ * @param <V> value of influx record
+ */
public final class DefaultInfluxRecord<K, V> implements InfluxRecord<K, V> {
public static final String MEASUREMENT_NAME = DEFAULT_INFLUXDB_MEASUREMENT;
private final K measurement;
private final V flowInfos;
protected DefaultInfluxRecord(K measurement, V flowInfos) {
- if ((measurement == null) || (measurement.equals(""))) {
+ if (Strings.isNullOrEmpty((String) measurement)) {
this.measurement = (K) MEASUREMENT_NAME;
} else {
this.measurement = measurement;
@@ -66,6 +72,7 @@
return Objects.hash(measurement, flowInfos);
}
+ @Override
public String toString() {
return toStringHelper(this)
.add("measurement", measurement)
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultStatsFlowRule.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultStatsFlowRule.java
index 83c7519..2b2d7b6 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultStatsFlowRule.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/DefaultStatsFlowRule.java
@@ -20,6 +20,8 @@
import org.onlab.packet.TpPort;
import org.onosproject.openstacktelemetry.api.StatsFlowRule;
+import java.util.Objects;
+
import static com.google.common.base.Preconditions.checkArgument;
public final class DefaultStatsFlowRule implements StatsFlowRule {
@@ -79,10 +81,43 @@
.toString();
}
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj instanceof DefaultStatsFlowRule) {
+ final DefaultStatsFlowRule other = (DefaultStatsFlowRule) obj;
+ return Objects.equals(this.srcIpPrefix, other.srcIpPrefix) &&
+ Objects.equals(this.dstIpPrefix, other.dstIpPrefix) &&
+ Objects.equals(this.srcTpPort, other.srcTpPort) &&
+ Objects.equals(this.dstTpPort, other.dstTpPort) &&
+ Objects.equals(this.ipProtocol, other.ipProtocol);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(srcIpPrefix, dstIpPrefix, srcTpPort, dstTpPort, ipProtocol);
+ }
+
+ /**
+ * Obtains a default stats flow rule builder object.
+ *
+ * @return flow rule builder object
+ */
public static Builder builder() {
return new Builder();
}
+ /**
+ * Obtains the builder object existing flow rule.
+ *
+ * @param flowRule flow rule
+ * @return builder object
+ */
public static Builder from(StatsFlowRule flowRule) {
return new Builder()
.srcIpPrefix(flowRule.srcIpPrefix())
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryManager.java
index 8812cca..0ea76dc 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryManager.java
@@ -16,6 +16,7 @@
package org.onosproject.openstacktelemetry.impl;
import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -24,6 +25,7 @@
import org.apache.felix.scr.annotations.Service;
import org.onosproject.openstacktelemetry.api.GrpcTelemetryAdminService;
import org.onosproject.openstacktelemetry.api.OpenstackTelemetryService;
+import org.onosproject.openstacktelemetry.api.config.GrpcTelemetryConfig;
import org.onosproject.openstacktelemetry.api.config.TelemetryConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -66,24 +68,22 @@
return;
}
- // FIXME do not activate grpc service for now due to deps conflict
-// GrpcTelemetryConfig grpcConfig = (GrpcTelemetryConfig) config;
-// channel = ManagedChannelBuilder
-// .forAddress(grpcConfig.address(), grpcConfig.port())
-// .maxInboundMessageSize(grpcConfig.maxInboundMsgSize())
-// .usePlaintext(grpcConfig.usePlaintext())
-// .build();
+ GrpcTelemetryConfig grpcConfig = (GrpcTelemetryConfig) config;
+ channel = ManagedChannelBuilder
+ .forAddress(grpcConfig.address(), grpcConfig.port())
+ .maxInboundMessageSize(grpcConfig.maxInboundMsgSize())
+ .usePlaintext(grpcConfig.usePlaintext())
+ .build();
log.info("gRPC producer has Started");
}
@Override
public void stop() {
- // FIXME do not activate grpc service for now due to deps conflict
-// if (channel != null) {
-// channel.shutdown();
-// channel = null;
-// }
+ if (channel != null) {
+ channel.shutdown();
+ channel = null;
+ }
log.info("gRPC producer has Stopped");
}
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManager.java
index e19a579..7d8a233 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManager.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.openstacktelemetry.impl;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
@@ -94,6 +95,11 @@
});
}
+ @Override
+ public Set<TelemetryService> telemetryServices() {
+ return ImmutableSet.copyOf(telemetryServices);
+ }
+
private void invokeGrpcPublisher(GrpcTelemetryService service, Set<FlowInfo> flowInfos) {
// TODO: need provide implementation
}
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodecTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodecTest.java
index 24fe947..ca97f8d 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodecTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/FlowInfoJsonCodecTest.java
@@ -76,7 +76,9 @@
private static final int INTEGER_VALUE = 1;
private static final short SHORT_VALUE = (short) 1;
-
+ /**
+ * Initial setup for this unit test.
+ */
@Before
public void setUp() {
context = new MockCodecContext();
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodecTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodecTest.java
index 9e3294d..8f4af77 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodecTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/TinaFlowInfoByteBufferCodecTest.java
@@ -55,6 +55,9 @@
private final TinaFlowInfoByteBufferCodec codec =
new TinaFlowInfoByteBufferCodec();
+ /**
+ * Initial setup for this unit test.
+ */
@Before
public void setup() {
StatsInfo statsInfo = new DefaultStatsInfo.DefaultBuilder().build();
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/TinaStatsInfoByteBufferCodecTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/TinaStatsInfoByteBufferCodecTest.java
index f23f728..f32e5bb 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/TinaStatsInfoByteBufferCodecTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/codec/TinaStatsInfoByteBufferCodecTest.java
@@ -42,6 +42,9 @@
private final TinaStatsInfoByteBufferCodec codec =
new TinaStatsInfoByteBufferCodec();
+ /**
+ * Initial setup for this unit test.
+ */
@Before
public void setup() {
StatsInfo.Builder builder = new DefaultStatsInfo.DefaultBuilder();
@@ -59,6 +62,9 @@
.build();
}
+ /**
+ * Tests codec encode and decode.
+ */
@Test
public void testEncodeDecode() {
ByteBuffer buffer = codec.encode(info);
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultGrpcTelemetryConfigTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultGrpcTelemetryConfigTest.java
index 6dcf229..1a7f752 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultGrpcTelemetryConfigTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultGrpcTelemetryConfigTest.java
@@ -25,6 +25,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
/**
* Unit tests for DefaultGrpcTelemetryConfig class.
@@ -52,6 +53,9 @@
private GrpcTelemetryConfig sameAsConfig1;
private GrpcTelemetryConfig config2;
+ /**
+ * Initial setup for this unit test.
+ */
@Before
public void setup() {
@@ -87,6 +91,17 @@
.build();
}
+ /**
+ * Tests class immutability.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(DefaultGrpcTelemetryConfig.class);
+ }
+
+ /**
+ * Tests object equality.
+ */
@Test
public void testEquality() {
new EqualsTester()
@@ -94,6 +109,9 @@
.addEqualityGroup(config2).testEquals();
}
+ /**
+ * Tests object construction.
+ */
@Test
public void testConstruction() {
GrpcTelemetryConfig config = config1;
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultInfluxDbTelemetryConfigTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultInfluxDbTelemetryConfigTest.java
index 4af5b4a..2357fec 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultInfluxDbTelemetryConfigTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultInfluxDbTelemetryConfigTest.java
@@ -25,6 +25,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
/**
* Unit tests for DefaultInfluxDbTelemetryConfig class.
@@ -61,6 +62,9 @@
private InfluxDbTelemetryConfig sameAsConfig1;
private InfluxDbTelemetryConfig config2;
+ /**
+ * Initial setup for this unit test.
+ */
@Before
public void setup() {
@@ -105,6 +109,17 @@
.build();
}
+ /**
+ * Tests class immutability.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(DefaultInfluxDbTelemetryConfig.class);
+ }
+
+ /**
+ * Tests object equality.
+ */
@Test
public void testEquality() {
new EqualsTester()
@@ -112,6 +127,9 @@
.addEqualityGroup(config2).testEquals();
}
+ /**
+ * Tests object construction.
+ */
@Test
public void testConstruction() {
InfluxDbTelemetryConfig config = config1;
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultKafkaTelemetryConfigTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultKafkaTelemetryConfigTest.java
index 6608d7a..d3958fe 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultKafkaTelemetryConfigTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultKafkaTelemetryConfigTest.java
@@ -25,6 +25,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
public final class DefaultKafkaTelemetryConfigTest {
@@ -63,6 +64,9 @@
private KafkaTelemetryConfig sameAsConfig1;
private KafkaTelemetryConfig config2;
+ /**
+ * Initial setup for this unit test.
+ */
@Before
public void setup() {
@@ -113,6 +117,17 @@
.build();
}
+ /**
+ * Tests class immutability.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(DefaultKafkaTelemetryConfig.class);
+ }
+
+ /**
+ * Tests object equality.
+ */
@Test
public void testEquality() {
new EqualsTester()
@@ -120,6 +135,9 @@
.addEqualityGroup(config2).testEquals();
}
+ /**
+ * Tests object construction.
+ */
@Test
public void testConstruction() {
KafkaTelemetryConfig config = config1;
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultRestTelemetryConfigTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultRestTelemetryConfigTest.java
index 2a6277b..3e8bac06 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultRestTelemetryConfigTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/config/DefaultRestTelemetryConfigTest.java
@@ -25,6 +25,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
public final class DefaultRestTelemetryConfigTest {
@@ -55,6 +56,9 @@
private RestTelemetryConfig sameAsConfig1;
private RestTelemetryConfig config2;
+ /**
+ * Initial setup for this unit test.
+ */
@Before
public void setup() {
@@ -96,6 +100,17 @@
.build();
}
+ /**
+ * Tests class immutability.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(DefaultRestTelemetryConfig.class);
+ }
+
+ /**
+ * Tests object equality.
+ */
@Test
public void testEquality() {
new EqualsTester()
@@ -103,6 +118,9 @@
.addEqualityGroup(config2).testEquals();
}
+ /**
+ * Tests object construction.
+ */
@Test
public void testConstruction() {
RestTelemetryConfig config = config1;
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultFlowInfoTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultFlowInfoTest.java
index 53d18c3..1d03415 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultFlowInfoTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultFlowInfoTest.java
@@ -29,6 +29,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
/**
* Unit tests for DefaultFlowInfo class.
@@ -58,8 +59,11 @@
private FlowInfo sameAsInfo1;
private FlowInfo info2;
+ /**
+ * Initial setup for this unit test.
+ */
@Before
- public void setup() {
+ public void setUp() {
FlowInfo.Builder builder1 = new DefaultFlowInfo.DefaultBuilder();
FlowInfo.Builder builder2 = new DefaultFlowInfo.DefaultBuilder();
@@ -122,6 +126,17 @@
.build();
}
+ /**
+ * Tests class immutability.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(DefaultFlowInfo.class);
+ }
+
+ /**
+ * Tests object equality.
+ */
@Test
public void testEquality() {
new EqualsTester()
@@ -129,6 +144,9 @@
.addEqualityGroup(info2).testEquals();
}
+ /**
+ * Tests object construction.
+ */
@Test
public void testConstruction() {
FlowInfo info = info1;
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultInfluxRecordTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultInfluxRecordTest.java
new file mode 100644
index 0000000..866e34d
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultInfluxRecordTest.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright 2018-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.onosproject.openstacktelemetry.impl;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.testing.EqualsTester;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.TpPort;
+import org.onlab.packet.VlanId;
+import org.onosproject.net.DeviceId;
+import org.onosproject.openstacktelemetry.api.FlowInfo;
+import org.onosproject.openstacktelemetry.api.InfluxRecord;
+import org.onosproject.openstacktelemetry.api.StatsInfo;
+
+import java.util.Set;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
+
+/**
+ * Unit tests for DefaultInfluxRecord class.
+ */
+public final class DefaultInfluxRecordTest {
+
+ private static final String MEASUREMENT_1 = "sonaflow-1";
+ private static final String MEASUREMENT_2 = "sonaflow-2";
+
+ private static final String IP_ADDRESS_1 = "10.10.10.1";
+ private static final String IP_ADDRESS_2 = "20.20.20.1";
+
+ private static final String MAC_ADDRESS_1 = "AA:BB:CC:DD:EE:FF";
+ private static final String MAC_ADDRESS_2 = "FF:EE:DD:CC:BB:AA";
+
+ private static final int IP_PREFIX_LENGTH_1 = 10;
+ private static final int IP_PREFIX_LENGTH_2 = 20;
+
+ private static final int PORT_1 = 1000;
+ private static final int PORT_2 = 2000;
+
+ private static final int STATIC_INTEGER_1 = 1;
+ private static final int STATIC_INTEGER_2 = 2;
+
+ private static final String STATIC_STRING_1 = "1";
+ private static final String STATIC_STRING_2 = "2";
+
+ private InfluxRecord record1;
+ private InfluxRecord sameAsRecord1;
+ private InfluxRecord record2;
+
+ private Set<FlowInfo> flowInfos1;
+ private Set<FlowInfo> flowInfos2;
+
+ /**
+ * Initial setup for this unit test.
+ */
+ @Before
+ public void setUp() {
+
+ FlowInfo.Builder builder1 = new DefaultFlowInfo.DefaultBuilder();
+ FlowInfo.Builder builder2 = new DefaultFlowInfo.DefaultBuilder();
+
+ StatsInfo statsInfo = new DefaultStatsInfo.DefaultBuilder().build();
+
+ FlowInfo info1 = builder1
+ .withFlowType((byte) STATIC_INTEGER_1)
+ .withInputInterfaceId(STATIC_INTEGER_1)
+ .withOutputInterfaceId(STATIC_INTEGER_1)
+ .withDeviceId(DeviceId.deviceId(STATIC_STRING_1))
+ .withSrcIp(IpPrefix.valueOf(
+ IpAddress.valueOf(IP_ADDRESS_1), IP_PREFIX_LENGTH_1))
+ .withDstIp(IpPrefix.valueOf(
+ IpAddress.valueOf(IP_ADDRESS_1), IP_PREFIX_LENGTH_1))
+ .withSrcPort(TpPort.tpPort(PORT_1))
+ .withDstPort(TpPort.tpPort(PORT_1))
+ .withProtocol((byte) STATIC_INTEGER_1)
+ .withVlanId(VlanId.vlanId(STATIC_STRING_1))
+ .withSrcMac(MacAddress.valueOf(MAC_ADDRESS_1))
+ .withDstMac(MacAddress.valueOf(MAC_ADDRESS_1))
+ .withStatsInfo(statsInfo)
+ .build();
+
+ FlowInfo info2 = builder2
+ .withFlowType((byte) STATIC_INTEGER_2)
+ .withInputInterfaceId(STATIC_INTEGER_2)
+ .withOutputInterfaceId(STATIC_INTEGER_2)
+ .withDeviceId(DeviceId.deviceId(STATIC_STRING_2))
+ .withSrcIp(IpPrefix.valueOf(
+ IpAddress.valueOf(IP_ADDRESS_2), IP_PREFIX_LENGTH_2))
+ .withDstIp(IpPrefix.valueOf(
+ IpAddress.valueOf(IP_ADDRESS_2), IP_PREFIX_LENGTH_2))
+ .withSrcPort(TpPort.tpPort(PORT_2))
+ .withDstPort(TpPort.tpPort(PORT_2))
+ .withProtocol((byte) STATIC_INTEGER_2)
+ .withVlanId(VlanId.vlanId(STATIC_STRING_2))
+ .withSrcMac(MacAddress.valueOf(MAC_ADDRESS_2))
+ .withDstMac(MacAddress.valueOf(MAC_ADDRESS_2))
+ .withStatsInfo(statsInfo)
+ .build();
+ flowInfos1 = ImmutableSet.of(info1);
+ flowInfos2 = ImmutableSet.of(info2);
+
+ record1 = new DefaultInfluxRecord(MEASUREMENT_1, flowInfos1);
+ sameAsRecord1 = new DefaultInfluxRecord(MEASUREMENT_1, flowInfos1);
+ record2 = new DefaultInfluxRecord(MEASUREMENT_2, flowInfos2);
+ }
+
+ /**
+ * Tests class immutability.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(DefaultInfluxRecord.class);
+ }
+
+ /**
+ * Tests object equality.
+ */
+ @Test
+ public void testEquality() {
+ new EqualsTester()
+ .addEqualityGroup(record1, sameAsRecord1)
+ .addEqualityGroup(record2).testEquals();
+ }
+
+ /**
+ * Tests object construction.
+ */
+ @Test
+ public void testConstruction() {
+ InfluxRecord record = record1;
+
+ assertThat(record.measurement(), is(MEASUREMENT_1));
+ assertThat(record.flowInfos(), is(flowInfos1));
+ }
+}
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultStatsFlowRuleTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultStatsFlowRuleTest.java
new file mode 100644
index 0000000..54140dc
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultStatsFlowRuleTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2018-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.onosproject.openstacktelemetry.impl;
+
+import com.google.common.testing.EqualsTester;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
+import org.onlab.packet.TpPort;
+import org.onosproject.openstacktelemetry.api.StatsFlowRule;
+
+import static org.junit.Assert.assertEquals;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
+
+/**
+ * Unit tests for DefaultStatsFlowRule class.
+ */
+public final class DefaultStatsFlowRuleTest {
+
+ private static final IpAddress IP_ADDRESS_1 = IpAddress.valueOf("10.10.10.1");
+ private static final IpAddress IP_ADDRESS_2 = IpAddress.valueOf("20.20.20.1");
+
+ private static final int IP_PREFIX_LENGTH_1 = 10;
+ private static final int IP_PREFIX_LENGTH_2 = 20;
+
+ private static final int PORT_1 = 1000;
+ private static final int PORT_2 = 2000;
+
+ private static final byte PROTOCOL_1 = 1;
+ private static final byte PROTOCOL_2 = 2;
+
+ private StatsFlowRule rule1;
+ private StatsFlowRule sameAsRule1;
+ private StatsFlowRule rule2;
+
+ /**
+ * Initial setup for this unit test.
+ */
+ @Before
+ public void setUp() {
+
+ rule1 = DefaultStatsFlowRule.builder()
+ .srcIpPrefix(IpPrefix.valueOf(IP_ADDRESS_1, IP_PREFIX_LENGTH_1))
+ .dstIpPrefix(IpPrefix.valueOf(IP_ADDRESS_2, IP_PREFIX_LENGTH_2))
+ .srcTpPort(TpPort.tpPort(PORT_1))
+ .dstTpPort(TpPort.tpPort(PORT_2))
+ .ipProtocol(PROTOCOL_1)
+ .build();
+
+ sameAsRule1 = DefaultStatsFlowRule.builder()
+ .srcIpPrefix(IpPrefix.valueOf(IP_ADDRESS_1, IP_PREFIX_LENGTH_1))
+ .dstIpPrefix(IpPrefix.valueOf(IP_ADDRESS_2, IP_PREFIX_LENGTH_2))
+ .srcTpPort(TpPort.tpPort(PORT_1))
+ .dstTpPort(TpPort.tpPort(PORT_2))
+ .ipProtocol(PROTOCOL_1)
+ .build();
+
+ rule2 = DefaultStatsFlowRule.builder()
+ .srcIpPrefix(IpPrefix.valueOf(IP_ADDRESS_2, IP_PREFIX_LENGTH_2))
+ .dstIpPrefix(IpPrefix.valueOf(IP_ADDRESS_1, IP_PREFIX_LENGTH_1))
+ .srcTpPort(TpPort.tpPort(PORT_2))
+ .dstTpPort(TpPort.tpPort(PORT_1))
+ .ipProtocol(PROTOCOL_2)
+ .build();
+ }
+
+ /**
+ * Tests class immutability.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(DefaultStatsFlowRule.class);
+ }
+
+ /**
+ * Tests object equality.
+ */
+ @Test
+ public void testEquality() {
+ new EqualsTester()
+ .addEqualityGroup(rule1, sameAsRule1)
+ .addEqualityGroup(rule2).testEquals();
+ }
+
+ /**
+ * Tests object construction.
+ */
+ @Test
+ public void testConstruction() {
+ StatsFlowRule rule = rule1;
+
+ assertEquals(IpPrefix.valueOf(IP_ADDRESS_1, IP_PREFIX_LENGTH_1), rule.srcIpPrefix());
+ assertEquals(IpPrefix.valueOf(IP_ADDRESS_2, IP_PREFIX_LENGTH_2), rule.dstIpPrefix());
+ assertEquals(TpPort.tpPort(PORT_1), rule.srcTpPort());
+ assertEquals(TpPort.tpPort(PORT_2), rule.dstTpPort());
+ assertEquals(PROTOCOL_1, rule.ipProtocol());
+ }
+}
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultStatsInfoTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultStatsInfoTest.java
index d1e0b7e..bfe3745 100644
--- a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultStatsInfoTest.java
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultStatsInfoTest.java
@@ -22,6 +22,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
+import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable;
/**
* Unit tests for DefaultStatsInfo class.
@@ -35,6 +36,9 @@
private StatsInfo sameAsInfo1;
private StatsInfo info2;
+ /**
+ * Initial setup for this unit test.
+ */
@Before
public void setup() {
StatsInfo.Builder builder1 = new DefaultStatsInfo.DefaultBuilder();
@@ -78,6 +82,17 @@
.build();
}
+ /**
+ * Tests class immutability.
+ */
+ @Test
+ public void testImmutability() {
+ assertThatClassIsImmutable(DefaultStatsInfo.class);
+ }
+
+ /**
+ * Tests object equality.
+ */
@Test
public void testEquality() {
new EqualsTester()
@@ -85,6 +100,9 @@
.addEqualityGroup(info2).testEquals();
}
+ /**
+ * Tests object construction.
+ */
@Test
public void testConstruction() {
StatsInfo info = info1;
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryManagerTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryManagerTest.java
new file mode 100644
index 0000000..48474fe
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryManagerTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2018-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.onosproject.openstacktelemetry.impl;
+
+import org.junit.Test;
+import org.onlab.junit.TestUtils;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Unit tests for gRPC telemetry manager.
+ */
+public final class GrpcTelemetryManagerTest {
+
+ private GrpcTelemetryManager manager;
+ private OpenstackTelemetryServiceAdapter telemetryService =
+ new OpenstackTelemetryServiceAdapter();
+
+ /**
+ * Tests codec register activation and deactivation.
+ */
+ @Test
+ public void testActivateDeactivate() {
+ manager = new GrpcTelemetryManager();
+
+ TestUtils.setField(manager, "openstackTelemetryService", telemetryService);
+
+ manager.activate();
+
+ assertTrue(telemetryService.services.contains(manager));
+
+ manager.deactivate();
+
+ assertFalse(telemetryService.services.contains(manager));
+ }
+}
\ No newline at end of file
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryManagerTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryManagerTest.java
new file mode 100644
index 0000000..dfd4671
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryManagerTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2018-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.onosproject.openstacktelemetry.impl;
+
+import org.junit.Test;
+import org.onlab.junit.TestUtils;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Unit tests for influxDB telemetry manager.
+ */
+public final class InfluxDbTelemetryManagerTest {
+
+ private InfluxDbTelemetryManager manager;
+ private OpenstackTelemetryServiceAdapter telemetryService =
+ new OpenstackTelemetryServiceAdapter();
+
+ /**
+ * Tests codec register activation and deactivation.
+ */
+ @Test
+ public void testActivateDeactivate() {
+ manager = new InfluxDbTelemetryManager();
+
+ TestUtils.setField(manager, "openstackTelemetryService", telemetryService);
+
+ manager.activate();
+
+ assertTrue(telemetryService.services.contains(manager));
+
+ manager.deactivate();
+
+ assertFalse(telemetryService.services.contains(manager));
+ }
+}
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/KafkaTelemetryManagerTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/KafkaTelemetryManagerTest.java
new file mode 100644
index 0000000..16076da
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/KafkaTelemetryManagerTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2018-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.onosproject.openstacktelemetry.impl;
+
+import org.junit.Test;
+import org.onlab.junit.TestUtils;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Unit tests for kafka telemetry manager.
+ */
+public final class KafkaTelemetryManagerTest {
+
+ private KafkaTelemetryManager manager;
+ private OpenstackTelemetryServiceAdapter telemetryService =
+ new OpenstackTelemetryServiceAdapter();
+
+ /**
+ * Tests codec register activation and deactivation.
+ */
+ @Test
+ public void testActivateDeactivate() {
+ manager = new KafkaTelemetryManager();
+
+ TestUtils.setField(manager, "openstackTelemetryService", telemetryService);
+
+ manager.activate();
+
+ assertTrue(telemetryService.services.contains(manager));
+
+ manager.deactivate();
+
+ assertFalse(telemetryService.services.contains(manager));
+ }
+}
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManagerTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManagerTest.java
new file mode 100644
index 0000000..3a4aaed
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManagerTest.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2018-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.onosproject.openstacktelemetry.impl;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.openstacktelemetry.api.TelemetryService;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Unit tests for OpenstackTelemetryService class.
+ */
+public final class OpenstackTelemetryManagerTest {
+
+ private static final TelemetryService GRPC_SERVICE = new GrpcTelemetryManager();
+ private static final TelemetryService INFLUXDB_SERVICE = new InfluxDbTelemetryManager();
+
+ private OpenstackTelemetryManager manager;
+
+ /**
+ * Initializes the unit test.
+ */
+ @Before
+ public void setUp() {
+ manager = new OpenstackTelemetryManager();
+
+ manager.activate();
+ }
+
+ /**
+ * Tests addTelemetryService method.
+ */
+ @Test
+ public void testAddTelemetryService() {
+ addDefaultServices();
+
+ TelemetryService kafkaService = new KafkaTelemetryManager();
+
+ assertEquals(2, manager.telemetryServices().size());
+
+ manager.addTelemetryService(kafkaService);
+
+ assertEquals(3, manager.telemetryServices().size());
+ }
+
+ /**
+ * Tests removeTelemetryService method.
+ */
+ @Test
+ public void testRemoveTelemetryService() {
+ addDefaultServices();
+
+ assertEquals(2, manager.telemetryServices().size());
+
+ manager.removeTelemetryService(GRPC_SERVICE);
+
+ assertEquals(1, manager.telemetryServices().size());
+ }
+
+ /**
+ * Tears down the unit test.
+ */
+ @After
+ public void tearDown() {
+ manager.deactivate();
+ }
+
+ private void addDefaultServices() {
+ manager.addTelemetryService(GRPC_SERVICE);
+ manager.addTelemetryService(INFLUXDB_SERVICE);
+ }
+}
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryServiceAdapter.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryServiceAdapter.java
new file mode 100644
index 0000000..129fec5
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryServiceAdapter.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2018-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.onosproject.openstacktelemetry.impl;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Sets;
+import org.onosproject.openstacktelemetry.api.FlowInfo;
+import org.onosproject.openstacktelemetry.api.OpenstackTelemetryService;
+import org.onosproject.openstacktelemetry.api.TelemetryService;
+
+import java.util.Set;
+
+/**
+ * A mock up test class of openstack telemetry service.
+ */
+public class OpenstackTelemetryServiceAdapter implements OpenstackTelemetryService {
+
+ Set<TelemetryService> services = Sets.newConcurrentHashSet();
+
+ @Override
+ public void addTelemetryService(TelemetryService telemetryService) {
+ services.add(telemetryService);
+ }
+
+ @Override
+ public void removeTelemetryService(TelemetryService telemetryService) {
+ services.remove(telemetryService);
+ }
+
+ @Override
+ public void publish(Set<FlowInfo> flowInfos) {
+
+ }
+
+ @Override
+ public Set<TelemetryService> telemetryServices() {
+ return ImmutableSet.copyOf(services);
+ }
+}
diff --git a/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/RestTelemetryManagerTest.java b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/RestTelemetryManagerTest.java
new file mode 100644
index 0000000..3946f24
--- /dev/null
+++ b/apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/RestTelemetryManagerTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2018-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.onosproject.openstacktelemetry.impl;
+
+import org.junit.Test;
+import org.onlab.junit.TestUtils;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Unit tests for REST telemetry manager.
+ */
+public final class RestTelemetryManagerTest {
+
+ private RestTelemetryManager manager;
+
+ private OpenstackTelemetryServiceAdapter telemetryService =
+ new OpenstackTelemetryServiceAdapter();
+
+ /**
+ * Tests codec register activation and deactivation.
+ */
+ @Test
+ public void testActivateDeactivate() {
+ manager = new RestTelemetryManager();
+
+ TestUtils.setField(manager, "openstackTelemetryService", telemetryService);
+
+ manager.activate();
+
+ assertTrue(telemetryService.services.contains(manager));
+
+ manager.deactivate();
+
+ assertFalse(telemetryService.services.contains(manager));
+ }
+}