aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/utils/stc/src/test/java/org/onlab/stc/MonitorLayoutTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/utils/stc/src/test/java/org/onlab/stc/MonitorLayoutTest.java')
-rw-r--r--framework/src/onos/utils/stc/src/test/java/org/onlab/stc/MonitorLayoutTest.java146
1 files changed, 146 insertions, 0 deletions
diff --git a/framework/src/onos/utils/stc/src/test/java/org/onlab/stc/MonitorLayoutTest.java b/framework/src/onos/utils/stc/src/test/java/org/onlab/stc/MonitorLayoutTest.java
new file mode 100644
index 00000000..4b7f5614
--- /dev/null
+++ b/framework/src/onos/utils/stc/src/test/java/org/onlab/stc/MonitorLayoutTest.java
@@ -0,0 +1,146 @@
+/*
+ * 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.onlab.stc;
+
+import org.junit.Test;
+import org.onlab.stc.MonitorLayout.Box;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+import static org.onlab.stc.CompilerTest.getStream;
+import static org.onlab.stc.CompilerTest.stageTestResource;
+import static org.onlab.stc.MonitorLayout.SLOT_WIDTH;
+import static org.onlab.stc.Scenario.loadScenario;
+
+/**
+ * Tests of the monitor layout functionality.
+ */
+public class MonitorLayoutTest {
+
+ private MonitorLayout layout;
+
+ private Compiler getCompiler(String name) throws IOException {
+ stageTestResource(name);
+ Scenario scenario = loadScenario(getStream(name));
+ Compiler compiler = new Compiler(scenario);
+ compiler.compile();
+ return compiler;
+ }
+
+ @Test
+ public void basic() throws IOException {
+ layout = new MonitorLayout(getCompiler("layout-basic.xml"));
+ validate(layout, null, 0, 1, 5, 2);
+ validate(layout, "a", 1, 1, 1, 1, 1, -SLOT_WIDTH / 2);
+ validate(layout, "b", 2, 2, 1, 1, 0, 0);
+ validate(layout, "f", 3, 3, 1);
+
+ validate(layout, "g", 1, 1, 4, 1, 1, SLOT_WIDTH / 2);
+ validate(layout, "c", 2, 1, 1);
+ validate(layout, "d", 3, 2, 1);
+ validate(layout, "e", 4, 3, 1);
+ }
+
+ @Test
+ public void basicNest() throws IOException {
+ layout = new MonitorLayout(getCompiler("layout-basic-nest.xml"));
+ validate(layout, null, 0, 1, 6, 2);
+ validate(layout, "a", 1, 1, 1, 1, 1, -SLOT_WIDTH / 2);
+ validate(layout, "b", 2, 2, 1);
+ validate(layout, "f", 3, 3, 1);
+
+ validate(layout, "g", 1, 1, 5, 1);
+ validate(layout, "c", 2, 1, 1);
+
+ validate(layout, "gg", 3, 2, 3, 1);
+ validate(layout, "d", 4, 1, 1);
+ validate(layout, "e", 5, 2, 1);
+ }
+
+ @Test
+ public void staggeredDependencies() throws IOException {
+ layout = new MonitorLayout(getCompiler("layout-staggered-dependencies.xml"));
+ validate(layout, null, 0, 1, 7, 4);
+ validate(layout, "a", 1, 1, 1, 1, 1, -SLOT_WIDTH - SLOT_WIDTH / 2);
+ validate(layout, "aa", 1, 1, 1, 1, 1, -SLOT_WIDTH / 2);
+ validate(layout, "b", 2, 2, 1);
+ validate(layout, "f", 3, 3, 1);
+
+ validate(layout, "g", 1, 1, 5, 2, 1, +SLOT_WIDTH / 2);
+ validate(layout, "c", 2, 1, 1);
+
+ validate(layout, "gg", 3, 2, 3, 2);
+ validate(layout, "d", 4, 1, 1);
+ validate(layout, "dd", 4, 1, 1);
+ validate(layout, "e", 5, 2, 1);
+
+ validate(layout, "i", 6, 6, 1);
+ }
+
+ @Test
+ public void deepNext() throws IOException {
+ layout = new MonitorLayout(getCompiler("layout-deep-nest.xml"));
+ validate(layout, null, 0, 1, 7, 6);
+ validate(layout, "a", 1, 1, 1);
+ validate(layout, "aa", 1, 1, 1);
+ validate(layout, "b", 2, 2, 1);
+ validate(layout, "f", 3, 3, 1);
+
+ validate(layout, "g", 1, 1, 5, 2);
+ validate(layout, "c", 2, 1, 1);
+
+ validate(layout, "gg", 3, 2, 3, 2);
+ validate(layout, "d", 4, 1, 1);
+ validate(layout, "dd", 4, 1, 1);
+ validate(layout, "e", 5, 2, 1);
+
+ validate(layout, "i", 6, 6, 1);
+
+ validate(layout, "g1", 1, 1, 6, 2);
+ validate(layout, "g2", 2, 1, 5, 2);
+ validate(layout, "g3", 3, 1, 4, 2);
+ validate(layout, "u", 4, 1, 1);
+ validate(layout, "v", 4, 1, 1);
+ validate(layout, "w", 5, 2, 1);
+ validate(layout, "z", 6, 3, 1);
+ }
+
+
+ private void validate(MonitorLayout layout, String name,
+ int absoluteTier, int tier, int depth, int breadth) {
+ Box b = layout.get(name);
+ assertEquals("incorrect absolute tier", absoluteTier, b.absoluteTier());
+ assertEquals("incorrect tier", tier, b.tier());
+ assertEquals("incorrect depth", depth, b.depth());
+ assertEquals("incorrect breadth", breadth, b.breadth());
+ }
+
+ private void validate(MonitorLayout layout, String name,
+ int absoluteTier, int tier, int depth, int breadth,
+ int top, int center) {
+ validate(layout, name, absoluteTier, tier, depth, breadth);
+ Box b = layout.get(name);
+ assertEquals("incorrect top", top, b.top());
+ assertEquals("incorrect center", center, b.center());
+ }
+
+ private void validate(MonitorLayout layout, String name,
+ int absoluteTier, int tier, int depth) {
+ validate(layout, name, absoluteTier, tier, depth, 1);
+ }
+
+} \ No newline at end of file