Committed by
Gerrit Code Review
Enhancing STC and cleaning up various test topos.
Change-Id: I7f5b349835ebf3d7da824be0aa2cddd860631f84
Showing
14 changed files
with
158 additions
and
87 deletions
| 1 | +/* | ||
| 2 | + * Copyright 2015 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | +package org.onosproject.cli; | ||
| 17 | + | ||
| 18 | +import com.fasterxml.jackson.databind.JsonNode; | ||
| 19 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
| 20 | +import com.fasterxml.jackson.databind.node.ArrayNode; | ||
| 21 | +import org.apache.karaf.shell.commands.Command; | ||
| 22 | +import org.onosproject.ui.UiExtension; | ||
| 23 | +import org.onosproject.ui.UiExtensionService; | ||
| 24 | + | ||
| 25 | +import java.util.List; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * Lists all UI views. | ||
| 29 | + */ | ||
| 30 | +@Command(scope = "onos", name = "ui-views", | ||
| 31 | + description = "Lists all UI views") | ||
| 32 | +public class UiViewListCommand extends AbstractShellCommand { | ||
| 33 | + | ||
| 34 | + private static final String FMT = "id=%s, category=%s, label=%s, icon=%s"; | ||
| 35 | + | ||
| 36 | + @Override | ||
| 37 | + protected void execute() { | ||
| 38 | + UiExtensionService service = get(UiExtensionService.class); | ||
| 39 | + if (outputJson()) { | ||
| 40 | + print("%s", json(service.getExtensions())); | ||
| 41 | + } else { | ||
| 42 | + service.getExtensions().forEach(ext -> ext.views() | ||
| 43 | + .forEach(v -> print(FMT, v.id(), v.category().label(), | ||
| 44 | + v.label(), v.iconId()))); | ||
| 45 | + } | ||
| 46 | + } | ||
| 47 | + | ||
| 48 | + private JsonNode json(List<UiExtension> extensions) { | ||
| 49 | + ObjectMapper mapper = new ObjectMapper(); | ||
| 50 | + ArrayNode node = mapper.createArrayNode(); | ||
| 51 | + extensions.forEach(ext -> ext.views() | ||
| 52 | + .forEach(v -> node.add(mapper.createObjectNode() | ||
| 53 | + .put("id", v.id()) | ||
| 54 | + .put("category", v.category().label()) | ||
| 55 | + .put("label", v.label()) | ||
| 56 | + .put("icon", v.iconId())))); | ||
| 57 | + return node; | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | +} |
| ... | @@ -59,6 +59,10 @@ | ... | @@ -59,6 +59,10 @@ |
| 59 | </command> | 59 | </command> |
| 60 | 60 | ||
| 61 | <command> | 61 | <command> |
| 62 | + <action class="org.onosproject.cli.UiViewListCommand"/> | ||
| 63 | + </command> | ||
| 64 | + | ||
| 65 | + <command> | ||
| 62 | <action class="org.onosproject.cli.RolesCommand"/> | 66 | <action class="org.onosproject.cli.RolesCommand"/> |
| 63 | </command> | 67 | </command> |
| 64 | <command> | 68 | <command> | ... | ... |
| ... | @@ -3,6 +3,9 @@ | ... | @@ -3,6 +3,9 @@ |
| 3 | # Checks whether all and only the ONOS apps configured in ONOS_APPS are active. | 3 | # Checks whether all and only the ONOS apps configured in ONOS_APPS are active. |
| 4 | # ----------------------------------------------------------------------------- | 4 | # ----------------------------------------------------------------------------- |
| 5 | 5 | ||
| 6 | +[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 | ||
| 7 | +. $ONOS_ROOT/tools/build/envDefaults | ||
| 8 | + | ||
| 6 | aux=/tmp/stc-$$.log | 9 | aux=/tmp/stc-$$.log |
| 7 | trap "rm -f $aux $aux.1 $aux.2 2>/dev/null" EXIT | 10 | trap "rm -f $aux $aux.1 $aux.2 2>/dev/null" EXIT |
| 8 | 11 | ... | ... |
tools/test/bin/onos-check-summary
0 → 100755
| 1 | +#!/bin/bash | ||
| 2 | +# ----------------------------------------------------------------------------- | ||
| 3 | +# Checks ONOS summary data | ||
| 4 | +# ----------------------------------------------------------------------------- | ||
| 5 | + | ||
| 6 | +aux=/tmp/stc-$$.log | ||
| 7 | +trap "rm -f $aux $aux.1 $aux.2 2>/dev/null" EXIT | ||
| 8 | + | ||
| 9 | +onos ${1:-$OCI} "onos:summary" > $aux | ||
| 10 | +cat $aux | ||
| 11 | + | ||
| 12 | +let status=0 | ||
| 13 | +grep -q "nodes=$2" $aux || let status=status+1 | ||
| 14 | +grep -q "devices=$3" $aux || let status=status+1 | ||
| 15 | +grep -q "links=$4" $aux || let status=status+1 | ||
| 16 | +grep -q "hosts=$5" $aux || let status=status+1 | ||
| 17 | + | ||
| 18 | +exit $status | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
tools/test/bin/onos-check-views
0 → 100755
| 1 | +#!/bin/bash | ||
| 2 | +# ----------------------------------------------------------------------------- | ||
| 3 | +# Checks whether all and only the ONOS apps configured in ONOS_APPS are active. | ||
| 4 | +# ----------------------------------------------------------------------------- | ||
| 5 | + | ||
| 6 | +[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 | ||
| 7 | +. $ONOS_ROOT/tools/build/envDefaults | ||
| 8 | + | ||
| 9 | +aux=/tmp/stc-$$.log | ||
| 10 | +trap "rm -f $aux $aux.1 $aux.2 2>/dev/null" EXIT | ||
| 11 | + | ||
| 12 | +onos ${1} "onos:ui-views" > $aux | ||
| 13 | +cat $aux | ||
| 14 | + | ||
| 15 | +shift | ||
| 16 | + | ||
| 17 | +grep "$@" $aux | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -10,10 +10,14 @@ remote=$ONOS_USER@${1:-$OCI} | ... | @@ -10,10 +10,14 @@ remote=$ONOS_USER@${1:-$OCI} |
| 10 | 10 | ||
| 11 | ssh -t $remote " | 11 | ssh -t $remote " |
| 12 | # Wait until we reach the run-level 100 | 12 | # Wait until we reach the run-level 100 |
| 13 | - running="" | 13 | + for i in \$(seq 1 30); do |
| 14 | - while [ -z \$running ]; do | ||
| 15 | $ONOS_INSTALL_DIR/bin/onos bundle:list 2>/dev/null | \ | 14 | $ONOS_INSTALL_DIR/bin/onos bundle:list 2>/dev/null | \ |
| 16 | - grep -q 'START LEVEL 100' && running=1 || sleep 2 | 15 | + grep -q 'START LEVEL 100' && break || sleep 2 |
| 17 | done | 16 | done |
| 18 | 17 | ||
| 18 | + # Wait until ApplicationManager is available | ||
| 19 | + for i in \$(seq 1 5); do | ||
| 20 | + grep -q \" ApplicationManager .* Started\" \ | ||
| 21 | + $ONOS_INSTALL_DIR/log/karaf.log && break || sleep 1 | ||
| 22 | + done | ||
| 19 | " | 23 | " | ... | ... |
| ... | @@ -41,5 +41,10 @@ | ... | @@ -41,5 +41,10 @@ |
| 41 | exec="mvn clean install"/> | 41 | exec="mvn clean install"/> |
| 42 | <step name="Reinstall-App-With-UI" requires="^,~Verify-CLI" | 42 | <step name="Reinstall-App-With-UI" requires="^,~Verify-CLI" |
| 43 | exec="onos-app ${OCI} reinstall! target/test-app-1.2.3.oar"/> | 43 | exec="onos-app ${OCI} reinstall! target/test-app-1.2.3.oar"/> |
| 44 | + <step name="Verify-UI" requires="^" | ||
| 45 | + exec="onos-check-views ${OCI} id=sample"/> | ||
| 46 | + | ||
| 47 | + <step name="Uninstall-App" requires="^" | ||
| 48 | + exec="onos-app ${OCI} uninstall org.foo.app"/> | ||
| 44 | </group> | 49 | </group> |
| 45 | </scenario> | 50 | </scenario> | ... | ... |
tools/test/scenarios/basic-net.xml
0 → 100644
| 1 | +<!-- | ||
| 2 | + ~ Copyright 2015 Open Networking Laboratory | ||
| 3 | + ~ | ||
| 4 | + ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + ~ you may not use this file except in compliance with the License. | ||
| 6 | + ~ You may obtain a copy of the License at | ||
| 7 | + ~ | ||
| 8 | + ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + ~ | ||
| 10 | + ~ Unless required by applicable law or agreed to in writing, software | ||
| 11 | + ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + ~ See the License for the specific language governing permissions and | ||
| 14 | + ~ limitations under the License. | ||
| 15 | + --> | ||
| 16 | +<scenario name="basic-net" description="Basic network functionality test"> | ||
| 17 | + <group name="Basic-Net"> | ||
| 18 | + <step name="Install-Apps" | ||
| 19 | + exec="onos ${OC1} app activate org.onosproject.proxyarp org.onosproject.fwd"/> | ||
| 20 | + <step name="Check-Apps" requires="Install-Apps" | ||
| 21 | + exec="onos-check-apps ${OC1} drivers,openflow,proxyarp,fwd"/> | ||
| 22 | + | ||
| 23 | + <step name="Config-Topo" | ||
| 24 | + exec="onos-topo-cfg ${OC1} ${ONOS_ROOT}/tools/test/topos/attmpls.json"/> | ||
| 25 | + <step name="Check-Summary" requires="Config-Topo" | ||
| 26 | + exec="onos-check-summary ${OC1} [0-9]* 25 0 25"/> | ||
| 27 | + | ||
| 28 | + <step name="Start-Mininet" requires="Install-Apps,Check-Summary" | ||
| 29 | + exec="echo onos-start-mininet not implemented yet"/> | ||
| 30 | + </group> | ||
| 31 | +</scenario> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -20,10 +20,10 @@ | ... | @@ -20,10 +20,10 @@ |
| 20 | <parallel var="${OC#}"> | 20 | <parallel var="${OC#}"> |
| 21 | <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}" unless="${OCT}"/> | 21 | <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}" unless="${OCT}"/> |
| 22 | <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/> | 22 | <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/> |
| 23 | - <step name="Kill-${#}" env="~" exec="onos-kill ${OC#}"/> | 23 | + <step name="Kill-${#}" env="~" exec="onos-kill ${OC#}" requires="Uninstall-${#}"/> |
| 24 | 24 | ||
| 25 | <step name="Install-${#}" exec="onos-install ${OC#}" | 25 | <step name="Install-${#}" exec="onos-install ${OC#}" |
| 26 | - requires="Uninstall-${#},Push-Bits-${#},Push-Bits"/> | 26 | + requires="Kill-${#},Push-Bits-${#},Push-Bits"/> |
| 27 | 27 | ||
| 28 | <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}" | 28 | <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}" |
| 29 | requires="Install-${#}"/> | 29 | requires="Install-${#}"/> |
| ... | @@ -31,9 +31,9 @@ | ... | @@ -31,9 +31,9 @@ |
| 31 | <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}" | 31 | <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}" |
| 32 | requires="~Wait-for-Start-${#}"/> | 32 | requires="~Wait-for-Start-${#}"/> |
| 33 | <step name="Check-Components-${#}" exec="onos-check-components ${OC#}" | 33 | <step name="Check-Components-${#}" exec="onos-check-components ${OC#}" |
| 34 | - requires="~Wait-for-Start-${#},~Check-Logs-${#}"/> | 34 | + requires="~Wait-for-Start-${#},"/> |
| 35 | <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#}" | 35 | <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#}" |
| 36 | - requires="~Wait-for-Start-${#},~Check-Logs-${#}"/> | 36 | + requires="~Wait-for-Start-${#}"/> |
| 37 | </parallel> | 37 | </parallel> |
| 38 | </group> | 38 | </group> |
| 39 | </scenario> | 39 | </scenario> | ... | ... |
| ... | @@ -20,10 +20,10 @@ | ... | @@ -20,10 +20,10 @@ |
| 20 | <parallel var="${OC#}"> | 20 | <parallel var="${OC#}"> |
| 21 | <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}" unless="${OCT}"/> | 21 | <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}" unless="${OCT}"/> |
| 22 | <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/> | 22 | <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/> |
| 23 | - <step name="Kill-${#}" env="~" exec="onos-kill ${OC#}"/> | 23 | + <step name="Kill-${#}" env="~" exec="onos-kill ${OC#}" requires="Uninstall-${#}"/> |
| 24 | 24 | ||
| 25 | <step name="Untar-And-Run-${#}" exec="onos-untar-and-run ${OC#}" | 25 | <step name="Untar-And-Run-${#}" exec="onos-untar-and-run ${OC#}" |
| 26 | - requires="Uninstall-${#},Push-Bits-${#},Push-Bits"/> | 26 | + requires="Kill-${#},Push-Bits-${#},Push-Bits"/> |
| 27 | 27 | ||
| 28 | <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}" | 28 | <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}" |
| 29 | requires="Untar-And-Run-${#}"/> | 29 | requires="Untar-And-Run-${#}"/> |
| ... | @@ -31,12 +31,12 @@ | ... | @@ -31,12 +31,12 @@ |
| 31 | <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}" | 31 | <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}" |
| 32 | requires="~Wait-for-Start-${#}"/> | 32 | requires="~Wait-for-Start-${#}"/> |
| 33 | <step name="Check-Components-${#}" exec="onos-check-components ${OC#}" | 33 | <step name="Check-Components-${#}" exec="onos-check-components ${OC#}" |
| 34 | - requires="~Wait-for-Start-${#},~Check-Logs-${#}"/> | 34 | + requires="~Wait-for-Start-${#}"/> |
| 35 | <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} drivers" | 35 | <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} drivers" |
| 36 | - requires="~Wait-for-Start-${#},~Check-Logs-${#}"/> | 36 | + requires="~Wait-for-Start-${#}"/> |
| 37 | 37 | ||
| 38 | <step name="Check-Nodes-${#}" exec="onos-check-nodes ${OC#} ${OC#}" | 38 | <step name="Check-Nodes-${#}" exec="onos-check-nodes ${OC#} ${OC#}" |
| 39 | - requires="~Wait-for-Start-${#},~Check-Logs-${#}"/> | 39 | + requires="~Wait-for-Start-${#}"/> |
| 40 | </parallel> | 40 | </parallel> |
| 41 | </group> | 41 | </group> |
| 42 | 42 | ||
| ... | @@ -49,12 +49,12 @@ | ... | @@ -49,12 +49,12 @@ |
| 49 | <step name="Check-Logs-Again-${#}" exec="onos-check-logs ${OC#}" | 49 | <step name="Check-Logs-Again-${#}" exec="onos-check-logs ${OC#}" |
| 50 | requires="~Wait-for-Start-Again-${#}"/> | 50 | requires="~Wait-for-Start-Again-${#}"/> |
| 51 | <step name="Check-Components-Again-${#}" exec="onos-check-components ${OC#}" | 51 | <step name="Check-Components-Again-${#}" exec="onos-check-components ${OC#}" |
| 52 | - requires="~Wait-for-Start-Again-${#},~Check-Logs-Again-${#}"/> | 52 | + requires="~Wait-for-Start-Again-${#}"/> |
| 53 | <step name="Check-Apps-Again-${#}" exec="onos-check-apps ${OC#} drivers" | 53 | <step name="Check-Apps-Again-${#}" exec="onos-check-apps ${OC#} drivers" |
| 54 | - requires="~Wait-for-Start-Again-${#},~Check-Logs-Again-${#}"/> | 54 | + requires="~Wait-for-Start-Again-${#}"/> |
| 55 | 55 | ||
| 56 | <step name="Check-Nodes-Again-${#}" exec="onos-check-nodes ${OC#}" | 56 | <step name="Check-Nodes-Again-${#}" exec="onos-check-nodes ${OC#}" |
| 57 | - requires="~Wait-for-Start-Again-${#},~Check-Logs-Again-${#}"/> | 57 | + requires="~Wait-for-Start-Again-${#}"/> |
| 58 | </parallel> | 58 | </parallel> |
| 59 | </group> | 59 | </group> |
| 60 | 60 | ... | ... |
| ... | @@ -26,6 +26,7 @@ def run(controllers=[ '127.0.0.1' ]): | ... | @@ -26,6 +26,7 @@ def run(controllers=[ '127.0.0.1' ]): |
| 26 | ctrl_count = 0 | 26 | ctrl_count = 0 |
| 27 | for controllerIP in controllers: | 27 | for controllerIP in controllers: |
| 28 | net.addController( 'c%d' % ctrl_count, RemoteController, ip=controllerIP ) | 28 | net.addController( 'c%d' % ctrl_count, RemoteController, ip=controllerIP ) |
| 29 | + ctrl_count = ctrl_count + 1 | ||
| 29 | net.build() | 30 | net.build() |
| 30 | net.start() | 31 | net.start() |
| 31 | CLI( net ) | 32 | CLI( net ) | ... | ... |
tools/test/topos/attmplsext.json
deleted
100644 → 0
| 1 | -{ | ||
| 2 | - "devices": [ | ||
| 3 | - { "alias": "s11", "uri": "of:0000001000000001", "mac": "001000000001", "annotations": { "name": "MINE", "latitude": 44.977862, "longitude": -93.265427 }, "type": "SWITCH" }, | ||
| 4 | - { "alias": "s12", "uri": "of:0000001000000002", "mac": "001000000002", "annotations": { "name": "BISM", "latitude": 46.817887, "longitude": -100.786109 }, "type": "SWITCH" }, | ||
| 5 | - { "alias": "s13", "uri": "of:0000001000000003", "mac": "001000000003", "annotations": { "name": "BOIS", "latitude": 43.617834, "longitude": -116.216903 }, "type": "SWITCH" }, | ||
| 6 | - { "alias": "s14", "uri": "of:0000001000000004", "mac": "001000000004", "annotations": { "name": "RENO", "latitude": 39.533310, "longitude": -119.796940 }, "type": "SWITCH" }, | ||
| 7 | - { "alias": "s15", "uri": "of:0000001000000005", "mac": "001000000005", "annotations": { "name": "ALBU", "latitude": 35.109657, "longitude": -106.626698 }, "type": "SWITCH" } | ||
| 8 | - ], | ||
| 9 | - | ||
| 10 | - "hosts": [ | ||
| 11 | - { "alias": "h31", "mac": "00:10:00:00:00:01", "vlan": -1, "location": "of:0000001000000001/1", "ip": "10.0.0.31", "annotations": { "name": "MINE", "latitude": 46.509021, "longitude": -93.820777 } }, | ||
| 12 | - { "alias": "h32", "mac": "00:10:00:00:00:02", "vlan": -1, "location": "of:0000001000000002/1", "ip": "10.0.0.32", "annotations": { "name": "BISM", "latitude": 48.169551, "longitude": -101.866954 } }, | ||
| 13 | - { "alias": "h33", "mac": "00:10:00:00:00:03", "vlan": -1, "location": "of:0000001000000003/1", "ip": "10.0.0.33", "annotations": { "name": "BOIS", "latitude": 44.617834, "longitude": -117.216903 } }, | ||
| 14 | - { "alias": "h34", "mac": "00:10:00:00:00:04", "vlan": -1, "location": "of:0000001000000004/1", "ip": "10.0.0.34", "annotations": { "name": "RENO", "latitude": 40.686744, "longitude": -117.886514 } }, | ||
| 15 | - { "alias": "h35", "mac": "00:10:00:00:00:05", "vlan": -1, "location": "of:0000001000000005/1", "ip": "10.0.0.35", "annotations": { "name": "ALBU", "latitude": 35.486729, "longitude": -104.231201 } } | ||
| 16 | - ] | ||
| 17 | - | ||
| 18 | -} |
tools/test/topos/attmplsext.py
deleted
100644 → 0
| 1 | -#!/usr/bin/env python | ||
| 2 | - | ||
| 3 | -""" | ||
| 4 | -""" | ||
| 5 | -from mininet.topo import Topo | ||
| 6 | -from mininet.net import Mininet | ||
| 7 | -from mininet.node import RemoteController | ||
| 8 | -from mininet.node import Node | ||
| 9 | -from mininet.node import CPULimitedHost | ||
| 10 | -from mininet.link import TCLink | ||
| 11 | -from mininet.cli import CLI | ||
| 12 | -from mininet.log import setLogLevel | ||
| 13 | -from mininet.util import dumpNodeConnections | ||
| 14 | - | ||
| 15 | -class AttMplsTopoExt( Topo ): | ||
| 16 | - "Internet Topology Zoo Specimen." | ||
| 17 | - | ||
| 18 | - def __init__( self ): | ||
| 19 | - "Create a topology." | ||
| 20 | - | ||
| 21 | - # Initialize Topology | ||
| 22 | - Topo.__init__( self ) | ||
| 23 | - | ||
| 24 | - # add nodes, switches first... | ||
| 25 | - MINE = self.addSwitch( 's31', dpid='0000001000000001') # 44.977862, -93.265427 | ||
| 26 | - BISM = self.addSwitch( 's32', dpid='0000001000000002') # 46.817887, -100.786109 | ||
| 27 | - BOIS = self.addSwitch( 's33', dpid='0000001000000003') # 43.617834, -116.216903 | ||
| 28 | - RENO = self.addSwitch( 's34', dpid='0000001000000004') # 39.533310, -119.796940 | ||
| 29 | - ALBU = self.addSwitch( 's35', dpid='0000001000000005') # 35.109657, -106.626698 | ||
| 30 | - | ||
| 31 | - # ... and now hosts | ||
| 32 | - MINE_host = self.addHost( 'h31', mac='00:10:00:00:00:01' ) | ||
| 33 | - BISM_host = self.addHost( 'h32', mac='00:10:00:00:00:02' ) | ||
| 34 | - BOIS_host = self.addHost( 'h33', mac='00:10:00:00:00:03' ) | ||
| 35 | - RENO_host = self.addHost( 'h34', mac='00:10:00:00:00:04' ) | ||
| 36 | - ALBU_host = self.addHost( 'h35', mac='00:10:00:00:00:05' ) | ||
| 37 | - | ||
| 38 | - # add edges between switch and corresponding host | ||
| 39 | - self.addLink( MINE , MINE_host ) | ||
| 40 | - self.addLink( BISM , BISM_host ) | ||
| 41 | - self.addLink( BOIS , BOIS_host ) | ||
| 42 | - self.addLink( RENO , RENO_host ) | ||
| 43 | - self.addLink( ALBU , ALBU_host ) | ||
| 44 | - | ||
| 45 | - # add edges between switches | ||
| 46 | - self.addLink( MINE , BISM, bw=10, delay='0.979030824185ms') | ||
| 47 | - self.addLink( BISM , BOIS, bw=10, delay='0.806374975652ms') | ||
| 48 | - self.addLink( BOIS , RENO, bw=10, delay='0.686192970166ms') | ||
| 49 | - self.addLink( BOIS , ALBU, bw=10, delay='0.605826192092ms') | ||
| 50 | - self.addLink( RENO , ALBU, bw=10, delay='1.4018238197ms') | ||
| 51 | - self.addLink( RENO , MINE, bw=10, delay='0.232315346482ms') | ||
| 52 | - self.addLink( BISM , ALBU, bw=10, delay='1.07297714274ms') | ||
| 53 | - | ||
| 54 | -topos = { 'att': ( lambda: AttMplsTopoExt() ) } |
-
Please register or login to post a comment