---
tiers:
    -
        name: healthcheck
        order: 0
        description: >-
            First tier to be executed to verify the basic
            operations in the VIM.
        testcases:
            -
                case_name: connection_check
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    This test case verifies the retrieval of OpenStack clients:
                    Keystone, Glance, Neutron and Nova and may perform some
                    simple queries.
                run:
                    module:
                        'functest.opnfv_tests.openstack.api.connection_check'
                    class: 'ConnectionCheck'

            -
                case_name: tenantnetwork1
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    It creates and configures all tenant network ressources
                    required by advanced testcases (subnet, network and
                    router).
                run:
                    module: 'functest.core.tenantnetwork'
                    class: 'TenantNetwork1'

            -
                case_name: tenantnetwork2
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    It creates new user/project before creating and configuring
                    all tenant network ressources required by a testcase
                    (subnet, network and router).
                run:
                    module: 'functest.core.tenantnetwork'
                    class: 'TenantNetwork2'

            -
                case_name: vmready1
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    It inherits from TenantNetwork1 which creates all network
                    resources and prepares a future VM attached to that
                    network.
                run:
                    module: 'functest.core.singlevm'
                    class: 'VmReady1'

            -
                case_name: vmready2
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    It creates new user/project before creating and configuring
                    all tenant network ressources, flavors, images, etc.
                    required by advanced testcases.
                run:
                    module: 'functest.core.singlevm'
                    class: 'VmReady2'

            -
                case_name: singlevm1
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    It inherits from TenantNetwork1 which creates all network
                    resources and completes it by booting a VM attached to that
                    network.
                run:
                    module: 'functest.core.singlevm'
                    class: 'SingleVm1'

            -
                case_name: singlevm2
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    It creates new user/project before creating and configuring
                    all tenant network ressources and vms required by advanced
                    testcases.
                run:
                    module: 'functest.core.singlevm'
                    class: 'SingleVm2'

            -
                case_name: vping_ssh
                project_name: functest
                criteria: 100
                blocking: true
                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.
                run:
                    module: 'functest.opnfv_tests.openstack.vping.vping_ssh'
                    class: 'VPingSSH'

            -
                case_name: vping_userdata
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    This test case verifies:  1) Boot a VM with given userdata.
                    2) Connectivity between 2 instances over a private network.
                run:
                    module:
                        'functest.opnfv_tests.openstack.vping.vping_userdata'
                    class: 'VPingUserdata'

            -
                case_name: cinder_test
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    This test case verifies: 1) Attach volume and to 1
                    instance; 2) Write data on volume 3) Detach volume
                    from instance 1, attach it on instance 2 3) Read volume
                    data
                run:
                    module: 'functest.opnfv_tests.openstack.cinder.cinder_test'
                    class: 'CinderCheck'

            -
                case_name: odl
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    Test Suite for the OpenDaylight SDN Controller. It
                    integrates some test suites from upstream using
                    Robot as the test framework.
                dependencies:
                    - DEPLOY_SCENARIO: 'odl'
                run:
                    module: 'functest.opnfv_tests.sdn.odl.odl'
                    class: 'ODLTests'
                    args:
                        suites:
                            - /src/odl_test/csit/suites/integration/basic
                            - /src/odl_test/csit/suites/openstack/neutron

            -
                case_name: api_check
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    This test case verifies the retrieval of OpenStack clients:
                    Keystone, Glance, Neutron and Nova and may perform some
                    simple queries. When the config value of
                    snaps.use_keystone is True, functest must have access to
                    the cloud's private network.
                dependencies:
                    - DEPLOY_SCENARIO: '^((?!lxd).)*$'
                run:
                    module: 'functest.opnfv_tests.openstack.snaps.api_check'
                    class: 'ApiCheck'

            -
                case_name: snaps_health_check
                project_name: functest
                criteria: 100
                blocking: true
                description: >-
                    This test case creates executes the SimpleHealthCheck
                    Python test class which creates an, image, flavor, network,
                    and Cirros VM instance and observes the console output to
                    validate the single port obtains the correct IP address.
                dependencies:
                    - DEPLOY_SCENARIO: '^((?!lxd).)*$'
                run:
                    module: 'functest.opnfv_tests.openstack.snaps.health_check'
                    class: 'HealthCheck'

    -
        name: smoke
        order: 1
        description: >-
            Set of basic Functional tests to validate the OPNFV scenarios.
        testcases:
            -
                case_name: tempest_smoke
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case runs the smoke subset of the OpenStack
                    Tempest suite. The list of test cases is generated by
                    Tempest automatically and depends on the parameters of
                    the OpenStack deplopyment.
                    https://github.com/openstack/tempest/blob/18.0.0/tox.ini#L114
                run:
                    module: 'functest.opnfv_tests.openstack.tempest.tempest'
                    class: 'TempestCommon'
                    args:
                        mode: '(?=.*\[.*\bsmoke\b.*\])(^tempest\.api)'
                        option:
                            - '--concurrency=4'

            -
                case_name: neutron-tempest-plugin-api
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case runs the Tempest suite proposed by the
                    Neutron project. The list of test cases is generated by
                    Tempest automatically and depends on the parameters of
                    the OpenStack deployment.
                run:
                    module: 'functest.opnfv_tests.openstack.tempest.tempest'
                    class: 'TempestCommon'
                    args:
                        mode: '^neutron_tempest_plugin\.api'
                        option:
                            - '--concurrency=4'

            -
                case_name: rally_sanity
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case runs a sub group of tests of the OpenStack
                    Rally suite in smoke mode.
                run:
                    module: 'functest.opnfv_tests.openstack.rally.rally'
                    class: 'RallySanity'

            -
                case_name: refstack_defcore
                project_name: functest
                enabled: false
                criteria: 100
                blocking: false
                description: >-
                    This test case runs a sub group of tests of the OpenStack
                    Defcore testcases.
                run:
                    module:
                        'functest.opnfv_tests.openstack.refstack.refstack'
                    class: 'Refstack'

            -
                case_name: patrole
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    Test suite from Patrole project.
                run:
                    module: 'functest.opnfv_tests.openstack.patrole.patrole'
                    class: 'Patrole'
                    args:
                        role: 'admin'
                        includes:
                            - 'image'
                            - 'network'
                        excludes:
                            - 'test_networks_multiprovider_rbac'

            -
                case_name: vmtp
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    VMTP is a small python application that will automatically
                    perform ping connectivity, round trip time measurement
                    (latency) and TCP/UDP throughput
                run:
                    module:
                        'functest.opnfv_tests.openstack.vmtp.vmtp'
                    class: 'Vmtp'

            -
                case_name: shaker
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    Shaker wraps around popular system network testing tools
                    like iperf, iperf3 and netperf (with help of flent). Shaker
                    is able to deploy OpenStack instances and networks in
                    different topologies.
                run:
                    module:
                        'functest.opnfv_tests.openstack.shaker.shaker'
                    class: 'Shaker'

            -
                case_name: snaps_smoke
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case contains tests that setup and destroy
                    environments with VMs with and without Floating IPs
                    with a newly created user and project. Set the config
                    value snaps.use_floating_ips (True|False) to toggle
                    this functionality. When the config value of
                    snaps.use_keystone is True, functest must have access to
                    the cloud's private network.
                dependencies:
                    - DEPLOY_SCENARIO: '^((?!lxd).)*$'
                run:
                    module: 'functest.opnfv_tests.openstack.snaps.smoke'
                    class: 'SnapsSmoke'

            -
                case_name: neutron_trunk
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case runs the neutron trunk subtest of the
                    OpenStack Tempest suite. The list of test cases is
                    generated by Tempest having as input the relevant
                    testcase list file.
                run:
                    module: 'functest.opnfv_tests.openstack.tempest.tempest'
                    class: 'TempestCommon'
                    args:
                        mode: 'neutron_tempest_plugin.(api|scenario).test_trunk'
                        neutron_extensions:
                            - trunk
                            - trunk-details

            -
                case_name: barbican
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    It leverages on the tempest plugin containing tests used to
                    verify the functionality of a barbican installation.
                run:
                    module: 'functest.opnfv_tests.openstack.tempest.tempest'
                    class: 'TempestCommon'
                    args:
                        mode:
                            'barbican_tempest_plugin.tests.(api|scenario).(?!test_image_signing)'
                        services:
                            - barbican

    -
        name: features
        order: 2
        description: >-
            Test suites from feature projects
            integrated in functest
        testcases:
            -
                case_name: doctor-notification
                project_name: doctor
                criteria: 100
                blocking: false
                description: >-
                    Test suite from Doctor project.
                dependencies:
                    - INSTALLER_TYPE: '(apex)|(fuel)|(daisy)'
                    - DEPLOY_SCENARIO: '^((?!fdio|nofeature).)*$'
                run:
                    module: 'xtesting.core.feature'
                    class: 'BashFeature'
                    args:
                        cmd: 'doctor-test'

            -
                case_name: bgpvpn
                project_name: sdnvpn
                criteria: 100
                blocking: false
                description: >-
                    Test suite from SDNVPN project.
                dependencies:
                    - DEPLOY_SCENARIO: 'bgpvpn'
                run:
                    module: 'sdnvpn.test.functest.run_sdnvpn_tests'
                    class: 'SdnvpnFunctest'

            -
                case_name: functest-odl-sfc
                project_name: sfc
                criteria: 100
                blocking: false
                description: >-
                    Test suite for odl-sfc to test two chains with one SF and
                    one chain with two SFs
                dependencies:
                    - DEPLOY_SCENARIO: 'odl.*sfc'
                run:
                    module: 'sfc.tests.functest.run_sfc_tests'
                    class: 'SfcFunctest'

            -
                case_name: barometercollectd
                project_name: barometer
                criteria: 100
                blocking: false
                description: >-
                    Test suite for the Barometer project. Separate tests verify
                    the proper configuration and basic functionality of all the
                    collectd plugins as described in the Project Release Plan
                dependencies:
                    - DEPLOY_SCENARIO: 'bar'
                run:
                    module: 'baro_tests.barometer'
                    class: 'BarometerCollectd'

            -
                case_name: fds
                project_name: fastdatastacks
                criteria: 100
                blocking: false
                description: >-
                    Test Suite for the OpenDaylight SDN Controller when GBP
                    features are installed. It integrates some test suites from
                    upstream using Robot as the test framework.
                dependencies:
                    - DEPLOY_SCENARIO: 'odl.*-fdio'
                run:
                    module: 'functest.opnfv_tests.sdn.odl.odl'
                    class: 'ODLTests'
                    args:
                        suites:
                            - /src/fds/testing/robot

    -
        name: components
        order: 3
        description: >-
            Extensive testing of OpenStack API.
        testcases:
            -
                case_name: tempest_full
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    The list of test cases is generated by
                    Tempest automatically and depends on the parameters of
                    the OpenStack deployment.
                    https://github.com/openstack/tempest/blob/18.0.0/tox.ini#L83
                run:
                    module: 'functest.opnfv_tests.openstack.tempest.tempest'
                    class: 'TempestCommon'
                    args:
                        mode: '(?!.*\[.*\bslow\b.*\])(^tempest\.api)'
                        option:
                            - '--concurrency=4'

            -
                case_name: tempest_scenario
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    The list of test cases is generated by
                    Tempest automatically and depends on the parameters of
                    the OpenStack deployment.
                    https://github.com/openstack/tempest/blob/18.0.0/tox.ini#L84
                run:
                    module: 'functest.opnfv_tests.openstack.tempest.tempest'
                    class: 'TempestCommon'
                    args:
                        mode: '(?!.*\[.*\bslow\b.*\])(^tempest\.scenario)'
                        option:
                            - '--serial'

            -
                case_name: rally_full
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case runs the full suite of scenarios of the
                    OpenStack Rally suite using several threads and iterations.
                run:
                    module: 'functest.opnfv_tests.openstack.rally.rally'
                    class: 'RallyFull'

    -
        name: vnf
        order: 4
        description: >-
            Collection of VNF test cases.
        testcases:
            -
                case_name: cloudify
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case deploys the Cloudify orchestrator.
                dependencies:
                    - DEPLOY_SCENARIO: 'os-.*-nofeature-.*ha'
                run:
                    module: 'functest.core.cloudify'
                    class: 'Cloudify'
            -
                case_name: cloudify_ims
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case deploys an OpenSource vIMS solution from
                    Clearwater using the Cloudify orchestrator. It also runs
                    some signaling traffic.
                dependencies:
                    - DEPLOY_SCENARIO: 'os-.*-nofeature-.*ha'
                run:
                    module: 'functest.opnfv_tests.vnf.ims.cloudify_ims'
                    class: 'CloudifyIms'

            -
                case_name: heat_ims
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case deploys an OpenSource vIMS solution from
                    Clearwater using the OpenStack Heat orchestrator.
                    It also runs some signaling traffic.
                dependencies:
                    - DEPLOY_SCENARIO: 'os-.*-nofeature-.*ha'
                run:
                    module: 'functest.opnfv_tests.vnf.ims.heat_ims'
                    class: 'HeatIms'

            -
                case_name: vyos_vrouter
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    This test case is vRouter testing.
                dependencies:
                    - DEPLOY_SCENARIO: 'os-.*-nofeature-.*ha'
                run:
                    module: 'functest.opnfv_tests.vnf.router.cloudify_vrouter'
                    class: 'CloudifyVrouter'

            -
                case_name: juju_epc
                project_name: functest
                criteria: 100
                blocking: false
                description: >-
                    vEPC validation with Juju as VNF manager and ABoT as test
                    executor.
                dependencies:
                    - DEPLOY_SCENARIO: 'os-.*-nofeature-.*ha'
                run:
                    module: 'functest.opnfv_tests.vnf.epc.juju_epc'
                    class: 'JujuEpc'