~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to utilities/local-latency

  • Committer: Aaron Bentley
  • Date: 2011-08-04 20:26:07 UTC
  • mto: This revision was merged to the branch mainline in revision 13619.
  • Revision ID: aaron@canonical.com-20110804202607-dudyffsvfhxb7evu
Switch to command-from-function approach.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
__metaclass__ = type
4
4
 
5
 
from optparse import OptionParser
6
5
import sys
7
6
import subprocess
8
7
 
9
8
from script_commands import (
10
9
    Command,
11
10
    UserError,
 
11
    types,
 
12
    helps,
12
13
    )
13
14
 
14
15
 
16
17
     subprocess.call('sudo tc ' + command, shell=True)
17
18
 
18
19
 
19
 
class StartCommand(Command):
20
 
 
21
 
    @classmethod
22
 
    def get_parser(cls):
23
 
        parser = OptionParser()
24
 
        parser.add_option(
25
 
            '-d', '--delay', dest='delay', type='int',
26
 
            help='Length of delay in miliseconds (each way).'
27
 
            ' Default: %default.')
28
 
        return parser
29
 
 
30
 
    @staticmethod
31
 
    def run(delay=500, port=443):
32
 
        tc('qdisc add dev lo root handle 1: prio')
33
 
        tc('qdisc add dev lo parent 1:3 handle 30: netem delay %dms' % delay)
34
 
        tc('filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip'
35
 
           ' dport %d 0xffff flowid 1:3' % port)
36
 
        tc('filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip'
37
 
           ' sport %d 0xffff flowid 1:3' % port)
38
 
 
39
 
 
40
 
Command.commands['start'] = StartCommand
41
 
 
42
 
 
43
 
class StopCommand(Command):
44
 
 
45
 
    @staticmethod
46
 
    def get_parser():
47
 
        parser = OptionParser()
48
 
        return parser
49
 
 
50
 
    @staticmethod
51
 
    def run():
52
 
        tc('qdisc del dev lo root')
53
 
 
54
 
 
55
 
Command.commands['stop'] = StopCommand
 
20
@types(delay='int', port='int')
 
21
@helps(delay='Length of delay in miliseconds (each way).',
 
22
       port='Port to induce delay on.')
 
23
def start(delay=500, port=443):
 
24
    tc('qdisc add dev lo root handle 1: prio')
 
25
    tc('qdisc add dev lo parent 1:3 handle 30: netem delay %dms' % delay)
 
26
    tc('filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip'
 
27
       ' dport %d 0xffff flowid 1:3' % port)
 
28
    tc('filter add dev lo protocol ip parent 1:0 prio 3 u32 match ip'
 
29
       ' sport %d 0xffff flowid 1:3' % port)
 
30
 
 
31
 
 
32
Command.commands['start'] = start
 
33
 
 
34
 
 
35
def stop():
 
36
    tc('qdisc del dev lo root')
 
37
 
 
38
 
 
39
Command.commands['stop'] = stop
56
40
 
57
41
 
58
42