diff options
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.java | 146 |
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 |