9 import functest.utils.functest_logger as ft_logger
15 repos = "/home/opnfv/repos/"
16 odl_test_repo = repos + "odl_test/"
17 neutron_suite_dir = odl_test_repo + "csit/suites/openstack/neutron/"
18 basic_suite_dir = odl_test_repo + "csit/suites/integration/basic/"
19 logger = ft_logger.Logger("opendaylight").getLogger()
22 def copy_opnf_testcases(cls):
23 opnfv_testcases_dir = (os.path.dirname(os.path.abspath(__file__)) +
24 "/custom_tests/neutron/")
25 files = [opnfv_testcases_dir + "001__reachability.robot",
26 opnfv_testcases_dir + "040__delete_ports.robot",
27 opnfv_testcases_dir + "050__delete_subnets.robot",
28 opnfv_testcases_dir + "060__delete_networks.robot"]
31 shutil.copy(f, cls.neutron_suite_dir)
34 "Cannot copy OPNFV's testcases to ODL directory", e)
39 def set_robotframework_vars(cls, odlusername="admin", odlpassword="admin"):
40 odl_variables_files = cls.odl_test_repo + 'csit/variables/Variables.py'
42 cls.logger.debug(cls.neutron_suite_dir + '__init__.robot')
43 for line in fileinput.input(odl_variables_files,
45 print re.sub("AUTH = .*",
46 ("AUTH = [u'" + odlusername + "', u'" +
50 except Exception as e:
51 cls.logger.error("Cannot set ODL creds", e)
55 def run(cls, **kwargs):
56 dirs = [cls.basic_suite_dir, cls.neutron_suite_dir]
58 odlusername = kwargs['odlusername']
59 odlpassword = kwargs['odlpassword']
60 variables = ['KEYSTONE:' + kwargs['keystoneip'],
61 'NEUTRON:' + kwargs['neutronip'],
62 'OSUSERNAME:"' + kwargs['osusername'] + '"',
63 'OSTENANTNAME:"' + kwargs['ostenantname'] + '"',
64 'OSPASSWORD:"' + kwargs['ospassword'] + '"',
65 'ODL_SYSTEM_IP:' + kwargs['odlip'],
66 'PORT:' + kwargs['odlwebport'],
67 'RESTCONFPORT:' + kwargs['odlrestconfport']]
69 cls.logger.error("Cannot run ODL testcases. Please check", e)
71 res_dir = '/home/opnfv/functest/results/odl/'
72 if (cls.copy_opnf_testcases() and
73 cls.set_robotframework_vars(odlusername, odlpassword)):
78 stdout_file = res_dir + 'stdout.txt'
79 with open(stdout_file, 'w') as stdout:
80 result = run(*dirs, variable=variables,
81 output=res_dir + 'output.xml',
82 log=res_dir + 'log.html',
83 report=res_dir + 'report.html',
86 with open(stdout_file, 'r') as stdout:
87 cls.logger.info("\n" + stdout.read())
94 if __name__ == '__main__':
95 parser = argparse.ArgumentParser()
96 parser.add_argument('-k', '--keystoneip',
99 parser.add_argument('-n', '--neutronip',
102 parser.add_argument('-a', '--osusername',
103 help='Username for OpenStack',
105 parser.add_argument('-b', '--ostenantname',
106 help='Tenantname for OpenStack',
108 parser.add_argument('-c', '--ospassword',
109 help='Password for OpenStack',
111 parser.add_argument('-o', '--odlip',
112 help='OpenDaylight IP',
114 parser.add_argument('-w', '--odlwebport',
115 help='OpenDaylight Web Portal Port',
117 parser.add_argument('-r', '--odlrestconfport',
118 help='OpenDaylight RESTConf Port',
120 parser.add_argument('-d', '--odlusername',
121 help='Username for ODL',
123 parser.add_argument('-e', '--odlpassword',
124 help='Password for ODL',
126 args = vars(parser.parse_args())
127 sys.exit(ODLTestCases.run(**args))