1 ##############################################################################
2 # Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
17 cmd = cmd + str(arg) + ' '
26 self.tclsh = Tkinter.Tcl()
27 self.stcpkg = '/home/Spirent_TestCenter_4.46/Spirent_TestCenter_Application_Linux'
29 "set auto_path [ linsert $auto_path 0 %s ]" %
31 self.tclsh.eval("package require SpirentTestCenter")
33 def build_cmd(self, *args):
36 cmd = cmd + str(arg) + ' '
39 # [ stc base interface ]
40 def stc_init(self, *args):
41 cmd = build_cmd('stc::init', *args)
42 return self.tclsh.eval(cmd)
45 def stc_connect(self, *args):
46 cmd = build_cmd('stc::connect', *args)
47 return self.tclsh.eval(cmd)
50 def stc_disconnect(self, *args):
51 cmd = build_cmd('stc::disconnect', *args)
52 return self.tclsh.eval(cmd)
55 def stc_create(self, *args):
56 cmd = build_cmd('stc::create', *args)
57 return self.tclsh.eval(cmd)
60 def stc_delete(self, *args):
61 cmd = build_cmd('stc::delete', *args)
62 return self.tclsh.eval(cmd)
65 def stc_config(self, *args):
66 cmd = build_cmd('stc::config', *args)
67 return self.tclsh.eval(cmd)
70 def stc_get(self, *args):
71 cmd = build_cmd('stc::get', *args)
72 return self.tclsh.eval(cmd)
75 def stc_apply(self, *args):
76 cmd = build_cmd('stc::apply', *args)
77 return self.tclsh.eval(cmd)
80 def stc_perform(self, *args):
81 cmd = build_cmd('stc::perform', *args)
82 return self.tclsh.eval(cmd)
85 def stc_reserve(self, *args):
86 cmd = build_cmd('stc::reserve', *args)
87 return self.tclsh.eval(cmd)
90 def stc_release(self, *args):
91 cmd = build_cmd('stc::release', *args)
92 return self.tclsh.eval(cmd)
95 def stc_subscribe(self, *args):
96 cmd = build_cmd('stc::subscribe', *args)
97 return self.tclsh.eval(cmd)
100 def stc_unsubscribe(self, *args):
101 cmd = build_cmd('stc::unsubscribe', *args)
102 return self.tclsh.eval(cmd)
103 # stc wait until sequencer complete
105 def stc_waituntilcomplete(self, *args):
106 cmd = build_cmd('stc::waituntilcomplete', *args)
107 return self.tclsh.eval(cmd)
110 def stc_help(self, *args):
111 cmd = build_cmd('stc::help', *args)
112 return self.tclsh.eval(cmd)
114 # [ stc expand interface ]
115 # get one dict-key's value
117 def stc_get_value(self, stc_dict, stc_key):
118 cmd = stc_dict + ' -' + stc_key
119 return self.stc_get(cmd)
121 # return: project_name
123 def stc_create_project(self):
124 return self.stc_create('project')
125 # create port under project
128 def stc_create_port(self, project_name):
129 cmd = 'port -under ' + project_name
130 return self.stc_create(cmd)
131 # config port location
134 def stc_config_port_location(self, port_name, chassisAddress, slot, port):
137 cmd = port_name + ' -location //' + chassisAddress + \
138 '/' + slot + '/' + port + ' -UseDefaultHost False'
139 return self.stc_config(cmd)
140 # create streamblock under port
141 # return: streamblock name
143 def stc_create_streamblock(
154 if vlan_tag is None or vlan_tag == 'None':
155 frameStruc = '"EthernetII IPv4 Udp"'
156 if ExpectedRxPort == '':
157 return self.stc_create(
158 'streamBlock -under ',
162 '-frame "EthernetII.srcMac',
172 return self.stc_create(
173 'streamBlock -under ',
179 '-frame "EthernetII.srcMac',
189 frameStruc = '"EthernetII Vlan IPv4 Udp"'
190 if ExpectedRxPort == '':
191 return self.stc_create(
192 'streamBlock -under ',
196 '-frame "EthernetII.srcMac',
208 return self.stc_create(
209 'streamBlock -under ',
215 '-frame "EthernetII.srcMac',
226 # config streamblock with part arguments
227 # argument list use args dictionary
229 def stc_config_streamblock(self, streamblock_name, args_dict):
231 for key in args_dict.keys():
232 temp_cmd = '-' + key + ' ' + str(args_dict[key])
234 return self.stc_config(streamblock_name, cmd)
235 # get generator name from port name
236 # return: generator name
238 def stc_get_generator(self, port_name):
239 cmd = port_name + ' -children-generator'
240 return self.stc_get(cmd)
241 # config generator with part arguments
242 # argument list use args dictionary
245 def stc_config_generator(self, generator_name, args_dict):
247 for key in args_dict.keys():
248 temp_cmd = '-' + key + ' ' + str(args_dict[key])
250 return self.stc_config(generator_name, cmd)
252 # return: port's parent project info
254 def stc_attach_ports(self, portList):
255 cmd = 'AttachPorts -portList {'
256 for port in portList:
257 cmd = cmd + ' ' + port
258 cmd = cmd + '} -autoConnect TRUE'
259 return self.stc_perform(cmd)
260 # config src mac and dst mac
263 def stc_config_ethII(self, ethII, src_mac, dst_mac):
264 cmd = ethII + ' -srcMac ' + src_mac + ' -dstMac ' + dst_mac
265 return self.stc_config(cmd)
266 # config src ip and dst ip
269 def stc_config_ethIII(self, ethIII, src_ip, dst_ip):
270 cmd = ethIII + ' -sourceAddr ' + src_ip + ' -destAddr ' + dst_ip
271 return self.stc_config(cmd)
275 def stc_streamblock_start(self, streamblock_list):
276 cmd = 'StreamBlockStart -StreamBlockList {'
277 for streamblock in streamblock_list:
278 cmd = cmd + ' ' + streamblock
279 cmd = cmd + ' } -ExecuteSynchronous TRUE'
280 return self.stc_perform(cmd)
283 def stc_streamblock_stop(self, streamblock_list):
284 cmd = 'StreamBlockStop -StreamBlockList {'
285 for streamblock in streamblock_list:
286 cmd = cmd + ' ' + streamblock
287 cmd = cmd + ' } -ExecuteSynchronous TRUE'
288 return self.stc_perform(cmd)
292 def stc_generator_start(self, generator_List):
293 cmd = 'GeneratorStart -generatorList {'
294 for generator in generator_List:
295 cmd = cmd + ' ' + generator
297 return self.stc_perform(cmd)
301 def stc_generator_stop(self, generator_List):
302 cmd = 'GeneratorStop -generatorList {'
303 for generator in generator_List:
304 cmd = cmd + ' ' + generator
306 return self.stc_perform(cmd)
307 # create rfc2544 throughput test
309 def stc_setup_rfc2544_throughput(self):
311 # create rfc2544 frameloss test
313 def stc_setup_rfc2544_frameloss(self):
315 # create rfc2544 latency test
317 def stc_setup_rfc2544_latency(self):
319 # start Sequence start
321 def stc_sequence_start(self):
322 return self.stc_perform('SequencerStart')
323 # output rfc2544 throughput result
325 def stc_get_rfc2544_throughput_result(self):
327 # output rfc2544 frameloss result
329 def stc_get_rfc2544_frameloss_result(self):
331 # output rfc2544 latency result
333 def stc_get_rfc2544_latency_result(self):