From ae3fcfffa2308c87033aed6f5afdf4b7e3356173 Mon Sep 17 00:00:00 2001 From: Jian Li Date: Mon, 30 Jul 2018 11:55:44 +0900 Subject: [PATCH] Add a set of unit tests for openstack telemetry app Change-Id: Ib5963c61ef0c0302a90a4f30d3dd1f0ec2862aea --- .../impl/DefaultInstancePortTest.java | 2 +- .../impl/DefaultOpenstackAuthTest.java | 6 + .../api/OpenstackTelemetryService.java | 7 + .../api/TelemetryConfigService.java | 3 + .../impl/DefaultFlowInfo.java | 9 ++ .../impl/DefaultInfluxRecord.java | 11 +- .../impl/DefaultStatsFlowRule.java | 35 ++++ .../impl/GrpcTelemetryManager.java | 24 +-- .../impl/OpenstackTelemetryManager.java | 6 + .../codec/FlowInfoJsonCodecTest.java | 4 +- .../TinaFlowInfoByteBufferCodecTest.java | 3 + .../TinaStatsInfoByteBufferCodecTest.java | 6 + .../DefaultGrpcTelemetryConfigTest.java | 18 +++ .../DefaultInfluxDbTelemetryConfigTest.java | 18 +++ .../DefaultKafkaTelemetryConfigTest.java | 18 +++ .../DefaultRestTelemetryConfigTest.java | 18 +++ .../impl/DefaultFlowInfoTest.java | 20 ++- .../impl/DefaultInfluxRecordTest.java | 153 ++++++++++++++++++ .../impl/DefaultStatsFlowRuleTest.java | 112 +++++++++++++ .../impl/DefaultStatsInfoTest.java | 18 +++ .../impl/GrpcTelemetryManagerTest.java | 50 ++++++ .../impl/InfluxDbTelemetryManagerTest.java | 50 ++++++ .../impl/KafkaTelemetryManagerTest.java | 50 ++++++ .../impl/OpenstackTelemetryManagerTest.java | 87 ++++++++++ .../OpenstackTelemetryServiceAdapter.java | 52 ++++++ .../impl/RestTelemetryManagerTest.java | 51 ++++++ 26 files changed, 814 insertions(+), 17 deletions(-) create mode 100644 apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultInfluxRecordTest.java create mode 100644 apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/DefaultStatsFlowRuleTest.java create mode 100644 apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryManagerTest.java create mode 100644 apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryManagerTest.java create mode 100644 apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/KafkaTelemetryManagerTest.java create mode 100644 apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryManagerTest.java create mode 100644 apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/OpenstackTelemetryServiceAdapter.java create mode 100644 apps/openstacktelemetry/app/src/test/java/org/onosproject/openstacktelemetry/impl/RestTelemetryManagerTest.java 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 50e8f01adc..ae0e4b455f 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 @@ public class DefaultInstancePortTest { 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 6442aa0adf..723ea27973 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 @@ public class DefaultOpenstackAuthTest { .build(); } + /** + * Tests object equality. + */ @Test public void testEquality() { new EqualsTester().addEqualityGroup(OS_AUTH_1, OS_AUTH_3) @@ -65,6 +68,9 @@ public class DefaultOpenstackAuthTest { .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 52ff745f9e..8d5df0b1ce 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 @@ public interface OpenstackTelemetryService { * @param flowInfos virtual flow information */ void publish(Set flowInfos); + + /** + * Obtains a collection of openstack telemetry services. + * + * @return telemetry services + */ + Set 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 156e8ffeae..51e4ceaced 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 @@ package org.onosproject.openstacktelemetry.api; 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 a631abc8b4..60334830eb 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 @@ -204,6 +204,15 @@ public final class DefaultFlowInfo implements FlowInfo { .toString(); } + /** + * Obtains a default flow info builder object. + * + * @return flow info builder object + */ + public static Builder builder() { + return new DefaultBuilder(); + } + /** * Builder class of DefaultFlowInfo. */ 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 8c45a60262..d7ec2e1e18 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 java.util.Objects; 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 key of influx record + * @param value of influx record + */ public final class DefaultInfluxRecord implements InfluxRecord { 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 @@ public final class DefaultInfluxRecord implements InfluxRecord { 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 83c7519e70..2b2d7b679c 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.IpPrefix; 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 @@ public final class DefaultStatsFlowRule implements StatsFlowRule { .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 8812cca8c9..0ea76dcc2b 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.ReferenceCardinality; 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 @@ public class GrpcTelemetryManager implements GrpcTelemetryAdminService { 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 e19a579568..7d8a23333d 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 @@ public class OpenstackTelemetryManager implements OpenstackTelemetryService { }); } + @Override + public Set telemetryServices() { + return ImmutableSet.copyOf(telemetryServices); + } + private void invokeGrpcPublisher(GrpcTelemetryService service, Set 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 24fe947802..ca97f8d319 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 @@ public class FlowInfoJsonCodecTest { 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 9e3294d742..8f4af77b97 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 @@ public final class TinaFlowInfoByteBufferCodecTest { 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 f23f728597..f32e5bbcdb 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 @@ public class TinaStatsInfoByteBufferCodecTest { 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 @@ public class TinaStatsInfoByteBufferCodecTest { .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 6dcf22938e..1a7f752c6f 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 java.util.Map; 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 @@ public final class DefaultGrpcTelemetryConfigTest { private GrpcTelemetryConfig sameAsConfig1; private GrpcTelemetryConfig config2; + /** + * Initial setup for this unit test. + */ @Before public void setup() { @@ -87,6 +91,17 @@ public final class DefaultGrpcTelemetryConfigTest { .build(); } + /** + * Tests class immutability. + */ + @Test + public void testImmutability() { + assertThatClassIsImmutable(DefaultGrpcTelemetryConfig.class); + } + + /** + * Tests object equality. + */ @Test public void testEquality() { new EqualsTester() @@ -94,6 +109,9 @@ public final class DefaultGrpcTelemetryConfigTest { .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 4af5b4ab8b..2357fecc32 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 java.util.Map; 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 @@ public final class DefaultInfluxDbTelemetryConfigTest { private InfluxDbTelemetryConfig sameAsConfig1; private InfluxDbTelemetryConfig config2; + /** + * Initial setup for this unit test. + */ @Before public void setup() { @@ -105,6 +109,17 @@ public final class DefaultInfluxDbTelemetryConfigTest { .build(); } + /** + * Tests class immutability. + */ + @Test + public void testImmutability() { + assertThatClassIsImmutable(DefaultInfluxDbTelemetryConfig.class); + } + + /** + * Tests object equality. + */ @Test public void testEquality() { new EqualsTester() @@ -112,6 +127,9 @@ public final class DefaultInfluxDbTelemetryConfigTest { .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 6608d7a10c..d3958fe9a2 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 java.util.Map; 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 @@ public final class DefaultKafkaTelemetryConfigTest { private KafkaTelemetryConfig sameAsConfig1; private KafkaTelemetryConfig config2; + /** + * Initial setup for this unit test. + */ @Before public void setup() { @@ -113,6 +117,17 @@ public final class DefaultKafkaTelemetryConfigTest { .build(); } + /** + * Tests class immutability. + */ + @Test + public void testImmutability() { + assertThatClassIsImmutable(DefaultKafkaTelemetryConfig.class); + } + + /** + * Tests object equality. + */ @Test public void testEquality() { new EqualsTester() @@ -120,6 +135,9 @@ public final class DefaultKafkaTelemetryConfigTest { .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 2a6277b859..3e8bac0622 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 java.util.Map; 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 @@ public final class DefaultRestTelemetryConfigTest { private RestTelemetryConfig sameAsConfig1; private RestTelemetryConfig config2; + /** + * Initial setup for this unit test. + */ @Before public void setup() { @@ -96,6 +100,17 @@ public final class DefaultRestTelemetryConfigTest { .build(); } + /** + * Tests class immutability. + */ + @Test + public void testImmutability() { + assertThatClassIsImmutable(DefaultRestTelemetryConfig.class); + } + + /** + * Tests object equality. + */ @Test public void testEquality() { new EqualsTester() @@ -103,6 +118,9 @@ public final class DefaultRestTelemetryConfigTest { .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 53d18c37f5..1d034151e2 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 org.onosproject.openstacktelemetry.api.StatsInfo; 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 @@ public final class DefaultFlowInfoTest { 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 @@ public final class DefaultFlowInfoTest { .build(); } + /** + * Tests class immutability. + */ + @Test + public void testImmutability() { + assertThatClassIsImmutable(DefaultFlowInfo.class); + } + + /** + * Tests object equality. + */ @Test public void testEquality() { new EqualsTester() @@ -129,6 +144,9 @@ public final class DefaultFlowInfoTest { .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 0000000000..866e34d76c --- /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 flowInfos1; + private Set 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 0000000000..54140dcd71 --- /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 d1e0b7e016..bfe37454ac 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 org.onosproject.openstacktelemetry.api.StatsInfo; 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 @@ public final class DefaultStatsInfoTest { 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 @@ public final class DefaultStatsInfoTest { .build(); } + /** + * Tests class immutability. + */ + @Test + public void testImmutability() { + assertThatClassIsImmutable(DefaultStatsInfo.class); + } + + /** + * Tests object equality. + */ @Test public void testEquality() { new EqualsTester() @@ -85,6 +100,9 @@ public final class DefaultStatsInfoTest { .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 0000000000..48474fee14 --- /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 0000000000..dfd4671153 --- /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 0000000000..16076da014 --- /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 0000000000..3a4aaede25 --- /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 0000000000..129fec5f33 --- /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 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 flowInfos) { + + } + + @Override + public Set 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 0000000000..3946f2425e --- /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)); + } +}