~ubuntu-branches/ubuntu/utopic/exabgp/utopic

« back to all changes in this revision

Viewing changes to dev/self/load/api-internet.py

  • Committer: Package Import Robot
  • Author(s): Henry-Nicolas Tourneur
  • Date: 2014-03-08 19:07:00 UTC
  • mfrom: (1.1.8)
  • Revision ID: package-import@ubuntu.com-20140308190700-xjbibpg1g6001c9x
Tags: 3.3.1-1
* New upstream release
* Bump python minimal required version (2.7)
* Closes: #726066 Debian packaging improvements proposed by Vincent Bernat
* Closes: #703774 not existent rundir (/var/run/exabgp) after reboot

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
import sys
 
4
import time
 
5
import random
 
6
 
 
7
def write (data):
 
8
        sys.stdout.write(data + '\n')
 
9
        sys.stdout.flush()
 
10
 
 
11
def main ():
 
12
        if len(sys.argv) < 2:
 
13
                print "%s <number of routes> <updates per second thereafter>"
 
14
                sys.exit(1)
 
15
 
 
16
        initial = sys.argv[1]
 
17
        thereafter = sys.argv[2]
 
18
 
 
19
        if not initial.isdigit() or not thereafter.isdigit():
 
20
                write('please give valid numbers')
 
21
                sys.exit(1)
 
22
 
 
23
        # Limit to sane numbers :-)
 
24
        number = int(initial) & 0x00FFFFFF
 
25
        after = int(thereafter) & 0x0000FFFF
 
26
 
 
27
        range1 = (number >> 16) & 0xFF
 
28
        range2 = (number >>  8) & 0xFF
 
29
        range3 = (number      ) & 0xFF
 
30
 
 
31
        ip = {}
 
32
        nexthop = ['%d.%d.%d.%d' % (random.randint(1,200),random.randint(0,255),random.randint(0,255),random.randint(0,255)) for _ in range(200)]
 
33
 
 
34
        for ip1 in range(0,range1):
 
35
                for ip2 in range(0,256):
 
36
                        for ip3 in range(0,256):
 
37
                                generated = '%d.%d.%d.%d' % (random.randint(1,200),ip1,ip2,ip3)
 
38
                                ip[generated] = random.choice(nexthop)
 
39
 
 
40
        for ip2 in range (0,range2):
 
41
                for ip3 in range (0,256):
 
42
                        generated = '%d.%d.%d.%d' % (random.randint(1,200),range1,ip2,ip3)
 
43
                        ip[generated] = random.choice(nexthop)
 
44
 
 
45
        for ip3 in range (0,range3):
 
46
                generated = '%d.%d.%d.%d' % (random.randint(1,200),range1,range2,ip3)
 
47
                ip[generated] = random.choice(nexthop)
 
48
 
 
49
        count = 0
 
50
 
 
51
        # initial table dump
 
52
        for k,v in ip.iteritems():
 
53
                count += 1
 
54
                write('announce route %s next-hop %s med 1%02d as-path [ 100 101 102 103 104 105 106 107 108 109 110 ]' % (k,v,len(k)))
 
55
                if count % 100 == 0:
 
56
                        sys.stderr.write('initial : announced %d\n' % count)
 
57
 
 
58
        count &= 0xFFFFFFFe
 
59
 
 
60
        # modify routes forever
 
61
        while True:
 
62
                now = time.time()
 
63
                changed = {}
 
64
 
 
65
                for k,v in ip.iteritems():
 
66
                        changed[k] = v
 
67
                        if not random.randint(0,after):
 
68
                                break
 
69
 
 
70
                for k,v in changed.iteritems():
 
71
                        count += 2
 
72
                        write('withdraw route %s next-hop %s med 1%02d as-path [ 100 101 102 103 104 105 106 107 108 109 110 ]' % (k,v,len(k)))
 
73
                        ip[k] = random.choice(nexthop)
 
74
                        write('announce route %s next-hop %s med 1%02d as-path [ 100 101 102 103 104 105 106 107 108 109 110 ]' % (k,ip[k],len(k)))
 
75
                        if count % 100 == 0:
 
76
                                sys.stderr.write('updates : announced %d\n' % count)
 
77
 
 
78
 
 
79
                time.sleep(time.time()-now+1.0)
 
80
 
 
81
if __name__ == '__main__':
 
82
        try:
 
83
                main()
 
84
        except KeyboardInterrupt:
 
85
                pass