aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfUi.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfUi.java')
-rw-r--r--framework/src/onos/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfUi.java194
1 files changed, 0 insertions, 194 deletions
diff --git a/framework/src/onos/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfUi.java b/framework/src/onos/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfUi.java
deleted file mode 100644
index a44ead57..00000000
--- a/framework/src/onos/apps/test/intent-perf/src/main/java/org/onosproject/intentperf/IntentPerfUi.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.intentperf;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
-import org.onlab.osgi.ServiceDirectory;
-import org.onosproject.intentperf.IntentPerfCollector.Sample;
-import org.onosproject.ui.RequestHandler;
-import org.onosproject.ui.UiConnection;
-import org.onosproject.ui.UiExtension;
-import org.onosproject.ui.UiExtensionService;
-import org.onosproject.ui.UiMessageHandler;
-import org.onosproject.ui.UiView;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static java.util.Collections.synchronizedSet;
-import static org.onosproject.ui.UiView.Category.OTHER;
-
-/**
- * Mechanism to stream data to the GUI.
- */
-@Component(immediate = true, enabled = true)
-@Service(value = IntentPerfUi.class)
-public class IntentPerfUi {
-
- private static final String INTENT_PERF_START = "intentPerfStart";
- private static final String INTENT_PERF_STOP = "intentPerfStop";
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected UiExtensionService uiExtensionService;
-
- private final Set<StreamingControl> handlers = synchronizedSet(new HashSet<>());
-
- private List<UiView> views = ImmutableList.of(
- new UiView(OTHER, "intentPerf", "Intent Performance")
- );
-
- private UiExtension uiExtension =
- new UiExtension.Builder(getClass().getClassLoader(), views)
- .messageHandlerFactory(this::newHandlers)
- .build();
-
- private IntentPerfCollector collector;
-
- @Activate
- protected void activate() {
- uiExtensionService.register(uiExtension);
- }
-
- @Deactivate
- protected void deactivate() {
- uiExtensionService.unregister(uiExtension);
- }
-
- /**
- * Reports a single sample of performance data.
- *
- * @param sample performance sample
- */
- public void reportSample(Sample sample) {
- synchronized (handlers) {
- handlers.forEach(h -> h.send(sample));
- }
- }
-
- /**
- * Binds the sample collector.
- *
- * @param collector list of headers for future samples
- */
- public void setCollector(IntentPerfCollector collector) {
- this.collector = collector;
- }
-
- // Creates and returns session specific message handler.
- private Collection<UiMessageHandler> newHandlers() {
- return ImmutableList.of(new StreamingControl());
- }
-
-
- // UI Message handlers for turning on/off reporting to a session.
- private class StreamingControl extends UiMessageHandler {
-
- private boolean streamingEnabled = false;
-
- @Override
- protected Collection<RequestHandler> createRequestHandlers() {
- return ImmutableSet.of(
- new IntentPerfStart(),
- new IntentPerfStop()
- );
- }
-
- @Override
- public void init(UiConnection connection, ServiceDirectory directory) {
- super.init(connection, directory);
- handlers.add(this);
- }
-
- @Override
- public void destroy() {
- super.destroy();
- handlers.remove(this);
- }
-
- private void send(Sample sample) {
- if (streamingEnabled) {
- connection().sendMessage("intentPerfSample", 0, sampleNode(sample));
- }
- }
-
-
- private ObjectNode sampleNode(Sample sample) {
- ObjectNode sampleNode = objectNode();
- ArrayNode an = arrayNode();
- sampleNode.put("time", sample.time);
- sampleNode.set("data", an);
-
- for (double d : sample.data) {
- an.add(d);
- }
- return sampleNode;
- }
-
- // ======================================================================
-
- private final class IntentPerfStart extends RequestHandler {
-
- private IntentPerfStart() {
- super(INTENT_PERF_START);
- }
-
- @Override
- public void process(long sid, ObjectNode payload) {
- streamingEnabled = true;
- sendInitData();
- }
-
- private void sendInitData() {
- ObjectNode rootNode = MAPPER.createObjectNode();
- ArrayNode an = MAPPER.createArrayNode();
- ArrayNode sn = MAPPER.createArrayNode();
- rootNode.set("headers", an);
- rootNode.set("samples", sn);
-
- collector.getSampleHeaders().forEach(an::add);
- collector.getSamples().forEach(s -> sn.add(sampleNode(s)));
- sendMessage("intentPerfInit", 0, rootNode);
- }
- }
-
- // ======================================================================
-
- private final class IntentPerfStop extends RequestHandler {
-
- private IntentPerfStop() {
- super(INTENT_PERF_STOP);
- }
-
- @Override
- public void process(long sid, ObjectNode payload) {
- streamingEnabled = false;
- }
- }
-
- }
-
-}