16 self.tclsh = Tkinter.Tcl()
17 self.stcpkg = '/home/Spirent_TestCenter_4.46/Spirent_TestCenter_Application_Linux'
18 self.tclsh.eval("set auto_path [ linsert $auto_path 0 %s ]" %(self.stcpkg))
19 self.tclsh.eval("package require SpirentTestCenter")
21 def build_cmd(self, *args):
24 cmd = cmd+str(arg)+' '
27 # [ stc base interface ]
28 def stc_init(self, *args):
29 cmd = build_cmd('stc::init', *args)
30 return self.tclsh.eval(cmd)
32 def stc_connect(self,*args):
33 cmd = build_cmd('stc::connect', *args)
34 return self.tclsh.eval(cmd)
36 def stc_disconnect(self,*args):
37 cmd = build_cmd('stc::disconnect', *args)
38 return self.tclsh.eval(cmd)
40 def stc_create(self,*args):
41 cmd = build_cmd('stc::create', *args)
42 return self.tclsh.eval(cmd)
44 def stc_delete(self,*args):
45 cmd = build_cmd('stc::delete', *args)
46 return self.tclsh.eval(cmd)
48 def stc_config(self,*args):
49 cmd = build_cmd('stc::config', *args)
50 return self.tclsh.eval(cmd)
52 def stc_get(self,*args):
53 cmd = build_cmd('stc::get', *args)
54 return self.tclsh.eval(cmd)
56 def stc_apply(self,*args):
57 cmd = build_cmd('stc::apply', *args)
58 return self.tclsh.eval(cmd)
60 def stc_perform(self,*args):
61 cmd = build_cmd('stc::perform', *args)
62 return self.tclsh.eval(cmd)
64 def stc_reserve(self,*args):
65 cmd = build_cmd('stc::reserve', *args)
66 return self.tclsh.eval(cmd)
68 def stc_release(self,*args):
69 cmd = build_cmd('stc::release', *args)
70 return self.tclsh.eval(cmd)
72 def stc_subscribe(self,*args):
73 cmd = build_cmd('stc::subscribe',*args)
74 return self.tclsh.eval(cmd)
76 def stc_unsubscribe(self,*args):
77 cmd = build_cmd('stc::unsubscribe', *args)
78 return self.tclsh.eval(cmd)
79 # stc wait until sequencer complete
80 def stc_waituntilcomplete(self,*args):
81 cmd = build_cmd('stc::waituntilcomplete', *args)
82 return self.tclsh.eval(cmd)
84 def stc_help(self, *args):
85 cmd = build_cmd('stc::help',*args)
86 return self.tclsh.eval(cmd)
88 # [ stc expand interface ]
89 # get one dict-key's value
91 def stc_get_value(self,stc_dict,stc_key):
92 cmd = stc_dict+' -'+stc_key
93 return self.stc_get(cmd)
95 # return: project_name
96 def stc_create_project(self):
97 return self.stc_create('project')
98 # create port under project
100 def stc_create_port(self,project_name):
101 cmd = 'port -under '+project_name
102 return self.stc_create(cmd)
103 # config port location
105 def stc_config_port_location(self,port_name,chassisAddress,slot,port):
108 cmd = port_name+' -location //'+chassisAddress+'/'+slot+'/'+port+' -UseDefaultHost False'
109 return self.stc_config(cmd)
110 # create streamblock under port
111 # return: streamblock name
112 def stc_create_streamblock(self,port_name,vlan_tag,ExpectedRxPort,srcMac,dstMac,sourceAddr,destAddr):
115 if vlan_tag == None or vlan_tag == 'None':
116 frameStruc = '"EthernetII IPv4 Udp"'
117 if ExpectedRxPort == '' :
118 return self.stc_create( 'streamBlock -under ',port_name,
119 '-frameConfig ',frameStruc,
120 '-frame "EthernetII.srcMac',srcMac,'EthernetII.dstMac',dstMac,
121 'IPv4.1.sourceAddr',sourceAddr,'IPv4.1.destAddr',destAddr,'"')
123 return self.stc_create( 'streamBlock -under ',port_name,
124 '-ExpectedRxPort',ExpectedRxPort,
125 '-frameConfig ',frameStruc,
126 '-frame "EthernetII.srcMac',srcMac,'EthernetII.dstMac',dstMac,
127 'IPv4.1.sourceAddr',sourceAddr,'IPv4.1.destAddr',destAddr,'"')
129 frameStruc = '"EthernetII Vlan IPv4 Udp"'
130 if ExpectedRxPort == '' :
131 return self.stc_create( 'streamBlock -under ',port_name,
132 '-frameConfig '+frameStruc,
133 '-frame "EthernetII.srcMac',srcMac,'EthernetII.dstMac',dstMac,
134 'Vlan.1.id',vlan_tag,
135 'IPv4.1.sourceAddr',sourceAddr,'IPv4.1.destAddr',destAddr,'"')
137 return self.stc_create( 'streamBlock -under ',port_name,
138 '-ExpectedRxPort',ExpectedRxPort,
139 '-frameConfig '+frameStruc,
140 '-frame "EthernetII.srcMac',srcMac,'EthernetII.dstMac',dstMac,
141 'Vlan.1.id',vlan_tag,
142 'IPv4.1.sourceAddr',sourceAddr,'IPv4.1.destAddr',destAddr,'"')
143 # config streamblock with part arguments
144 # argument list use args dictionary
145 def stc_config_streamblock(self,streamblock_name,args_dict):
147 for key in args_dict.keys() :
148 temp_cmd = '-'+key+' '+str(args_dict[key])
150 return self.stc_config(streamblock_name,cmd)
151 # get generator name from port name
152 # return: generator name
153 def stc_get_generator(self,port_name):
154 cmd = port_name+' -children-generator'
155 return self.stc_get(cmd)
156 # config generator with part arguments
157 # argument list use args dictionary
159 def stc_config_generator(self,generator_name,args_dict):
161 for key in args_dict.keys() :
162 temp_cmd = '-'+key+' '+str(args_dict[key])
164 return self.stc_config(generator_name,cmd)
166 # return: port's parent project info
167 def stc_attach_ports(self,portList):
168 cmd = 'AttachPorts -portList {'
169 for port in portList :
171 cmd = cmd+'} -autoConnect TRUE'
172 return self.stc_perform(cmd)
173 # config src mac and dst mac
175 def stc_config_ethII(self,ethII,src_mac,dst_mac):
176 cmd = ethII+' -srcMac '+src_mac+' -dstMac '+dst_mac
177 return self.stc_config(cmd)
178 # config src ip and dst ip
180 def stc_config_ethIII(self,ethIII,src_ip,dst_ip):
181 cmd = ethIII+' -sourceAddr '+src_ip+' -destAddr '+dst_ip
182 return self.stc_config(cmd)
185 def stc_streamblock_start(self,streamblock_list):
186 cmd = 'StreamBlockStart -StreamBlockList {'
187 for streamblock in streamblock_list :
188 cmd = cmd+' '+streamblock
189 cmd = cmd+' } -ExecuteSynchronous TRUE'
190 return self.stc_perform(cmd)
192 def stc_streamblock_stop(self,streamblock_list):
193 cmd = 'StreamBlockStop -StreamBlockList {'
194 for streamblock in streamblock_list :
195 cmd = cmd+' '+streamblock
196 cmd = cmd+' } -ExecuteSynchronous TRUE'
197 return self.stc_perform(cmd)
200 def stc_generator_start(self,generator_List):
201 cmd = 'GeneratorStart -generatorList {'
202 for generator in generator_List :
203 cmd = cmd+' '+generator
205 return self.stc_perform(cmd)
208 def stc_generator_stop(self,generator_List):
209 cmd = 'GeneratorStop -generatorList {'
210 for generator in generator_List :
211 cmd = cmd+' '+generator
213 return self.stc_perform(cmd)
214 # create rfc2544 throughput test
215 def stc_setup_rfc2544_throughput(self):
217 # create rfc2544 frameloss test
218 def stc_setup_rfc2544_frameloss(self):
220 # create rfc2544 latency test
221 def stc_setup_rfc2544_latency(self):
223 # start Sequence start
224 def stc_sequence_start(self):
225 return self.stc_perform('SequencerStart')
226 # output rfc2544 throughput result
227 def stc_get_rfc2544_throughput_result(self):
229 # output rfc2544 frameloss result
230 def stc_get_rfc2544_frameloss_result(self):
232 # output rfc2544 latency result
233 def stc_get_rfc2544_latency_result(self):