diff options
Diffstat (limited to 'framework/src/onos/tools/test/topos/attcli.py')
-rw-r--r-- | framework/src/onos/tools/test/topos/attcli.py | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/framework/src/onos/tools/test/topos/attcli.py b/framework/src/onos/tools/test/topos/attcli.py deleted file mode 100644 index 19453204..00000000 --- a/framework/src/onos/tools/test/topos/attcli.py +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/python - -""" -CLI for test with AttMplsTopo -""" - -from mininet.net import Mininet -from mininet.cli import CLI -from mininet.util import quietRun -from mininet.log import setLogLevel, info, output, error -from mininet.node import RemoteController - -from attmplsfast import AttMplsTopo - -from subprocess import PIPE, STDOUT -from time import time -import random - -class IperfCLI( CLI ): - "CLI with iperf UDP traffic generation" - - def __init__( self, net, *args, **kwargs ): - self.iperfs = {} - self.bw = '12k' - self.mn = net - self.lastbw = {} # last bandwidth reports - self.start() - quietRun( 'rm /tmp/*.iperf /tmp/*.client' ) - CLI.__init__( self, net, *args, **kwargs ) - - def __del__( self ): - "Destructor: kill *all* iperf servers and clients!" - quietRun( 'pkill -9 iperf' ) - - def start( self ): - "Start iperf servers" - for h in sorted( self.mn.hosts ): - with open( '/tmp/%s.iperf' % h, 'w' ) as f: - cmd = 'iperf -f k -i 1 -s -u' - popen = h.popen( cmd, stdin=PIPE, stdout=f, stderr=STDOUT ) - self.iperfs[ h ] = popen - - def udpstart( self, h1, h2, bw): - "Start up a udp iperf from h1 to h2 with bandwidth bw" - # For udp we don't have to wait for startup - self.udpstop( h1 ) - h1.cmdPrint( 'iperf -c', h2.IP(), - '-t 36000 -u -b', bw, - '1>/tmp/%s.client 2>&1 &' % h1 ) - - def udpstop( self, h ): - "udpstop h: Stop udp client on host h" - h.cmdPrint( 'kill %iperf && wait %iperf' ) - h.cmdPrint( 'rm /tmp/%s.client' % h ) - - def do_udp( self, line ): - """udp h1 h2 [rate]: start a udp iperf session from h1 to h2 - rate: udp transmit rate [12k]""" - args = line.split() - if len( args ) not in ( 2, 3 ): - error( 'usage: udp h1 h2 [rate]\n' ) - return - h1, h2 = self.mn.get( *args[ :2 ] ) - bw = self.bw if len( args ) == 2 else args[ 2 ] - self.udpstart( h1, h2, bw ) - - def do_stop( self, line ): - "stop [host | all]: Stop iperf client on host" - if not line or line == 'all': - hosts = self.mn.hosts - else: - hosts = [ self.mn.get( line ) ] - for h in hosts: - self.udpstop( h ) - - def do_bw( self, line ): - "bw: show last reported iperf server ingress bandwidth" - output( "Last reported iperf UDP server input bandwidth:\n" ) - for h in self.mn.hosts: - lastout, lasttime = self.lastbw.get( h, ( '', 0 ) ) - out = h.cmd( 'tail -1 /tmp/%s.iperf' % h ) - if '---' in out or ( out == lastout and - time() - lasttime > 1.5 ): - # Stale update - don't display - out = '\n' - else: - self.lastbw[ h ] = ( out, time() ) - output( '%s:' % h, out ) - - def do_rand( self, line ): - """rand [N [bw]]: Start N random flows (default: 10) - at the given bandwidth (default: 12k) - Note: this may replace existing flows""" - args = line.split() - N = 10 - if args: - try: - N = int( args[ 0 ] ) - except: - error( 'please specify an integer' ) - return - output( 'Starting/restarting', N, 'random flows...\n' ) - bw = self.bw if len( args ) < 2 else args[ 1 ] - servers = random.sample( self.mn.hosts, N ) - clients = [] - for server in servers: - allclients = [ h for h in self.mn.hosts - if h not in clients ] - client = random.choice( allclients ) - clients.append( client ) - self.udpstart( client, server, bw ) - - def do_jobs( self, line ): - "jobs: List iperf jobs" - output( "Currently running jobs:\n" ) - for h in self.mn.hosts: - output( '%s:' % h, h.cmd( 'jobs' ).strip(), '\n' ) - - -def run( Topo=AttMplsTopo ): - "Create network and run CLI" - topo = Topo() - net = Mininet( topo=topo, controller=RemoteController ) - net.start() - info( '\n### Welcome to the custom iperf udp CLI!\n' - '###\n' - '### udp h1 h2 [bw] start iperf udp from h1 to h2\n' - '### stop h1 h2 stop iperf udp from h1 to h2\n' - '### rand [N] start/restart N random udp iperfs\n' - '### bw show last reported udp ingress bandwidth\n' - '### jobs list iperf jobs\n\n' ) - IperfCLI( net ) - net.stop() - - -if __name__ == '__main__': - setLogLevel( 'info' ) - run() |