3b073cbf7ff6d0f7db2d1c4da5c4701a67a7050f
[bottlenecks.git] / vstf / vstf / agent / spirent / spirent.py
1 #!/usr/bin/python
2 import Tkinter
3
4
5 def build_cmd(*args):
6     cmd = ''
7     for arg in args:
8         cmd = cmd+str(arg)+' '
9     #import pdb
10     #pdb.set_trace()
11     return cmd
12
13
14 class stcPython():
15     def __init__(self):
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")
20         
21     def build_cmd(self, *args):
22         cmd = ''
23         for arg in args:
24             cmd = cmd+str(arg)+' '
25         return cmd
26
27     # [ stc base interface ]
28     def stc_init(self, *args):
29         cmd = build_cmd('stc::init', *args)
30         return self.tclsh.eval(cmd)
31     # stc connect
32     def stc_connect(self,*args):
33         cmd = build_cmd('stc::connect', *args)
34         return self.tclsh.eval(cmd)
35     # stc disconnect
36     def stc_disconnect(self,*args):
37         cmd = build_cmd('stc::disconnect', *args)
38         return self.tclsh.eval(cmd)
39     # stc create
40     def stc_create(self,*args):
41         cmd = build_cmd('stc::create', *args)
42         return self.tclsh.eval(cmd)
43     # stc delete
44     def stc_delete(self,*args):
45         cmd = build_cmd('stc::delete', *args)
46         return self.tclsh.eval(cmd)
47     # stc config
48     def stc_config(self,*args):
49         cmd = build_cmd('stc::config', *args)
50         return self.tclsh.eval(cmd)
51     # stc get
52     def stc_get(self,*args):
53         cmd = build_cmd('stc::get', *args)
54         return self.tclsh.eval(cmd)
55     # stc apply
56     def stc_apply(self,*args):
57         cmd = build_cmd('stc::apply', *args)
58         return self.tclsh.eval(cmd)
59     # stc perform
60     def stc_perform(self,*args):
61         cmd = build_cmd('stc::perform', *args)
62         return self.tclsh.eval(cmd)
63     # stc reserve
64     def stc_reserve(self,*args):
65         cmd = build_cmd('stc::reserve', *args)
66         return self.tclsh.eval(cmd)
67     # stc release
68     def stc_release(self,*args):
69         cmd = build_cmd('stc::release', *args)
70         return self.tclsh.eval(cmd)
71     # stc subscribe
72     def stc_subscribe(self,*args):
73         cmd = build_cmd('stc::subscribe',*args)
74         return self.tclsh.eval(cmd)
75     # stc unsubscribe
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)
83     # stc help
84     def stc_help(self, *args):
85         cmd = build_cmd('stc::help',*args)
86         return self.tclsh.eval(cmd)
87
88     # [ stc expand interface ]
89     # get one dict-key's value
90     # return value
91     def stc_get_value(self,stc_dict,stc_key):
92         cmd = stc_dict+' -'+stc_key
93         return self.stc_get(cmd)
94     # create project
95     # return: project_name
96     def stc_create_project(self):
97         return self.stc_create('project')
98     # create port under project
99     # return: port name
100     def stc_create_port(self,project_name):
101         cmd = 'port -under '+project_name
102         return self.stc_create(cmd)
103     # config port location
104     # return: None
105     def stc_config_port_location(self,port_name,chassisAddress,slot,port):
106         #import pdb
107         #pdb.set_trace()
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):
113         #import pdb
114         #pdb.set_trace()
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,'"')
122             else :
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,'"')
128         else :
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,'"')
136             else :
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):
146         cmd = ''
147         for key in args_dict.keys() :
148             temp_cmd = '-'+key+' '+str(args_dict[key])
149             cmd = cmd + temp_cmd
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
158     # return none
159     def stc_config_generator(self,generator_name,args_dict):
160         cmd = ''
161         for key in args_dict.keys() :
162             temp_cmd = '-'+key+' '+str(args_dict[key])
163             cmd = cmd + temp_cmd
164         return self.stc_config(generator_name,cmd)
165     # attach port
166     # return: port's parent project info
167     def stc_attach_ports(self,portList):
168         cmd = 'AttachPorts -portList {'
169         for port in portList :
170             cmd = cmd+' '+port
171         cmd = cmd+'} -autoConnect TRUE'
172         return self.stc_perform(cmd)
173     # config src mac and dst mac
174     # return: none
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
179     # return: none
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)
183     # start streamblock
184     # return: none
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)
191     # stop streamblock
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)
198     # start generator
199     # return: none
200     def stc_generator_start(self,generator_List):
201         cmd = 'GeneratorStart -generatorList {'
202         for generator in generator_List :
203             cmd = cmd+' '+generator
204         cmd = cmd+' }'
205         return self.stc_perform(cmd)
206     # stop generator
207     # return: none
208     def stc_generator_stop(self,generator_List):
209         cmd = 'GeneratorStop -generatorList {'
210         for generator in generator_List :
211             cmd = cmd+' '+generator
212         cmd = cmd+' }'
213         return self.stc_perform(cmd)
214     # create rfc2544 throughput test
215     def stc_setup_rfc2544_throughput(self):
216         pass
217     # create rfc2544 frameloss test
218     def stc_setup_rfc2544_frameloss(self):
219         pass
220     # create rfc2544 latency test
221     def stc_setup_rfc2544_latency(self):
222         pass
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):
228         pass
229     # output rfc2544 frameloss result
230     def stc_get_rfc2544_frameloss_result(self):
231         pass
232     # output rfc2544 latency result
233     def stc_get_rfc2544_latency_result(self):
234         pass