From 6790e17eb7c1a3eaaccfe97ac90932e3c15eea6d Mon Sep 17 00:00:00 2001 From: "jose.lausuch" Date: Wed, 4 May 2016 11:47:40 +0200 Subject: Refactor improvements JIRA: FUNCTEST-190 - Deleted unnecessary old scripts - Fixed healtcheck logging - Moved config_functest.yaml to /ci/ - Created env var CONFIG_FUNCTEST_YAML pointing to that new location - Modified all scripts which open config_functest.yaml using the new env var Change-Id: Ic4f0e40a70c02ac08287a1d621956f602bdee177 Signed-off-by: jose.lausuch --- ci/config_functest.yaml | 241 ++++++++++++++++++++++++++++++++++++++++++++++++ ci/exec_test.sh | 5 +- ci/prepare_env.py | 4 +- ci/run_tests.py | 25 +++-- ci/testcases.yaml | 57 ++++++------ 5 files changed, 286 insertions(+), 46 deletions(-) create mode 100644 ci/config_functest.yaml (limited to 'ci') diff --git a/ci/config_functest.yaml b/ci/config_functest.yaml new file mode 100644 index 00000000..e463df20 --- /dev/null +++ b/ci/config_functest.yaml @@ -0,0 +1,241 @@ +general: + directories: + # Relative to the path where the repo is cloned: + dir_vping: testcases/vPing/CI/libraries/ + dir_odl: testcases/Controllers/ODL/CI/ + dir_rally: testcases/VIM/OpenStack/CI/libraries/ + dir_rally_scn: testcases/VIM/OpenStack/CI/rally_cert/ + dir_tempest_cases: testcases/VIM/OpenStack/CI/custom_tests/ + dir_vIMS: testcases/vIMS/CI/ + dir_onos: testcases/Controllers/ONOS/Teston/CI/ + + # Absolute path + dir_repos: /home/opnfv/repos + dir_repo_functest: /home/opnfv/repos/functest + dir_repo_rally: /home/opnfv/repos/rally + dir_repo_tempest: /home/opnfv/repos/tempest + dir_repo_releng: /home/opnfv/repos/releng + dir_repo_vims_test: /home/opnfv/repos/vims-test + dir_repo_bgpvpn: /home/opnfv/repos/bgpvpn + dir_repo_onos: /home/opnfv/repos/onos + dir_repo_promise: /home/opnfv/repos/promise + dir_repo_doctor: /home/opnfv/repos/doctor + dir_repo_ovno: /home/opnfv/repos/ovno + dir_functest: /home/opnfv/functest + dir_results: /home/opnfv/functest/results + dir_functest_conf: /home/opnfv/functest/conf + dir_rally_res: /home/opnfv/functest/results/rally/ + dir_functest_data: /home/opnfv/functest/data + dir_vIMS_data: /home/opnfv/functest/data/vIMS + dir_rally_inst: /home/opnfv/.rally + + openstack: + image_name: functest-img + image_file_name: cirros-0.3.4-x86_64-disk.img + image_disk_format: qcow2 + + # Private network for functest. Will be created by config_functest.py + neutron_private_net_name: functest-net + neutron_private_subnet_name: functest-subnet + neutron_private_subnet_cidr: 192.168.120.0/24 + neutron_private_subnet_start: 192.168.120.2 + neutron_private_subnet_end: 192.168.120.254 + neutron_private_subnet_gateway: 192.168.120.254 + neutron_router_name: functest-router + +vping: + ping_timeout: 200 + vm_flavor: m1.small # adapt to your environment + vm_name_1: opnfv-vping-1 + vm_name_2: opnfv-vping-2 + image_name: functest-vping + vping_private_net_name: vping-net + vping_private_subnet_name: vping-subnet + vping_private_subnet_cidr: 192.168.130.0/24 + vping_router_name: vping-router + vping_sg_name: vPing-sg + vping_sg_descr: Security group for vPing test case + +tempest: + identity: + tenant_name: tempest + tenant_description: Tenant for Tempest test suite + user_name: tempest + user_password: tempest + input-scenario: + ssh_user_regex: '[["^.*[Cc]irros.*$", "cirros"], ["^.*[Tt]est[VvMm].*$", "cirros"], ["^.*rally_verify.*$", "cirros"]]' + +rally: + deployment_name: opnfv-rally + +vIMS: + general: + tenant_name: vIMS + tenant_description: vIMS Functionality Testing + images: + ubuntu: + image_url: 'http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img' + image_name: ubuntu_14.04 + centos: + image_url: 'http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1510.qcow2' + image_name: centos_7 + cloudify: + blueprint: + url: https://github.com/boucherv-orange/cloudify-manager-blueprints.git + branch: "3.3-build" + requierments: + ram_min: 3000 + os_image: centos_7 + inputs: + keystone_username: "" + keystone_password: "" + keystone_tenant_name: "" + keystone_url: "" + manager_public_key_name: 'manager-kp' + agent_public_key_name: 'agent-kp' + image_id: "" + flavor_id: "3" + external_network_name: "" + ssh_user: centos + agents_user: ubuntu + clearwater: + blueprint: + file_name: 'openstack-blueprint.yaml' + name: "clearwater-opnfv" + destination_folder: "opnfv-cloudify-clearwater" + url: 'https://github.com/Orange-OpenSource/opnfv-cloudify-clearwater.git' + branch: "stable" + deployment-name: 'clearwater-opnfv' + requierments: + ram_min: 1700 + os_image: ubuntu_14.04 + inputs: + image_id: '' + flavor_id: '' + agent_user: 'ubuntu' + external_network_name: '' + public_domain: clearwater.opnfv +ONOS: + general: + onosbench_username: 'root' + onosbench_password: 'root' + onoscli_username: 'root' + onoscli_password: 'root' + runtimeout: 300 + environment: + OCT: '10.20.0.1' + OC1: '10.20.0.7' + OC2: '10.20.0.7' + OC3: '10.20.0.7' + OCN: '10.20.0.4' + OCN2: '10.20.0.5' + installer_master: '10.20.0.2' + installer_master_username: 'root' + installer_master_password: 'r00tme' + +promise: + general: + tenant_name: promise + tenant_description: promise Functionality Testing + user_name: promiser + user_pwd: test + image_name: promise-img + flavor_name: promise-flavor + flavor_vcpus: 1 + flavor_ram: 512 + flavor_disk: 0 + +results: + test_db_url: http://testresults.opnfv.org/testapi + +# to be maintained... +# the execution order is important as some tests may be more destructive than others +# and if vPing is failing is usually not needed to continue... +test_exec_priority: + 1: healthcheck + 2: vping_ssh + 3: vping_userdata + 4: tempest + 5: odl + 6: onos + 7: ovno + 8: doctor + 9: promise + 10: odl-vpnservice + 11: bgpvpn + #11: openstack-neutron-bgpvpn-api-extension-tests + 12: vims + 13: rally + + +######################################################################## +# This part lists the dependencies of the tests +# +# it is used to manage the complexity of the possible combinations +# +# 17 projects have been declared for Brahmaputra (D Milestone) +# 89 testcases are associated with these 17 projects +# +# in B-Release, Functest deals with 6 companion projects: +# - congress +# - doctor +# - ovno +# - policyTest +# - promise +# - sdnvpn +# +# constraints may be declared at the testcase or the test project level +# +# By default we consider that all the tests can be run on any configuration +# +# we defined 2 constraints +# - installer (e.g. my test can be run only with installer Compass) +# possible values: apex, compass, fuel, joid +# +# - the scenario: it described a specif installation +# os---[-] +# With parameters: +# controller=(nosdn|odl_l3|odl_l2|onos|ocl) +# No odl_l3 today +# nfvfeature=(kvm|ovs|dpdk|nofeature) +# '_' list separated. +# mode=(ha|noha) +# extrastuff=(none) +# Optional field - Not used today# +# +# ref:https://gerrit.opnfv.org/gerrit/#/c/6323/7/jjb/joid/joid-deploy.sh (L72-82) +# e.g my test is only possible with OVS 2.3.2 on odl +# +# in functest, we indicate the regex pattern to be checked towards the scenario +# e.g. odl-vpn_service-tests can be run if and only if +# - installer is fuel +# - scenario contains the name ovs and odl +# +####################################################################### +test-dependencies: + doctor: + installer: 'apex' + functest: + vims: + scenario: '(ocl)|(nosdn)|^(os-odl)((?!bgpvpn).)*$' + healthcheck: + vping_ssh: + scenario: '^((?!bgpvpn).)*$' + vping_userdata: + tempest: + rally: + odl: + scenario: 'odl' + onos: + scenario: 'onos' + promise: + installer: '(fuel)|(joid)' + ovno: + scenario: 'ocl' + policy-test: + scenario: 'odl' + sdnvpn: + bgpvpn: + installer: '(fuel)|(apex)' + scenario: 'bgpvpn' + # this execute the tempest tests of networking-bgpvpn diff --git a/ci/exec_test.sh b/ci/exec_test.sh index c0a6841c..f778a2fb 100755 --- a/ci/exec_test.sh +++ b/ci/exec_test.sh @@ -149,6 +149,9 @@ bgpvpn = True" >> /etc/tempest/tempest.conf "ovno") ${repos_dir}/ovno/Testcases/RunTests.sh ;; + *) + echo "The test case '${test_name}' does not exist." + exit 1 esac } @@ -183,7 +186,7 @@ done # Source credentials -echo "Sourcing Credentials ${FUNCTEST_CONF_DIR}/openstack.creds to run the tests.." +echo "Sourcing Credentials ${FUNCTEST_CONF_DIR}/openstack.creds to run the test.." source ${FUNCTEST_CONF_DIR}/openstack.creds diff --git a/ci/prepare_env.py b/ci/prepare_env.py index b462f963..520db44e 100644 --- a/ci/prepare_env.py +++ b/ci/prepare_env.py @@ -171,7 +171,7 @@ def source_rc_file(): logger.debug("Executing command: %s" % cmd) p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) output = p.communicate()[0] - logger.debug(output) + logger.debug("\n%s" % output) if p.returncode != 0: logger.error("Failed to fetch credentials from installer.") sys.exit(1) @@ -268,7 +268,7 @@ def main(): sys.exit() if args.action == "start": - print ("\n######### Preparing Functest environment #########\n") + logger.info("\n######### Preparing Functest environment #########\n") check_env_variables() create_directories() source_rc_file() diff --git a/ci/run_tests.py b/ci/run_tests.py index 10621440..5b930982 100644 --- a/ci/run_tests.py +++ b/ci/run_tests.py @@ -33,7 +33,7 @@ args = parser.parse_args() """ logging configuration """ -logger = ft_logger.Logger("run_test").getLogger() +logger = ft_logger.Logger("run_tests").getLogger() """ global variables """ @@ -48,7 +48,6 @@ def print_separator(str, count=45): line = "" for i in range(0, count - 1): line += str - logger.info("%s" % line) @@ -62,16 +61,11 @@ def source_rc_file(): def cleanup(): - print_separator("+") - logger.info("Cleaning OpenStack resources...") - print_separator("+") clean_os.main() - print_separator("") def run_test(test): test_name = test.get_name() - print_separator("") print_separator("=") logger.info("Running test case '%s'..." % test_name) print_separator("=") @@ -82,7 +76,6 @@ def run_test(test): cmd = ("%s%s" % (EXEC_SCRIPT, flags)) logger.debug("Executing command '%s'" % cmd) - print_separator("") p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) @@ -90,8 +83,9 @@ def run_test(test): line = p.stdout.readline().rstrip() logger.debug(line) - if p != 0: - logger.error("The command '%s' failed. Cleaning and exiting." % cmd) + if p.returncode != 0: + logger.error("The test case '%s' failed. Cleaning and exiting." + % test_name) if CLEAN_FLAG: cleanup() sys.exit(1) @@ -100,7 +94,6 @@ def run_test(test): cleanup() - def run_tier(tier): print_separator("#") logger.info("Running tier '%s'" % tier.get_name()) @@ -111,10 +104,14 @@ def run_tier(tier): def run_all(tiers): - logger.debug("Tiers to be executed:") + summary = "" for tier in tiers.get_tiers(): - logger.info("\n - %s. %s:\n\t%s" - % (tier.get_order(), tier.get_name(), tier.get_tests())) + summary += ("\n - %s. %s:\n\t %s" + % (tier.get_order(), + tier.get_name(), + tier.get_test_names())) + + logger.info("Tiers to be executed:%s" % summary) for tier in tiers.get_tiers(): run_tier(tier) diff --git a/ci/testcases.yaml b/ci/testcases.yaml index 8dc22a64..51c43fcb 100644 --- a/ci/testcases.yaml +++ b/ci/testcases.yaml @@ -26,44 +26,43 @@ tiers: testcases: - name: vping_ssh - description: |- - This test case verifies: - ····1) SSH to an instance using floating IPs over the public network. - ····2) Connectivity between 2 instances over a private network. + description: >- + This test case verifies: 1) SSH to an instance using floating + IPs over the public network. 2) Connectivity between 2 instances + over a private network. dependencies: installer: '' scenario: '^((?!bgpvpn).)*$' - name: vping_userdata - description: |- - This test case verifies: - ····1) Boot a VM with given userdata. - ····2) Connectivity between 2 instances over a private network. - dependencies: - installer: '' - scenario: '' - - - - name: tempest_smoke_serial - description: >- - This test case runs the smoke subset of the OpenStack - Tempest suite. The list of test cases is generated by - Tempest automatically and depend on the parameters of - the OpenStack deplopyment. - dependencies: - installer: '' - scenario: '' - - - - name: rally_sanity description: >- - This test case runs a sub group of tests of the OpenStack - Rally suite in smoke mode. + This test case verifies: 1) Boot a VM with given userdata. + 2) Connectivity between 2 instances over a private network. dependencies: installer: '' scenario: '' + #- + # name: tempest_smoke_serial + # description: >- + # This test case runs the smoke subset of the OpenStack + # Tempest suite. The list of test cases is generated by + # Tempest automatically and depend on the parameters of + # the OpenStack deplopyment. + # dependencies: + # installer: '' + # scenario: '' + # + #- + # name: rally_sanity + # description: >- + # This test case runs a sub group of tests of the OpenStack + # Rally suite in smoke mode. + # dependencies: + # installer: '' + # scenario: '' + # #- # name: security_groups # description: >- @@ -151,7 +150,7 @@ tiers: This test case runs the full set of the OpenStack Tempest suite. testcases: - - name: tempest_full_parallel + name: tempest description: >- The list of test cases is generated by Tempest automatically and depend on the parameters of @@ -168,7 +167,7 @@ tiers: Rally suite from the OpenStack community. testcases: - - name: rally_full + name: rally description: >- This test case runs the full suite of scenarios of the OpenStack Rally suite using several threads and iterations. -- cgit 1.2.3-korg