adding TestON
diff --git a/TestON/drivers/common/api/fvtapidriver.py b/TestON/drivers/common/api/fvtapidriver.py
new file mode 100644
index 0000000..620b3e9
--- /dev/null
+++ b/TestON/drivers/common/api/fvtapidriver.py
@@ -0,0 +1,186 @@
+#!/usr/bin/env python
+'''
+Created on 26-Oct-2012
+
+@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
+
+
+ TestON is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ TestON is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with TestON. If not, see <http://www.gnu.org/licenses/>.
+
+
+fvtapidriver is the basic driver which will handle the fvtapidriver functions
+'''
+'''
+There are two changes required in flowvisor-test framework :
+
+1. In ~/flowvisortests/tests/templatetest.py line : 15 comment 'basic_logger = None'
+2. In ~/flowvisortests/tests/testutils.py line : 50 specify config file path CONFIG_FILE = "~/flowvisor-test/tests/tests-base.json"
+
+'''
+import pexpect
+import struct
+import fcntl
+import os
+import signal
+import re
+import sys
+sys.path.append("../")
+from common.apidriver import API
+import logging
+
+sys.path.append(path+"/lib/flowvisor-test/tests")
+sys.path.append(path+"/lib/flowvisor-test/src/python/")
+
+import templatetest
+import testutils
+import oftest.cstruct as ofp
+import oftest.message as message
+import oftest.parse as parse
+import oftest.action as action
+import oftest.error as error
+import socket
+import __builtin__
+
+config_default = {
+ "param" : None,
+ "fv_cmd" : "/home/openflow/flowvisor/scripts/flowvisor.sh",
+ "platform" : "local",
+ "controller_host" : "127.0.0.1",
+ "controller_port" : 6633,
+ "timeout" : 3,
+ "port_count" : 4,
+ "base_of_port" : 1,
+ "base_if_index" : 1,
+ "test_spec" : "all",
+ "test_dir" : ".",
+ "log_file" : "/home/openflow/fvt.log",
+ "list" : False,
+ "debug" : "debug",
+ "dbg_level" : logging.DEBUG,
+ "port_map" : {},
+ "test_params" : "None"
+}
+
+def test_set_init(config):
+ """
+ Set up function for basic test classes
+ @param config The configuration dictionary; see fvt
+ """
+ global basic_port_map
+ global basic_fv_cmd
+ global basic_logger
+ global basic_timeout
+ global basic_config
+ global baisc_logger
+
+ basic_fv_cmd = config["fv_cmd"]
+ basic_timeout = config["timeout"]
+ basic_port_map = config["port_map"]
+ basic_config = config
+
+class FvtApiDriver(API,templatetest.TemplateTest):
+
+ def __init__(self):
+ super(API, self).__init__()
+ print 'init'
+
+
+ def connect(self,**connectargs):
+ for key in connectargs:
+ vars(self)[key] = connectargs[key]
+
+ self.name = self.options['name']
+ connect_result = super(API,self).connect()
+ self.logFileName = main.logdir+"/"+self.name+".session"
+ config_default["log_file"] = self.logFileName
+ test_set_init(config_default)
+ __builtin__.basic_logger = vars(main)[self.name+'log']
+ __builtin__.basic_logger.info("Calling my test setup")
+ self.setUp(basic_logger)
+
+ (self.fv, self.sv, sv_ret, ctl_ret, sw_ret) = testutils.setUpTestEnv(self, fv_cmd=basic_fv_cmd)
+
+ self.chkSetUpCondition(self.fv, sv_ret, ctl_ret, sw_ret)
+ return main.TRUE
+
+ def simplePacket(self,dl_src):
+ dl_src = vars(testutils)[dl_src]
+ return testutils.simplePacket(dl_src = dl_src)
+
+ def genPacketIn(self, in_port, pkt):
+ return testutils.genPacketIn(in_port=in_port, pkt=pkt)
+
+ def ofmsgSndCmp(self, snd_list, exp_list, xid_ignore=True, hdr_only=True):
+ return testutils.ofmsgSndCmp(self, snd_list, exp_list, xid_ignore, hdr_only)
+
+ def setRule(self,sv,rule,num_try) :
+ return testutils.setRule(self,sv,rule,num_try)
+
+ def chkFlowdb(self,controller_number,switch_number,exp_count,exp_rewrites) :
+ return testutils.chkFlowdb(self,controller_number,switch_number,exp_count,exp_rewrites)
+
+ def chkSwitchStats(self, switch_number, ofproto, exp_snd_count, exp_rcv_count):
+ return testutils.chkSwitchStats(self, switch_number, ofproto, exp_snd_count, exp_rcv_count)
+
+ def chkSliceStats(self,controller_number,ofproto,exp_snd_count,exp_rcv_count) :
+ return testutils.chkSliceStats(self,controller_number,ofproto,exp_snd_count,exp_rcv_count)
+
+ def recvStats(self,swId,typ) :
+ return testutils.recvStats(self,swId,typ)
+
+ def ofmsgSndCmpWithXid(self,snd_list,exp_list,xid_ignore,hdr_only) :
+ return testutils.ofmsgSndCmpWithXid(self,snd_list,exp_list,xid_ignore,hdr_only)
+
+ def genPacketOut(self,xid,buffer_id,in_port,action_ports,pkt) :
+ return testutils.genPacketOut(self,xid,buffer_id,in_port,action_ports,pkt)
+
+ def genFlowModFlush(self) :
+ return testutils.genFlowModFlush()
+
+ def genPhyPort(self,name,addr,port_no) :
+ return testutils.genPhyPort(name,addr,port_no)
+
+ def disconnect(self,handle):
+ response = ''
+ '''
+ if self.handle:
+ self.handle = handle
+ response = self.execute(cmd="exit",prompt="(.*)",timeout=120)
+ else :
+ main.log.error("Connection failed to the host")
+ response = main.FALSE
+ '''
+ return response
+
+ def setUp(self,basic_logger):
+ self.logger = basic_logger
+ #basic_logger.info("** START TEST CASE " + str(self))
+ if basic_timeout == 0:
+ self.timeout = None
+ else:
+ self.timeout = basic_timeout
+ self.fv = None
+ self.sv = None
+ self.controllers = []
+ self.switches = []
+
+ def close_log_handles(self) :
+ self.tearDown()
+ vars(main)[self.name+'log'].removeHandler(self.log_handler)
+ #if self.logfile_handler:
+ # self.logfile_handler.close()
+
+ return main.TRUE
+
+