Add a set of unit tests for openstack telemetry app
Change-Id: Ib5963c61ef0c0302a90a4f30d3dd1f0ec2862aea
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
}