summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/web/gui/src/test/_karma
diff options
context:
space:
mode:
authorAshlee Young <ashlee@onosfw.com>2015-09-09 22:15:21 -0700
committerAshlee Young <ashlee@onosfw.com>2015-09-09 22:15:21 -0700
commit13d05bc8458758ee39cb829098241e89616717ee (patch)
tree22a4d1ce65f15952f07a3df5af4b462b4697cb3a /framework/src/onos/web/gui/src/test/_karma
parent6139282e1e93c2322076de4b91b1c85d0bc4a8b3 (diff)
ONOS checkin based on commit tag e796610b1f721d02f9b0e213cf6f7790c10ecd60
Change-Id: Ife8810491034fe7becdba75dda20de4267bd15cd
Diffstat (limited to 'framework/src/onos/web/gui/src/test/_karma')
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex1.json19
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex2_memo.json24
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex3.json24
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addHost_ex1.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addHost_ex2.json27
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addInstance_ex1.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addLink_ex1.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeDevice_fab.json20
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeHost_fab.json22
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeInstance_ex1.json7
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeLink_ex1.json12
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showDetails_ex1_host.json22
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showDetails_ex2_device.json33
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showSummary_ex1.json30
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex1.json48
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex2_animated.json88
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex3_none.json7
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateDevice_ex1.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateDevice_ex2.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateHost.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateInstance_ex1.json7
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateLink_ex1.json12
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/cancelSummary_ex1.json5
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestDetails_ex1.json9
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestDetails_ex2.json8
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestSummary_ex1.json5
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex1_devs.json12
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex2_hosts.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex3_devs_hosts.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex4_hover.json8
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/updateMeta_ex1.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_10_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_11_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_12_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_13_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_14_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_15_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_16_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_17_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_18_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_19_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_1_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_20_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_21_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_22_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_23_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_24_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_25_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_26_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_27_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_28_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_29_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_2_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_30_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_31_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_32_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_33_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_34_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_35_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_36_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_37_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_38_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_3_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_4_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_5_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_6_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_7_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_8_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_9_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/colors/scenario.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_10_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_11_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_12_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_13_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_14_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_15_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_16_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_17_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_18_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_19_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_1_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_2_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_3_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_4_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_5_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_6_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_7_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_8_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_9_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/instances/scenario.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_1_ui.json8
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_2_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_3_ui.json8
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_4_onos.json20
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_5_onos.json20
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_6_onos.json20
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_7_ui.json6
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_8_onos.json7
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/scenario.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_10_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_11_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_12_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_13_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_14_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_15_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_16_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_17_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_18_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_19_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_1_onos.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_20_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_21_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_22_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_23_onos.json22
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_24_onos.json22
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_25_onos.json7
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_2_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_3_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_4_onos.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_5_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_6_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_7_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_8_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/ev_9_onos.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/links/scenario.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_10_addInstance_F.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_11_addInstance_G.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_1_showSummary.json28
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_2_addInstance.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_3_addInstance_B.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_4_addInstance_C.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_5_updateInstance_B.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_6_removeInstance_B.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_7_addInstance_D.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_8_addInstance_B.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_9_addInstance_E.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/migrate/scenario.json12
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_1_addInstanceA.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_2_addInstanceB.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_3_addDevice_08.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_4_addDevice_03.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_5_addLink_03_08.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_6_addHost_03.json20
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_7_addHost_08.json19
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/scenario.json21
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_10_addLink_2-2b.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_11_addLink_3-3b.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_12_addLink_4-4b.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_1_addDevice_sw1b.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_2_addDevice_sw2b.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_3_addDevice_sw3b.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_4_addDevice_sw4b.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_5_addDevice_sw1.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_6_addDevice_sw2.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_7_addDevice_sw3.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_8_addDevice_sw4.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_9_addLink_1-1b.json13
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/oblique/scenario.json9
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_10_updateHost_03.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_11_updateHost_08.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_12_updateLink.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_13_updateLink.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_14_removeLink.json15
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_15_removeHost_08.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_16_removeDevice_03.json22
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_17_removeDevice_08.json23
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_1_addInstanceA.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_2_addInstanceB.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_3_addDevice_08.json23
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_4_addDevice_03.json23
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_5_updateDevice_08_online.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_6_updateDevice_03_online.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_7_addLink_03_08.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_8_addHost_03.json21
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_9_addHost_08.json21
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/simple/scenario.json30
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_10_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_11_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_12_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_13_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_14_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_15_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_16_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_17_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_18_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_19_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_1_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_20_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_21_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_22_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_23_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_24_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_25_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_26_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_27_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_28_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_29_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_2_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_30_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_31_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_32_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_33_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_34_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_35_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_36_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_37_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_38_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_39_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_3_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_40_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_41_onos.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_4_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_5_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_6_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_7_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_8_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_9_onos.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/startup/scenario.json19
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_10_addLink_s8-r8.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_11_addLink_s3-r3.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_12_addLink_r8-r3.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_13_addHost_h3.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_14_addHost_h7.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_15_addHost_h8.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_16_addDevice_r4.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_17_addLink_r8-r4.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_18_showTraffic_primary.json34
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_19_showTraffic_secondary.json34
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_1_addInstance.json14
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_20_showTraffic_allMix.json39
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_21_showTraffic_none.json7
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_22_updateDevice_s7offline.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_23_updateDevice_s7online.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_24_removeDevice_s8.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_25_addDevice_s8.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_26_removeHost_h7.json17
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_2_addDevice_s8.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_3_addDevice_s3.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_4_addDevice_s7.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_5_addDevice_r8.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_6_addDevice_r3.json18
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_7_addLink_s3-s7.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_8_addLink_s8-s3.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_9_addLink_s8-s7.json16
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/ev/traffic/scenario.json12
-rw-r--r--framework/src/onos/web/gui/src/test/_karma/mockserver.js361
246 files changed, 4462 insertions, 0 deletions
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex1.json
new file mode 100644
index 00000000..b82fda85
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex1.json
@@ -0,0 +1,19 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000000000000003",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "of:0000000000000003",
+ "3",
+ "",
+ null
+ ],
+ "props": {
+ "latitude": 123.5,
+ "longitude": 67.8,
+ "anotherProp": "foobar"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex2_memo.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex2_memo.json
new file mode 100644
index 00000000..5f519ffa
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex2_memo.json
@@ -0,0 +1,24 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000000000000003",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "of:0000000000000003",
+ "3",
+ "",
+ null
+ ],
+ "props": {
+ "latitude": 123.5,
+ "longitude": 67.8,
+ "anotherProp": "foobar"
+ },
+ "metaUi": {
+ "xpc": 57.3,
+ "ypc": 24.86,
+ "and": "other properties the UI wishes to remember..."
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex3.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex3.json
new file mode 100644
index 00000000..e02f7124
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addDevice_ex3.json
@@ -0,0 +1,24 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:000000000000000a",
+ "type": "switch",
+ "online": true,
+ "master": "local",
+ "labels": [
+ "",
+ "NWOR",
+ "of:000000000000000a"
+ ],
+ "props": {
+ "latitude": "29.951475",
+ "name": "NWOR",
+ "longitude": "-90.078434"
+ },
+ "location": {
+ "type": "latlng",
+ "lat": 29.951475,
+ "lng": -90.078434
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addHost_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addHost_ex1.json
new file mode 100644
index 00000000..a97d15a4
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addHost_ex1.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "6A:40:24:F7:9C:2C/-1",
+ "ingress": "6A:40:24:F7:9C:2C/-1/0-of:0000000000000003/2",
+ "egress": "of:0000000000000003/2-6A:40:24:F7:9C:2C/-1/0",
+ "cp": {
+ "device": "of:0000000000000003",
+ "port": 2
+ },
+ "labels": [
+ "unknown",
+ "6A:40:24:F7:9C:2C"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addHost_ex2.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addHost_ex2.json
new file mode 100644
index 00000000..d47265b3
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addHost_ex2.json
@@ -0,0 +1,27 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "00:00:00:00:00:01/-1",
+ "type": "endstation",
+ "ingress": "00:00:00:00:00:01/-1/0-of:0000000000000001/1",
+ "egress": "of:0000000000000001/1-00:00:00:00:00:01/-1/0",
+ "cp": {
+ "device": "of:0000000000000001",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.1",
+ "00:00:00:00:00:01"
+ ],
+ "props": {
+ "name": "CMBR",
+ "latitude": "44.37373",
+ "longitude": "-71.109734"
+ },
+ "location": {
+ "type": "latlng",
+ "lat": 44.37373,
+ "lng": -71.109734
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addInstance_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addInstance_ex1.json
new file mode 100644
index 00000000..0579c1d5
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addInstance_ex1.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "local",
+ "ip": "127.0.0.1",
+ "online": true,
+ "uiAttached": true,
+ "switches": 25,
+ "labels": [
+ "local",
+ "127.0.0.1"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addLink_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addLink_ex1.json
new file mode 100644
index 00000000..f48147fc
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/addLink_ex1.json
@@ -0,0 +1,13 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000000000000007/4-of:0000000000000006/1",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000000000000007",
+ "srcPort": "4",
+ "dst": "of:0000000000000006",
+ "dstPort": "1"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeDevice_fab.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeDevice_fab.json
new file mode 100644
index 00000000..0e8d47a0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeDevice_fab.json
@@ -0,0 +1,20 @@
+{
+ "__comments__": [
+ "fabricated event",
+ "not sure if this is the actual format",
+ "but we really only care about 'id' being in the payload"
+ ],
+ "event": "removeDevice",
+ "payload": {
+ "id": "of:0000000000000002",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "of:0000000000000002",
+ "2",
+ "",
+ null
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeHost_fab.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeHost_fab.json
new file mode 100644
index 00000000..42371993
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeHost_fab.json
@@ -0,0 +1,22 @@
+{
+ "__comments__": [
+ "fabricated event",
+ "not sure if this is the actual format",
+ "but we really only care about 'id' being in the payload"
+ ],
+ "event": "removeHost",
+ "payload": {
+ "id": "6A:40:24:F7:9C:2C/-1",
+ "ingress": "6A:40:24:F7:9C:2C/-1/0-of:0000000000000003/2",
+ "egress": "of:0000000000000003/2-6A:40:24:F7:9C:2C/-1/0",
+ "cp": {
+ "device": "of:0000000000000003",
+ "port": 2
+ },
+ "labels": [
+ "unknown",
+ "6A:40:24:F7:9C:2C"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeInstance_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeInstance_ex1.json
new file mode 100644
index 00000000..0f9388b6
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeInstance_ex1.json
@@ -0,0 +1,7 @@
+{
+ "event": "removeInstance",
+ "payload": {
+ "id": "onos-1",
+ "online": "false"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeLink_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeLink_ex1.json
new file mode 100644
index 00000000..8d1dd035
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/removeLink_ex1.json
@@ -0,0 +1,12 @@
+{
+ "event": "removeLink",
+ "payload": {
+ "id": "of:0000000000000001/1-of:0000000000000002/4",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000000000000001",
+ "srcPort": "1",
+ "dst": "of:0000000000000002",
+ "dstPort": "4"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showDetails_ex1_host.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showDetails_ex1_host.json
new file mode 100644
index 00000000..19d99593
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showDetails_ex1_host.json
@@ -0,0 +1,22 @@
+{
+ "event": "showDetails",
+ "sid": 9,
+ "payload": {
+ "id": "CA:4B:EE:A4:B0:33/-1",
+ "type": "host",
+ "propOrder": [
+ "MAC",
+ "IP",
+ "-",
+ "Latitude",
+ "Longitude"
+ ],
+ "props": {
+ "MAC": "CA:4B:EE:A4:B0:33",
+ "IP": "[10.0.0.1]",
+ "-": "",
+ "Latitude": null,
+ "Longitude": null
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showDetails_ex2_device.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showDetails_ex2_device.json
new file mode 100644
index 00000000..8ac1f4f9
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showDetails_ex2_device.json
@@ -0,0 +1,33 @@
+{
+ "event": "showDetails",
+ "sid": 37,
+ "payload": {
+ "id": "of:000000000000000a",
+ "type": "switch",
+ "propOrder": [
+ "Name",
+ "Vendor",
+ "H/W Version",
+ "S/W Version",
+ "Serial Number",
+ "-",
+ "Latitude",
+ "Longitude",
+ "Ports",
+ "-",
+ "Master"
+ ],
+ "props": {
+ "Name": null,
+ "Vendor": "Nicira, Inc.",
+ "H/W Version": "Open vSwitch",
+ "S/W Version": "2.0.1",
+ "Serial Number": "None",
+ "-": "",
+ "Latitude": null,
+ "Longitude": null,
+ "Ports": "5",
+ "Master":"local"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showSummary_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showSummary_ex1.json
new file mode 100644
index 00000000..4d5bd30b
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showSummary_ex1.json
@@ -0,0 +1,30 @@
+{
+ "event": "showSummary",
+ "sid": 1,
+ "payload": {
+ "id": "ONOS Summary",
+ "type": "node",
+ "propOrder": [
+ "Devices",
+ "Links",
+ "Hosts",
+ "Topology SCCs",
+ "Paths",
+ "-",
+ "Intents",
+ "Flows",
+ "Version"
+ ],
+ "props": {
+ "Devices": "25",
+ "Links": "112",
+ "Hosts": "25",
+ "Topology SCCs": "1",
+ "Paths": "1,272",
+ "-": "",
+ "Intents": "0",
+ "Flows": "0",
+ "Version": "1.0.0*"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex1.json
new file mode 100644
index 00000000..bed7cdd0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex1.json
@@ -0,0 +1,48 @@
+{
+ "event": "showTraffic",
+ "sid":63,
+ "payload": {
+ "paths": [
+ {
+ "class": "primary",
+ "traffic": false,
+ "links": [
+ "1E:10:D9:A2:84:E2/-1/0-of:0000000000000003/1",
+ "of:0000000000000003/4-of:0000000000000002/1",
+ "of:0000000000000002/4-of:0000000000000001/1",
+ "of:0000000000000001/2-of:0000000000000006/4",
+ "of:0000000000000006/2-of:0000000000000008/4",
+ "of:0000000000000008/3-9E:0B:E0:38:98:DE/-1/0"
+ ],
+ "labels": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ {
+ "class": "primary",
+ "traffic": false,
+ "links": [
+ "9E:0B:E0:38:98:DE/-1/0-of:0000000000000008/3",
+ "of:0000000000000008/4-of:0000000000000006/2",
+ "of:0000000000000006/4-of:0000000000000001/2",
+ "of:0000000000000001/1-of:0000000000000002/4",
+ "of:0000000000000002/1-of:0000000000000003/4",
+ "of:0000000000000003/1-1E:10:D9:A2:84:E2/-1/0"
+ ],
+ "labels": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex2_animated.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex2_animated.json
new file mode 100644
index 00000000..610b516c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex2_animated.json
@@ -0,0 +1,88 @@
+{
+ "event": "showTraffic",
+ "sid": 227,
+ "payload": {
+ "paths": [
+ {
+ "class": "primary animated",
+ "traffic": true,
+ "links": [
+ "02:D7:91:9F:4B:E8/-1/0-of:0000000000000004/1",
+ "of:0000000000000004/4-of:0000000000000002/2",
+ "of:0000000000000002/4-of:0000000000000001/1",
+ "of:0000000000000001/2-of:0000000000000006/4",
+ "of:0000000000000006/2-of:0000000000000008/4",
+ "of:0000000000000008/3-9E:0B:E0:38:98:DE/-1/0"
+ ],
+ "labels": [
+ "",
+ "Load{rate=98, latest=37898}",
+ "",
+ "",
+ "",
+ "Load{rate=98, latest=38080}"
+ ]
+ },
+ {
+ "class": "primary animated",
+ "traffic": true,
+ "links": [
+ "9E:0B:E0:38:98:DE/-1/0-of:0000000000000008/3",
+ "of:0000000000000008/4-of:0000000000000006/2",
+ "of:0000000000000006/4-of:0000000000000001/2",
+ "of:0000000000000001/1-of:0000000000000002/4",
+ "of:0000000000000002/2-of:0000000000000004/4",
+ "of:0000000000000004/1-02:D7:91:9F:4B:E8/-1/0"
+ ],
+ "labels": [
+ "",
+ "",
+ "Load{rate=98, latest=38178}",
+ "",
+ "Load{rate=98, latest=37898}",
+ "Load{rate=98, latest=37898}"
+ ]
+ },
+ {
+ "class": "primary animated",
+ "traffic": true,
+ "links": [
+ "1E:10:D9:A2:84:E2/-1/0-of:0000000000000003/1",
+ "of:0000000000000003/4-of:0000000000000002/1",
+ "of:0000000000000002/4-of:0000000000000001/1",
+ "of:0000000000000001/2-of:0000000000000006/4",
+ "of:0000000000000006/2-of:0000000000000008/4",
+ "of:0000000000000008/3-9E:0B:E0:38:98:DE/-1/0"
+ ],
+ "labels": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "Load{rate=98, latest=38080}"
+ ]
+ },
+ {
+ "class": "primary animated",
+ "traffic": true,
+ "links": [
+ "9E:0B:E0:38:98:DE/-1/0-of:0000000000000008/3",
+ "of:0000000000000008/4-of:0000000000000006/2",
+ "of:0000000000000006/4-of:0000000000000001/2",
+ "of:0000000000000001/1-of:0000000000000002/4",
+ "of:0000000000000002/1-of:0000000000000003/4",
+ "of:0000000000000003/1-1E:10:D9:A2:84:E2/-1/0"
+ ],
+ "labels": [
+ "",
+ "",
+ "Load{rate=98, latest=38178}",
+ "",
+ "",
+ ""
+ ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex3_none.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex3_none.json
new file mode 100644
index 00000000..4acd8296
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/showTraffic_ex3_none.json
@@ -0,0 +1,7 @@
+{
+ "event": "showTraffic",
+ "sid": 11,
+ "payload": {
+ "paths": []
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateDevice_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateDevice_ex1.json
new file mode 100644
index 00000000..dda6186b
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateDevice_ex1.json
@@ -0,0 +1,15 @@
+{
+ "event": "updateDevice",
+ "payload": {
+ "id": "of:0000000000000002",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "of:0000000000000002",
+ "2",
+ "",
+ null
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateDevice_ex2.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateDevice_ex2.json
new file mode 100644
index 00000000..d607f985
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateDevice_ex2.json
@@ -0,0 +1,15 @@
+{
+ "event": "updateDevice",
+ "payload": {
+ "id": "of:0000000000000002",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "of:0000000000000002",
+ "2",
+ "",
+ null
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateHost.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateHost.json
new file mode 100644
index 00000000..fd7361c9
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateHost.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateHost",
+ "payload": {
+ "id": "AA:C2:74:3F:B8:06/-1",
+ "ingress": "AA:C2:74:3F:B8:06/-1/0-of:0000000000000005/3",
+ "egress": "of:0000000000000005/3-AA:C2:74:3F:B8:06/-1/0",
+ "cp": {
+ "device": "of:0000000000000005",
+ "port": 3
+ },
+ "labels": [
+ "10.0.0.9",
+ "AA:C2:74:3F:B8:06"
+ ],
+ "props":{}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateInstance_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateInstance_ex1.json
new file mode 100644
index 00000000..e8cf9e8d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateInstance_ex1.json
@@ -0,0 +1,7 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-1",
+ "online": "false"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateLink_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateLink_ex1.json
new file mode 100644
index 00000000..3be5c5fb
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/rx/updateLink_ex1.json
@@ -0,0 +1,12 @@
+{
+ "event": "updateLink",
+ "payload": {
+ "id": "of:0000000000000002/4-of:0000000000000001/1",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000000000000002",
+ "srcPort": "4",
+ "dst": "of:0000000000000001",
+ "dstPort": "1"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/cancelSummary_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/cancelSummary_ex1.json
new file mode 100644
index 00000000..6418471f
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/cancelSummary_ex1.json
@@ -0,0 +1,5 @@
+{
+ "event": "cancelSummary",
+ "sid": 2,
+ "payload": {}
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestDetails_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestDetails_ex1.json
new file mode 100644
index 00000000..6c886057
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestDetails_ex1.json
@@ -0,0 +1,9 @@
+{
+ "event": "requestDetails",
+ "sid": 15,
+ "payload": {
+ "id": "of:0000000000000003",
+ "class": "device"
+ }
+}
+
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestDetails_ex2.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestDetails_ex2.json
new file mode 100644
index 00000000..2cc1bfa7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestDetails_ex2.json
@@ -0,0 +1,8 @@
+{
+ "event": "requestDetails",
+ "sid": 9,
+ "payload": {
+ "id": "CA:4B:EE:A4:B0:33/-1",
+ "class": "host"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestSummary_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestSummary_ex1.json
new file mode 100644
index 00000000..448d027c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestSummary_ex1.json
@@ -0,0 +1,5 @@
+{
+ "event": "requestSummary",
+ "sid": 1,
+ "payload": {}
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex1_devs.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex1_devs.json
new file mode 100644
index 00000000..5c00b710
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex1_devs.json
@@ -0,0 +1,12 @@
+{
+ "event": "requestTraffic",
+ "sid": 6,
+ "payload": {
+ "ids": [
+ "of:0000000000000007",
+ "of:000000000000000c",
+ "of:000000000000000a"
+ ],
+ "hover": ""
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex2_hosts.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex2_hosts.json
new file mode 100644
index 00000000..3d7bb2dc
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex2_hosts.json
@@ -0,0 +1,13 @@
+{
+ "event": "requestTraffic",
+ "sid": 12,
+ "payload": {
+ "ids": [
+ "86:C3:7B:90:79:CD/-1",
+ "22:BA:28:81:FD:45/-1",
+ "BA:91:F6:8E:B6:B6/-1",
+ "06:E2:E6:F7:03:12/-1"
+ ],
+ "hover": ""
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex3_devs_hosts.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex3_devs_hosts.json
new file mode 100644
index 00000000..1757b443
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex3_devs_hosts.json
@@ -0,0 +1,13 @@
+{
+ "event": "requestTraffic",
+ "sid": 18,
+ "payload": {
+ "ids": [
+ "of:0000000000000001",
+ "86:C3:7B:90:79:CD/-1",
+ "7E:D2:EE:0F:12:4A/-1",
+ "of:000000000000000c"
+ ],
+ "hover": ""
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex4_hover.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex4_hover.json
new file mode 100644
index 00000000..b86e03aa
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/requestTraffic_ex4_hover.json
@@ -0,0 +1,8 @@
+{
+ "event": "requestTraffic",
+ "sid": 48,
+ "payload": {
+ "ids": [],
+ "hover": "9E:0B:E0:38:98:DE/-1"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/updateMeta_ex1.json b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/updateMeta_ex1.json
new file mode 100644
index 00000000..61145837
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/_capture/tx/updateMeta_ex1.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateMeta",
+ "sid": 11,
+ "payload": {
+ "id": "62:4F:65:BF:FF:B3/-1",
+ "class": "host",
+ "memento": {
+ "xpc": 57.3,
+ "ypc": 24.86,
+ "and": "other properties the UI wishes to remember..."
+ }
+ }
+}
+
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_10_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_10_onos.json
new file mode 100644
index 00000000..b4685cbc
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_10_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": true,
+ "master": "192.168.56.101",
+ "labels": [
+ "",
+ "opt-3",
+ "0000ffffffffff03"
+ ],
+ "metaUi": {
+ "x": 282,
+ "y": 603
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_11_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_11_onos.json
new file mode 100644
index 00000000..0fde1c0b
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_11_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0009",
+ "type": "switch",
+ "online": false,
+ "master": "onos-2",
+ "labels": [
+ "",
+ "sw-9",
+ "0000ffffffff0009"
+ ],
+ "metaUi": {
+ "x": 884,
+ "y": 477
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_12_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_12_onos.json
new file mode 100644
index 00000000..4f3af686
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_12_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff09",
+ "type": "roadm",
+ "online": false,
+ "master": "onos-2",
+ "labels": [
+ "",
+ "opt-9",
+ "0000ffffffffff09"
+ ],
+ "metaUi": {
+ "x": 884,
+ "y": 577
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_13_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_13_onos.json
new file mode 100644
index 00000000..56338021
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_13_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-slave",
+ "ip": "192.168.24.11",
+ "online": true,
+ "uiAttached": false,
+ "switches": 103,
+ "labels": [
+ "onos-slave",
+ "192.168.24.11"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_14_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_14_onos.json
new file mode 100644
index 00000000..f8a91863
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_14_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "removeInstance",
+ "payload": {
+ "id": "onos-leader",
+ "ip": "192.168.0.5",
+ "online": false,
+ "uiAttached": false,
+ "switches": 0,
+ "labels": [
+ "onos-leader",
+ "192.168.0.5"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_15_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_15_onos.json
new file mode 100644
index 00000000..eef2964b
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_15_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-leader",
+ "ip": "192.168.0.5",
+ "online": true,
+ "uiAttached": false,
+ "switches": 0,
+ "labels": [
+ "onos-leader",
+ "192.168.0.5"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_16_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_16_onos.json
new file mode 100644
index 00000000..1367251c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_16_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-6",
+ "ip": "192.168.0.66",
+ "online": true,
+ "uiAttached": false,
+ "switches": 0,
+ "labels": [
+ "onos-6",
+ "192.168.0.66"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_17_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_17_onos.json
new file mode 100644
index 00000000..c080d560
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_17_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-7",
+ "ip": "192.168.0.77",
+ "online": true,
+ "uiAttached": false,
+ "switches": 0,
+ "labels": [
+ "onos-7",
+ "192.168.0.77"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_18_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_18_onos.json
new file mode 100644
index 00000000..c1955853
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_18_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-master",
+ "ip": "192.168.0.7",
+ "online": true,
+ "uiAttached": false,
+ "switches": 300,
+ "labels": [
+ "onos-master",
+ "192.168.0.7"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_19_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_19_onos.json
new file mode 100644
index 00000000..bd536daf
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_19_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0002",
+ "type": "switch",
+ "online": false,
+ "master": "192.168.56.101",
+ "labels": [
+ "",
+ "sw-2",
+ "0000ffffffff0002"
+ ],
+ "metaUi": {
+ "x": 142,
+ "y": 503
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_1_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_1_onos.json
new file mode 100644
index 00000000..0fac1a1a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_1_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "192.168.56.101",
+ "ip": "192.168.56.101",
+ "online": true,
+ "uiAttached": true,
+ "switches": 4,
+ "labels": [
+ "192.168.56.101",
+ "192.168.56.101"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_20_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_20_onos.json
new file mode 100644
index 00000000..faf0a771
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_20_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff02",
+ "type": "roadm",
+ "online": false,
+ "master": "192.168.56.101",
+ "labels": [
+ "",
+ "opt-2",
+ "0000ffffffffff02"
+ ],
+ "metaUi": {
+ "x": 142,
+ "y": 603
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_21_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_21_onos.json
new file mode 100644
index 00000000..5d44197b
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_21_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0006",
+ "type": "switch",
+ "online": false,
+ "master": "onos-master",
+ "labels": [
+ "",
+ "sw-6",
+ "0000ffffffff0006"
+ ],
+ "metaUi": {
+ "x": 382,
+ "y": 333
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_22_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_22_onos.json
new file mode 100644
index 00000000..02e3d6e0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_22_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff000a",
+ "type": "switch",
+ "online": true,
+ "master": "onos-slave",
+ "labels": [
+ "",
+ "sw-A",
+ "0000ffffffff000a"
+ ],
+ "metaUi": {
+ "x": 195,
+ "y": 259
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_23_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_23_onos.json
new file mode 100644
index 00000000..547d6a08
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_23_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff000b",
+ "type": "switch",
+ "online": false,
+ "master": "onos-slave",
+ "labels": [
+ "",
+ "sw-B",
+ "0000ffffffff000b"
+ ],
+ "metaUi": {
+ "x": 52,
+ "y": 262
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_24_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_24_onos.json
new file mode 100644
index 00000000..d7de3c1b
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_24_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff000c",
+ "type": "switch",
+ "online": true,
+ "master": "onos-leader",
+ "labels": [
+ "",
+ "sw-C",
+ "0000ffffffff000c"
+ ],
+ "metaUi": {
+ "x": 229,
+ "y": 354
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_25_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_25_onos.json
new file mode 100644
index 00000000..cade64c8
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_25_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff000d",
+ "type": "switch",
+ "online": false,
+ "master": "onos-leader",
+ "labels": [
+ "",
+ "sw-D",
+ "0000ffffffff000d"
+ ],
+ "metaUi": {
+ "x": 100,
+ "y": 357
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_26_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_26_onos.json
new file mode 100644
index 00000000..9f21a7cc
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_26_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff000e",
+ "type": "switch",
+ "online": true,
+ "master": "onos-6",
+ "labels": [
+ "",
+ "sw-E",
+ "0000ffffffff000e"
+ ],
+ "metaUi": {
+ "x": 757,
+ "y": 267
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_27_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_27_onos.json
new file mode 100644
index 00000000..9f9b70a9
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_27_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff000f",
+ "type": "switch",
+ "online": false,
+ "master": "onos-6",
+ "labels": [
+ "",
+ "sw-F",
+ "0000ffffffff000f"
+ ],
+ "metaUi": {
+ "x": 877,
+ "y": 267
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_28_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_28_onos.json
new file mode 100644
index 00000000..a60b43e5
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_28_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0010",
+ "type": "switch",
+ "online": true,
+ "master": "onos-7",
+ "labels": [
+ "",
+ "sw-1-0",
+ "0000ffffffff0010"
+ ],
+ "metaUi": {
+ "x": 442,
+ "y": 508
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_29_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_29_onos.json
new file mode 100644
index 00000000..ae45cd27
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_29_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0011",
+ "type": "switch",
+ "online": false,
+ "master": "onos-7",
+ "labels": [
+ "",
+ "sw-1-1",
+ "0000ffffffff0011"
+ ],
+ "metaUi": {
+ "x": 576,
+ "y": 519
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_2_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_2_onos.json
new file mode 100644
index 00000000..bbc587ae
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_2_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-2",
+ "ip": "192.168.0.2",
+ "online": true,
+ "uiAttached": false,
+ "switches": 3,
+ "labels": [
+ "onos-2",
+ "192.168.0.2"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_30_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_30_onos.json
new file mode 100644
index 00000000..327e2641
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_30_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "192.168.56.101",
+ "ip": "192.168.56.101",
+ "online": false,
+ "uiAttached": false,
+ "switches": 4,
+ "labels": [
+ "192.168.56.101",
+ "192.168.56.101"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_31_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_31_onos.json
new file mode 100644
index 00000000..dad87a23
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_31_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-2",
+ "ip": "192.168.0.2",
+ "online": false,
+ "uiAttached": false,
+ "switches": 3,
+ "labels": [
+ "onos-2",
+ "192.168.0.2"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_32_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_32_onos.json
new file mode 100644
index 00000000..6efdfc5d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_32_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-leader",
+ "ip": "192.168.0.5",
+ "online": false,
+ "uiAttached": false,
+ "switches": 0,
+ "labels": [
+ "onos-leader",
+ "192.168.0.5"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_33_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_33_onos.json
new file mode 100644
index 00000000..2751055a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_33_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-master",
+ "ip": "192.168.0.7",
+ "online": true,
+ "uiAttached": true,
+ "switches": 300,
+ "labels": [
+ "onos-master",
+ "192.168.0.7"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_34_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_34_onos.json
new file mode 100644
index 00000000..1cab6fd7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_34_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-slave",
+ "ip": "192.168.0.11",
+ "online": false,
+ "uiAttached": false,
+ "switches": 17,
+ "labels": [
+ "onos-slave",
+ "192.168.0.11"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_35_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_35_onos.json
new file mode 100644
index 00000000..142bd367
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_35_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-6",
+ "ip": "192.168.0.66",
+ "online": false,
+ "uiAttached": false,
+ "switches": 17,
+ "labels": [
+ "onos-6",
+ "192.168.0.66"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_36_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_36_onos.json
new file mode 100644
index 00000000..a4d8dfa4
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_36_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-7",
+ "ip": "192.168.0.77",
+ "online": false,
+ "uiAttached": false,
+ "switches": 17,
+ "labels": [
+ "onos-7",
+ "192.168.0.77"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_37_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_37_onos.json
new file mode 100644
index 00000000..a5cef11a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_37_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "192.168.56.101",
+ "ip": "192.168.56.101",
+ "online": true,
+ "uiAttached": true,
+ "switches": 4,
+ "labels": [
+ "192.168.56.101",
+ "192.168.56.101"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_38_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_38_onos.json
new file mode 100644
index 00000000..65cae8d8
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_38_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-master",
+ "ip": "192.168.0.7",
+ "online": false,
+ "uiAttached": false,
+ "switches": 300,
+ "labels": [
+ "onos-master",
+ "192.168.0.7"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_3_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_3_onos.json
new file mode 100644
index 00000000..f7e1f497
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_3_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-leader",
+ "ip": "192.168.0.5",
+ "online": false,
+ "uiAttached": false,
+ "switches": 0,
+ "labels": [
+ "onos-leader",
+ "192.168.0.5"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_4_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_4_onos.json
new file mode 100644
index 00000000..3eeb99a0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_4_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-master",
+ "ip": "192.168.0.7",
+ "online": false,
+ "uiAttached": false,
+ "switches": 300,
+ "labels": [
+ "onos-master",
+ "192.168.0.7"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_5_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_5_onos.json
new file mode 100644
index 00000000..a41e1d7d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_5_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-slave",
+ "ip": "192.168.0.11",
+ "online": false,
+ "uiAttached": false,
+ "switches": 17,
+ "labels": [
+ "onos-slave",
+ "192.168.0.11"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_6_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_6_onos.json
new file mode 100644
index 00000000..d19a508d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_6_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": true,
+ "master": "onos-2",
+ "labels": [
+ "",
+ "sw-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 477
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_7_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_7_onos.json
new file mode 100644
index 00000000..d382b7c8
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_7_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": true,
+ "master": "192.168.56.101",
+ "labels": [
+ "",
+ "sw-3",
+ "0000ffffffff0003"
+ ],
+ "metaUi": {
+ "x": 282,
+ "y": 503
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_8_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_8_onos.json
new file mode 100644
index 00000000..7967c0e7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_8_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": true,
+ "master": "onos-master",
+ "labels": [
+ "",
+ "sw-7",
+ "0000ffffffff0007"
+ ],
+ "metaUi": {
+ "x": 530,
+ "y": 330
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_9_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_9_onos.json
new file mode 100644
index 00000000..ff160d62
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/ev_9_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": true,
+ "master": "onos-2",
+ "labels": [
+ "",
+ "opt-8",
+ "0000ffffffffff08"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 577
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/colors/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/colors/scenario.json
new file mode 100644
index 00000000..dd178283
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/colors/scenario.json
@@ -0,0 +1,13 @@
+{
+ "comments": [
+ "Tweaking Colors"
+ ],
+ "title": "Color-Tweaking Scenario",
+ "params": {
+ "lastAuto": 29
+ },
+ "description": [
+ "Press '=' to load initial events.",
+ "Press '-' to fire further events."
+ ]
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_10_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_10_onos.json
new file mode 100644
index 00000000..4a289d82
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_10_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/4-of:0000ffffffffff03/1",
+ "type": "pktopt",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "4",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "1",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_11_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_11_onos.json
new file mode 100644
index 00000000..70dc216c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_11_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/9-of:0000ffffffff0007/2",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "9",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "2",
+ "props" : {
+ "BW": "120 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_12_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_12_onos.json
new file mode 100644
index 00000000..78e6a394
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_12_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/2-of:0000ffffffff0003/1",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "2",
+ "dst": "of:0000ffffffff0003",
+ "dstPort": "1",
+ "props" : {
+ "BW": "70 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_13_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_13_onos.json
new file mode 100644
index 00000000..d9d27e70
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_13_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/4-of:0000ffffffff0007/1",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "4",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "1",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_14_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_14_onos.json
new file mode 100644
index 00000000..89435bcd
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_14_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff08/4-of:0000ffffffffff03/1",
+ "type": "optical",
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff08",
+ "srcPort": "4",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "1",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_15_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_15_onos.json
new file mode 100644
index 00000000..af031a63
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_15_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:aa/-1",
+ "ingress": "0E:2A:69:30:13:aa/-1/0-of:0000ffffffff0008/101",
+ "egress": "of:0000ffffffff0008/101-0E:2A:69:30:13:aa/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0008",
+ "port": 101
+ },
+ "labels": [
+ "12.13.14.15",
+ "0E:2A:69:30:13:aa"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_16_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_16_onos.json
new file mode 100644
index 00000000..6efcda93
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_16_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:88/-1",
+ "ingress": "0E:2A:69:30:13:88/-1/0-of:0000ffffffff0007/101",
+ "egress": "of:0000ffffffff0007/101-0E:2A:69:30:13:86/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 101
+ },
+ "labels": [
+ "4.5.7.6",
+ "0E:2A:69:30:13:88"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_17_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_17_onos.json
new file mode 100644
index 00000000..a5ee5c98
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_17_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:86/-1",
+ "ingress": "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/101",
+ "egress": "of:0000ffffffff0003/101-0E:2A:69:30:13:86/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 101
+ },
+ "labels": [
+ "1.2.3.4",
+ "0E:2A:69:30:13:86"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_18_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_18_onos.json
new file mode 100644
index 00000000..4168e11d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_18_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-3",
+ "ip": "192.168.3.3",
+ "online": true,
+ "uiAttached": false,
+ "switches": 2,
+ "labels": [
+ "onos-3",
+ "192.168.3.3"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_19_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_19_onos.json
new file mode 100644
index 00000000..2e955399
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_19_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "onos-3",
+ "ip": "192.168.3.3",
+ "online": false,
+ "uiAttached": false,
+ "switches": 2,
+ "labels": [
+ "onos-3",
+ "192.168.3.3"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_1_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_1_onos.json
new file mode 100644
index 00000000..287538ef
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_1_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "192.168.56.101",
+ "ip": "192.168.56.101",
+ "online": true,
+ "uiAttached": false,
+ "switches": 2,
+ "labels": [
+ "192.168.56.101",
+ "127.0.0.1"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_2_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_2_onos.json
new file mode 100644
index 00000000..bbf6c649
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_2_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-2",
+ "ip": "192.168.2.2",
+ "online": true,
+ "uiAttached": true,
+ "switches": 1,
+ "labels": [
+ "onos-2",
+ "192.168.2.2"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_3_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_3_onos.json
new file mode 100644
index 00000000..0459e10a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_3_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "onos-3",
+ "ip": "192.168.3.3",
+ "online": false,
+ "uiAttached": false,
+ "switches": 2,
+ "labels": [
+ "onos-3",
+ "192.168.3.3"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_4_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_4_onos.json
new file mode 100644
index 00000000..f1abeeb5
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_4_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": true,
+ "master": "onos-3",
+ "labels": [
+ "0000ffffffff0008",
+ "FF:FF:FF:FF:00:08",
+ "sw-8"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 477
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_5_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_5_onos.json
new file mode 100644
index 00000000..d99b0fe6
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_5_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": true,
+ "master": "192.168.56.101",
+ "labels": [
+ "0000ffffffff0003",
+ "FF:FF:FF:FF:00:03",
+ "sw-3"
+ ],
+ "metaUi": {
+ "x": 282,
+ "y": 503
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_6_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_6_onos.json
new file mode 100644
index 00000000..2f58f613
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_6_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": true,
+ "master": "onos-2",
+ "labels": [
+ "0000ffffffff0007",
+ "FF:FF:FF:FF:00:07",
+ "sw-7"
+ ],
+ "metaUi": {
+ "x": 530,
+ "y": 330
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_7_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_7_onos.json
new file mode 100644
index 00000000..33f29679
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_7_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": true,
+ "master": "onos-3",
+ "labels": [
+ "0000ffffffffff08",
+ "FF:FF:FF:FF:FF:08",
+ "opt-8"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 577
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_8_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_8_onos.json
new file mode 100644
index 00000000..d3bb1435
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_8_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": true,
+ "master": "192.168.56.101",
+ "labels": [
+ "0000ffffffffff03",
+ "FF:FF:FF:FF:FF:03",
+ "opt-3"
+ ],
+ "metaUi": {
+ "x": 282,
+ "y": 603
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_9_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_9_onos.json
new file mode 100644
index 00000000..115858ae
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/ev_9_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/4-of:0000ffffffffff08/1",
+ "type": "pktopt",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "4",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "1",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/instances/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/instances/scenario.json
new file mode 100644
index 00000000..503edfc3
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/instances/scenario.json
@@ -0,0 +1,16 @@
+{
+ "comments": [
+ "Developing ONOS instance visualization"
+ ],
+ "title": "ONOS Instance Scenario",
+ "params": {
+ "lastAuto": 17
+ },
+ "description": [
+ "Press 'I' to show instance pane.",
+ "Press 'H' to show hosts.",
+ "",
+ "Press '=' to load initial events.",
+ "Press '-' to fire further events."
+ ]
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_1_ui.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_1_ui.json
new file mode 100644
index 00000000..962fcaa3
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_1_ui.json
@@ -0,0 +1,8 @@
+{
+ "event": "addHostIntent",
+ "sid": 1,
+ "payload": {
+ "one": "hostOne",
+ "two": "hostTwo"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_2_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_2_onos.json
new file mode 100644
index 00000000..4fdeaa1a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_2_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "showTraffic",
+ "sid": 1,
+ "payload": {
+ "paths": [
+ {
+ "intentId": "0x1234",
+ "links": [ "1-2", "2-3" ],
+ "class": "primary"
+ },
+ {
+ "intentId": "0x4321",
+ "links": [ "5-6", "6-7" ],
+ "class": "secondary"
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_3_ui.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_3_ui.json
new file mode 100644
index 00000000..f6a2b173
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_3_ui.json
@@ -0,0 +1,8 @@
+{
+ "event": "requestTraffic",
+ "sid": 2,
+ "payload": {
+ "ids": [ "00:00:00:00:00:01/-1", "00:00:00:00:00:02/-1" ],
+ "hover": ""
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_4_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_4_onos.json
new file mode 100644
index 00000000..f78616a0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_4_onos.json
@@ -0,0 +1,20 @@
+{
+ "event": "showPath",
+ "sid": 2,
+ "payload": {
+ "paths": [
+ {
+ "intentId": "0x1234",
+ "links": [ "1-2", "2-3" ],
+ "class": "animated",
+ "labels": [ "9Gb", "9Gb" ]
+ },
+ {
+ "intentId": "0x4321",
+ "links": [ "5-6", "6-7" ],
+ "class": "animated",
+ "labels": [ "4GB", "4GB" ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_5_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_5_onos.json
new file mode 100644
index 00000000..2afb7857
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_5_onos.json
@@ -0,0 +1,20 @@
+{
+ "event": "showTraffic",
+ "sid": 2,
+ "payload": {
+ "paths": [
+ {
+ "intentId": "0x1234",
+ "links": [ "1-2", "2-3" ],
+ "class": "animated",
+ "labels": [ "17Gb", "16Gb" ]
+ },
+ {
+ "intentId": "0x4321",
+ "links": [ "5-6", "6-7" ],
+ "class": "animated",
+ "labels": [ "9Gb", "5Gb" ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_6_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_6_onos.json
new file mode 100644
index 00000000..5f554151
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_6_onos.json
@@ -0,0 +1,20 @@
+{
+ "event": "showTraffic",
+ "sid": 2,
+ "payload": {
+ "paths": [
+ {
+ "intentId": "0x1234",
+ "links": [ "1-2", "2-3" ],
+ "class": "primary",
+ "labels": [ "17Gb", "16Gb" ]
+ },
+ {
+ "intentId": "0x4321",
+ "links": [ "5-6", "6-7" ],
+ "class": "secondary",
+ "labels": [ "9Gb", "5Gb" ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_7_ui.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_7_ui.json
new file mode 100644
index 00000000..89da44e1
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_7_ui.json
@@ -0,0 +1,6 @@
+{
+ "event": "cancelTraffic",
+ "sid": 3,
+ "payload": {
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_8_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_8_onos.json
new file mode 100644
index 00000000..8d5a50ee
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/ev_8_onos.json
@@ -0,0 +1,7 @@
+{
+ "event": "showTraffic",
+ "sid": 3,
+ "payload": {
+ "paths": []
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/scenario.json
new file mode 100644
index 00000000..f109ddeb
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/intentSketch/scenario.json
@@ -0,0 +1,13 @@
+{
+ "comments": [
+ "This scenario steps through adding a host intent."
+ ],
+ "title": "Host Intent Scenario",
+ "params": {
+ "lastAuto": 0
+ },
+ "description": [
+ "Currently this is just a sketch of the event sequence,",
+ " but is NOT YET a runnable scenario."
+ ]
+} \ No newline at end of file
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_10_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_10_onos.json
new file mode 100644
index 00000000..5775e43f
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_10_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/10-of:0000ffffffff0003/20",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "10",
+ "dst": "of:0000ffffffff0003",
+ "dstPort": "20",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_11_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_11_onos.json
new file mode 100644
index 00000000..f0d0b4d3
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_11_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:88/-1",
+ "ingress": "0E:2A:69:30:13:88/-1/0-of:0000ffffffff0003/1",
+ "egress": "of:0000ffffffff0003/1-0E:2A:69:30:13:88/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 1
+ },
+ "labels": [
+ "Host-A",
+ "0E:2A:69:30:13:88"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_12_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_12_onos.json
new file mode 100644
index 00000000..d9773430
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_12_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:89/-1",
+ "ingress": "0E:2A:69:30:13:89/-1/0-of:0000ffffffff0007/1",
+ "egress": "of:0000ffffffff0007/1-0E:2A:69:30:13:89/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 1
+ },
+ "labels": [
+ "Host-B",
+ "0E:2A:69:30:13:89"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_13_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_13_onos.json
new file mode 100644
index 00000000..8f643baf
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_13_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:8A/-1",
+ "ingress": "0E:2A:69:30:13:8A/-1/0-of:0000ffffffff0008/1",
+ "egress": "of:0000ffffffff0008/1-0E:2A:69:30:13:8A/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0008",
+ "port": 1
+ },
+ "labels": [
+ "Host-C",
+ "0E:2A:69:30:13:8A"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_14_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_14_onos.json
new file mode 100644
index 00000000..d7610199
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_14_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateLink",
+ "payload": {
+ "id": "of:0000ffffffff0007/10-of:0000ffffffff0008/20",
+ "src": "of:0000ffffffff0007",
+ "srcPort": "10",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "20",
+
+ "type": "direct",
+ "linkWidth": 2,
+ "online": true,
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_15_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_15_onos.json
new file mode 100644
index 00000000..dbdfb3a0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_15_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateLink",
+ "payload": {
+ "id": "of:0000ffffffff0007/20-of:0000ffffffff0003/10",
+ "src": "of:0000ffffffff0007",
+ "srcPort": "20",
+ "dst": "of:0000ffffffff0003",
+ "dstPort": "10",
+
+ "type": "direct",
+ "linkWidth": 6,
+ "online": true,
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_16_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_16_onos.json
new file mode 100644
index 00000000..b7783c12
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_16_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "removeLink",
+ "payload": {
+ "id": "of:0000ffffffff0007/20-of:0000ffffffff0003/10",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0007",
+ "srcPort": "20",
+ "dst": "of:0000ffffffff0003",
+ "dstPort": "10",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_17_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_17_onos.json
new file mode 100644
index 00000000..daf926e7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_17_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "removeLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/10-of:0000ffffffff0007/20",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "10",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "20",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_18_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_18_onos.json
new file mode 100644
index 00000000..aa403613
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_18_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/10-of:0000ffffffff0007/20",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "10",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "20",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_19_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_19_onos.json
new file mode 100644
index 00000000..58772f7b
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_19_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0007/20-of:0000ffffffff0003/10",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0007",
+ "srcPort": "20",
+ "dst": "of:0000ffffffff0003",
+ "dstPort": "10",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_1_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_1_onos.json
new file mode 100644
index 00000000..46803a23
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_1_onos.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "local",
+ "ip": "127.0.0.1",
+ "online": true,
+ "uiAttached": true,
+ "switches": 43,
+ "labels": [
+ "local",
+ "127.0.0.1"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_20_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_20_onos.json
new file mode 100644
index 00000000..19b5cd3c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_20_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "updateLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/20-of:0000ffffffff0008/10",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "20",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "10",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_21_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_21_onos.json
new file mode 100644
index 00000000..342272c4
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_21_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "updateLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/10-of:0000ffffffff0003/20",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "10",
+ "dst": "of:0000ffffffff0003",
+ "dstPort": "20",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_22_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_22_onos.json
new file mode 100644
index 00000000..b0b51b1f
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_22_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:BB:BB/-1",
+ "type": "bgpSpeaker",
+ "ingress": "0E:2A:69:30:BB:BB/-1/0-of:0000ffffffff0007/2",
+ "egress": "of:0000ffffffff0007/2-0E:2A:69:30:BB:BB/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 2
+ },
+ "labels": [
+ "BGP",
+ "0E:2A:69:30:BB:BB"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_23_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_23_onos.json
new file mode 100644
index 00000000..1fd53cd8
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_23_onos.json
@@ -0,0 +1,22 @@
+{
+ "event": "showTraffic",
+ "sid":62,
+ "payload": {
+ "paths": [
+ {
+ "class": "primary",
+ "traffic": false,
+ "links": [
+ "0E:2A:69:30:13:8A/-1/0-of:0000ffffffff0008/1",
+ "of:0000ffffffff0008/20-of:0000ffffffff0007/10",
+ "of:0000ffffffff0007/1-0E:2A:69:30:13:89/-1/0"
+ ],
+ "labels": [
+ "123 bytes",
+ "10 bytes",
+ "0 bytes"
+ ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_24_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_24_onos.json
new file mode 100644
index 00000000..b797752d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_24_onos.json
@@ -0,0 +1,22 @@
+{
+ "event": "showTraffic",
+ "sid":63,
+ "payload": {
+ "paths": [
+ {
+ "class": "primary animated",
+ "traffic": true,
+ "links": [
+ "0E:2A:69:30:13:8A/-1/0-of:0000ffffffff0008/1",
+ "of:0000ffffffff0008/20-of:0000ffffffff0007/10",
+ "of:0000ffffffff0007/1-0E:2A:69:30:13:89/-1/0"
+ ],
+ "labels": [
+ "99997 bytes",
+ "200 bytes",
+ "3.1415926 bytes"
+ ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_25_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_25_onos.json
new file mode 100644
index 00000000..59c12fa7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_25_onos.json
@@ -0,0 +1,7 @@
+{
+ "event": "showTraffic",
+ "sid": 64,
+ "payload": {
+ "paths": []
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_2_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_2_onos.json
new file mode 100644
index 00000000..46e56f60
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_2_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": true,
+ "master": "local",
+ "labels": [
+ "",
+ "sw-3",
+ "0000ffffffff0003"
+ ],
+ "metaUi": {
+ "x": 282,
+ "y": 503
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_3_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_3_onos.json
new file mode 100644
index 00000000..c32cd285
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_3_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": true,
+ "master": "local",
+ "labels": [
+ "",
+ "sw-7",
+ "0000ffffffff0007"
+ ],
+ "metaUi": {
+ "x": 530,
+ "y": 330
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_4_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_4_onos.json
new file mode 100644
index 00000000..375fcccf
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_4_onos.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": true,
+ "master": "local",
+ "labels": [
+ "",
+ "sw-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 477
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_5_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_5_onos.json
new file mode 100644
index 00000000..771c332a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_5_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0007/10-of:0000ffffffff0008/20",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0007",
+ "srcPort": "10",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "20",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_6_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_6_onos.json
new file mode 100644
index 00000000..6eea869a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_6_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/20-of:0000ffffffff0007/10",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "20",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "10",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_7_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_7_onos.json
new file mode 100644
index 00000000..cff94a50
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_7_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/10-of:0000ffffffff0007/20",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "10",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "20",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_8_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_8_onos.json
new file mode 100644
index 00000000..0a5a3142
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_8_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0007/20-of:0000ffffffff0003/10",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0007",
+ "srcPort": "20",
+ "dst": "of:0000ffffffff0003",
+ "dstPort": "10",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_9_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_9_onos.json
new file mode 100644
index 00000000..0b6b67b1
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/ev_9_onos.json
@@ -0,0 +1,15 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/20-of:0000ffffffff0008/10",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "20",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "10",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/links/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/links/scenario.json
new file mode 100644
index 00000000..2cef0aa7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/links/scenario.json
@@ -0,0 +1,15 @@
+{
+ "comments": [
+ "Stepping through link events"
+ ],
+ "title": "Process Link Events Scenario",
+ "params": {
+ "lastAuto": 13
+ },
+ "description": [
+ "Press 'H' to show hosts.",
+ "",
+ "Press '=' to load initial events.",
+ "Press '-' to fire further events."
+ ]
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_10_addInstance_F.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_10_addInstance_F.json
new file mode 100644
index 00000000..ce5a2e95
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_10_addInstance_F.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "instF",
+ "ip": "123.6.6.6",
+ "online": true,
+ "uiAttached": false,
+ "switches": 6,
+ "labels": [
+ "instF",
+ "123.6.6.6"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_11_addInstance_G.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_11_addInstance_G.json
new file mode 100644
index 00000000..c2a70afa
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_11_addInstance_G.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "instG",
+ "ip": "123.7.7.7",
+ "online": true,
+ "uiAttached": false,
+ "switches": 7,
+ "labels": [
+ "instG",
+ "123.7.7.7"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_1_showSummary.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_1_showSummary.json
new file mode 100644
index 00000000..a08504e1
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_1_showSummary.json
@@ -0,0 +1,28 @@
+{
+ "event": "showSummary",
+ "sid": 1,
+ "payload": {
+ "id": "ONOS Summary",
+ "type": "node",
+ "propOrder": [
+ "Devices",
+ "Links",
+ "Hosts",
+ "Topology SCCs",
+ "-",
+ "Intents",
+ "Flows",
+ "Version"
+ ],
+ "props": {
+ "Devices": "25",
+ "Links": "112",
+ "Hosts": "0",
+ "Topology SCCs": "1",
+ "-": "",
+ "Intents": "0",
+ "Flows": "125",
+ "Version": "1.0.0*"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_2_addInstance.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_2_addInstance.json
new file mode 100644
index 00000000..0579c1d5
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_2_addInstance.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "local",
+ "ip": "127.0.0.1",
+ "online": true,
+ "uiAttached": true,
+ "switches": 25,
+ "labels": [
+ "local",
+ "127.0.0.1"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_3_addInstance_B.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_3_addInstance_B.json
new file mode 100644
index 00000000..4313116d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_3_addInstance_B.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "instB",
+ "ip": "123.22.33.241",
+ "online": true,
+ "uiAttached": false,
+ "switches": 14,
+ "labels": [
+ "instB",
+ "123.22.33.241"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_4_addInstance_C.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_4_addInstance_C.json
new file mode 100644
index 00000000..b3376c0d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_4_addInstance_C.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "instC",
+ "ip": "123.22.33.124",
+ "online": true,
+ "uiAttached": false,
+ "switches": 7,
+ "labels": [
+ "instC",
+ "123.22.33.124"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_5_updateInstance_B.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_5_updateInstance_B.json
new file mode 100644
index 00000000..f3cc9c92
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_5_updateInstance_B.json
@@ -0,0 +1,14 @@
+{
+ "event": "updateInstance",
+ "payload": {
+ "id": "instB",
+ "ip": "123.22.33.241",
+ "online": false,
+ "uiAttached": false,
+ "switches": 14,
+ "labels": [
+ "instB",
+ "123.22.33.241"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_6_removeInstance_B.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_6_removeInstance_B.json
new file mode 100644
index 00000000..0ade799d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_6_removeInstance_B.json
@@ -0,0 +1,14 @@
+{
+ "event": "removeInstance",
+ "payload": {
+ "id": "instB",
+ "ip": "123.22.33.241",
+ "online": false,
+ "uiAttached": false,
+ "switches": 14,
+ "labels": [
+ "instB",
+ "123.22.33.241"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_7_addInstance_D.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_7_addInstance_D.json
new file mode 100644
index 00000000..3ba5fca6
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_7_addInstance_D.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "instD",
+ "ip": "123.33.44.55",
+ "online": true,
+ "uiAttached": false,
+ "switches": 133,
+ "labels": [
+ "instD",
+ "123.33.44.55"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_8_addInstance_B.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_8_addInstance_B.json
new file mode 100644
index 00000000..4313116d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_8_addInstance_B.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "instB",
+ "ip": "123.22.33.241",
+ "online": true,
+ "uiAttached": false,
+ "switches": 14,
+ "labels": [
+ "instB",
+ "123.22.33.241"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_9_addInstance_E.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_9_addInstance_E.json
new file mode 100644
index 00000000..18000937
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/ev_9_addInstance_E.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "instE",
+ "ip": "123.5.5.5",
+ "online": true,
+ "uiAttached": false,
+ "switches": 5,
+ "labels": [
+ "instE",
+ "123.5.5.5"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/migrate/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/scenario.json
new file mode 100644
index 00000000..5ba25204
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/migrate/scenario.json
@@ -0,0 +1,12 @@
+{
+ "comments": [
+ "Used during the migration of old GUI (topo.js==3.1KLOC) to Angular"
+ ],
+ "title": "Migration Helper",
+ "params": {
+ "lastAuto": 0
+ },
+ "description": [
+ "Do what you need to..."
+ ]
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_1_addInstanceA.json b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_1_addInstanceA.json
new file mode 100644
index 00000000..ea1fa0ff
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_1_addInstanceA.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "myInstA",
+ "ip": "192.168.56.101",
+ "online": true,
+ "uiAttached": true,
+ "switches": 2,
+ "labels": [
+ "myInstA",
+ "192.168.56.101"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_2_addInstanceB.json b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_2_addInstanceB.json
new file mode 100644
index 00000000..5b09dec7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_2_addInstanceB.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "myInstB",
+ "ip": "192.168.56.102",
+ "online": true,
+ "uiAttached": false,
+ "switches": 4,
+ "labels": [
+ "myInstB",
+ "192.168.56.102"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_3_addDevice_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_3_addDevice_08.json
new file mode 100644
index 00000000..029dec10
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_3_addDevice_08.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": true,
+ "master": "myInstA",
+ "labels": [
+ "",
+ "switch-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 520,
+ "y": 350
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_4_addDevice_03.json b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_4_addDevice_03.json
new file mode 100644
index 00000000..39aa5cfd
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_4_addDevice_03.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": true,
+ "master": "myInstB",
+ "labels": [
+ "",
+ "switch-3",
+ "0000ffffffff0003"
+ ],
+ "metaUi": {
+ "x": 800,
+ "y": 280
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_5_addLink_03_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_5_addLink_03_08.json
new file mode 100644
index 00000000..755255a2
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_5_addLink_03_08.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/21-of:0000ffffffff0008/20",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "21",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "20",
+ "props" : {
+ "BW": "70 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_6_addHost_03.json b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_6_addHost_03.json
new file mode 100644
index 00000000..c357942e
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_6_addHost_03.json
@@ -0,0 +1,20 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:86/-1",
+ "ingress": "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/2",
+ "egress": "of:0000ffffffff0003/2-0E:2A:69:30:13:86/-1/0",
+ "cp": [
+ { "device": "of:0000ffffffff0003", "port": 2 },
+ { "device": "of:0000ffffffff0008", "port": 4 }
+ ],
+ "labels": [
+ "192.168.1.201",
+ "0E:2A:69:30:13:86"
+ ],
+ "props": {
+ "routerId": "router-one"
+ },
+ "type": "router"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_7_addHost_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_7_addHost_08.json
new file mode 100644
index 00000000..43f6b2ba
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/ev_7_addHost_08.json
@@ -0,0 +1,19 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "A6:96:E5:03:52:5F/-1",
+ "ingress": "A6:96:E5:03:52:5F/-1/0-of:0000ffffffff0008/1",
+ "egress": "of:0000ffffffff0008/1-A6:96:E5:03:52:5F/-1/0",
+ "cp": [
+ { "device": "of:0000ffffffff0008", "port": 1 }
+ ],
+ "labels": [
+ "192.168.1.202",
+ "A6:96:E5:03:52:5F"
+ ],
+ "props": {
+ "routerId": "router-one"
+ },
+ "type": "router"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/scenario.json
new file mode 100644
index 00000000..a720ab86
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/multiHomed/scenario.json
@@ -0,0 +1,21 @@
+{
+ "comments": [
+ "Add two devices and one link (auto), and two 'hosts'.",
+ "But the hosts are the same box with two NICs."
+ ],
+ "title": "Multi-Homed Scenario",
+ "params": {
+ "lastAuto": 0
+ },
+ "description": [
+ "Simple sequence of events...",
+ "",
+ "1. add instance A",
+ "2. add instance B",
+ "3. add device [8]",
+ "4. add device [3]",
+ "5. add link [3] --> [8]",
+ "6. add host (to [3])",
+ "7. add host (to [8])"
+ ]
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_10_addLink_2-2b.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_10_addLink_2-2b.json
new file mode 100644
index 00000000..10f868fa
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_10_addLink_2-2b.json
@@ -0,0 +1,13 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "2-2b",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "sw2",
+ "srcPort": "20",
+ "dst": "sw2b",
+ "dstPort": "10"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_11_addLink_3-3b.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_11_addLink_3-3b.json
new file mode 100644
index 00000000..deaf0a14
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_11_addLink_3-3b.json
@@ -0,0 +1,13 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "3-3b",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "sw3",
+ "srcPort": "20",
+ "dst": "sw3b",
+ "dstPort": "10"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_12_addLink_4-4b.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_12_addLink_4-4b.json
new file mode 100644
index 00000000..ff47e5cd
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_12_addLink_4-4b.json
@@ -0,0 +1,13 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "4-4b",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "sw4",
+ "srcPort": "20",
+ "dst": "sw4b",
+ "dstPort": "10"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_1_addDevice_sw1b.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_1_addDevice_sw1b.json
new file mode 100644
index 00000000..780f0aaf
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_1_addDevice_sw1b.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "sw1b",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "sw-1b",
+ "00001b"
+ ],
+ "metaUi": {
+ "x": 200,
+ "y": 200
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_2_addDevice_sw2b.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_2_addDevice_sw2b.json
new file mode 100644
index 00000000..e0dba2b3
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_2_addDevice_sw2b.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "sw2b",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "sw-2b",
+ "00002b"
+ ],
+ "metaUi": {
+ "x": 800,
+ "y": 200
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_3_addDevice_sw3b.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_3_addDevice_sw3b.json
new file mode 100644
index 00000000..38d066a7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_3_addDevice_sw3b.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "sw3b",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "sw-3b",
+ "00003b"
+ ],
+ "metaUi": {
+ "x": 200,
+ "y": 600
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_4_addDevice_sw4b.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_4_addDevice_sw4b.json
new file mode 100644
index 00000000..bece53db
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_4_addDevice_sw4b.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "sw4b",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "sw-4b",
+ "00004b"
+ ],
+ "metaUi": {
+ "x": 800,
+ "y": 600
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_5_addDevice_sw1.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_5_addDevice_sw1.json
new file mode 100644
index 00000000..a05f3f91
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_5_addDevice_sw1.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "sw1",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-1",
+ "00001"
+ ],
+ "metaUi": {
+ "x": 200,
+ "y": 200
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_6_addDevice_sw2.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_6_addDevice_sw2.json
new file mode 100644
index 00000000..27e3b14f
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_6_addDevice_sw2.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "sw2",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-2",
+ "00002"
+ ],
+ "metaUi": {
+ "x": 800,
+ "y": 200
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_7_addDevice_sw3.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_7_addDevice_sw3.json
new file mode 100644
index 00000000..992b964d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_7_addDevice_sw3.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "sw3",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-3",
+ "00003"
+ ],
+ "metaUi": {
+ "x": 200,
+ "y": 600
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_8_addDevice_sw4.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_8_addDevice_sw4.json
new file mode 100644
index 00000000..2c33d501
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_8_addDevice_sw4.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "sw4",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-4",
+ "00004"
+ ],
+ "metaUi": {
+ "x": 800,
+ "y": 600
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_9_addLink_1-1b.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_9_addLink_1-1b.json
new file mode 100644
index 00000000..57e97069
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/ev_9_addLink_1-1b.json
@@ -0,0 +1,13 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "1-1b",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "sw1",
+ "srcPort": "20",
+ "dst": "sw1b",
+ "dstPort": "10"
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/oblique/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/scenario.json
new file mode 100644
index 00000000..ff55c183
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/oblique/scenario.json
@@ -0,0 +1,9 @@
+{
+ "title": "Oblique Test Scenario",
+ "params": {
+ "lastAuto": 8
+ },
+ "description": [
+ "Test Scenario for Oblique view"
+ ]
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_10_updateHost_03.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_10_updateHost_03.json
new file mode 100644
index 00000000..3a3ea9e8
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_10_updateHost_03.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:86/-1",
+ "ingress": "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/2",
+ "egress": "of:0000ffffffff0003/2-0E:2A:69:30:13:86/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 2
+ },
+ "labels": [
+ "10.0.0.13",
+ "0E:2A:69:30:13:86"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_11_updateHost_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_11_updateHost_08.json
new file mode 100644
index 00000000..0fb56fae
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_11_updateHost_08.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateHost",
+ "payload": {
+ "id": "A6:96:E5:03:52:5F/-1",
+ "ingress": "A6:96:E5:03:52:5F/-1/0-of:0000ffffffff0008/1",
+ "egress": "of:0000ffffffff0008/1-A6:96:E5:03:52:5F/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0008",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.17",
+ "A6:96:E5:03:52:5F"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_12_updateLink.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_12_updateLink.json
new file mode 100644
index 00000000..f09cc9bc
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_12_updateLink.json
@@ -0,0 +1,15 @@
+{
+ "event": "updateLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/21-of:0000ffffffff0008/20",
+ "type": "direct",
+ "linkWidth": 6,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "21",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "20",
+ "props" : {
+ "BW": "512 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_13_updateLink.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_13_updateLink.json
new file mode 100644
index 00000000..447ded37
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_13_updateLink.json
@@ -0,0 +1,15 @@
+{
+ "event": "updateLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/21-of:0000ffffffff0008/20",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "21",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "20",
+ "props" : {
+ "BW": "80 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_14_removeLink.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_14_removeLink.json
new file mode 100644
index 00000000..96018f33
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_14_removeLink.json
@@ -0,0 +1,15 @@
+{
+ "event": "removeLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/21-of:0000ffffffff0008/20",
+ "type": "direct",
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "21",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "20",
+ "props" : {
+ "BW": "80 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_15_removeHost_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_15_removeHost_08.json
new file mode 100644
index 00000000..5320841f
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_15_removeHost_08.json
@@ -0,0 +1,17 @@
+{
+ "event": "removeHost",
+ "payload": {
+ "id": "A6:96:E5:03:52:5F/-1",
+ "ingress": "A6:96:E5:03:52:5F/-1/0-of:0000ffffffff0008/1",
+ "egress": "of:0000ffffffff0008/1-A6:96:E5:03:52:5F/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0008",
+ "port": 1
+ },
+ "labels": [
+ "10.0.0.17",
+ "A6:96:E5:03:52:5F"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_16_removeDevice_03.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_16_removeDevice_03.json
new file mode 100644
index 00000000..9df9d613
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_16_removeDevice_03.json
@@ -0,0 +1,22 @@
+{
+ "event": "removeDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": false,
+ "location": {
+ "type": "latlng",
+ "lat": 40.7127,
+ "lng": -74.0059
+ },
+ "labels": [
+ "",
+ "sw-3",
+ "0000ffffffff0003"
+ ],
+ "metaUi": {
+ "x": 800,
+ "y": 280
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_17_removeDevice_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_17_removeDevice_08.json
new file mode 100644
index 00000000..15e711d0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_17_removeDevice_08.json
@@ -0,0 +1,23 @@
+{
+ "event": "removeDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": false,
+ "master": "myInstA",
+ "location": {
+ "type": "latlng",
+ "lat": 37.7833,
+ "lng": -122.4167
+ },
+ "labels": [
+ "",
+ "sw-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 520,
+ "y": 350
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_1_addInstanceA.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_1_addInstanceA.json
new file mode 100644
index 00000000..ea1fa0ff
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_1_addInstanceA.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "myInstA",
+ "ip": "192.168.56.101",
+ "online": true,
+ "uiAttached": true,
+ "switches": 2,
+ "labels": [
+ "myInstA",
+ "192.168.56.101"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_2_addInstanceB.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_2_addInstanceB.json
new file mode 100644
index 00000000..5b09dec7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_2_addInstanceB.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "myInstB",
+ "ip": "192.168.56.102",
+ "online": true,
+ "uiAttached": false,
+ "switches": 4,
+ "labels": [
+ "myInstB",
+ "192.168.56.102"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_3_addDevice_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_3_addDevice_08.json
new file mode 100644
index 00000000..9c16f2b4
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_3_addDevice_08.json
@@ -0,0 +1,23 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": false,
+ "master": "myInstA",
+ "location": {
+ "type": "latlng",
+ "lat": 37.7833,
+ "lng": -122.4167
+ },
+ "labels": [
+ "",
+ "sw-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 520,
+ "y": 350
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_4_addDevice_03.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_4_addDevice_03.json
new file mode 100644
index 00000000..0b8f0447
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_4_addDevice_03.json
@@ -0,0 +1,23 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": false,
+ "master": "myInstB",
+ "location": {
+ "type": "latlng",
+ "lat": 40.7127,
+ "lng": -74.0059
+ },
+ "labels": [
+ "",
+ "sw-3",
+ "0000ffffffff0003"
+ ],
+ "metaUi": {
+ "x": 800,
+ "y": 280
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_5_updateDevice_08_online.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_5_updateDevice_08_online.json
new file mode 100644
index 00000000..3b422833
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_5_updateDevice_08_online.json
@@ -0,0 +1,18 @@
+{
+ "event": "updateDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": true,
+ "master": "myInstA",
+ "labels": [
+ "",
+ "switch-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 520,
+ "y": 350
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_6_updateDevice_03_online.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_6_updateDevice_03_online.json
new file mode 100644
index 00000000..d05aea66
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_6_updateDevice_03_online.json
@@ -0,0 +1,18 @@
+{
+ "event": "updateDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": true,
+ "master": "myInstB",
+ "labels": [
+ "",
+ "switch-3",
+ "0000ffffffff0003"
+ ],
+ "metaUi": {
+ "x": 800,
+ "y": 280
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_7_addLink_03_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_7_addLink_03_08.json
new file mode 100644
index 00000000..755255a2
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_7_addLink_03_08.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/21-of:0000ffffffff0008/20",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "21",
+ "dst": "of:0000ffffffff0008",
+ "dstPort": "20",
+ "props" : {
+ "BW": "70 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_8_addHost_03.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_8_addHost_03.json
new file mode 100644
index 00000000..fba7015a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_8_addHost_03.json
@@ -0,0 +1,21 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:86/-1",
+ "ingress": "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/2",
+ "egress": "of:0000ffffffff0003/2-0E:2A:69:30:13:86/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 2
+ },
+ "labels": [
+ "unknown",
+ "0E:2A:69:30:13:86"
+ ],
+ "metaUi": {
+ "Xx": 800,
+ "Xy": 180
+ },
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_9_addHost_08.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_9_addHost_08.json
new file mode 100644
index 00000000..eff767dd
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/ev_9_addHost_08.json
@@ -0,0 +1,21 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "A6:96:E5:03:52:5F/-1",
+ "ingress": "A6:96:E5:03:52:5F/-1/0-of:0000ffffffff0008/1",
+ "egress": "of:0000ffffffff0008/1-A6:96:E5:03:52:5F/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0008",
+ "port": 1
+ },
+ "labels": [
+ "unknown",
+ "A6:96:E5:03:52:5F"
+ ],
+ "metaUi": {
+ "Xx": 520,
+ "Xy": 250
+ },
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/simple/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/simple/scenario.json
new file mode 100644
index 00000000..38daa5c7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/simple/scenario.json
@@ -0,0 +1,30 @@
+{
+ "comments": [
+ "Add two devices and one link (auto), and two hosts.",
+ "Then update the two hosts (with IP address labels)."
+ ],
+ "title": "Simple Startup Scenario",
+ "params": {
+ "lastAuto": 0
+ },
+ "description": [
+ "Simple sequence of events...",
+ "",
+ "1. add instance A",
+ "2. add instance B",
+ "3. add device [8] (offline)",
+ "4. add device [3] (offline)",
+ "5. update device [8] (online, label3 change)",
+ "6. update device [3] (online, label3 change)",
+ "7. add link [3] --> [8]",
+ "8. add host (to [3])",
+ "9. add host (to [8])",
+ "10. update host[3] (IP now 10.0.0.13)",
+ "11. update host[8] (IP now 10.0.0.17)",
+ "12. update link (increase width, update props)",
+ "13. update link (reduce width, update props)",
+ "14. remove link",
+ "15. remove host (10.0.0.17)",
+ "16. remove device [3]"
+ ]
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_10_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_10_onos.json
new file mode 100644
index 00000000..e07a3c71
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_10_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff04",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-4",
+ "0000ffffffffff04"
+ ],
+ "metaUi": {
+ "x": 322,
+ "y": 138
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_11_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_11_onos.json
new file mode 100644
index 00000000..71efaf39
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_11_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff000A",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-A",
+ "0000ffffffff000A"
+ ],
+ "metaUi": {
+ "x": 832,
+ "y": 223
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_12_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_12_onos.json
new file mode 100644
index 00000000..7d9fe610
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_12_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0001",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-1",
+ "0000ffffffff0001"
+ ],
+ "metaUi": {
+ "x": 167,
+ "y": 403
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_13_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_13_onos.json
new file mode 100644
index 00000000..12937b42
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_13_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff01",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-1",
+ "0000ffffffffff01"
+ ],
+ "metaUi": {
+ "x": 227,
+ "y": 460
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_14_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_14_onos.json
new file mode 100644
index 00000000..c4f9790c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_14_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0004",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-4",
+ "0000ffffffff0004"
+ ],
+ "metaUi": {
+ "x": 317,
+ "y": 73
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_15_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_15_onos.json
new file mode 100644
index 00000000..6a51e771
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_15_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff0A",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-A",
+ "0000ffffffffff0A"
+ ],
+ "metaUi": {
+ "x": 840,
+ "y": 290
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_16_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_16_onos.json
new file mode 100644
index 00000000..ba243ba5
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_16_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff09",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-9",
+ "0000ffffffffff09"
+ ],
+ "metaUi": {
+ "x": 1010,
+ "y": 229
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_17_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_17_onos.json
new file mode 100644
index 00000000..1a7e24bc
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_17_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff02/20-of:0000ffffffffff05/10",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 4,
+ "src": "of:0000ffffffffff02",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "10",
+ "props" : {
+ "BW": "80 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_18_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_18_onos.json
new file mode 100644
index 00000000..5f9f7d7c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_18_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff000A/2-of:0000ffffffffff0A/1",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff000A",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "1",
+ "props" : {
+ "BW": "100 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_19_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_19_onos.json
new file mode 100644
index 00000000..5c928ee1
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_19_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff03/10-of:0000ffffffffff02/10",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff03",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff02",
+ "dstPort": "10",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_1_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_1_onos.json
new file mode 100644
index 00000000..bd07ae66
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_1_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-B",
+ "0000ffffffffff08"
+ ],
+ "metaUi": {
+ "x": 539,
+ "y": 186
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_20_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_20_onos.json
new file mode 100644
index 00000000..44705d57
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_20_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff07/21-of:0000ffffffffff05/20",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff07",
+ "srcPort": "21",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "20",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_21_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_21_onos.json
new file mode 100644
index 00000000..0fa67d21
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_21_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0001/2-of:0000ffffffffff01/1",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0001",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "1",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_22_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_22_onos.json
new file mode 100644
index 00000000..0edde2a5
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_22_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff09/20-of:0000ffffffffff0A/20",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff09",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff0A",
+ "dstPort": "20",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_23_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_23_onos.json
new file mode 100644
index 00000000..5443b417
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_23_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff07/30-of:0000ffffffffff08/20",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 4,
+ "src": "of:0000ffffffffff07",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "20",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_24_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_24_onos.json
new file mode 100644
index 00000000..5e7bb99b
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_24_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff02/10-of:0000ffffffffff01/10",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff02",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff01",
+ "dstPort": "10",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_25_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_25_onos.json
new file mode 100644
index 00000000..1d0e9762
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_25_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff04/27-of:0000ffffffffff08/10",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff04",
+ "srcPort": "27",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "props" : {
+ "BW": "30 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_26_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_26_onos.json
new file mode 100644
index 00000000..9f2cd7b2
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_26_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/2-of:0000ffffffffff03/1",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "1",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_27_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_27_onos.json
new file mode 100644
index 00000000..23ccc226
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_27_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff09/1-of:0000ffffffff0009/2",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff09",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0009",
+ "dstPort": "2",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_28_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_28_onos.json
new file mode 100644
index 00000000..84be94f5
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_28_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff03/30-of:0000ffffffffff04/10",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff03",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "10",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_29_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_29_onos.json
new file mode 100644
index 00000000..be5c6963
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_29_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff07/20-of:0000ffffffffff09/10",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff07",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff09",
+ "dstPort": "10",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_2_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_2_onos.json
new file mode 100644
index 00000000..b00c6890
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_2_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-3",
+ "0000ffffffffff03"
+ ],
+ "metaUi": {
+ "x": 95,
+ "y": 225
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_30_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_30_onos.json
new file mode 100644
index 00000000..283d300d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_30_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff0A/10-of:0000ffffffffff08/30",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 4,
+ "src": "of:0000ffffffffff0A",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "30",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_31_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_31_onos.json
new file mode 100644
index 00000000..965f76b1
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_31_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0004/2-of:0000ffffffffff04/1",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0004",
+ "srcPort": "2",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "1",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_32_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_32_onos.json
new file mode 100644
index 00000000..3d90bfab
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_32_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff07/1-of:0000ffffffff0007/2",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff07",
+ "srcPort": "1",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "2",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_33_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_33_onos.json
new file mode 100644
index 00000000..7b17ddaa
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_33_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateDevice",
+ "payload": {
+ "id": "of:0000ffffffffff06",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-6",
+ "0000ffffffffff06"
+ ],
+ "metaUi": {
+ "x": 336,
+ "y": 254
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_34_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_34_onos.json
new file mode 100644
index 00000000..a75a345c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_34_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff06/20-of:0000ffffffffff05/30",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 4,
+ "src": "of:0000ffffffffff06",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff05",
+ "dstPort": "30",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_35_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_35_onos.json
new file mode 100644
index 00000000..055a80d7
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_35_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff03/20-of:0000ffffffffff06/10",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff03",
+ "srcPort": "20",
+ "dst": "of:0000ffffffffff06",
+ "dstPort": "10",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_36_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_36_onos.json
new file mode 100644
index 00000000..addcc6dc
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_36_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff06/30-of:0000ffffffffff08/10",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 4,
+ "src": "of:0000ffffffffff06",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_37_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_37_onos.json
new file mode 100644
index 00000000..42adbf93
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_37_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateDevice",
+ "payload": {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "",
+ "opt-8",
+ "0000ffffffffff08"
+ ],
+ "metaUi": {
+ "x": 539,
+ "y": 186
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_38_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_38_onos.json
new file mode 100644
index 00000000..5479f6e0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_38_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "removeLink",
+ "payload": {
+ "id": "of:0000ffffffffff07/30-of:0000ffffffffff08/20",
+ "type": "optical",
+ "online": false,
+ "linkWidth": 4,
+ "src": "of:0000ffffffffff07",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "20",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_39_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_39_onos.json
new file mode 100644
index 00000000..13c2cf22
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_39_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "removeLink",
+ "payload": {
+ "id": "of:0000ffffffffff04/27-of:0000ffffffffff08/10",
+ "type": "optical",
+ "online": false,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff04",
+ "srcPort": "27",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "props" : {
+ "BW": "30 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_3_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_3_onos.json
new file mode 100644
index 00000000..eb1da818
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_3_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-7",
+ "0000ffffffff0007"
+ ],
+ "metaUi": {
+ "x": 890,
+ "y": 375
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_40_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_40_onos.json
new file mode 100644
index 00000000..7a9c1e1e
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_40_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "removeLink",
+ "payload": {
+ "id": "of:0000ffffffffff0A/10-of:0000ffffffffff08/30",
+ "type": "optical",
+ "online": false,
+ "linkWidth": 4,
+ "src": "of:0000ffffffffff0A",
+ "srcPort": "10",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "30",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_41_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_41_onos.json
new file mode 100644
index 00000000..fb2fa458
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_41_onos.json
@@ -0,0 +1,16 @@
+{
+ "event": "removeLink",
+ "payload": {
+ "id": "of:0000ffffffffff06/30-of:0000ffffffffff08/10",
+ "type": "optical",
+ "online": false,
+ "linkWidth": 4,
+ "src": "of:0000ffffffffff06",
+ "srcPort": "30",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "10",
+ "props" : {
+ "BW": "70 G"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_4_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_4_onos.json
new file mode 100644
index 00000000..495d69b1
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_4_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0009",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-9",
+ "0000ffffffff0009"
+ ],
+ "metaUi": {
+ "x": 1004,
+ "y": 163
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_5_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_5_onos.json
new file mode 100644
index 00000000..0fe43412
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_5_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff02",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-2",
+ "0000ffffffffff02"
+ ],
+ "metaUi": {
+ "x": 211,
+ "y": 307
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_6_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_6_onos.json
new file mode 100644
index 00000000..7557c026
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_6_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-3",
+ "0000ffffffff0003"
+ ],
+ "metaUi": {
+ "x": 114,
+ "y": 158
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_7_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_7_onos.json
new file mode 100644
index 00000000..ed90ac3a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_7_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff07",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-7",
+ "0000ffffffffff07"
+ ],
+ "metaUi": {
+ "x": 925,
+ "y": 446
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_8_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_8_onos.json
new file mode 100644
index 00000000..f9f429bc
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_8_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff06",
+ "type": "roadm",
+ "online": false,
+ "labels": [
+ "",
+ "opt-6",
+ "0000ffffffffff06"
+ ],
+ "metaUi": {
+ "x": 336,
+ "y": 254
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_9_onos.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_9_onos.json
new file mode 100644
index 00000000..72d8feda
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/ev_9_onos.json
@@ -0,0 +1,17 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff05",
+ "type": "roadm",
+ "online": true,
+ "labels": [
+ "",
+ "opt-5",
+ "0000ffffffffff05"
+ ],
+ "metaUi": {
+ "x": 539,
+ "y": 524
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/startup/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/startup/scenario.json
new file mode 100644
index 00000000..0fe1dd31
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/startup/scenario.json
@@ -0,0 +1,19 @@
+{
+ "comments": [
+ "This scenario steps through adding devices and links.",
+ "(Typical 'start-ip' of the view.)"
+ ],
+ "title": "Startup Scenario",
+ "params": {
+ "lastAuto": 32
+ },
+ "description": [
+ "Loads 16 devices (10 optical, 6 packet)",
+ " and their associated links.",
+ "",
+ "Press '=' to load initial events.",
+ "Press '-' to fire further events...",
+ " * 4 events - device online, add 3 links",
+ " * 5 events - device offline, remove 4 links"
+ ]
+} \ No newline at end of file
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_10_addLink_s8-r8.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_10_addLink_s8-r8.json
new file mode 100644
index 00000000..190ce4ec
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_10_addLink_s8-r8.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/5-of:0000ffffffffff08/11",
+ "type": "indirect",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "5",
+ "dst": "of:0000ffffffffff08",
+ "dstPort": "11",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_11_addLink_s3-r3.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_11_addLink_s3-r3.json
new file mode 100644
index 00000000..34e074ab
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_11_addLink_s3-r3.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/6-of:0000ffffffffff03/8",
+ "type": "indirect",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "6",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "8",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_12_addLink_r8-r3.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_12_addLink_r8-r3.json
new file mode 100644
index 00000000..8d97902e
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_12_addLink_r8-r3.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff08/13-of:0000ffffffffff03/17",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff08",
+ "srcPort": "13",
+ "dst": "of:0000ffffffffff03",
+ "dstPort": "17",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_13_addHost_h3.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_13_addHost_h3.json
new file mode 100644
index 00000000..a5ee5c98
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_13_addHost_h3.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:86/-1",
+ "ingress": "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/101",
+ "egress": "of:0000ffffffff0003/101-0E:2A:69:30:13:86/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0003",
+ "port": 101
+ },
+ "labels": [
+ "1.2.3.4",
+ "0E:2A:69:30:13:86"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_14_addHost_h7.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_14_addHost_h7.json
new file mode 100644
index 00000000..262b8f21
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_14_addHost_h7.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:88/-1",
+ "ingress": "0E:2A:69:30:13:88/-1/0-of:0000ffffffff0007/102",
+ "egress": "of:0000ffffffff0007/102-0E:2A:69:30:13:86/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 102
+ },
+ "labels": [
+ "4.5.7.6",
+ "0E:2A:69:30:13:88"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_15_addHost_h8.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_15_addHost_h8.json
new file mode 100644
index 00000000..65cd825a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_15_addHost_h8.json
@@ -0,0 +1,17 @@
+{
+ "event": "addHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:aa/-1",
+ "ingress": "0E:2A:69:30:13:aa/-1/0-of:0000ffffffff0008/103",
+ "egress": "of:0000ffffffff0008/103-0E:2A:69:30:13:aa/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0008",
+ "port": 103
+ },
+ "labels": [
+ "12.13.14.15",
+ "0E:2A:69:30:13:aa"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_16_addDevice_r4.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_16_addDevice_r4.json
new file mode 100644
index 00000000..fc354f09
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_16_addDevice_r4.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff04",
+ "type": "roadm",
+ "online": true,
+ "master": "myInstB",
+ "labels": [
+ "",
+ "opt-4",
+ "0000ffffffffff04"
+ ],
+ "metaUi": {
+ "x": 1100,
+ "y": 600
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_17_addLink_r8-r4.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_17_addLink_r8-r4.json
new file mode 100644
index 00000000..d32efef5
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_17_addLink_r8-r4.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffffff08/99-of:0000ffffffffff04/65535",
+ "type": "optical",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffffff08",
+ "srcPort": "99",
+ "dst": "of:0000ffffffffff04",
+ "dstPort": "65535",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_18_showTraffic_primary.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_18_showTraffic_primary.json
new file mode 100644
index 00000000..7eafcf10
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_18_showTraffic_primary.json
@@ -0,0 +1,34 @@
+{
+ "event": "showTraffic",
+ "sid": 1,
+ "payload": {
+ "paths": [
+ {
+ "class": "primary animated",
+ "links": [
+ "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/101",
+ "0E:2A:69:30:13:aa/-1/0-of:0000ffffffff0008/103",
+ "of:0000ffffffff0003/6-of:0000ffffffffff03/8",
+ "of:0000ffffffff0008/5-of:0000ffffffffff08/11"
+ ],
+ "labels": [
+ "20 bytes",
+ "20 bytes",
+ "24 bytes",
+ "some bits"
+ ]
+ },
+ {
+ "class": "primary optical animated",
+ "links": [
+ "of:0000ffffffffff08/13-of:0000ffffffffff03/17",
+ "of:0000ffffffffff08/99-of:0000ffffffffff04/65535"
+ ],
+ "labels": [
+ "foo bars",
+ "boo fars"
+ ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_19_showTraffic_secondary.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_19_showTraffic_secondary.json
new file mode 100644
index 00000000..1f60c72a
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_19_showTraffic_secondary.json
@@ -0,0 +1,34 @@
+{
+ "event": "showTraffic",
+ "sid": 1,
+ "payload": {
+ "paths": [
+ {
+ "class": "secondary animated",
+ "links": [
+ "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/101",
+ "0E:2A:69:30:13:aa/-1/0-of:0000ffffffff0008/103",
+ "of:0000ffffffff0003/6-of:0000ffffffffff03/8",
+ "of:0000ffffffff0008/5-of:0000ffffffffff08/11"
+ ],
+ "labels": [
+ "35 bytes",
+ "35 bytes",
+ "24 bytes",
+ "some bits"
+ ]
+ },
+ {
+ "class": "secondary optical animated",
+ "links": [
+ "of:0000ffffffffff08/13-of:0000ffffffffff03/17",
+ "of:0000ffffffffff08/99-of:0000ffffffffff04/65535"
+ ],
+ "labels": [
+ "foo bars",
+ "bar foos"
+ ]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_1_addInstance.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_1_addInstance.json
new file mode 100644
index 00000000..c2eda412
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_1_addInstance.json
@@ -0,0 +1,14 @@
+{
+ "event": "addInstance",
+ "payload": {
+ "id": "myInstA",
+ "ip": "192.168.56.101",
+ "online": true,
+ "uiAttached": true,
+ "switches": 4,
+ "labels": [
+ "myInstA",
+ "192.168.56.101"
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_20_showTraffic_allMix.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_20_showTraffic_allMix.json
new file mode 100644
index 00000000..0526274c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_20_showTraffic_allMix.json
@@ -0,0 +1,39 @@
+{
+ "event": "showTraffic",
+ "sid": 1,
+ "payload": {
+ "paths": [
+ {
+ "class": "primary animated",
+ "links": [
+ "of:0000ffffffff0008/21-of:0000ffffffff0003/1"
+ ],
+ "labels": ["primary"]
+ },
+ {
+ "class": "secondary animated",
+ "links": [
+ "of:0000ffffffff0003/9-of:0000ffffffff0007/2",
+ "of:0000ffffffff0008/4-of:0000ffffffff0007/3",
+ "of:0000ffffffff0003/6-of:0000ffffffffff03/8",
+ "of:0000ffffffff0008/5-of:0000ffffffffff08/11"
+ ],
+ "labels": ["secondary", "secondo", "deux", "zwei"]
+ },
+ {
+ "class": "secondary optical animated",
+ "links": [
+ "of:0000ffffffffff08/99-of:0000ffffffffff04/65535"
+ ],
+ "labels": ["secondary optical"]
+ },
+ {
+ "class": "primary optical animated",
+ "links": [
+ "of:0000ffffffffff08/13-of:0000ffffffffff03/17"
+ ],
+ "labels": ["primary optical"]
+ }
+ ]
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_21_showTraffic_none.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_21_showTraffic_none.json
new file mode 100644
index 00000000..5f8aae0c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_21_showTraffic_none.json
@@ -0,0 +1,7 @@
+{
+ "event": "showTraffic",
+ "sid": 1,
+ "payload": {
+ "paths": []
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_22_updateDevice_s7offline.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_22_updateDevice_s7offline.json
new file mode 100644
index 00000000..2f9d567c
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_22_updateDevice_s7offline.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateDevice",
+ "payload": {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "",
+ "sw-7",
+ "0000ffffffff0007"
+ ],
+ "metaUi": {
+ "x": 530,
+ "y": 330
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_23_updateDevice_s7online.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_23_updateDevice_s7online.json
new file mode 100644
index 00000000..a409b614
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_23_updateDevice_s7online.json
@@ -0,0 +1,17 @@
+{
+ "event": "updateDevice",
+ "payload": {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": true,
+ "labels": [
+ "",
+ "sw-7",
+ "0000ffffffff0007"
+ ],
+ "metaUi": {
+ "x": 530,
+ "y": 330
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_24_removeDevice_s8.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_24_removeDevice_s8.json
new file mode 100644
index 00000000..0478da1d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_24_removeDevice_s8.json
@@ -0,0 +1,17 @@
+{
+ "event": "removeDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": false,
+ "labels": [
+ "",
+ "sw-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 477
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_25_addDevice_s8.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_25_addDevice_s8.json
new file mode 100644
index 00000000..16f530fa
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_25_addDevice_s8.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": true,
+ "master": "myInstA",
+ "labels": [
+ "",
+ "sw-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 477
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_26_removeHost_h7.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_26_removeHost_h7.json
new file mode 100644
index 00000000..69fc2bcb
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_26_removeHost_h7.json
@@ -0,0 +1,17 @@
+{
+ "event": "removeHost",
+ "payload": {
+ "id": "0E:2A:69:30:13:88/-1",
+ "ingress": "0E:2A:69:30:13:88/-1/0-of:0000ffffffff0007/101",
+ "egress": "of:0000ffffffff0007/101-0E:2A:69:30:13:86/-1/0",
+ "cp": {
+ "device": "of:0000ffffffff0007",
+ "port": 101
+ },
+ "labels": [
+ "4.5.7.6",
+ "0E:2A:69:30:13:88"
+ ],
+ "props": {}
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_2_addDevice_s8.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_2_addDevice_s8.json
new file mode 100644
index 00000000..16f530fa
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_2_addDevice_s8.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0008",
+ "type": "switch",
+ "online": true,
+ "master": "myInstA",
+ "labels": [
+ "",
+ "sw-8",
+ "0000ffffffff0008"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 477
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_3_addDevice_s3.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_3_addDevice_s3.json
new file mode 100644
index 00000000..60f687e3
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_3_addDevice_s3.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0003",
+ "type": "switch",
+ "online": true,
+ "master": "myInstA",
+ "labels": [
+ "",
+ "sw-3",
+ "0000ffffffff0003"
+ ],
+ "metaUi": {
+ "x": 282,
+ "y": 503
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_4_addDevice_s7.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_4_addDevice_s7.json
new file mode 100644
index 00000000..e4681187
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_4_addDevice_s7.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffff0007",
+ "type": "switch",
+ "online": true,
+ "master": "myInstA",
+ "labels": [
+ "",
+ "sw-7",
+ "0000ffffffff0007"
+ ],
+ "metaUi": {
+ "x": 530,
+ "y": 330
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_5_addDevice_r8.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_5_addDevice_r8.json
new file mode 100644
index 00000000..6fa87b19
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_5_addDevice_r8.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff08",
+ "type": "roadm",
+ "online": true,
+ "master": "myInstA",
+ "labels": [
+ "",
+ "opt-8",
+ "0000ffffffffff08"
+ ],
+ "metaUi": {
+ "x": 734,
+ "y": 577
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_6_addDevice_r3.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_6_addDevice_r3.json
new file mode 100644
index 00000000..ed1b1cbf
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_6_addDevice_r3.json
@@ -0,0 +1,18 @@
+{
+ "event": "addDevice",
+ "payload": {
+ "id": "of:0000ffffffffff03",
+ "type": "roadm",
+ "online": true,
+ "master": "myInstA",
+ "labels": [
+ "",
+ "opt-3",
+ "0000ffffffffff03"
+ ],
+ "metaUi": {
+ "x": 282,
+ "y": 603
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_7_addLink_s3-s7.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_7_addLink_s3-s7.json
new file mode 100644
index 00000000..00583d4d
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_7_addLink_s3-s7.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0003/9-of:0000ffffffff0007/2",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0003",
+ "srcPort": "9",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "2",
+ "props" : {
+ "BW": "120 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_8_addLink_s8-s3.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_8_addLink_s8-s3.json
new file mode 100644
index 00000000..84531de8
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_8_addLink_s8-s3.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/21-of:0000ffffffff0003/1",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "21",
+ "dst": "of:0000ffffffff0003",
+ "dstPort": "1",
+ "props" : {
+ "BW": "70 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_9_addLink_s8-s7.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_9_addLink_s8-s7.json
new file mode 100644
index 00000000..a432a521
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/ev_9_addLink_s8-s7.json
@@ -0,0 +1,16 @@
+{
+ "event": "addLink",
+ "payload": {
+ "id": "of:0000ffffffff0008/4-of:0000ffffffff0007/3",
+ "type": "direct",
+ "online": true,
+ "linkWidth": 2,
+ "src": "of:0000ffffffff0008",
+ "srcPort": "4",
+ "dst": "of:0000ffffffff0007",
+ "dstPort": "3",
+ "props" : {
+ "BW": "90 Gb"
+ }
+ }
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/ev/traffic/scenario.json b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/scenario.json
new file mode 100644
index 00000000..57c03733
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/ev/traffic/scenario.json
@@ -0,0 +1,12 @@
+{
+ "comments": [
+ "Stepping through showTraffic"
+ ],
+ "title": "Show Traffic Scenario",
+ "params": {
+ "lastAuto": 15
+ },
+ "description": [
+ "Primary, secondary and animated link visualizations."
+ ]
+}
diff --git a/framework/src/onos/web/gui/src/test/_karma/mockserver.js b/framework/src/onos/web/gui/src/test/_karma/mockserver.js
new file mode 100644
index 00000000..23b468b0
--- /dev/null
+++ b/framework/src/onos/web/gui/src/test/_karma/mockserver.js
@@ -0,0 +1,361 @@
+#!/usr/bin/env node
+
+// === Mock Web Socket Server - for testing the topology view
+
+var fs = require('fs'),
+ readline = require('readline'),
+ http = require('http'),
+ WebSocketServer = require('websocket').server,
+ port = 8123,
+ scenarioRoot = 'ev/',
+ verbose = false, // show received messages from client
+ extraVerbose = false; // show ALL received messages from client
+
+var lastcmd, // last command executed
+ lastargs, // arguments to last command
+ connection, // ws connection
+ origin, // origin of connection
+ scid, // scenario ID
+ scdata, // scenario data
+ scdone, // shows when scenario is over
+ eventsById, // map of event file names
+ maxEvno, // highest loaded event number
+ autoLast, // last event number for auto-advance
+ evno, // next event number
+ evdata; // event data
+
+
+process.argv.forEach(function (val) {
+ switch (val) {
+ case '-v': verbose = true; break;
+ case '-v!': extraVerbose = true; break;
+ }
+});
+
+var scFiles = fs.readdirSync(scenarioRoot);
+console.log();
+console.log('Mock Server v1.0');
+if (verbose || extraVerbose) {
+ console.log('Verbose=' + verbose, 'ExtraVerbose=' + extraVerbose);
+}
+console.log('================');
+listScenarios();
+
+var rl = readline.createInterface(process.stdin, process.stdout);
+rl.setPrompt('ws> ');
+
+
+var server = http.createServer(function(request, response) {
+ console.log((new Date()) + ' Received request for ' + request.url);
+ response.writeHead(404);
+ response.end();
+});
+
+server.listen(port, function() {
+ console.log((new Date()) + ' Server is listening on port ' + port);
+});
+
+server.on('listening', function () {
+ console.log('OK, server is running');
+ console.log('(? for help)');
+});
+
+var wsServer = new WebSocketServer({
+ httpServer: server,
+ // You should not use autoAcceptConnections for production
+ // applications, as it defeats all standard cross-origin protection
+ // facilities built into the protocol and the browser. You should
+ // *always* verify the connection's origin and decide whether or not
+ // to accept it.
+ autoAcceptConnections: false
+});
+
+function originIsAllowed(origin) {
+ // put logic here to detect whether the specified origin is allowed.
+ return true;
+}
+
+// displays the message if our arguments say we should
+function displayMsg(msg) {
+ var ev = JSON.parse(msg);
+ switch (ev.event) {
+ case 'topoHeartbeat': return extraVerbose;
+ default: return true;
+ }
+}
+
+wsServer.on('request', function(request) {
+ console.log(); // newline after prompt
+ console.log("Origin: ", request.origin);
+
+ if (!originIsAllowed(request.origin)) {
+ // Make sure we only accept requests from an allowed origin
+ request.reject();
+ console.log((new Date()) + ' Connection from origin ' + request.origin + ' rejected.');
+ return;
+ }
+
+ origin = request.origin;
+ connection = request.accept(null, origin);
+
+
+ console.log((new Date()) + ' Connection accepted.');
+ rl.prompt();
+
+ connection.on('message', function(message) {
+ if (verbose || extraVerbose) {
+ if (message.type === 'utf8') {
+ if (displayMsg(message.utf8Data)) {
+ console.log(); // newline after prompt
+ console.log('Received Message: ' + message.utf8Data);
+ }
+ //connection.sendUTF(message.utf8Data);
+ rl.prompt();
+ }
+ else if (message.type === 'binary') {
+ console.log('Received Binary Message of ' + message.binaryData.length + ' bytes');
+ //connection.sendBytes(message.binaryData);
+ }
+ }
+ });
+ connection.on('close', function(reasonCode, description) {
+ console.log((new Date()) + ' Peer ' + connection.remoteAddress + ' disconnected.');
+ connection = null;
+ origin = null;
+ });
+});
+
+
+setTimeout(doCli, 10); // allow async processes to write to stdout first
+
+function doCli() {
+ rl.prompt();
+ rl.on('line', function (line) {
+ var words = line.trim().split(' '),
+ cmd = words.shift(),
+ str = words.join(' ');
+
+ if (!cmd) {
+ // repeat last command
+ cmd = lastcmd;
+ str = lastargs;
+ }
+
+ switch(cmd) {
+ case 'l': listScenarios(); break;
+ case 'c': connStatus(); break;
+ case 'm': customMessage(str); break;
+ case 's': setScenario(str); break;
+ case 'a': autoAdvance(); break;
+ case 'n': nextEvent(); break;
+ case 'r': restartScenario(); break;
+ case 'q': quit(); break;
+ case '?': showHelp(); break;
+ default: console.log('Say what?! (? for help)'); break;
+ }
+ lastcmd = cmd;
+ lastargs = str;
+ rl.prompt();
+
+ }).on('close', function () {
+ quit();
+ });
+}
+
+var helptext = '\n' +
+ 'l - list scenarios\n' +
+ 'c - show connection status\n' +
+ 'm {text} - send custom message to client\n' +
+ 's {id} - load scenario {id}\n' +
+ 's - show scenario status\n' +
+ 'a - auto-send events\n' +
+ 'n - send next event\n' +
+ 'r - restart the scenario\n' +
+ 'q - exit the server\n' +
+ '? - display this help text\n';
+
+function showHelp() {
+ console.log(helptext);
+}
+
+function listScenarios() {
+ console.log('Scenarios ...');
+ console.log(scFiles.join(', '));
+ console.log();
+}
+
+function connStatus() {
+ if (connection) {
+ console.log('Connection from ' + origin + ' established.');
+ } else {
+ console.log('No connection.');
+ }
+}
+
+function quit() {
+ console.log('Quitting...');
+ process.exit(0);
+}
+
+function customMessage(m) {
+ if (connection) {
+ console.log('Sending message: ' + m);
+ connection.sendUTF(m);
+ } else {
+ console.warn('No current connection.');
+ }
+}
+
+function showScenarioStatus() {
+ var msg;
+ if (!scid) {
+ console.log('No scenario loaded.');
+ } else {
+ msg = 'Scenario: "' + scid + '", ' +
+ (scdone ? 'DONE' : 'next event: ' + evno);
+ console.log(msg);
+ }
+}
+
+function scenarioPath(evno) {
+ var file = evno ? ('/' + eventsById[evno].fname) : '/scenario.json';
+ return scenarioRoot + scid + file;
+}
+
+
+function initScenario(verb) {
+ console.log(); // get past prompt
+ console.log(verb + ' scenario "' + scid + '"');
+ console.log(scdata.title);
+ scdata.description.forEach(function (d) {
+ console.log(' ' + d);
+ });
+ autoLast = (scdata.params && scdata.params.lastAuto) || 0;
+ if (autoLast) {
+ console.log('[auto-advance: ' + autoLast + ']');
+ }
+ evno = 1;
+ scdone = false;
+ readEventFilenames();
+}
+
+function readEventFilenames() {
+ var files = fs.readdirSync(scenarioRoot + scid),
+ eventCount = 0,
+ match, id, tag;
+
+ maxEvno = 0;
+
+ eventsById = {};
+ files.forEach(function (f) {
+ match = /^ev_(\d+)_(.*)\.json$/.exec(f);
+ if (match) {
+ eventCount++;
+ id = match[1];
+ tag = match[2];
+ eventsById[id] = {
+ fname: f,
+ num: id,
+ tag: tag
+ };
+ if (Number(id) > Number(maxEvno)) {
+ maxEvno = id;
+ }
+ }
+
+ });
+ console.log('[' + eventCount + ' events loaded, (max=' + maxEvno + ')]');
+}
+
+function setScenario(id) {
+ if (!id) {
+ return showScenarioStatus();
+ }
+
+ evdata = null;
+ scid = id;
+ fs.readFile(scenarioPath(), 'utf8', function (err, data) {
+ if (err) {
+ console.warn('No scenario named "' + id + '"', err);
+ scid = null;
+ } else {
+ scdata = JSON.parse(data);
+ initScenario('Loading');
+ }
+ rl.prompt();
+ });
+}
+
+function restartScenario() {
+ if (!scid) {
+ console.log('No scenario loaded.');
+ } else {
+ initScenario('Restarting');
+ }
+ rl.prompt();
+}
+
+function eventAvailable() {
+ if (!scid) {
+ console.log('No scenario loaded.');
+ rl.prompt();
+ return false;
+ }
+
+ if (!connection) {
+ console.log('No current connection.');
+ rl.prompt();
+ return false;
+ }
+
+ if (Number(evno) > Number(maxEvno)) {
+ scdone = true;
+ console.log('Scenario DONE.');
+ return false;
+ }
+ return true;
+}
+
+function autoAdvance() {
+ if (evno > autoLast) {
+ console.log('[auto done]');
+ return;
+ }
+
+ // need to recurse with a callback, since each event send relies
+ // on an async load of event data...
+ function callback() {
+ if (eventAvailable() && evno <= autoLast) {
+ _nextEvent(callback);
+ }
+ }
+
+ callback();
+}
+
+function nextEvent() {
+ if (eventAvailable()) {
+ _nextEvent();
+ }
+}
+
+function _nextEvent(callback) {
+ var path = scenarioPath(evno);
+
+ fs.readFile(path, 'utf8', function (err, data) {
+ if (err) {
+ console.error('Oops error: ' + err);
+ } else {
+ evdata = JSON.parse(data);
+ console.log(); // get past prompt
+ console.log('Sending event #' + evno + ' [' + evdata.event +
+ '] from ' + eventsById[evno].fname);
+ connection.sendUTF(data);
+ evno++;
+ if (callback) {
+ callback();
+ }
+ }
+ rl.prompt();
+ });
+}