1 | # To run with default defProperty values:
|
---|
2 | # > omf-5.4 exec dsc-wildcard.rb
|
---|
3 | # To override defProperty values from command line:
|
---|
4 | # > omf-5.4 exec dsc-wildcard.rb -- --team1 dsc-teamA --team2 dsc-teamC --runtime 20
|
---|
5 | defProperty('team1','dsc-teamA','Team 1 nodes')
|
---|
6 | defProperty('team2','dsc-teamB','Team 2 nodes')
|
---|
7 |
|
---|
8 | defProperty('freq', '1700000000', "Center frequency")
|
---|
9 | defProperty('server', 'localhost', "name of pkt server")
|
---|
10 | defProperty('port', '5123', "pkt server port")
|
---|
11 | defProperty('runtime', 100, "Run time (s)")
|
---|
12 |
|
---|
13 | # Two topologies for the competitive tournament
|
---|
14 |
|
---|
15 | team1 = Topology["system:topo:#{property.team1}"]
|
---|
16 | team2 = Topology["system:topo:#{property.team2}"]
|
---|
17 |
|
---|
18 | defApplication('test:app:bot1_rx', 'bot1_rx.py') { |a|
|
---|
19 | a.version(2, 0, 4)
|
---|
20 | a.shortDescription = ""
|
---|
21 | a.description = ""
|
---|
22 | a.path = "export LC_ALL=C;/root/gnuradio/gr-digital/examples/narrowband/bot1_rx.py"
|
---|
23 | a.defProperty('args', "Argument list", nil,
|
---|
24 | {:dynamic => false, :type => :string})
|
---|
25 | a.defProperty('freq', "center frequency in Hz", '-f',
|
---|
26 | {:dynamic => false, :type => :string})
|
---|
27 | a.defProperty('rx-gain', "receive gain in dB", '--rx-gain',
|
---|
28 | {:dynamic => false, :type => :string})
|
---|
29 | a.defProperty('bitrate', "specify bitrate", '-r',
|
---|
30 | {:dynamic => false, :type => :string})
|
---|
31 | a.defProperty('modulation', "modulation: psk, cpm, qpsk, dqpsk, gfsk,qam, dbpsk, bpsk, gmsk [default=psk]", '-m',
|
---|
32 | {:dynamic => false, :type => :string})
|
---|
33 | a.defProperty('constellation-points', "set constellation - power of two for psk, power of 4 for QAM [default=16]", '-p',
|
---|
34 | {:dynamic => false, :type => :string})
|
---|
35 | a.defProperty('server', "server adress", '-s',
|
---|
36 | {:dynamic => false, :type => :string})
|
---|
37 | a.defProperty('port', "port number", '-o',
|
---|
38 | {:dynamic => false, :type => :string})
|
---|
39 | }
|
---|
40 |
|
---|
41 | defApplication('test:app:bot1_tx', 'bot1_tx.py') { |a|
|
---|
42 | a.version(2, 0, 4)
|
---|
43 | a.shortDescription = ""
|
---|
44 | a.description = ""
|
---|
45 | a.path = "export LC_ALL=C;/root/gnuradio/gr-digital/examples/narrowband/bot1_tx.py"
|
---|
46 | a.defProperty('args', "Argument list", nil,
|
---|
47 | {:dynamic => false, :type => :string})
|
---|
48 | a.defProperty('freq', "center frequency in Hz", '-f',
|
---|
49 | {:dynamic => false, :type => :string})
|
---|
50 | a.defProperty('tx-gain', "transmit gain in dB", '--tx-gain',
|
---|
51 | {:dynamic => false, :type => :string})
|
---|
52 | a.defProperty('tx-amplitude', "transmitter digital amplitude [0,1) [default=0.25]", '--tx-amplitude',
|
---|
53 | {:dynamic => false, :type => :string})
|
---|
54 | a.defProperty('bitrate', "specify bitrate", '-r',
|
---|
55 | {:dynamic => false, :type => :string})
|
---|
56 | a.defProperty('modulation', "modulation: psk, cpm, qpsk, dqpsk, gfsk,qam, dbpsk, bpsk, gmsk [default=psk]", '-m',
|
---|
57 | {:dynamic => false, :type => :string})
|
---|
58 | a.defProperty('constellation-points', "set constellation - power of two for psk, power of 4 for QAM [default=16]", '-p',
|
---|
59 | {:dynamic => false, :type => :string})
|
---|
60 | a.defProperty('server', "server adress", '-s',
|
---|
61 | {:dynamic => false, :type => :string})
|
---|
62 | a.defProperty('port', "port number", '-o',
|
---|
63 | {:dynamic => false, :type => :string})
|
---|
64 | a.defProperty('burst', "number of packets in each burst", '-b',
|
---|
65 | {:dynamic => false, :type => :string})
|
---|
66 | a.defProperty('sleep', "msec between bursts", '-t',
|
---|
67 | {:dynamic => false, :type => :string})
|
---|
68 | }
|
---|
69 |
|
---|
70 | defGroup('rx_node1', team1.getNodeByIndex(0).to_s ) { |n|
|
---|
71 | n.addApplication('test:app:bot1_rx') { |app|
|
---|
72 | app.setProperty('freq', property.freq)
|
---|
73 | app.setProperty('rx-gain','30')
|
---|
74 | app.setProperty('modulation','bpsk')
|
---|
75 | app.setProperty('bitrate','1.25M')
|
---|
76 | app.setProperty('server','10.10.0.10')
|
---|
77 | app.setProperty('port','5125')
|
---|
78 | }
|
---|
79 | }
|
---|
80 |
|
---|
81 | defGroup('tx_node1', team1.getNodeByIndex(1).to_s ) { |n|
|
---|
82 | n.addApplication('test:app:bot1_tx') { |app|
|
---|
83 | app.setProperty('freq', property.freq)
|
---|
84 | app.setProperty('tx-gain','30')
|
---|
85 | app.setProperty('modulation','bpsk')
|
---|
86 | app.setProperty('bitrate','1.25M')
|
---|
87 | app.setProperty('tx-amplitude','0.5')
|
---|
88 | app.setProperty('server','10.10.0.10')
|
---|
89 | app.setProperty('port','5123')
|
---|
90 | app.setProperty('burst','100')
|
---|
91 | app.setProperty('sleep','1000')
|
---|
92 | }
|
---|
93 | }
|
---|
94 |
|
---|
95 | defGroup('rx_node2', team2.getNodeByIndex(0).to_s ) { |n|
|
---|
96 | n.addApplication('test:app:bot1_rx') { |app|
|
---|
97 | app.setProperty('freq', property.freq)
|
---|
98 | app.setProperty('rx-gain','30')
|
---|
99 | app.setProperty('modulation','dqpsk')
|
---|
100 | app.setProperty('bitrate','2.5M')
|
---|
101 | app.setProperty('server','10.10.0.10')
|
---|
102 | app.setProperty('port','5125')
|
---|
103 | }
|
---|
104 | }
|
---|
105 |
|
---|
106 | defGroup('tx_node2', team2.getNodeByIndex(1).to_s ) { |n|
|
---|
107 | n.addApplication('test:app:bot1_tx') { |app|
|
---|
108 | app.setProperty('freq', property.freq)
|
---|
109 | app.setProperty('tx-gain','30')
|
---|
110 | app.setProperty('modulation','dqpsk')
|
---|
111 | app.setProperty('bitrate','2.5M')
|
---|
112 | app.setProperty('tx-amplitude','0.5')
|
---|
113 | app.setProperty('server','10.10.0.10')
|
---|
114 | app.setProperty('port','5123')
|
---|
115 | app.setProperty('burst','100')
|
---|
116 | app.setProperty('sleep','2000')
|
---|
117 | }
|
---|
118 | }
|
---|
119 |
|
---|
120 | #onEvent(:ALL_UP) {
|
---|
121 | onEvent(:ALL_UP_AND_INSTALLED) { |event|
|
---|
122 | info "Give machines some time to warm up"
|
---|
123 | wait 1
|
---|
124 |
|
---|
125 | info "Start packet server"
|
---|
126 | consoleExec("/usr/local/bin/pkt_server_bot --port 5123 --duration #{property.runtime+5} --team1 #{property.team1} --team2 #{property.team2} &")
|
---|
127 |
|
---|
128 | wait 2
|
---|
129 | info "Start benchmark_rx,tx"
|
---|
130 | allGroups.startApplications
|
---|
131 |
|
---|
132 | wait 5
|
---|
133 | info "send signal to packet server to start serving packets"
|
---|
134 | consoleExec("/usr/local/bin/dsc_send_start.py &") # may be rename this signal
|
---|
135 |
|
---|
136 | wait property.runtime
|
---|
137 |
|
---|
138 | info "Stop eveything"
|
---|
139 | allGroups.stopApplications
|
---|
140 |
|
---|
141 | wait 2
|
---|
142 | consoleExec("ssh root@#{team1.getNodeByIndex(0).to_s} 'pkill python' ") # Just in case kill rx side
|
---|
143 | consoleExec("ssh root@#{team2.getNodeByIndex(0).to_s} 'pkill python' ") # Just in case kill rx side
|
---|
144 |
|
---|
145 | info "Finish it."
|
---|
146 | Experiment.done
|
---|
147 | }
|
---|