summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker/Dockerfile3
-rw-r--r--docs/testing/developer/testscope/index.rst93
-rw-r--r--docs/testing/user/certificationworkflow/ApplicationForm.rst10
-rw-r--r--docs/testing/user/certificationworkflow/index.rst122
-rw-r--r--docs/testing/user/cvpaddendum/index.rst388
-rw-r--r--docs/testing/user/testspecification/dynamicnetwork/index.rst413
-rw-r--r--docs/testing/user/testspecification/securitygroup/index.rst450
-rw-r--r--docs/testing/user/testspecification/vimoperationscompute/index.rst661
-rw-r--r--docs/testing/user/testspecification/vimoperationsvolume/index.rst999
-rw-r--r--docs/testing/user/testspecification/vping/index.rst279
-rw-r--r--docs/testing/user/userguide/testing_guide.rst58
-rw-r--r--dovetail/compliance/debug.yml5
-rw-r--r--dovetail/compliance/proposed_tests.yml11
-rw-r--r--dovetail/conf/bottlenecks_config.yml20
-rw-r--r--dovetail/conf/cmd_config.yml11
-rw-r--r--dovetail/conf/dovetail_config.yml13
-rw-r--r--dovetail/conf/functest_config.yml2
-rw-r--r--dovetail/conf/yardstick_config.yml2
-rw-r--r--dovetail/container.py80
-rw-r--r--dovetail/report.py95
-rwxr-xr-xdovetail/run.py15
-rw-r--r--dovetail/test_runner.py52
-rw-r--r--dovetail/testcase.py21
-rw-r--r--dovetail/testcase/defcore.tc001.yml4
-rw-r--r--dovetail/testcase/ipv6.tc001.yml4
-rw-r--r--dovetail/testcase/ipv6.tc002.yml4
-rw-r--r--dovetail/testcase/ipv6.tc003.yml4
-rw-r--r--dovetail/testcase/ipv6.tc004.yml4
-rw-r--r--dovetail/testcase/ipv6.tc005.yml4
-rw-r--r--dovetail/testcase/ipv6.tc006.yml4
-rw-r--r--dovetail/testcase/ipv6.tc007.yml4
-rw-r--r--dovetail/testcase/ipv6.tc008.yml4
-rw-r--r--dovetail/testcase/ipv6.tc009.yml4
-rw-r--r--dovetail/testcase/ipv6.tc010.yml4
-rw-r--r--dovetail/testcase/ipv6.tc011.yml4
-rw-r--r--dovetail/testcase/ipv6.tc012.yml4
-rw-r--r--dovetail/testcase/ipv6.tc013.yml4
-rw-r--r--dovetail/testcase/ipv6.tc014.yml4
-rw-r--r--dovetail/testcase/ipv6.tc015.yml4
-rw-r--r--dovetail/testcase/ipv6.tc016.yml4
-rw-r--r--dovetail/testcase/ipv6.tc017.yml4
-rw-r--r--dovetail/testcase/ipv6.tc018.yml4
-rw-r--r--dovetail/testcase/ipv6.tc019.yml4
-rw-r--r--dovetail/testcase/ipv6.tc020.yml4
-rw-r--r--dovetail/testcase/ipv6.tc021.yml4
-rw-r--r--dovetail/testcase/ipv6.tc022.yml4
-rw-r--r--dovetail/testcase/ipv6.tc023.yml4
-rw-r--r--dovetail/testcase/ipv6.tc024.yml4
-rw-r--r--dovetail/testcase/ipv6.tc025.yml4
-rw-r--r--dovetail/testcase/nfvi.tc101.yml9
-rw-r--r--dovetail/testcase/nfvi.tc102.yml9
-rw-r--r--dovetail/testcase/resiliency.tc001.yml11
-rw-r--r--dovetail/testcase/tempest.tc001.yml15
-rw-r--r--dovetail/testcase/tempest.tc002.yml20
-rw-r--r--dovetail/testcase/tempest.tc003.yml19
-rw-r--r--dovetail/testcase/tempest.tc004.yml27
-rw-r--r--dovetail/testcase/tempest.tc005.yml20
-rw-r--r--dovetail/testcase/vping.tc001.yml (renamed from dovetail/testcase/nfvi.tc002.yml)4
-rw-r--r--dovetail/testcase/vping.tc002.yml (renamed from dovetail/testcase/nfvi.tc001.yml)4
-rw-r--r--dovetail/userconfig/hosts.yaml.sample (renamed from dovetail/userconfig/hosts.yaml)0
-rw-r--r--dovetail/userconfig/tempest_conf.yaml.sample16
-rw-r--r--dovetail/utils/dovetail_config.py5
-rw-r--r--dovetail/utils/dovetail_utils.py13
-rw-r--r--dovetail/utils/local_db/cases.json36
-rw-r--r--dovetail/utils/local_db/get_db_schema.py61
-rw-r--r--dovetail/utils/local_db/init_dovetail.py59
-rwxr-xr-xdovetail/utils/local_db/launch_db.sh48
-rw-r--r--dovetail/utils/local_db/pods.json382
-rw-r--r--dovetail/utils/local_db/projects.json218
-rwxr-xr-xdovetail/utils/local_db/restart_db.sh2
-rw-r--r--dovetail/utils/offline/config.yaml12
-rw-r--r--setup.cfg2
72 files changed, 4686 insertions, 213 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index eb85ea49..c4b11213 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -8,8 +8,11 @@ RUN \
apt-get update \
&& \
apt-get install -y \
+ build-essential \
gcc \
git \
+ libssl-dev \
+ libffi-dev \
vim \
python-dev \
python-mock \
diff --git a/docs/testing/developer/testscope/index.rst b/docs/testing/developer/testscope/index.rst
index b2dceec4..35ff60af 100644
--- a/docs/testing/developer/testscope/index.rst
+++ b/docs/testing/developer/testscope/index.rst
@@ -118,6 +118,8 @@ Basic server operations in the Compute API
| tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_server_details
| tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_created_server_vcpus
| tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_server_details
+| tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_status
+| tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_deleted_server
Retrieve volume information through the Compute API
@@ -283,12 +285,14 @@ Volume service availability zone operations with the Cinder v2 API
------------------------------------------------------------------
| tempest.api.volume.test_availability_zone.AvailabilityZoneV2TestJSON.test_get_availability_zone_list
+| tempest.api.volume.test_availability_zone.AvailabilityZoneTestJSON.test_get_availability_zone_list
Volume cloning operations with the Cinder v2 API
------------------------------------------------
| tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_as_clone
+| tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete_as_clone
Image copy-to-volume operations with the Cinder v2 API
@@ -296,6 +300,8 @@ Image copy-to-volume operations with the Cinder v2 API
| tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_bootable
| tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_from_image
+| tempest.api.volume.test_volumes_get.VolumesActionsTest.test_volume_bootable
+| tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete_from_image
Volume creation and deletion operations with the Cinder v2 API
@@ -308,12 +314,21 @@ Volume creation and deletion operations with the Cinder v2 API
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_out_passing_size
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_negative
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_zero
+| tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_invalid_size
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_source_volid
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_volume_type
+| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_without_passing_size
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_without_passing_size
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_size_negative
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_size_zero
Volume service extension listing operations with the Cinder v2 API
------------------------------------------------------------------
| tempest.api.volume.test_extensions.ExtensionsV2TestJSON.test_list_extensions
+| tempest.api.volume.test_extensions.ExtensionsTestJSON.test_list_extensions
Volume GET operations with the Cinder v2 API
@@ -322,6 +337,9 @@ Volume GET operations with the Cinder v2 API
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_invalid_volume_id
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_volume_without_passing_volume_id
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_get_nonexistent_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_get_invalid_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_get_volume_without_passing_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_volume_get_nonexistent_volume_id
Volume listing operations with the Cinder v2 API
@@ -346,6 +364,25 @@ Volume listing operations with the Cinder v2 API
| tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_pagination
| tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_with_multiple_params
| tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_pagination
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_by_name
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_by_name
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_param_display_name_and_status
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_detail_param_display_name_and_status
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_detail_param_metadata
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_details
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_param_metadata
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_by_availability_zone
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_by_status
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_by_availability_zone
+| tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_by_status
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_detail_with_invalid_status
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_detail_with_nonexistent_name
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_with_invalid_status
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_with_nonexistent_name
+| tempest.api.volume.v2.test_volumes_list.VolumesListTestJSON.test_volume_list_details_pagination
+| tempest.api.volume.v2.test_volumes_list.VolumesListTestJSON.test_volume_list_details_with_multiple_params
+| tempest.api.volume.v2.test_volumes_list.VolumesListTestJSON.test_volume_list_pagination
Volume metadata operations with the Cinder v2 API
@@ -353,12 +390,17 @@ Volume metadata operations with the Cinder v2 API
| tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_create_get_delete_volume_metadata
| tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_update_volume_metadata_item
+| tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_crud_volume_metadata
+| tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_crud_volume_metadata
+| tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_update_volume_metadata_item
+| tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_update_show_volume_metadata_item
Verification of read-only status on volumes with the Cinder v2 API
------------------------------------------------------------------
| tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_readonly_update
+| tempest.api.volume.test_volumes_actions.VolumesActionsTest.test_volume_readonly_update
Volume reservation operations with the Cinder v2 API
@@ -368,6 +410,10 @@ Volume reservation operations with the Cinder v2 API
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_negative_volume_status
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_nonexistent_volume_id
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_unreserve_volume_with_nonexistent_volume_id
+| tempest.api.volume.test_volumes_actions.VolumesActionsTest.test_reserve_unreserve_volume
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_reserve_volume_with_negative_volume_status
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_reserve_volume_with_nonexistent_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_unreserve_volume_with_nonexistent_volume_id
Volume snapshot creation/deletion operations with the Cinder v2 API
@@ -385,6 +431,22 @@ Volume snapshot creation/deletion operations with the Cinder v2 API
| tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_with_params
| tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id
| tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id
+| tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_crud_snapshot_metadata
+| tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_crud_snapshot_metadata
+| tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_update_snapshot_metadata_item
+| tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_update_show_snapshot_metadata_item
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_snapshot_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_delete_invalid_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_delete_volume_without_passing_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_volume_delete_nonexistent_volume_id
+| tempest.api.volume.test_volumes_snapshots.VolumesSnapshotTestJSON.test_snapshot_create_get_list_update_delete
+| tempest.api.volume.test_volumes_snapshots.VolumesSnapshotTestJSON.test_volume_from_snapshot
+| tempest.api.volume.test_volumes_snapshots_list.VolumesSnapshotListTestJSON.test_snapshots_list_details_with_params
+| tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_details_with_params
+| tempest.api.volume.test_volumes_snapshots_list.VolumesSnapshotListTestJSON.test_snapshots_list_with_params
+| tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_with_params
+| tempest.api.volume.test_volumes_snapshots_negative.VolumesSnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id
+| tempest.api.volume.test_volumes_snapshots_negative.VolumesSnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id
Volume update operations with the Cinder v2 API
@@ -393,6 +455,9 @@ Volume update operations with the Cinder v2 API
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_empty_volume_id
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_invalid_volume_id
| tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_nonexistent_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_empty_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_invalid_volume_id
+| tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_nonexistent_volume_id
---------------------------
@@ -411,6 +476,14 @@ Verify high availability of OpenStack controller services
| opnfv.ha.tc010.disk_I/O_block
| opnfv.ha.tc011.load_balance_service_down
+----------------------------------------
+Test Area vPing - Basic VNF Connectivity
+----------------------------------------
+
+| opnfv.vping.userdata
+| opnfv.vping.ssh
+
+
Optional CVP Test Areas
========================
@@ -561,3 +634,23 @@ Test Case 25: IPv6 Address Assignment - Dual Net, Dual Stack, Multiple Prefixes,
| tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_slaac
+------------------------------------------------------------------------
+Filtering Packets Based on Security Rules and Port Security in Data Path
+------------------------------------------------------------------------
+
+| tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port
+| tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic
+| tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_in_tenant_traffic
+| tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups
+| tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_security_disable_security_group
+| tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_update_new_security_group
+
+------------------------------------------------------------
+Dynamic Network Runtime Operations Through the Life of a VNF
+------------------------------------------------------------
+
+| tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
+| tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_hotplug_nic
+| tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details
+| tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_instance_port_admin_state
+| tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_router_admin_state
diff --git a/docs/testing/user/certificationworkflow/ApplicationForm.rst b/docs/testing/user/certificationworkflow/ApplicationForm.rst
index e69de29b..9199d71e 100644
--- a/docs/testing/user/certificationworkflow/ApplicationForm.rst
+++ b/docs/testing/user/certificationworkflow/ApplicationForm.rst
@@ -0,0 +1,10 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) OPNFV, Intel Corporation and others.
+
+.._cvp-application-form:
+
+======================================================
+OPNFV COMPLIANCE VERIFICATION PROGRAM APPLICATION FORM
+======================================================
+
diff --git a/docs/testing/user/certificationworkflow/index.rst b/docs/testing/user/certificationworkflow/index.rst
index e69de29b..d26fe5d8 100644
--- a/docs/testing/user/certificationworkflow/index.rst
+++ b/docs/testing/user/certificationworkflow/index.rst
@@ -0,0 +1,122 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Intel Corporation, Ericsson AB, Huawei, and others
+
+================================================================
+OPNFV Compliance Verification Program certification workflow
+================================================================
+
+.. toctree::
+ :maxdepth: 2
+
+Introduction
+============
+
+This document provides guidance for testers on how to obtain OPNFV compliance
+certification. The OPNFV Compliance Verification Program (CVP) is administered by
+the OPNFV Compliance and Certification (C&C) committee.
+
+For further information about the workflow and general inquiries about the
+program, please check out the CVP web portal https://cvp.opnfv.org, or contact
+the C&C committee by email address cvp@opnfv.org. This email address should be used
+for all communication with the CVP.
+
+Step 1: Applying
+================
+
+A tester should start the process by completing an application.
+The application form can found on the CVP portal and the following
+information should be provided:
+
+ - Organization name
+ - Organization website (if public)
+ - Product name and/or identifier
+ - Product specifications
+ - Product public documentation
+ - Product categories, choose one: (i) software and hardware (ii) software
+ and third party hardware (please specify)
+ - Primary contact name, business email, postal address and phone number
+ Only the primary email address should be used for
+ official communication with OPNFV CVP.
+ - User ID for CVP web portal
+ The CVP web portal supports (i) Linux Foundation user ID, and (ii) Openstack user
+ ID, in the current release. Specify either one as user ID for the CVP web portal.
+ If a new user ID is needed, visit https://identity.linuxfoundation.org, or
+ https://www.openstack.org/join/register.
+ - Location where the verification testing is to be conducted. Choose one:
+ (internal vendor lab, third-party lab)
+ - If the test is to be conducted by a third-party lab, please specify
+ name and contact information of the third-party lab, including email, address and
+ phone number.
+
+Please email the completed application using the primary contact email
+account in order to establish identity.
+
+Once the application information is received and in order, an email response will be
+sent to the primary contact with confirmation and information to proceed.
+
+[Editor's note:
+No fee has been established at this time for CVP applications. Recommend
+we skip fee for the initial release of CVP.]
+
+Step 2: Testing
+===============
+
+The following documents guide testers to prepare the test environment and run tests:
+
+ - System Requirements and Preparation Guide for OPNFV CVP [2]
+ - OPNFV CVP Test Case Specifications [3]
+ - Dovetail Test Tool User Guide [4]
+
+[Editor's note: The above three documents are still work in progress. Names and
+references will be corrected when they are merged.]
+
+A unique Test ID is generated by the Dovetail tool for each test run. Please take a note
+of this ID for future reference.
+
+Step 3: Submitting Test Results
+===============================
+
+Testers can upload the test results to the CVP web portal https://cvp.opnfv.org.
+By default, the results are visible only to the tester who uploaded the data.
+
+Testers can self-review the test results through the portal until they are ready to ask
+for CVP review. They may also update with or add new test results as needed.
+
+Once the tester is satisfied with the test result, the tester grants access to the test result
+for CVP review via the portal. The test result is identified by the unique Test ID.
+
+When a test result is made visible to the reviewers, the web portal will notify
+cvp@opnfv.org and Cc the primary contact email that a review request has been made and reference
+the Test ID. This will alert the C&C Committee to start the CVP review process.
+
+Step 4: CVP Review
+===================
+
+Upon receiving the email notification and the Test ID, the C&C Committee conducts a
+peer based review of the test result. Persons employed by the same organization that submitted
+the test results or by affiliated organizations will not be part of the reviewers.
+
+The primary contact may be asked via email for any missing information or
+clarification of the application. The reviewers will make a determination and recommend
+compliance or non-compliance to
+the C&C Committee. Normally, the outcome of the review should be communicated
+to the tester within 10 business days after all required information is in order.
+
+If an application is denied, an appeal can be made to the C&C Committee or ultimately to the
+Board of Directors of OPNFV.
+
+Step 5: Grant of Use of Logo
+============================
+
+If an application is approved, further information will be communicated to the tester
+on the guidelines of using OPNFV CVP logos and the status of compliance for promotional purposes.
+
+References
+==========
+
+[1] The OPNFV CVP Guidelines v.16 [Editor's note: link to be provided.]
+[2] System Requirements and Preparation Guide for OPNFV CVP [Editor's note: link to be provided.]
+[3] OPNFV CVP Test Case Specifications v1.0 [Editor's note: link to be provided.]
+[4] Dovetail Test Tool User Guide v1.0 [Editor's note: link to be provided.]
+
diff --git a/docs/testing/user/cvpaddendum/index.rst b/docs/testing/user/cvpaddendum/index.rst
new file mode 100644
index 00000000..ee356ff9
--- /dev/null
+++ b/docs/testing/user/cvpaddendum/index.rst
@@ -0,0 +1,388 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International
+.. License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Intel and others
+
+====================================================================
+Compliance Verification Program - Guidelines Addendum for Danube
+====================================================================
+
+.. toctree::
+ :maxdepth: 2
+
+
+Introduction
+============
+
+This addendum provides a high-level description of the testing scope and
+pass/fail criteria used in the Compliance Verification Program (CVP) for the
+OPNFV Danube release. This information is intended as an overview for CVP
+testers and for the Dovetail Project to help guide test-tool and test-case
+development for the OPNFV Danube release. The Dovetail project is responsible for documenting
+test-case specifications as well as implementing the CVP tool-chain through collaboration
+with the OPNFV testing community. CVP testing focuses on establishing the
+ability of the System Under Test (SUT) to perform NFVI and VIM operations and support
+Service Provider oriented features that ensure manageable, resilient and secure
+networks.
+
+
+Meaning of Compliance
+=====================
+
+OPNFV Compliance indicates adherence to NFV platform behavior defined as
+various platform capabilities or features to prepare, instantiate, operate and remove
+VNFs running on the NFVI. Danube compliance evaluates the ability of a platform
+to support Service Provider network capabilities and workloads that are
+supported in the OPNFV platform as of this release. Compliance test cases shall
+be designated as compulsory or optional based on the maturity of OPNFV
+capabilities as well as industry expectations. Compulsory test cases may for
+example include NFVI management capabilities whereas tests for certain
+high-availability features may be deemed as optional.
+
+Test coverage and pass/fail criteria are
+designed to ensure an acceptable level of compliance but not be so restrictive
+as to disqualify variations in platform implementations, capabilities and features.
+
+
+SUT Assumptions
+===============
+
+Assumptions about the System Under Test (SUT) include ...
+
+ - The minimal specification of physical infrastructure, including controller
+ nodes, compute nodes and networks, is defined by the Pharos specification
+ [2].
+ - The SUT is fully deployed and operational, i.e. SUT deployment tools are
+ out of scope of testing.
+
+
+Scope of Testing
+================
+
+The OPNFV CVP Guidelines [1], as approved by the Board of Directors, outlines
+the key objectives of the CVP as follows:
+ - Help build the market for
+ - OPNFV based infrastructure
+ - applications designed to run on that infrastructure
+ - Reduce adoption risks for end-users
+ - Decrease testing costs by verifying hardware and software platform
+ interfaces and components
+ - Enhance interoperability
+
+The guidelines further directs the scope to be constrained to "features,
+capabilities, components, and interfaces included in an OPNFV release that are
+generally available in the industry (e.g., through adoption by an upstream
+community)", and that compliance verification is evaluated using "functional tests
+that focus on defined interfaces and/or behaviors without regard to the
+the implementation of the underlying system under test".
+
+OPNFV provides a broad range of capabilities, including the reference platform itself
+as well as tools-chains and methodologies for building infrastructures, and
+deploying and testing the platform.
+Not all these aspects are in scope for CVP and not all functions and
+components are tested in the initial version of CVP. For example, the deployment tools
+for the SUT and CI/CD toolchain are currently out of scope.
+Similarly, performance benchmarking related testing is also out of scope or
+for further study. Newer functional areas such as MANO (outside of APIs in the NFVI and
+VIM) are still developing and are for future considerations.
+
+General Approach
+----------------
+
+In order to meet the above objectives for CVP, we aim to follow a general approach
+by first identifying the overall requirements for all stake-holders,
+then analyzing what OPNFV and the upstream communities can effectively test and verify
+presently to derive an initial working scope for CVP, and to recommend what the
+community should strive to achieve in future releases.
+
+The overall requirements for CVP can be cateorized by the basic cloud
+capabilities representing common operations needed by basic VNFs, and additional
+requirements for VNFs that go beyond the common cloud capabilities including
+functional extensions, operational capabilities and additional carrier grade
+requirements.
+
+For the basic NFV requirements, we will analyze the required test cases,
+leverage or improve upon existing test cases in OPNFV projects
+and upstream projects whenever we can, and bridge the gaps when we must, to meet
+these basic requirements.
+
+We are not yet ready to support requirements
+such as hardware portability, carrier grade performance, fault management and other
+operational features, security, MANO and VNF verification.
+These areas are being studied for future considerations.
+
+In some areas, we will start with a limited level of verification
+initially, constrained by what community resources are able to support at this
+time, but still serve a basic need that is not being fulfilled elsewhere.
+In these areas, we bring significant value to the community we
+serve by starting a new area of verification, breaking new ground and
+expanding it in the future.
+
+In other areas, the functions being verified have yet to reach
+wide adoption but are seen as important requirements in NFV,
+or features are only needed for specific NFV use cases but
+an industry consensus about the APIs and behaviors is still deemed beneficial. In such
+cases, we plan to incorporate the test areas as optional. An optional test
+area will not have to be run or passed in order to achieve compliance.
+Optional tests provide an opportunity for vendors to demonstrate compliance with specific OPNFV
+features beyond the mandatory test scope.
+
+Analysis of Scope
+-----------------
+
+Following on these high level objectives and the identified general approach,
+we seek to define the initial verification scope by the analysis summarized
+in the following categories:
+
+1. Basic Cloud Capabilities
+
+The intent of these tests is to verify that the SUT has the required
+capabilities that a basic VNF needs, and these capabilities are implemented
+in a way that enables this basic VNF to run on any OPNFV compliant
+deployment.
+
+A basic VNF can be thought of as a single virtual machine that is networked
+and can perform the simplest network functions, for example, a simple forwarding
+gateway, or a set of such virtual machines connected only by simple virtual network
+services. Running such basic VNF leads to a set of common requirements, including:
+ - image management (Refstack testing Glance API)
+ - identity management (Refstack testing Keystone Identity API)
+ - virtual compute (Refstack testing Nova Compute API)
+ - virtual storage (Refstack testing Cinder API)
+ - virtual networks (Refstack testing Neutron Network API)
+ - forwarding packets through virtual networks in data path
+ - filtering packets based on security rules and port security in data path
+ - dynamic network runtime operations through the life of a VNF (e.g. attach/detach,
+ enable/disable, read stats)
+ - correct behavior after common virtual machine life cycles events (e.g.
+ suspend/resume, reboot, migrate)
+ - simple virtual machine resource scheduling on multiple nodes
+
+OPNFV mainly supports Openstack as the VIM up to the Danube release. The
+VNFs used in the CVP program, and features in scope for the program which are
+considered to be basic to all VNFs, require commercial Openstack distributions
+to support a common basic level of cloud capabilities, and to be compliant
+to a common specification for these capabilities. This requirement significantly
+overlaps with Openstack community's Interop working group's goals, but they are not
+identical. The CVP runs the Openstack Refstack-Compute test cases to verify
+compliance to the basic common API requirements of cloud
+management functions and VNF (as a VM) management for OPNFV.
+Additional NFV specific requirements are added in network data path validation,
+packet filtering by security group rules and port security, life cycle runtime events of
+virtual networks, multiple networks in a topology, validation
+of VNF's functional state after common lifecylce events including reboot, pause,
+suspense, stop/start and cold migration. In addition, the
+basic requirement also verifies that the SUT can allocate VNF resources based
+on simple anti-affinity rules.
+
+The combined test cases help to ensure that these basic operations are always
+supported by a compliant platform and they adhere to
+a common standard to enable portability across OPNFV compliant platforms.
+
+2. NFV specific functional requirements
+
+NFV has functional requirements beyond the basic common cloud
+capabilities, esp. in the networking area. Examples like SDNVPN, IPv6, SFC may
+be considered additional NFV requirements beyond general purpose cloud
+computing. These feature requirements expand beyond common Openstack (or other
+VIM) requirements. OPNFV CVP will incorporate test cases to verify
+compliance in these areas as they become mature. Because these extensions
+may impose new API demands, maturity and industry adoption is a prerequisite for
+making them a mandatory requirement for OPNFV compliance. At the time of Danube,
+we have not identified a new functional area that is mandatory for CVP.
+In the meantime, CVP
+intends to offer tests in some of these areas as an optional extension of the test
+report to be submitted for review, noting that passing these tests will not be
+required to pass OPNFV compliance verification.
+
+SDNVPN is relevant due to the wide adoption of MPLS/BGP based VPNs in wide area
+networks, which makes it necessary for data centers hosting VNFs to be able to
+seamlessly interconnect with such networks. IPv6 is a high priority service provider
+requirement to ease IP addressing and operational issues. SFC is also an important
+NFV requirement, however its implementation has not yet been accepted or adopted
+in the upstream at the time of Danube.
+
+3. High availability
+
+High availability is a common carrier grade requirement. Availability of a
+platform involves many aspects of the SUT, for example hardware or lower layer
+system failures or system overloads, and is also highly dependent on
+configurations. The current OPNFV high availability verification focuses on
+Openstack control service failures and resource overloads, and verifies service
+continuity when the system encounters such failures or resource overloads, and
+also verifies the system heals after a failure episode within a reasonable time
+window. These service HA capabilities are commonly adopted in the industry
+and should be a mandatory requirement.
+
+The current test cases in HA cover the basic area of failure and resource
+overload conditions for a cloud platform's service availability, including all
+of the basic cloud capability services, and basic compute and storage loads,
+so it is a meaningful first step for CVP. We expect additional high availability
+scenarios be extended in future releases.
+
+4. Resiliency
+
+Resiliency testing involves stressing the SUT and verifying its ability
+to absorb stress conditions and still provide an acceptable level of service.
+Resiliency is an important requirement for end-users.
+
+The OPNFV testing projects have started testing
+OPNFV system resiliency in
+the Danube release that can be used to provide limited coverage in this area.
+However, this is a relatively new test methodology in OPNFV, additional study
+and testing experiences are still needed. We defer the resilency testing to
+future CVP releases.
+
+5. Security
+
+Security is among the top priorities as a carrier grade requirement by the
+end-users. Some of the basic common functions, including virtual network isolation,
+security groups, port security and role based access control are already covered as
+part of the basic cloud capabilities that are verified in CVP. These test cases
+however do not yet cover the basic required security capabilities expected of an end-user
+deployment. It is an area that we should address in the near future, to define
+a common set of requirements and develop test cases for verifying those
+requirements.
+
+Another common requirement is security vulnerability scanning.
+While the OPNFV security project integrated tools for security vulnerability
+scanning, this has not been fully analyzed or exercised in Danube release.
+This area needs further work to identify the required level of security for the
+purpose of OPNFV in order to be integrated into the CVP. End-user inputs on
+specific requirements in security is needed.
+
+6. Service assurance
+
+Service assurance (SA) is a broad area of concern for reliability of the NFVI/VIM
+and VNFs, and depends upon multiple subsystems of an NFV platform for essential
+information and control mechanisms. These subsystems include telemetry, fault management
+(e.g. alarms), performance management, audits, and control mechanisms such as security
+and configuration policies.
+
+The current Danube release implements some enabling capabilities in NFVI/VIM
+such as telemetry, policy, and fault management. However, the specification of expected
+system components, behavior and the test cases to verify them have not yet
+been adequately developed. We will therefore not be testing this area at this time
+but defer to future study.
+
+7. Use case testing
+
+More complex interactions among multiple VNFs and between VNFs and the cloud
+platform can be better exercised through selected more realistic use cases.
+
+End-users see use case level testing as a significant tool in
+verifying OPNFV compliance because it validates design patterns and support
+for the types of NFVI features that users
+care about. There are a lot of projects in OPNFV developing use cases
+and sample VNFs, however most are still in early phase and require further
+enhancements to become useful additions to the CVP.
+
+Many of these use case test cases do not add new API requirements to the SUT per se, but
+exercise aspects of the SUT's functional capabilities in more complex ways.
+Other use cases, such as SDNVPN, will require additional API level extension,
+and to clearly separate the two, we will categorize the latter as
+NFV specific functional requirements and not simply as use cases.
+
+Examples such as vIMS, or those which are not yet available
+in Danube release e.g. vCPE,
+will be valuable additions to the CVP. These use cases need to
+be widely accepted, and since they are more complex, using these VNFs for CVP demands
+higher level of community resources to implement, analyze and document these VNFs.
+
+Use case testing is not ready for CVP at the time of Danube, but can be incorporated
+in Euphrates or as a future roadmap area.
+
+Finally, we take a preliminary look at future roadmap ideas that may be helpful
+for the community to plan and pull resources around.
+
+8. Future CVP scope enhancements
+
+Some possible areas of enhancement for the CVP scope in subsequent releases include:
+
+ - service assurance, as discussed above
+ - use case testing, as discussed above
+ - platform in-place upgrade
+ - API backward compatibility / micro-versioning
+ - workload migration
+ - multisite federation
+ - platform operational insights, e.g. telemetry, logging
+ - efficiency, e.g. hardware and energy footprint of the platform
+ - interoperability with workload automation platforms e.g. ONAP
+
+And enhancements may also be made to the existing test areas as well,
+particularly those with limited coverage in this release.
+
+Summary of Test Scope
+---------------------
+
+The above analysis concludes with the following scope summarized below.
+These tested areas represent significant advancement in the
+direction to meet the CVP's objectives and end-user expectations, and is a
+good basis for the initial phase of CVP.
+
+- Test Area: common cloud capabilities
+ - Openstack Refstack-compute test cases
+ Image, Identity, Compute, Network, Storage
+ - OPNFV-Functest/vPing, including both user data and ssh
+ - Port security and security groups
+ - VM lifecycle events
+ - VM networking
+ - VM resource scheduling
+ - Mandatory
+
+- Test Area: SDNVPN
+ - OPNFV-SDNVPN
+ - Optional
+
+- Test Area: IPv6
+ - OPNFV-IPv6
+ - Limited to overlay tests, v6Ping
+ - Optional
+
+- Test Area: High Availability
+ - OPNFV-HA
+ - OPNFV-Yardstick
+ - Limited to service continuity verification on control services
+ - Mandatory
+
+- Test Area: Resilency with Load
+ - OPNFV-Bottlenecks
+ - OPNFV-Yardstick
+ - Limited to compute resource load testing
+ - Optional
+
+Note 1: While the current scope of compliance includes functional verification
+of certain performance-enhancing NFVI features, no performance measurements or
+assessment of performance capabilities are included as of this release.
+
+Note 2: The SUT is limited to NFVI and VIM functions. While testing MANO
+component capabilities is out of scope, certain APIs exposed towards MANO are
+used by the current OPNFV compliance testing suite. MANO and other operational
+elements may be part of the test infrastructure; for example used for workload
+deployment and provisioning.
+
+Criteria for Awarding Compliance
+================================
+
+This section provides guidance on compliance criteia for each test area. The
+criteria described here are high-level, detailed pass/fail metrics are
+documented in Dovetail test specifications.
+
+1. All mandatory test cases must pass.
+
+Exceptions to this rule may be legitimate, e.g. due to imperfect test tools or
+reasonable circumstances that we can not foresee. These exceptions must be
+documented and accepted by the reviewers.
+
+2. Optional test cases are optional to run. Its test results, pass or fail,
+ do not impact compliance.
+
+Applicants who choose to run the optional test cases can include the results
+of the optional test cases to highlight the additional compliance.
+
+References
+==========
+
+[1] The OPNFV CVP Guidelines v.16 [Editor's note: link to be provided.]
+[2] Pharos specification xxx [Editor's note: link to be provided.]
+
diff --git a/docs/testing/user/testspecification/dynamicnetwork/index.rst b/docs/testing/user/testspecification/dynamicnetwork/index.rst
new file mode 100644
index 00000000..8fa084c7
--- /dev/null
+++ b/docs/testing/user/testspecification/dynamicnetwork/index.rst
@@ -0,0 +1,413 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Huawei Technologies Co.,Ltd
+
+=====================================================
+Dynamic Network Runtime Operations test specification
+=====================================================
+
+.. toctree::
+ :maxdepth: 2
+
+Scope
+=====
+
+The dynamic network runtime operations test area evaluates the ability of the
+system under test to support dynamic network runtime operations through the
+life of a VNF (e.g. attach/detach, enable/disable, read stats).
+The tests in this test area will evaluate IPv4 network runtime operations
+functionality. These runtime operations includes hotpluging network interface,
+detaching floating-ip from VM, attaching floating-ip to VM, updating subnet's
+DNS, updating VM instance port admin state and updating router admin state.
+
+References
+==========
+
+- DNS
+
+ - https://docs.openstack.org/newton/networking-guide/config-dns-res.html
+
+Definitions and abbreviations
+=============================
+
+The following terms and abbreviations are used in conjunction with this test
+area
+
+- API - Application Programming Interface
+- DNS - Domain Name System
+- ICMP - Internet Control Message Protocol
+- MAC - Media Access Control
+- NIC - Network Interface Controller
+- NFVi - Network Functions Virtualization infrastructure
+- SSH - Secure Shell
+- TCP - Transmission Control Protocol
+- VIM - Virtual Infrastructure Manager
+- VM - Virtual Machine
+
+System Under Test (SUT)
+=======================
+
+The system under test is assumed to be the NFVi and VIM in operation on a
+Pharos compliant infrastructure.
+
+Test Area Structure
+===================
+
+The test area is structured based on dynamic network runtime operations. Each
+test case is able to run independently, i.e. irrelevant of the state created by
+a previous test. Specifically, every test performs clean-up operations which
+return the system to the same state as before the test.
+
+Test Descriptions
+=================
+
+API Used and Reference
+----------------------
+
+Security Groups: https://developer.openstack.org/api-ref/network/v2/index.html#security-groups-security-groups
+
+- create security group
+- delete security group
+
+Networks: https://developer.openstack.org/api-ref/networking/v2/index.html#networks
+
+- create network
+- delete network
+
+Routers and interface: https://developer.openstack.org/api-ref/networking/v2/index.html#routers-routers
+
+- create router
+- update router
+- delete router
+- add interface to router
+
+Subnets: https://developer.openstack.org/api-ref/networking/v2/index.html#subnets
+
+- create subnet
+- update subnet
+- delete subnet
+
+Servers: https://developer.openstack.org/api-ref/compute/
+
+- create keypair
+- create server
+- delete server
+- add/assign floating IP
+- disassociate floating IP
+
+Ports: https://developer.openstack.org/api-ref/networking/v2/index.html#ports
+
+- create port
+- update port
+- delete port
+
+Floating IPs: https://developer.openstack.org/api-ref/networking/v2/index.html#floating-ips-floatingips
+
+- create floating IP
+- delete floating IP
+
+--------------------------------------
+Test Case 1 - Basic network operations
+--------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
+
+Test preconditions
+------------------
+
+* Nova has been configured to boot VMs with Neutron-managed networking
+* Openstack nova, neutron services are available
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a security group SG1, which has rules for allowing
+ incoming SSH and ICMP traffic
+* Test action 2: Create a neutron network NET1
+* Test action 3: Create a tenant router R1 which routes traffic to public network
+* Test action 4: Create a subnet SUBNET1 and add it as router interface
+* Test action 5: Create a server VM1 with SG1 and NET1, and assign a floating
+ IP FIP1 (via R1) to VM1
+* **Test assertion 1:** Ping FIP1 and SSH to VM1 via FIP1 successfully
+* **Test assertion 2:** Ping the internal gateway from VM1 successfully
+* **Test assertion 3:** Ping the default gateway from VM1 using its floating IP
+ FIP1 successfully
+* Test action 6: Detach FIP1 from VM1
+* **Test assertion 4:** VM1 becomes unreachable after FIP1 disassociated
+* Test action 7: Create a new server VM2 with NET1, and associate floating IP FIP1 to VM2
+* **Test assertion 5:** Ping FIP1 and SSH to VM2 via FIP1 successfully
+* Test action 8: Delete SG1, NET1, SUBNET1, R1, VM1, VM2 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the functionality of basic network operations.
+Specifically, the test verifies that:
+
+* The Tempest host can ping VM's IP address. This implies, but does not
+ guarantee (see the ssh check that follows), that the VM has been assigned the
+ correct IP address and has connectivity to the Tempest host.
+
+* The Tempest host can perform key-based authentication to an ssh server hosted
+ at VM's IP address. This check guarantees that the IP address is associated
+ with the target VM.
+
+* The Tempest host can ssh into the VM via the IP address and successfully ping
+ the internal gateway address, implying connectivity to another VM on the same network.
+
+* The Tempest host can ssh into the VM via the IP address and successfully ping
+ the default gateway, implying external connectivity.
+
+* Detach the floating-ip from the VM and VM becomes unreachable.
+
+* Associate attached floating ip to a new VM and the new VM is reachable.
+
+* Floating IP status is updated correctly after each change.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+---------------------------------------
+Test Case 2 - Hotplug network interface
+---------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_hotplug_nic
+
+Test preconditions
+------------------
+
+* Nova has been configured to boot VMs with Neutron-managed networking
+* Compute interface_attach feature is enabled
+* VM vnic_type is not set to 'direct' or 'macvtap'
+* Openstack nova, neutron services are available
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a security group SG1, which has rules for allowing
+ incoming SSH and ICMP traffic
+* Test action 2: Create a neutron network NET1
+* Test action 3: Create a tenant router R1 which routes traffic to public network
+* Test action 4: Create a subnet SUBNET1 and add it as router interface
+* Test action 5: Create a server VM1 with SG1 and NET1, and assign a floating
+ IP FIP1 (via R1) to VM1
+* **Test assertion 1:** Ping FIP1 and SSH to VM1 with FIP1 successfully
+* Test action 6: Create a second neutron network NET2 and subnet SUBNET2, and
+ attach VM1 to NET2
+* Test action 7: Get VM1's ethernet interface NIC2 for NET2
+* **Test assertion 2:** Ping NET2's internal gateway successfully
+* Test action 8: Delete SG1, NET1, NET2, SUBNET1, SUBNET2, R1, NIC2, VM1 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the functionality of adding network to an active VM.
+Specifically, the test verifies that:
+
+* New network interface can be added to an existing VM successfully.
+
+* The Tempest host can ssh into the VM via the IP address and successfully ping
+ the new network's internal gateway address, implying connectivity to the new network.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+-------------------------------------------
+Test Case 3 - Update subnet's configuration
+-------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details
+
+Test preconditions
+------------------
+
+* Nova has been configured to boot VMs with Neutron-managed networking
+* DHCP client is available
+* Tenant networks should be non-shared and isolated
+* Openstack nova, neutron services are available
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a security group SG1, which has rules for allowing
+ incoming SSH and ICMP traffic
+* Test action 2: Create a neutron network NET1
+* Test action 3: Create a tenant router R1 which routes traffic to public network
+* Test action 4: Create a subnet SUBNET1 and add it as router interface,
+ configure SUBNET1 with dns nameserver '1.2.3.4'
+* Test action 5: Create a server VM1 with SG1 and NET1, and assign a floating
+ IP FIP1 (via R1) to VM1
+* **Test assertion 1:** Ping FIP1 and SSH to VM1 with FIP1 successfully
+* **Test assertion 2:** Retrieve the VM1's configured dns and verify it matches
+ the one configured for SUBNET1
+* Test action 6: Update SUBNET1's dns to '9.8.7.6'
+* **Test assertion 3:** After triggering the DHCP renew from the VM manually,
+ retrieve the VM1's configured dns and verify it has been successfully updated
+* Test action 7: Delete SG1, NET1, SUBNET1, R1, VM1 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the functionality of updating subnet's configurations.
+Specifically, the test verifies that:
+
+* Updating subnet's DNS server configurations are affecting the VMs.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+----------------------------------------
+Test Case 4 - Update VM port admin state
+----------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_instance_port_admin_state
+
+Test preconditions
+------------------
+
+* Nova has been configured to boot VMs with Neutron-managed networking
+* Network port_admin_state_change feature is enabled
+* Openstack nova, neutron services are available
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a security group SG1, which has rules for allowing
+ incoming SSH and ICMP traffic
+* Test action 2: Create a neutron network NET1
+* Test action 3: Create a tenant router R1 which routes traffic to public network
+* Test action 4: Create a subnet SUBNET1 and add it as router interface
+* Test action 5: Create a server VM1 with SG1 and NET1, and assign a floating
+ IP FIP1 (via R1) to VM1
+* Test action 6: Create a server VM2 with SG1 and NET1, and assign a floating
+ IP FIP2 to VM2
+* Test action 7: Get a SSH client SSHCLNT1 to VM2
+* **Test assertion 1:** Ping FIP1 and SSH to VM1 with FIP1 successfully
+* **Test assertion 2:** Ping FIP1 via SSHCLNT1 successfully
+* Test action 8: Update admin_state_up attribute of VM1 port to False
+* **Test assertion 3:** Ping FIP1 and SSH to VM1 with FIP1 failed
+* **Test assertion 4:** Ping FIP1 via SSHCLNT1 failed
+* Test action 9: Update admin_state_up attribute of VM1 port to True
+* **Test assertion 5:** Ping FIP1 and SSH to VM1 with FIP1 successfully
+* **Test assertion 6:** Ping FIP1 via SSHCLNT1 successfully
+* Test action 10: Delete SG1, NET1, SUBNET1, R1, SSHCLNT1, VM1, VM2 and FIP1, FIP2
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the VM public and project connectivity status by changing VM port
+admin_state_up to True & False. Specifically, the test verifies that:
+
+* Public and project connectivity is reachable before updating admin_state_up
+ attribute of VM port to False.
+
+* Public and project connectivity is unreachable after updating admin_state_up
+ attribute of VM port to False.
+
+* Public and project connectivity is reachable after updating admin_state_up
+ attribute of VM port from False to True.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+---------------------------------------
+Test Case 5 - Update router admin state
+---------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_router_admin_state
+
+Test preconditions
+------------------
+
+* Nova has been configured to boot VMs with Neutron-managed networking
+* Multi-tenant networks capabilities
+* Openstack nova, neutron services are available
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a security group SG1, which has rules for allowing
+ incoming SSH and ICMP traffic
+* Test action 2: Create a neutron network NET1
+* Test action 3: Create a tenant router R1 which routes traffic to public network
+* Test action 4: Create a subnet SUBNET1 and add it as router interface
+* Test action 5: Create a server VM1 with SG1 and NET1, and assign a floating
+ IP FIP1 (via R1) to VM1
+* **Test assertion 1:** Ping FIP1 and SSH to VM1 with FIP1 successfully
+* Test action 6: Update admin_state_up attribute of R1 to False
+* **Test assertion 2:** Ping FIP1 and SSH to VM1 with FIP1 failed
+* Test action 7: Update admin_state_up attribute of R1 to True
+* **Test assertion 3:** Ping FIP1 and SSH to VM1 with FIP1 successfully
+* Test action 8: Delete SG1, NET1, SUBNET1, R1, VM1 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the router public connectivity status by changing
+router admin_state_up to True & False.
+Specifically, the test verifies that:
+
+* Public connectivity is reachable before updating admin_state_up attribute of router to False.
+
+* Public connectivity is unreachable after updating admin_state_up attribute of router to False.
+
+* Public connectivity is reachable after updating admin_state_up attribute of router.
+ from False to True
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
diff --git a/docs/testing/user/testspecification/securitygroup/index.rst b/docs/testing/user/testspecification/securitygroup/index.rst
new file mode 100644
index 00000000..0621b84d
--- /dev/null
+++ b/docs/testing/user/testspecification/securitygroup/index.rst
@@ -0,0 +1,450 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Huawei Technologies Co.,Ltd
+
+===================================================
+Security Group and Port Security test specification
+===================================================
+
+.. toctree::
+ :maxdepth: 2
+
+Scope
+=====
+
+The security group and port security test area evaluates the ability of the
+system under test to support packet filtering by security group and port security.
+The tests in this test area will evaluate preventing MAC spoofing by port security,
+basic security group operations including testing cross/in tenant traffic, testing
+multiple security groups, using port security to disable security groups and
+updating security groups.
+
+References
+==========
+
+N/A
+
+Definitions and abbreviations
+=============================
+
+The following terms and abbreviations are used in conjunction with this test
+area
+
+- API - Application Programming Interface
+- ICMP - Internet Control Message Protocol
+- MAC - Media Access Control
+- NFVi - Network Functions Virtualization infrastructure
+- SSH - Secure Shell
+- TCP - Transmission Control Protocol
+- VIM - Virtual Infrastructure Manager
+- VM - Virtual Machine
+
+System Under Test (SUT)
+=======================
+
+The system under test is assumed to be the NFVi and VIM in operation on a
+Pharos compliant infrastructure.
+
+Test Area Structure
+===================
+
+The test area is structured based on the basic operations of security group and
+port security. Each test case is able to run independently, i.e. irrelevant of
+the state created by a previous test. Specifically, every test performs clean-up
+operations which return the system to the same state as before the test.
+
+Test Descriptions
+=================
+
+API Used and Reference
+----------------------
+
+Security Groups: https://developer.openstack.org/api-ref/network/v2/index.html#security-groups-security-groups
+
+- create security group
+- delete security group
+
+Networks: https://developer.openstack.org/api-ref/networking/v2/index.html#networks
+
+- create network
+- delete network
+- list networks
+- create floating ip
+- delete floating ip
+
+Routers and interface: https://developer.openstack.org/api-ref/networking/v2/index.html#routers-routers
+
+- create router
+- delete router
+- list routers
+- add interface to router
+
+Subnets: https://developer.openstack.org/api-ref/networking/v2/index.html#subnets
+
+- create subnet
+- list subnets
+- delete subnet
+
+Servers: https://developer.openstack.org/api-ref/compute/
+
+- create keypair
+- create server
+- delete server
+- add/assign floating ip
+
+Ports: https://developer.openstack.org/api-ref/networking/v2/index.html#ports
+
+- update port
+- list ports
+- show port details
+
+--------------------------------------------
+Test Case 1 - Port Security and MAC Spoofing
+--------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port
+
+Test preconditions
+------------------
+
+* Neutron port-security extension API
+* Neutron security-group extension API
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a security group SG1, which has rules for allowing incoming
+ SSH and ICMP traffic
+* Test action 2: Create a neutron network NET1
+* Test action 3: Create a tenant router R1 which routes traffic to public network
+* Test action 4: Create a subnet SUBNET1 and add it as router interface
+* Test action 5: Create a server VM1 with SG1 and NET1, and assign a floating ip
+ FIP1 (via R1) to VM1
+* Test action 6: Verify can ping FIP1 successfully and can SSH to VM1 with FIP1
+* Test action 7: Create a second neutron network NET2 and subnet SUBNET2, and attach VM1 to NET2
+* Test action 8: Get VM1's ethernet interface NIC2 for NET2
+* Test action 9: Create second server VM2 on NET2
+* Test action 10: Verify VM1 is able to communicate with VM2 via NIC2
+* Test action 11: Login to VM1 and spoof the MAC address of NIC2 to "00:00:00:00:00:01"
+* Test action 12: Verify VM1 fails to communicate with VM2 via NIC2
+* **Test assertion 1:** The ping operation is failed
+* Test action 13: Update 'security_groups' to be none for VM1's NIC2 port
+* Test action 14: Update 'port_security_enable' to be False for VM1's NIC2 port
+* Test action 15: Verify now VM1 is able to communicate with VM2 via NIC2
+* **Test assertion 2:** The ping operation is successful
+* Test action 16: Delete SG1, NET1, NET2, SUBNET1, SUBNET2, R1, VM1, VM2 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the ability to prevent MAC spoofing by using port security.
+Specifically, the test verifies that:
+
+* With port security, the ICMP packets from a spoof server cannot pass the port.
+
+* Without port security, the ICMP packets from a spoof server can pass the port.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+------------------------------------------------------
+Test Case 2 - Test Security Group Cross Tenant Traffic
+------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic
+
+Test preconditions
+------------------
+
+* Neutron security-group extension API
+* Two tenants
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a neutron network NET1 for primary tenant
+* Test action 2: Create a primary tenant router R1 which routes traffic to public network
+* Test action 3: Create a subnet SUBNET1 and add it as router interface
+* Test action 4: Create 2 empty security groups SG1 and SG2 for primary tenant
+* Test action 5: Add a tcp rule to SG1
+* Test action 6: Create a server VM1 with SG1, SG2 and NET1, and assign a floating ip
+ FIP1 (via R1) to VM1
+* Test action 7: Repeat test action 1 to 6 and create NET2, R2, SUBNET2, SG3, SG4,
+ FIP2 and VM2 for an alt_tenant
+* Test action 8: Verify VM1 fails to communicate with VM2 through FIP2
+* **Test assertion 1:** The ping operation is failed
+* Test action 9: Add ICMP rule to SG4
+* Test action 10: Verify VM1 is able to communicate with VM2 through FIP2
+* **Test assertion 2:** The ping operation is successful
+* Test action 11: Verify VM2 fails to communicate with VM1 through FIP1
+* **Test assertion 3:** The ping operation is failed
+* Test action 12: Add ICMP rule to SG2
+* Test action 13: Verify VM2 is able to communicate with VM1 through FIP1
+* **Test assertion 4:** The ping operation is successful
+* Test action 14: Delete SG1, SG2, SG3, SG4, NET1, NET2, SUBNET1, SUBNET2, R1, R2,
+ VM1, VM2, FIP1 and FIP2
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the ability of the security group to filter packets cross tenant.
+Specifically, the test verifies that:
+
+* Without ICMP security group rule, the ICMP packets cannot be received by the server
+ in another tenant which differs from the source server.
+
+* With ingress ICMP security group rule enabled only at tenant1, the server in tenant2
+ can ping server in tenant1 but not the reverse direction.
+
+* With ingress ICMP security group rule enabled at tenant2 also, the ping works from both directions.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+---------------------------------------------------
+Test Case 3 - Test Security Group in Tenant Traffic
+---------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_in_tenant_traffic
+
+Test preconditions
+------------------
+
+* Neutron security-group extension API
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a neutron network NET1
+* Test action 2: Create a tenant router R1 which routes traffic to public network
+* Test action 3: Create a subnet SUBNET1 and add it as router interface
+* Test action 4: Create 2 empty security groups SG1 and SG2
+* Test action 5: Add a tcp rule to SG1
+* Test action 6: Create a server VM1 with SG1, SG2 and NET1, and assign a floating ip
+ FIP1 (via R1) to VM1
+* Test action 7: Create second server VM2 with default security group and NET1
+* Test action 8: Verify VM1 fails to communicate with VM2 through VM2's fixed ip
+* **Test assertion 1:** The ping operation is failed
+* Test action 9: Add ICMP security group rule to default security group
+* Test action 10: Verify VM1 is able to communicate with VM2 through VM2's fixed ip
+* **Test assertion 2:** The ping operation is successful
+* Test action 11: Delete SG1, SG2, NET1, SUBNET1, R1, VM1, VM2 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the ability of the security group to filter packets in one tenant.
+Specifically, the test verifies that:
+
+* Without ICMP security group rule, the ICMP packets cannot be received by the server
+ in the same tenant.
+
+* With ICMP security group rule, the ICMP packets can be received by the server
+ in the same tenant.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+-------------------------------------------
+Test Case 4 - Test Multiple Security Groups
+-------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups
+
+Test preconditions
+------------------
+
+* Neutron security-group extension API
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a neutron network NET1
+* Test action 2: Create a tenant router R1 which routes traffic to public network
+* Test action 3: Create a subnet SUBNET1 and add it as router interface
+* Test action 4: Create 2 empty security groups SG1 and SG2
+* Test action 5: Add a tcp rule to SG1
+* Test action 6: Create a server VM1 with SG1, SG2 and NET1, and assign a floating ip
+ FIP1 (via R1) to VM1
+* Test action 7: Verify failed to ping FIP1
+* **Test assertion 1:** The ping operation is failed
+* Test action 8: Add ICMP security group rule to SG2
+* Test action 9: Verify can ping FIP1 successfully
+* **Test assertion 2:** The ping operation is successful
+* Test action 10: Verify can SSH to VM1 with FIP1
+* **Test assertion 3:** Can SSH to VM1 successfully
+* Test action 11: Delete SG1, SG2, NET1, SUBNET1, R1, VM1 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the ability of multiple security groups to filter packets.
+Specifically, the test verifies that:
+
+* A server with 2 security groups, one with TCP rule and without ICMP rule,
+ cannot receive the ICMP packets sending from the tempest host machine.
+
+* A server with 2 security groups, one with TCP rule and the other with ICMP rule,
+ can receive the ICMP packets sending from the tempest host machine and be connected
+ via the SSH client.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+-------------------------------------------------------
+Test Case 5 - Test Port Security Disable Security Group
+-------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_security_disable_security_group
+
+Test preconditions
+------------------
+
+* Neutron security-group extension API
+* Neutron port-security extension API
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a neutron network NET1
+* Test action 2: Create a tenant router R1 which routes traffic to public network
+* Test action 3: Create a subnet SUBNET1 and add it as router interface
+* Test action 4: Create 2 empty security groups SG1 and SG2
+* Test action 5: Add a tcp rule to SG1
+* Test action 6: Create a server VM1 with SG1, SG2 and NET1, and assign a floating ip
+ FIP1 (via R1) to VM1
+* Test action 7: Create second server VM2 with default security group and NET1
+* Test action 8: Update 'security_groups' to be none and 'port_security_enabled' to be
+ True for VM2's port
+* Test action 9: Verify VM1 fails to communicate with VM2 through VM2's fixed ip
+* **Test assertion 1:** The ping operation is failed
+* Test action 10: Update 'security_groups' to be none and 'port_security_enabled' to be
+ False for VM2's port
+* Test action 11: Verify VM1 is able to communicate with VM2 through VM2's fixed ip
+* **Test assertion 2:** The ping operation is successful
+* Test action 12: Delete SG1, SG2, NET1, SUBNET1, R1, VM1, VM2 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the ability of port security to disable security group.
+Specifically, the test verifies that:
+
+* The ICMP packets cannot pass the port whose 'port_security_enabled' is True
+ and security_groups is none.
+
+* The ICMP packets can pass the port whose 'port_security_enabled' is False
+ and security_groups is none.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+---------------------------------------------
+Test Case 6 - Test Update Port Security Group
+---------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_update_new_security_group
+
+Test preconditions
+------------------
+
+* Neutron security-group extension API
+* One public network
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a neutron network NET1
+* Test action 2: Create a tenant router R1 which routes traffic to public network
+* Test action 3: Create a subnet SUBNET1 and add it as router interface
+* Test action 4: Create 2 empty security groups SG1 and SG2
+* Test action 5: Add a tcp rule to SG1
+* Test action 6: Create a server VM1 with SG1, SG2 and NET1, and assign a floating ip
+ FIP1 (via R1) to VM1
+* Test action 7: Create third empty security group SG3
+* Test action 8: Add ICMP rule to SG3
+* Test action 9: Create second server VM2 with default security group and NET1
+* Test action 10: Verify VM1 fails to communicate with VM2 through VM2's fixed ip
+* **Test assertion 1:** The ping operation is failed
+* Test action 11: Update 'security_groups' to be SG3 for VM2's port
+* Test action 12: Verify VM1 is able to communicate with VM2 through VM2's fixed ip
+* **Test assertion 2:** The ping operation is successful
+* Test action 13: Delete SG1, SG2, SG3, NET1, SUBNET1, R1, VM1, VM2 and FIP1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the ability to update port with a new security group.
+Specifically, the test verifies that:
+
+* Without ICMP security group rule, the VM cannot receive ICMP packets.
+
+* Update the port's security group which has ICMP rule, the VM can receive ICMP packets.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
diff --git a/docs/testing/user/testspecification/vimoperationscompute/index.rst b/docs/testing/user/testspecification/vimoperationscompute/index.rst
index 4ed37809..42a8e70e 100644
--- a/docs/testing/user/testspecification/vimoperationscompute/index.rst
+++ b/docs/testing/user/testspecification/vimoperationscompute/index.rst
@@ -1,6 +1,6 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
-.. (c) Ericsson AB
+.. (c) Ericsson AB, Huawei Technologies Co.,Ltd
=========================================
VIM compute operations test specification
@@ -12,47 +12,375 @@ VIM compute operations test specification
Scope
=====
+The VIM compute operations test area evaluates the ability of the system under
+test to support VIM compute operations. The test cases documented here are the
+compute API test cases in the OpenStack Interop guideline 2016.8 as implemented
+by the RefStack client. These test cases will evaluate basic OpenStack (as a VIM)
+compute operations, including:
+
+- Image management operations
+- Basic support operations
+- API version support operations
+- Quotas management operations
+- Basic server operations
+- Volume management operations
+
References
================
+- OpenStack Governance/Interop
+
+ - https://wiki.openstack.org/wiki/Governance/InteropWG
+
+- Defcore test cases
+
+ - https://github.com/openstack/interop/blob/master/2016.08.json
+
+- Refstack client
+
+ - https://github.com/openstack/refstack-client
Definitions and abbreviations
=============================
+The following terms and abbreviations are used in conjunction with this test area
-Use case description
-====================
-
+- API - Application Programming Interface
+- NFVi - Network Functions Virtualization infrastructure
+- SUT - System Under Test
+- UUID - Universally Unique Identifier
+- VIM - Virtual Infrastructure Manager
+- VM - Virtual Machine
System Under Test (SUT)
=======================
+The system under test is assumed to be the NFVi and VIM deployed with a Pharos compliant infrastructure.
-Test Suite Structure
+Test Area Structure
====================
+The test area is structured based on VIM compute API operations. Each test case is
+able to run independently, i.e. irrelevant of the state created by a previous test.
+Specifically, every test performs clean-up operations which return the system to
+the same state as before the test.
+
+For brevity, the test cases in this test area are summarized together based on
+the operations they are testing.
Test Descriptions
=================
+API Used and Reference
+----------------------
+
+Servers: https://developer.openstack.org/api-ref/compute/
+
+- create server
+- delete server
+- list servers
+- start server
+- stop server
+- update server
+- get server action
+- set server metadata
+- update server metadata
+- rebuild server
+
+- create image
+- delete image
+
+- create keypair
+- delete keypair
+
+Block storage: https://developer.openstack.org/api-ref/block-storage
+
+- create volume
+- delete volume
+- attach volume to server
+- detach volume from server
+
+-----------------------------------------------------
+Test Case 1 - Image operations within the Compute API
+-----------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_delete_image
+tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_image_specify_multibyte_character_image_name
+
+Test preconditions
+------------------
+
+* Compute server extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a server VM1 with an image IMG1 and wait for VM1 to reach 'ACTIVE' status
+* Test action 2: Create a new server image IMG2 from VM1, specifying image name
+ and image metadata. Wait for IMG2 to reach 'ACTIVE' status, and then delete IMG2
+* **Test assertion 1:** Verify IMG2 is created with correct image name and image
+ metadata; verify IMG1's 'minRam' equals to IMG2's 'minRam' and IMG2's 'minDisk' equals
+ to IMG1's 'minDisk' or VM1's flavor disk size
+* **Test assertion 2:** Verify IMG2 is deleted correctly
+* Test action 3: Create another server IMG3 from VM1, specifying image name
+ with a 3 byte utf-8 character
+* **Test assertion 3:** Verify IMG3 is created correctly
+* Test action 4: Delete VM1, IMG1 and IMG3
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the Compute API ability of creating image from server,
+deleting image, creating server image with multi-byte character name.
+Specifically, the test verifies that:
+
+* Compute server create image and delete image APIs work correctly.
+* Compute server image can be created with multi-byte character name.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+-----------------------------------------------------
+Test Case 2 - Action operation within the Compute API
+-----------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_get_instance_action
+tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_list_instance_actions
+
+Test preconditions
+------------------
+
+* Compute server extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a server VM1 and wait for VM1 to reach 'ACTIVE' status
+* Test action 2: Get the action details ACT_DTL of VM1
+* **Test assertion 1:** Verify ACT_DTL's 'instance_uuid' matches VM1's ID and
+ ACT_DTL's 'action' matched 'create'
+* Test action 3: Create a server VM2 and wait for VM2 to reach 'ACTIVE' status
+* Test action 4: Delete server VM2 and wait for VM2 to reach termination
+* Test action 5: Get the action list ACT_LST of VM2
+* **Test assertion 2:** Verify ACT_LST's length is 2 and two actions are 'create' and 'delete'
+* Test action 6: Delete VM1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the Compute API ability of getting the action details
+of a provided server and getting the action list of a deleted server.
+Specifically, the test verifies that:
+
+* Get the details of the action in a specified server.
+* List the actions that were performed on the specified server.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------------------------
+Test Case 3 - Generate, import and delete SSH keys within Compute services
+--------------------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_specify_keypair
+
+Test preconditions
+------------------
+
+* Compute server extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a keypair KEYP1 and list all existing keypairs
+* Test action 2: Create a server VM1 with KEYP1 and wait for VM1 to reach 'ACTIVE' status
+* Test action 3: Show details of VM1
+* **Test assertion 1:** Verify value of 'key_name' in the details equals to the name of KEYP1
+* Test action 4: Delete KEYP1 and VM1
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the Compute API ability of creating a keypair, listing
+keypairs and creating a server with a provided keypair.
+Specifically, the test verifies that:
+
+* Compute create keypair and list keypair APIs work correctly.
+* While creating a server, keypair can be specified.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------
+Test Case 4 - List supported versions of the Compute API
+--------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.compute.test_versions.TestVersions.test_list_api_versions
+
+Test preconditions
+------------------
+
+* Compute versions extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Get a List of versioned endpoints in the SUT
+* **Test assertion 1:** Verify endpoints versions start at 'v2.0'
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the functionality of listing all available APIs to API consumers.
+Specifically, the test verifies that:
+
+* Compute list API versions API works correctly.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+----------------------------------------------
+Test Case 5 - Quotas management in Compute API
+----------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.compute.test_quotas.QuotasTestJSON.test_get_default_quotas
+tempest.api.compute.test_quotas.QuotasTestJSON.test_get_quotas
+
+Test preconditions
+------------------
+
+* Compute quotas extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+* Test action 1: Get the default quota set using the tenant ID
+* **Test assertion 1:** Verify the default quota set ID matches tenant ID and
+ the default quota set is complete
+* Test action 2: Get the quota set using the tenant ID
+* **Test assertion 2:** Verify the quota set ID matches tenant ID and the quota
+ set is complete
+* Test action 3: Get the quota set using the user ID
+* **Test assertion 3:** Verify the quota set ID matches tenant ID and the quota
+ set is complete
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the functionality of getting quota set.
+Specifically, the test verifies that:
+
+* User can get the default quota set for its tenant.
+* User can get the quota set for its tenant.
+* User can get the quota set using user ID.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------
+Test Case 6 - Basic server operations in the Compute API
+--------------------------------------------------------
+
+Test case specification
+-----------------------
+
+This test case evaluates the Compute API ability of basic server operations, including:
+
+- Create a server with admin password
+- Create a server with a name that already exists
+- Create a server with a numeric name
+- Create a server with a really long metadata
+- Create a server with a name whose length exceeding 255 characters
+- Create a server with an unknown flavor
+- Create a server with an unknown image ID
+- Create a server with an invalid network UUID
+- Delete a server using a server ID that exceeds length limit
+- Delete a server using a negative server ID
+- Get a nonexistent server details
+- Verify the instance host name is the same as the server name
+- Create a server with an invalid access IPv6 address
+- List all existent servers
+- Filter the (detailed) list of servers by flavor, image, server name, server status or limit
+- Lock a server and try server stop, unlock and retry
+- Get and delete metadata from a server
+- List and set metadata for a server
+- Reboot, rebuild, stop and start a server
+- Update a server's access addresses and server name
+
+The reference is,
+
+tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_server_with_admin_password
+tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_with_existing_server_name
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_numeric_server_name
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_metadata_exceeds_length_limit
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_name_length_exceeds_256
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_flavor
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_image
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_network_uuid
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_id_exceeding_length_limit
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_negative_id
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_get_non_existent_server
tempest.api.compute.servers.test_create_server.ServersTestJSON.test_host_name_is_same_as_server_name
+tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_host_name_is_same_as_server_name
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_invalid_ip_v6_address
tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers
tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers_with_detail
-tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_created_server_vcpus
-tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_server_details
-tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_host_name_is_same_as_server_name
tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers
tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers_with_detail
-tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_created_server_vcpus
-tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_server_details
-tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_get_instance_action
-tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_list_instance_actions
tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_flavor
tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_image
tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_name
tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_status
tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_limit_results
-tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_active_status
tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_flavor
tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_image
tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_limit
@@ -72,41 +400,302 @@ tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJS
tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_status_non_existing
tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_with_a_deleted_server
tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_lock_unlock_server
-tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard
-tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_rebuild_server
-tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_stop_start_server
tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_delete_server_metadata_item
tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_get_server_metadata_item
tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_list_server_metadata
tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata
tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata_item
tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_update_server_metadata
-tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_server_with_admin_password
-tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_specify_keypair
-tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_with_existing_server_name
-tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_access_server_address
-tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_server_name
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_numeric_server_name
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_metadata_exceeds_length_limit
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_name_length_exceeds_256
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_flavor
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_image
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_network_uuid
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_id_exceeding_length_limit
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_negative_id
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_get_non_existent_server
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_invalid_ip_v6_address
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_server_name_blank
+tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard
tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server
+tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_rebuild_server
tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_deleted_server
tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_non_existent_server
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_reboot_deleted_server
-tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_server_name_blank
+tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_stop_start_server
tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_stop_non_existent_server
+tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_access_server_address
+tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_server_name
tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_name_of_non_existent_server
tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_name_length_exceeds_256
tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_set_empty_name
-tempest.api.compute.test_quotas.QuotasTestJSON.test_get_default_quotas
-tempest.api.compute.test_quotas.QuotasTestJSON.test_get_quotas
-tempest.api.compute.test_versions.TestVersions.test_list_api_versions
+tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_created_server_vcpus
+tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_server_details
+tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_created_server_vcpus
+tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_server_details
+
+tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_active_status
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_reboot_deleted_server
+
+Note: the last 2 test cases are the alias of another 2 test cases respectively, which are
+
+tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_status
+tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_deleted_server
+
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of OpenStack.
+
+Test preconditions
+------------------
+
+* Compute quotas extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a server VM1 with a admin password 'testpassword'
+* **Test assertion 1:** Verify the password returned in the response equals to 'testpassword'
+* Test action 2: Generate a VM name VM_NAME
+* Test action 3: Create 2 servers VM2 and VM3 both with name VM_NAME
+* **Test assertion 2:** Verify VM2's ID is not equal to VM3's ID, and VM2's name equal to VM3's name
+* Test action 4: Create a server VM4 with a numeric name '12345'
+* **Test assertion 3:** Verify creating VM4 failed
+* Test action 5: Create a server VM5 with a long metadata '{'a': 'b' * 260}'
+* **Test assertion 4:** Verify creating VM5 failed
+* Test action 6: Create a server VM6 with name length exceeding 255 characters
+* **Test assertion 5:** Verify creating VM6 failed
+* Test action 7: Create a server VM7 with an unknown flavor '-1'
+* **Test assertion 6:** Verify creating VM7 failed
+* Test action 8: Create a server VM8 with an unknown image ID '-1'
+* **Test assertion 7:** Verify creating VM8 failed
+* Test action 9: Create a server VM9 with an invalid network UUID 'a-b-c-d-e-f-g-h-i-j'
+* **Test assertion 8:** Verify creating VM9 failed
+* Test action 10: Delete a server using a server ID that exceeds system's max integer limit
+* **Test assertion 9:** Verify deleting server failed
+* Test action 11: Delete a server using a server ID '-1'
+* **Test assertion 10:** Verify deleting server failed
+* Test action 12: Get a nonexistent server by using a random generated server ID
+* **Test assertion 11:** Verify get server failed
+* Test action 13: SSH into a provided server and get server's hostname
+* **Test assertion 12:** Verify server's host name is the same as the server name
+* Test action 14: SSH into a provided server and get server's hostname (manual disk configuration)
+* **Test assertion 13:** Verify server's host name is the same as the server name (manual disk configuration)
+* Test action 15: Create a server with an invalid access IPv6 address
+* **Test assertion 14:** Verify creating server failed, a bad request error is returned in response
+* Test action 16: List all existent servers
+* **Test assertion 15:** Verify a provided server is in the server list
+* Test action 17: List all existent servers in detail
+* **Test assertion 16:** Verify a provided server is in the detailed server list
+* Test action 18: List all existent servers (manual disk configuration)
+* **Test assertion 17:** Verify a provided server is in the server list (manual disk configuration)
+* Test action 19: List all existent servers in detail (manual disk configuration)
+* **Test assertion 18:** Verify a provided server is in the detailed server list (manual disk configuration)
+* Test action 20: List all existent servers in detail and filter the server list by flavor
+* **Test assertion 19:** Verify the filtered server list is correct
+* Test action 21: List all existent servers in detail and filter the server list by image
+* **Test assertion 20:** Verify the filtered server list is correct
+* Test action 22: List all existent servers in detail and filter the server list by server name
+* **Test assertion 21:** Verify the filtered server list is correct
+* Test action 23: List all existent servers in detail and filter the server list by server status
+* **Test assertion 22:** Verify the filtered server list is correct
+* Test action 24: List all existent servers in detail and filter the server list by display limit '1'
+* **Test assertion 23:** Verify the length of filtered server list is 1
+* Test action 25: List all existent servers and filter the server list by flavor
+* **Test assertion 24:** Verify the filtered server list is correct
+* Test action 26: List all existent servers and filter the server list by image
+* **Test assertion 25:** Verify the filtered server list is correct
+* Test action 27: List all existent servers and filter the server list by display limit '1'
+* **Test assertion 26:** Verify the length of filtered server list is 1
+* Test action 28: List all existent servers and filter the server list by server name
+* **Test assertion 27:** Verify the filtered server list is correct
+* Test action 29: List all existent servers and filter the server list by server status
+* **Test assertion 28:** Verify the filtered server list is correct
+* Test action 30: List all existent servers and filter the server list by server name wildcard
+* **Test assertion 29:** Verify the filtered server list is correct
+* Test action 31: List all existent servers and filter the server list by part of server name
+* **Test assertion 30:** Verify the filtered server list is correct
+* Test action 32: List all existent servers and filter the server list by a future change-since date
+* **Test assertion 31:** Verify the filtered server list is empty
+* Test action 33: List all existent servers and filter the server list by a invalid change-since date format
+* **Test assertion 32:** Verify a bad request error is returned in the response
+* Test action 34: List all existent servers and filter the server list by display limit '1'
+* **Test assertion 33:** Verify the length of filtered server list is 1
+* Test action 35: List all existent servers and filter the server list by a
+ display limit value greater than the length of the server list
+* **Test assertion 34:** Verify the length of filtered server list equals to the length of server list
+* Test action 36: List all existent servers and filter the server list by display limit '-1'
+* **Test assertion 35:** Verify a bad request error is returned in the response
+* Test action 37: List all existent servers and filter the server list by a string type limit value 'testing'
+* **Test assertion 36:** Verify a bad request error is returned in the response
+* Test action 38: List all existent servers and filter the server list by a nonexistent flavor
+* **Test assertion 37:** Verify the filtered server list is empty
+* Test action 39: List all existent servers and filter the server list by a nonexistent image
+* **Test assertion 38:** Verify the filtered server list is empty
+* Test action 40: List all existent servers and filter the server list by a nonexistent server name
+* **Test assertion 39:** Verify the filtered server list is empty
+* Test action 41: List all existent servers in detail and search the server list for a deleted server
+* **Test assertion 40:** Verify the deleted server is not in the server list
+* Test action 42: List all existent servers and filter the server list by a nonexistent server status
+* **Test assertion 41:** Verify the filtered server list is empty
+* Test action 43: List all existent servers in detail
+* **Test assertion 42:** Verify a provided deleted server's id is not in the server list
+* Test action 44: Lock a provided server VM10 and retrieve the server's status
+* **Test assertion 43:** Verify VM10 is in 'ACTIVE' status
+* Test action 45: Stop VM10
+* **Test assertion 44:** Verify stop VM10 failed
+* Test action 46: Unlock VM10 and stop VM10 again
+* **Test assertion 45:** Verify VM10 is stopped and in 'SHUTOFF' status
+* Test action 47: Start VM10
+* **Test assertion 46:** Verify VM10 is in 'ACTIVE' status
+* Test action 48: Delete metadata item 'key1' from a provided server
+* **Test assertion 47:** Verify the metadata item is removed
+* Test action 49: Get metadata item 'key2' from a provided server
+* **Test assertion 48:** Verify the metadata item is correct
+* Test action 50: List all metadata key/value pair for a provided server
+* **Test assertion 49:** Verify all metadata are retrieved correctly
+* Test action 51: Set metadata {'meta2': 'data2', 'meta3': 'data3'} for a provided server
+* **Test assertion 50:** Verify server's metadata are replaced correctly
+* Test action 52: Set metadata item nova's value to 'alt' for a provided server
+* **Test assertion 51:** Verify server's metadata are set correctly
+* Test action 53: Update metadata {'key1': 'alt1', 'key3': 'value3'} for a provided server
+* **Test assertion 52:** Verify server's metadata are updated correctly
+* Test action 54: Create a server with empty name parameter
+* **Test assertion 53:** Verify create server failed
+* Test action 55: Hard reboot a provided server
+* **Test assertion 54:** Verify server is rebooted successfully
+* Test action 56: Soft reboot a nonexistent server
+* **Test assertion 55:** Verify reboot failed, an error is returned in the response
+* Test action 57: Rebuild a provided server with new image, new server name and metadata
+* **Test assertion 56:** Verify server is rebuilt successfully, server image, name and metadata are correct
+* Test action 58: Create a server VM11
+* Test action 59: Delete VM11 and wait for VM11 to reach termination
+* Test action 60: Rebuild VM11 with another image
+* **Test assertion 57:** Verify rebuild server failed, an error is returned in the response
+* Test action 61: Rebuild a nonexistent server
+* **Test assertion 58:** Verify rebuild server failed, an error is returned in the response
+* Test action 62: Stop a provided server
+* **Test assertion 59:** Verify server reaches 'SHUTOFF' status
+* Test action 63: Start the stopped server
+* **Test assertion 60:** Verify server reaches 'ACTIVE' status
+* Test action 64: Stop a provided server
+* **Test assertion 61:** Verify stop server failed, an error is returned in the response
+* Test action 65: Create a server VM12 and wait it to reach 'ACTIVE' status
+* Test action 66: Update VM12's IPv4 and IPv6 access addresses
+* **Test assertion 62:** Verify VM12's access addresses have been updated correctly
+* Test action 67: Create a server VM13 and wait it to reach 'ACTIVE' status
+* Test action 68: Update VM13's server name with non-ASCII characters '\u00CD\u00F1st\u00E1\u00F1c\u00E9'
+* **Test assertion 63:** Verify VM13's server name has been updated correctly
+* Test action 69: Update the server name of a nonexistent server
+* **Test assertion 64:** Verify update server name failed, an 'object not found' error is returned in the response
+* Test action 70: Update a provided server's name with a 256-character long name
+* **Test assertion 65:** Verify update server name failed, a bad request is returned in the response
+* Test action 71: Update a provided server's server name with an empty string
+* **Test assertion 66:** Verify update server name failed, a bad request error is returned in the response
+* Test action 72: Get the number of vcpus of a provided server
+* Test action 73: Get the number of vcpus stated by the server's flavor
+* **Test assertion 67:** Verify that the number of vcpus reported by the server
+ matches the amount stated by the server's flavor
+* Test action 74: Create a server VM14
+* **Test assertion 68:** Verify VM14's server attributes are set correctly
+* Test action 75: Get the number of vcpus of a provided server (manual disk configuration)
+* Test action 76: Get the number of vcpus stated by the server's flavor (manual disk configuration)
+* **Test assertion 69:** Verify that the number of vcpus reported by the server
+ matches the amount stated by the server's flavor (manual disk configuration)
+* Test action 77: Create a server VM15 (manual disk configuration)
+* **Test assertion 70:** Verify VM15's server attributes are set correctly (manual disk configuration)
+* Test action 78: Delete all VMs created
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the functionality of basic server operations.
+Specifically, the test verifies that:
+
+* If an admin password is provided on server creation, the server's root password should be set to that password
+* Create a server with a name that already exists is allowed
+* Create a server with a numeric name or a name that exceeds the length limit is not allowed
+* Create a server with a metadata that exceeds the length limit is not allowed
+* Create a server with an invalid flavor, an invalid image or an invalid network UUID is not allowed
+* Delete a server with a server ID that exceeds the length limit or a nonexistent server ID is not allowed
+* A provided server's host name is the same as the server name
+* Create a server with an invalid IPv6 access address is not allowed
+* A created server is in the (detailed) list of servers
+* Filter the (detailed) list of servers by flavor, image, server name, server status,
+ and display limit, respectively.
+* Filter the list of servers by a future date
+* Filter the list of servers by an invalid date format, a negative display limit or a string type
+ display limit value is not allowed
+* Filter the list of servers by a nonexistent flavor, image, server name or server status is not allowed
+* Deleted servers are not in the list of servers
+* Deleted servers do not show by default in list of servers
+* Locked server is not allowed to be stopped by non-admin user
+* Can get and delete metadata from servers
+* Can list, set and update server metadata
+* Create a server with name parameter empty is not allowed
+* Hard reboot a server and the server should be power cycled
+* Reboot, rebuild and stop a nonexistent server is not allowed
+* Rebuild a server using the provided image and metadata
+* Stop and restart a server
+* A server's name and access addresses can be updated
+* Update the name of a nonexistent server is not allowed
+* Update name of a server to a name that exceeds the name length limit is not allowed
+* Update name of a server to an empty string is not allowed
+* The number of vcpus reported by the server matches the amount stated by the server's flavor
+* The specified server attributes are set correctly
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+-----------------------------------------------------------------
+Test Case 7 - Retrieve volume information through the Compute API
+-----------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+This test case evaluates the Compute API ability of attaching volume to a
+specific server and retrieve volume information, the reference is,
+
tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_attach_detach_volume
tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_list_get_volume_attachments
+
+Test preconditions
+------------------
+
+* Compute volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create a server VM1 and a volume VOL1
+* Test action 2: Attach VOL1 to VM1
+* **Test assertion 1:** Stop VM1 successfully and wait VM1 to reach 'SHUTOFF' status
+* **Test assertion 2:** Start VM1 successfully and wait VM1 to reach 'ACTIVE' status
+* **Test assertion 3:** SSH into VM1 and verify VOL1 is in VM1's root disk devices
+* Test action 3: Detach VOL1 from VM1
+* **Test assertion 4:** Stop VM1 successfully and wait VM1 to reach 'SHUTOFF' status
+* **Test assertion 5:** Start VM1 successfully and wait VM1 to reach 'ACTIVE' status
+* **Test assertion 6:** SSH into VM1 and verify VOL1 is not in VM1's root disk devices
+* Test action 4: Create a server VM2 and a volume VOL2
+* Test action 5: Attach VOL2 to VM2
+* Test action 6: List VM2's volume attachments
+* **Test assertion 7:** Verify the length of the list is 1 and VOL2 attachment is in the list
+* Test action 7: Retrieve VM2's volume information
+* **Test assertion 8:** Verify volume information is correct
+* Test action 8: Delete VM1, VM2, VOL1 and VOL2
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the functionality of retrieving volume information.
+Specifically, the test verifies that:
+
+* Stop and start a server with an attached volume work correctly.
+* Retrieve a server's volume information correctly.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
diff --git a/docs/testing/user/testspecification/vimoperationsvolume/index.rst b/docs/testing/user/testspecification/vimoperationsvolume/index.rst
index ce039a5b..9a76c37c 100644
--- a/docs/testing/user/testspecification/vimoperationsvolume/index.rst
+++ b/docs/testing/user/testspecification/vimoperationsvolume/index.rst
@@ -1,36 +1,512 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
-.. (c) Ericsson AB
+.. (c) Ericsson AB, Huawei Technologies Co.,Ltd
-========================================
+=========================================
VIM volume operations test specification
-========================================
+=========================================
.. toctree::
:maxdepth: 2
-Each test case requires documentation according to:
-* Use case specification
-* Test preconditions
-* Basic test flow execution descriptor
-* Post conditions and pass fail criteria
+Scope
+=====
+
+The VIM volume operations test area evaluates the ability of the system under
+test to support VIM volume operations. The test cases documented here are the
+volume API test cases in the OpenStack Interop guideline 2016.8 as implemented
+by the RefStack client. These test cases will evaluate basic OpenStack (as a VIM)
+volume operations, including:
+
+- Volume attach and detach operations
+- Volume service availability zone operations
+- Volume cloning operations
+- Image copy-to-volume operations
+- Volume creation and deletion operations
+- Volume service extension listing
+- Volume metadata operations
+- Volume snapshot operations
+
+References
+================
+
+- OpenStack Governance/Interop
+
+ - https://wiki.openstack.org/wiki/Governance/InteropWG
+
+- Defcore test cases
+
+ - https://github.com/openstack/interop/blob/master/2016.08.json
+
+- Refstack client
+
+ - https://github.com/openstack/refstack-client
+
+Definitions and abbreviations
+=============================
+
+The following terms and abbreviations are used in conjunction with this test area
+
+- API - Application Programming Interface
+- NFVi - Network Functions Virtualization infrastructure
+- SUT - System Under Test
+- VIM - Virtual Infrastructure Manager
+- VM - Virtual Machine
+
+System Under Test (SUT)
+=======================
+
+The system under test is assumed to be the NFVI and VIM deployed with a Pharos compliant infrastructure.
+
+Test Area Structure
+====================
+
+The test area is structured based on VIM volume API operations. Each test case is
+able to run independently, i.e. irrelevant of the state created by a previous test.
+Specifically, every test performs clean-up operations which return the system to
+the same state as before the test.
+
+For brevity, the test cases in this test area are summarized together based on
+the operations they are testing.
+
+Test Descriptions
+=================
+
+API Used and Reference
+----------------------
+
+Block storage: https://developer.openstack.org/api-ref/block-storage
+
+- create volume
+- delete volume
+- update volume
+- attach volume to server
+- detach volume from server
+- create volume metadata
+- update volume metadata
+- delete volume metadata
+- list volume
+
+- create snapshot
+- update snapshot
+- delete snapshot
+
+------------------------------------------------------------------------
+Test Case 1 - Volume attach and detach operations with the Cinder v2 API
+------------------------------------------------------------------------
+
+Test case specification
+-----------------------
-tempest.api.volume.test_availability_zone.AvailabilityZoneV2TestJSON.test_get_availability_zone_list
-tempest.api.volume.test_extensions.ExtensionsV2TestJSON.test_list_extensions
-tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_create_get_delete_snapshot_metadata
-tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_crud_snapshot_metadata
-tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_update_snapshot_metadata_item
-tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_create_get_delete_volume_metadata
-tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_crud_volume_metadata
-tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_update_volume_metadata_item
tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_attach_detach_volume_to_instance
tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_get_volume_attachment
-tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_reserve_unreserve_volume
-tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_bootable
-tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_readonly_update
-tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_attach_volumes_with_nonexistent_volume_id
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_detach_volumes_with_invalid_volume_id
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+* Test action 1: Create a server VM1
+* Test action 2: Attach a provided VOL1 to VM1
+* **Test assertion 1:** Verify VOL1 is in 'in-use' status
+* Test action 3: Detach VOL1 from VM1
+* **Test assertion 2:** Verify VOL1 is in 'available' status
+* Test action 4: Create a server VM2
+* Test action 5: Attach a provided VOL2 to VM2 and wait for VOL2 to reach 'in-use' status
+* Test action 6: Retrieve VOL2's attachment information ATTCH_INFO
+* **Test assertion 3:** Verify ATTCH_INFO is correct
+* Test action 7: Create a server VM3 and wait for VM3 to reach 'ACTIVE' status
+* Test action 8: Attach a non-existent volume to VM3
+* **Test assertion 4:** Verify attach volume failed, a 'NOT FOUND' error is returned in the response
+* Test action 9: Detach a volume from a server by using an invalid volume ID
+* **Test assertion 5:** Verify detach volume failed, a 'NOT FOUND' error is returned in the response
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates the volume API ability of attaching a volume to a server
+and detaching a volume from a server. Specifically, the test verifies that:
+
+* Volumes can be attached and detached from servers.
+* Volume attachment information can be retrieved.
+* Attach and detach a volume using an invalid volume ID is not allowed.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------------------------------
+Test Case 2 - Volume service availability zone operations with the Cinder v2 API
+--------------------------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_availability_zone.AvailabilityZoneV2TestJSON.test_get_availability_zone_list
+
+tempest.api.volume.test_availability_zone.AvailabilityZoneTestJSON.test_get_availability_zone_list
+
+Note: the second test case is the alias of the first one.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+* Test action 1: List all existent availability zones
+* **Test assertion 1:** Verify the availability zone list length is greater than 0
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of listing availability zones.
+Specifically, the test verifies that:
+
+* Availability zones can be listed.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------------
+Test Case 3 - Volume cloning operations with the Cinder v2 API
+--------------------------------------------------------------
+
+Test case specification
+-----------------------
+
tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_as_clone
+
+tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete_as_clone
+
+Note: the second test case is the alias of the first one.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+* Cinder volume clones feature is enabled
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+* Test action 1: Create a volume VOL1
+* Test action 2: Create a volume VOL2 from source volume VOL1 with a specific name and metadata
+* Test action 2: Wait for VOL2 to reach 'available' status
+* **Test assertion 1:** Verify the name of VOL2 is correct
+* Test action 3: Retrieve VOL2's detail information
+* **Test assertion 2:** Verify the retrieved volume name, ID and metadata are the same as VOL2
+* **Test assertion 3:** Verify VOL2's bootable flag is 'False'
+* Test action 4: Update the name of VOL2 with the original value
+* Test action 5: Update the name of VOL2 with a new value
+* **Test assertion 4:** Verify the name of VOL2 is updated successfully
+* Test action 6: Create a volume VOL3 with no name specified and a description contains characters '@#$%^*'
+* **Test assertion 5:** Verify VOL3 is created successfully
+* Test action 7: Update the name of VOL3 and description with the original value
+* **Test assertion 6:** Verify VOL3's bootable flag is 'False'
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of creating a cloned volume from a source volume,
+getting cloned volume detail information and updating cloned volume attributes.
+
+Specifically, the test verifies that:
+
+* Cloned volume can be created from a source volume.
+* Cloned volume detail information can be retrieved.
+* Cloned volume detail information can be updated.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------------------
+Test Case 4 - Image copy-to-volume operations with the Cinder v2 API
+--------------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_bootable
tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_from_image
+
+tempest.api.volume.test_volumes_get.VolumesActionsTest.test_volume_bootable
+tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete_from_image
+
+Note: the last 2 test cases are the alias of the former 2.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+* Test action 1: Set a provided volume VOL1's bootable flag to 'True'
+* Test action 2: Retrieve VOL1's bootable flag
+* **Test assertion 1:** Verify VOL1's bootable flag is 'True'
+* Test action 3: Set a provided volume VOL1's bootable flag to 'False'
+* Test action 4: Retrieve VOL1's bootable flag
+* **Test assertion 2:** Verify VOL1's bootable flag is 'False'
+* Test action 5: Create a bootable volume VOL2 from one image with a specific name and metadata
+* Test action 6: Wait for VOL2 to reach 'available' status
+* **Test assertion 3:** Verify the name of VOL2 name is correct
+* Test action 7: Retrieve VOL2's information
+* **Test assertion 4:** Verify the retrieved volume name, ID and metadata are the same as VOL2
+* **Test assertion 5:** Verify VOL2's bootable flag is 'True'
+* Test action 8: Update the name of VOL2 with the original value
+* Test action 9: Update the name of VOL2 with a new value
+* **Test assertion 6:** Verify the name of VOL2 is updated successfully
+* Test action 10: Create a volume VOL3 with no name specified and a description contains characters '@#$%^*'
+* **Test assertion 7:** Verify VOL3 is created successfully
+* Test action 11: Update the name of VOL3 and description with the original value
+* **Test assertion 8:** Verify VOL3's bootable flag is 'True'
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of updating volume's bootable flag and creating
+a bootable volume from an image, getting bootable volume detail information and updating bootable volume.
+
+Specifically, the test verifies that:
+
+* Volume bootable flag can be set and retrieved.
+* Bootable volume can be created from a source volume.
+* Bootable volume detail information can be retrieved.
+* Bootable volume detail information can be updated.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+----------------------------------------------------------------------------
+Test Case 5 - Volume creation and deletion operations with the Cinder v2 API
+----------------------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_invalid_size
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_source_volid
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_volume_type
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_out_passing_size
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_negative
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_zero
+
+tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_invalid_size
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_source_volid
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_volume_type
+
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_without_passing_size
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_without_passing_size
+
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_size_negative
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_size_zero
+
+Note: test cases 8 to 11 are the alias of the fist 4 test cases, test cases 12 and 13 are both alias of
+test case 5, and test cases 14 and 15 are the alias of the cases 6 and 7, respectively.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of OpenStack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+* Test action 1: Create a volume VOL1 with a specific name and metadata
+* Test action 2: Wait for VOL1 to reach 'available' status
+* **Test assertion 1:** Verify the name of VOL1 is correct
+* Test action 3: Retrieve VOL1's information
+* **Test assertion 2:** Verify the retrieved volume name, ID and metadata are the same as VOL1
+* **Test assertion 3:** Verify VOL1's bootable flag is 'False'
+* Test action 4: Update the name of VOL1 with the original value
+* Test action 5: Update the name of VOL1 with a new value
+* **Test assertion 4:** Verify the name of VOL1 is updated successfully
+* Test action 6: Create a volume VOL2 with no name specified and a description contains characters '@#$%^*'
+* **Test assertion 5:** Verify VOL2 is created successfully
+* Test action 7: Update the name of VOL2 and description with the original value
+* **Test assertion 6:** Verify VOL2's bootable flag is 'False'
+* Test action 8: Create a volume with an invalid size '#$%'
+* **Test assertion 7:** Verify create volume failed, a bad request error is returned in the response
+* Test action 9: Create a volume with a nonexistent source volume
+* **Test assertion 8:** Verify create volume failed, a 'Not Found' error is returned in the response
+* Test action 10: Create a volume with a nonexistent volume type
+* **Test assertion 9:** Verify create volume failed, a 'Not Found' error is returned in the response
+* Test action 11: Create a volume without passing a volume size
+* **Test assertion 10:** Verify create volume failed, a bad request error is returned in the response
+* Test action 12: Create a volume with a negative volume size
+* **Test assertion 11:** Verify create volume failed, a bad request error is returned in the response
+* Test action 13: Create a volume with volume size '0'
+* **Test assertion 12:** Verify create volume failed, a bad request error is returned in the response
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of creating a volume, getting volume
+detail information and updating volume, the reference is,
+Specifically, the test verifies that:
+
+* Volume can be created from a source volume.
+* Volume detail information can be retrieved/updated.
+* Create a volume with an invalid size is not allowed.
+* Create a volume with a nonexistent source volume or volume type is not allowed.
+* Create a volume without passing a volume size is not allowed.
+* Create a volume with a negative volume size is not allowed.
+* Create a volume with volume size '0' is not allowed.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------------------------------
+Test Case 6 - Volume service extension listing operations with the Cinder v2 API
+--------------------------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_extensions.ExtensionsV2TestJSON.test_list_extensions
+
+tempest.api.volume.test_extensions.ExtensionsTestJSON.test_list_extensions
+
+Note: the second test case is the alias of the first one.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+* At least one Cinder extension is configured
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: List all cinder service extensions
+* **Test assertion 1:** Verify all extensions are list in the extension list
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of listing all existent volume service extensions.
+
+* Cinder service extensions can be listed.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+----------------------------------------------------------
+Test Case 7 - Volume GET operations with the Cinder v2 API
+----------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_invalid_volume_id
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_volume_without_passing_volume_id
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_get_nonexistent_volume_id
+
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_get_invalid_volume_id
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_get_volume_without_passing_volume_id"
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_volume_get_nonexistent_volume_id
+
+Note: the latter 3 test cases is the alias of the first 3 ones.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Retrieve a volume with an invalid volume ID
+* **Test assertion 1:** Verify retrieve volume failed, a 'Not Found' error is returned in the response
+* Test action 2: Retrieve a volume with an empty volume ID
+* **Test assertion 2:** Verify retrieve volume failed, a 'Not Found' error is returned in the response
+* Test action 3: Retrieve a volume with a nonexistent volume ID
+* **Test assertion 3:** Verify retrieve volume failed, a 'Not Found' error is returned in the response
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of getting volumes.
+Specifically, the test verifies that:
+
+* Get a volume with an invalid/an empty/a nonexistent volume ID is not allowed.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------------
+Test Case 8 - Volume listing operations with the Cinder v2 API
+--------------------------------------------------------------
+
+Test case specification
+-----------------------
+
tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list
tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_by_name
tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_by_name
@@ -43,40 +519,475 @@ tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_
tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_status
tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_availability_zone
tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_status
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_attach_volumes_with_nonexistent_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_invalid_size
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_snapshot_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_source_volid
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_volume_type
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_out_passing_size
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_negative
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_zero
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_without_passing_size
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_invalid_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_volume_without_passing_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_detach_volumes_with_invalid_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_invalid_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_volume_without_passing_volume_id
tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_invalid_status
tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_nonexistent_name
tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_invalid_status
tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_nonexistent_name
+tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_pagination
+tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_with_multiple_params
+tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_pagination
+
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_by_name
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_by_name
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_param_display_name_and_status
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_detail_param_display_name_and_status
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_detail_param_metadata
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_details
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_param_metadata
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_by_availability_zone
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_by_status
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_by_availability_zone
+tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_by_status
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_detail_with_invalid_status
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_detail_with_nonexistent_name
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_with_invalid_status
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_with_nonexistent_name
+tempest.api.volume.v2.test_volumes_list.VolumesListTestJSON.test_volume_list_details_pagination
+tempest.api.volume.v2.test_volumes_list.VolumesListTestJSON.test_volume_list_details_with_multiple_params
+tempest.api.volume.v2.test_volumes_list.VolumesListTestJSON.test_volume_list_pagination
+
+Note: the latter 19 test cases is the alias of the first 19 ones.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+* The backing file for the volume group that Nova uses has space for at least 3 1G volumes
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: List all existent volumes
+* **Test assertion 1:** Verify the volume list is complete
+* Test action 2: List existent volumes and filter the volume list by volume name
+* **Test assertion 2:** Verify the length of filtered volume list is 1 and the retrieved volume is correct
+* Test action 3: List existent volumes in detail and filter the volume list by volume name
+* **Test assertion 3:** Verify the length of filtered volume list is 1 and the retrieved volume is correct
+* Test action 4: List existent volumes and filter the volume list by volume name and status 'available'
+* **Test assertion 4:** Verify the name and status parameters of the fetched volume are correct
+* Test action 5: List existent volumes in detail and filter the volume list by volume name and status 'available'
+* **Test assertion 5:** Verify the name and status parameters of the fetched volume are correct
+* Test action 6: List all existent volumes in detail and filter the volume list by volume metadata
+* **Test assertion 6:** Verify the metadata parameter of the fetched volume is correct
+* Test action 7: List all existent volumes in detail
+* **Test assertion 7:** Verify the volume list is complete
+* Test action 8: List all existent volumes and filter the volume list by volume metadata
+* **Test assertion 8:** Verify the metadata parameter of the fetched volume is correct
+* Test action 9: List existent volumes and filter the volume list by availability zone
+* **Test assertion 9:** Verify the availability zone parameter of the fetched volume is correct
+* Test action 10: List all existent volumes and filter the volume list by volume status 'available'
+* **Test assertion 10:** Verify the status parameter of the fetched volume is correct
+* Test action 11: List existent volumes in detail and filter the volume list by availability zone
+* **Test assertion 11:** Verify the availability zone parameter of the fetched volume is correct
+* Test action 12: List all existent volumes in detail and filter the volume list by volume status 'available'
+* **Test assertion 12:** Verify the status parameter of the fetched volume is correct
+* Test action 13: List all existent volumes in detail and filter the volume list by an invalid volume status 'null'
+* **Test assertion 13:** Verify the filtered volume list is empty
+* Test action 14: List all existent volumes in detail and filter the volume list by a non-existent volume name
+* **Test assertion 14:** Verify the filtered volume list is empty
+* Test action 15: List all existent volumes and filter the volume list by an invalid volume status 'null'
+* **Test assertion 15:** Verify the filtered volume list is empty
+* Test action 16: List all existent volumes and filter the volume list by a non-existent volume name
+* **Test assertion 16:** Verify the filtered volume list is empty
+* Test action 17: List all existent volumes in detail and paginate the volume list by desired volume IDs
+* **Test assertion 17:** Verify only the desired volumes are listed in the filtered volume list
+* Test action 18: List all existent volumes in detail and filter the volume list by volume status 'available' and display limit '2'
+* Test action 19: Sort the filtered volume list by IDs in ascending order
+* **Test assertion 18:** Verify the length of filtered volume list is 2
+* **Test assertion 19:** Verify the status of retrieved volumes is correct
+* **Test assertion 20:** Verify the filtered volume list is sorted correctly
+* Test action 20: List all existent volumes in detail and filter the volume list by volume status 'available' and display limit '2'
+* Test action 21: Sort the filtered volume list by IDs in descending order
+* **Test assertion 21:** Verify the length of filtered volume list is 2
+* **Test assertion 22:** Verify the status of retrieved volumes is correct
+* **Test assertion 23:** Verify the filtered volume list is sorted correctly
+* Test action 22: List all existent volumes and paginate the volume list by desired volume IDs
+* **Test assertion 24:** Verify only the desired volumes are listed in the filtered volume list
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of getting a list of volumes and filtering the volume list.
+Specifically, the test verifies that:
+
+* Get a list of volumes (in detail) successful.
+* Get a list of volumes (in detail) and filter volumes by name/status/metadata/availability zone successful.
+* Volume list pagination functionality is working.
+* Get a list of volumes in detail using combined condition successful.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+---------------------------------------------------------------
+Test Case 9 - Volume metadata operations with the Cinder v2 API
+---------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_create_get_delete_volume_metadata
+tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_update_volume_metadata_item
+
+tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_crud_volume_metadata
+tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_crud_volume_metadata
+
+tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_update_volume_metadata_item
+tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_update_show_volume_metadata_item
+
+Note: Test case 3 and 4 are the alias of the first test case, and the last 2 test cases
+are the alias of the second test case.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of OpenStack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create metadata for a provided volume VOL1
+* Test action 2: Get the metadata of VOL1
+* **Test assertion 1:** Verify the metadata of VOL1 is correct
+* Test action 3: Update the metadata of VOL1
+* **Test assertion 2:** Verify the metadata of VOL1 is updated
+* Test action 4: Delete one metadata item 'key1' of VOL1
+* **Test assertion 3:** Verify the metadata item 'key1' is deleted
+* Test action 5: Create metadata for a provided volume VOL2
+* **Test assertion 4:** Verify the metadata of VOL2 is correct
+* Test action 6: Update one metadata item 'key3' of VOL2
+* **Test assertion 5:** Verify the metadata of VOL2 is updated
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of creating metadata for a volume, getting the
+metadata of a volume, updating volume metadata and deleting a metadata item of a volume.
+Specifically, the test verifies that:
+
+* Create metadata for volume successfully.
+* Get metadata of volume successfully.
+* Update volume metadata and metadata item successfully.
+* Delete metadata item of a volume successfully.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+---------------------------------------------------------------------------------
+Test Case 10 - Verification of read-only status on volumes with the Cinder v2 API
+---------------------------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_readonly_update
+
+tempest.api.volume.test_volumes_actions.VolumesActionsTest.test_volume_readonly_update
+
+Note: the second test case is the alias of the first one.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Update a provided volume VOL1's read-only access mode to 'True'
+* **Test assertion 1:** Verify VOL1 is in read-only access mode
+* Test action 2: Update a provided volume VOL1's read-only access mode to 'False'
+* **Test assertion 2:** Verify VOL1 is not in read-only access mode
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of setting and updating volume read-only access mode.
+Specifically, the test verifies that:
+
+* Volume read-only access mode can be set and updated.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+-------------------------------------------------------------------
+Test Case 11 - Volume reservation operations with the Cinder v2 API
+-------------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_reserve_unreserve_volume
tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_negative_volume_status
tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_nonexistent_volume_id
tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_unreserve_volume_with_nonexistent_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_empty_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_invalid_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_nonexistent_volume_id
+
+tempest.api.volume.test_volumes_actions.VolumesActionsTest.test_reserve_unreserve_volume
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_reserve_volume_with_negative_volume_status
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_reserve_volume_with_nonexistent_volume_id
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_unreserve_volume_with_nonexistent_volume_id
+
+Note: the last 4 test cases are the alias of the first 4 ones.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Update a provided volume VOL1 as reserved
+* **Test assertion 1:** Verify VOL1 is in 'attaching' status
+* Test action 2: Update VOL1 as un-reserved
+* **Test assertion 2:** Verify VOL1 is in 'available' status
+* Test action 3: Update a provided volume VOL2 as reserved
+* Test action 4: Update VOL2 as reserved again
+* **Test assertion 3:** Verify update VOL2 status failed, a bad request error is returned in the response
+* Test action 5: Update VOL2 as un-reserved
+* Test action 6: Update a non-existent volume as reserved by using an invalid volume ID
+* **Test assertion 4:** Verify update non-existent volume as reserved failed, a 'Not Found' error is returned in the response
+* Test action 7: Update a non-existent volume as un-reserved by using an invalid volume ID
+* **Test assertion 5:** Verify update non-existent volume as un-reserved failed, a 'Not Found' error is returned in the response
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of reserving and un-reserving volumes.
+Specifically, the test verifies that:
+
+* Volume can be reserved and un-reserved.
+* Update a non-existent volume as reserved is not allowed.
+* Update a non-existent volume as un-reserved is not allowed.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+----------------------------------------------------------------------------------
+Test Case 12 - Volume snapshot creation/deletion operations with the Cinder v2 API
+----------------------------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_create_get_delete_snapshot_metadata
+tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_update_snapshot_metadata_item
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_snapshot_id
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_invalid_volume_id
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_volume_without_passing_volume_id
tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_delete_nonexistent_volume_id
-tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_get_nonexistent_volume_id
tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshot_create_get_list_update_delete
+tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_volume_from_snapshot
tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_details_with_params
tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_with_params
-tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_volume_from_snapshot
-tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_details_with_params
-tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_with_params
tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id
tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id
-tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_pagination
-tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_with_multiple_params
-tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_pagination
+
+tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_crud_snapshot_metadata
+tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_crud_snapshot_metadata
+
+tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_update_snapshot_metadata_item
+tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_update_show_snapshot_metadata_item
+
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_snapshot_id
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_delete_invalid_volume_id
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_delete_volume_without_passing_volume_id
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_volume_delete_nonexistent_volume_id
+tempest.api.volume.test_volumes_snapshots.VolumesSnapshotTestJSON.test_snapshot_create_get_list_update_delete
+tempest.api.volume.test_volumes_snapshots.VolumesSnapshotTestJSON.test_volume_from_snapshot
+
+tempest.api.volume.test_volumes_snapshots_list.VolumesSnapshotListTestJSON.test_snapshots_list_details_with_params
+tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_details_with_params
+
+tempest.api.volume.test_volumes_snapshots_list.VolumesSnapshotListTestJSON.test_snapshots_list_with_params
+tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_with_params
+
+tempest.api.volume.test_volumes_snapshots_negative.VolumesSnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id
+tempest.api.volume.test_volumes_snapshots_negative.VolumesSnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id
+
+Note: test case 13 and 14 are the alias of test case 1, test case 15 and 16 are the alias of test case 2,
+test case 17 to 22 are the alias of test case 3 to 8 respectively, test case 23 and 24 are the alias of
+test case 9, test case 25 and 26 are the alias of test case 10, and test case 27 and 28 are the alias of
+test case 11 and 12 respectively.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of OpenStack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Create metadata for a provided snapshot SNAP1
+* Test action 2: Get the metadata of SNAP1
+* **Test assertion 1:** Verify the metadata of SNAP1 is correct
+* Test action 3: Update the metadata of SNAP1
+* **Test assertion 2:** Verify the metadata of SNAP1 is updated
+* Test action 4: Delete one metadata item 'key3' of SNAP1
+* **Test assertion 3:** Verify the metadata item 'key3' is deleted
+* Test action 5: Create metadata for a provided snapshot SNAP2
+* **Test assertion 4:** Verify the metadata of SNAP2 is correct
+* Test action 6: Update one metadata item 'key3' of SNAP2
+* **Test assertion 5:** Verify the metadata of SNAP2 is updated
+* Test action 7: Create a volume with a nonexistent snapshot
+* **Test assertion 6:** Verify create volume failed, a 'Not Found' error is returned in the response
+* Test action 8: Delete a volume with an invalid volume ID
+* **Test assertion 7:** Verify delete volume failed, a 'Not Found' error is returned in the response
+* Test action 9: Delete a volume with an empty volume ID
+* **Test assertion 8:** Verify delete volume failed, a 'Not Found' error is returned in the response
+* Test action 10: Delete a volume with a nonexistent volume ID
+* **Test assertion 9:** Verify delete volume failed, a 'Not Found' error is returned in the response
+* Test action 11: Create a snapshot SNAP2 from a provided volume VOL1
+* Test action 12: Retrieve SNAP2's detail information
+* **Test assertion 10:** Verify SNAP2 is created from VOL1
+* Test action 13: Update the name and description of SNAP2
+* **Test assertion 11:** Verify the name and description of SNAP2 are updated in the response body of update snapshot API
+* Test action 14: Retrieve SNAP2's detail information
+* **Test assertion 12:** Verify the name and description of SNAP2 are correct
+* Test action 15: Delete SNAP2
+* Test action 16: Create a volume VOL2 with a volume size
+* Test action 17: Create a snapshot SNAP3 from VOL2
+* Test action 18: Create a volume VOL3 from SNAP3 with a bigger volume size
+* Test action 19: Retrieve VOL3's detail information
+* **Test assertion 13:** Verify volume size and source snapshot of VOL3 are correct
+* Test action 20: List all snapshots in detail and filter the snapshot list by name
+* **Test assertion 14:** Verify the filtered snapshot list is correct
+* Test action 21: List all snapshots in detail and filter the snapshot list by status
+* **Test assertion 15:** Verify the filtered snapshot list is correct
+* Test action 22: List all snapshots in detail and filter the snapshot list by name and status
+* **Test assertion 16:** Verify the filtered snapshot list is correct
+* Test action 23: List all snapshots and filter the snapshot list by name
+* **Test assertion 17:** Verify the filtered snapshot list is correct
+* Test action 24: List all snapshots and filter the snapshot list by status
+* **Test assertion 18:** Verify the filtered snapshot list is correct
+* Test action 25: List all snapshots and filter the snapshot list by name and status
+* **Test assertion 19:** Verify the filtered snapshot list is correct
+* Test action 26: Create a snapshot from a nonexistent volume by using an invalid volume ID
+* **Test assertion 20:** Verify create snapshot failed, a 'Not Found' error is returned in the response
+* Test action 27: Create a snapshot from a volume by using an empty volume ID
+* **Test assertion 21:** Verify create snapshot failed, a 'Not Found' error is returned in the response
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of managing snapshot and snapshot metadata.
+Specifically, the test verifies that:
+
+* Create metadata for snapshot successfully.
+* Get metadata of snapshot successfully.
+* Update snapshot metadata and metadata item successfully.
+* Delete metadata item of a snapshot successfully.
+* Create a volume from a nonexistent snapshot is not allowed.
+* Delete a volume using an invalid volume ID is not allowed.
+* Delete a volume without passing the volume ID is not allowed.
+* Delete a non-existent volume is not allowed.
+* Create snapshot successfully.
+* Get snapshot's detail information successfully.
+* Update snapshot attributes successfully.
+* Delete snapshot successfully.
+* Creates a volume and a snapshot passing a size different from the source successfully.
+* List snapshot details by display_name and status filters successfully.
+* Create a snapshot from a nonexistent volume is not allowed.
+* Create a snapshot from a volume without passing the volume ID is not allowed.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
+
+--------------------------------------------------------------
+Test Case 13 - Volume update operations with the Cinder v2 API
+--------------------------------------------------------------
+
+Test case specification
+-----------------------
+
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_empty_volume_id
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_invalid_volume_id
+tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_nonexistent_volume_id
+
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_empty_volume_id
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_invalid_volume_id
+tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_nonexistent_volume_id
+
+Note: the last 3 test cases are the alias of the first 3 ones.
+Alias should always be included so that the test run will be tempest version agnostic,
+which can be used to test different version of Openstack.
+
+Test preconditions
+------------------
+
+* Volume extension API
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Test execution
+''''''''''''''
+
+* Test action 1: Update a volume by using an empty volume ID
+* **Test assertion 1:** Verify update volume failed, a 'Not Found' error is returned in the response
+* Test action 2: Update a volume by using an invalid volume ID
+* **Test assertion 2:** Verify update volume failed, a 'Not Found' error is returned in the response
+* Test action 3: Update a non-existent volume by using a random generated volume ID
+* **Test assertion 3:** Verify update volume failed, a 'Not Found' error is returned in the response
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test case evaluates the volume API ability of updating volume attributes.
+Specifically, the test verifies that:
+
+* Update a volume without passing the volume ID is not allowed.
+* Update a volume using an invalid volume ID is not allowed.
+* Update a non-existent volume is not allowed.
+
+In order to pass this test, all test assertions listed in the test execution above need to pass.
+
+Post conditions
+---------------
+
+N/A
diff --git a/docs/testing/user/testspecification/vping/index.rst b/docs/testing/user/testspecification/vping/index.rst
new file mode 100644
index 00000000..d7a207c0
--- /dev/null
+++ b/docs/testing/user/testspecification/vping/index.rst
@@ -0,0 +1,279 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) Ericsson AB
+
+========================
+Vping test specification
+========================
+
+.. toctree::
+ :maxdepth: 2
+
+Scope
+=====
+
+The vping test area evaluates basic NFVi capabilities of the system under test.
+These capabilities include creating a small number of virtual machines,
+establishing basic L3 connectivity between them and verifying connectivity by
+means of ICMP packets.
+
+
+References
+==========
+
+- Neutron Client
+
+ - https://docs.openstack.org/developer/python-neutronclient/usage/library.html
+
+- Nova Client
+
+ - https://docs.openstack.org/developer/python-novaclient/ref/v2/servers.html
+
+- SSHClient
+
+ - http://docs.paramiko.org/en/2.2/
+
+- SCPClient
+
+ - https://pypi.python.org/pypi/scp
+
+
+Definitions and abbreviations
+=============================
+
+The following terms and abbreviations are used in conjunction with this test
+area
+
+- ICMP - Internet Control Message Protocol
+- L3 - Layer 3
+- NFVi - Network functions virtualization infrastructure
+- SCP - Secure Copy
+- SSH - Secure Shell
+- VM - Virtual machine
+
+
+System Under Test (SUT)
+=======================
+
+The system under test is assumed to be the NFVi and VIM in operation on a
+Pharos compliant infrastructure.
+
+
+Test Area Structure
+===================
+
+The test area is structured in two separate tests which are executed
+sequentially. The order of the tests is arbitrary as there are no dependencies
+across the tests.
+
+
+Test Descriptions
+=================
+
+--------------------------------------------------------------------
+Test Case 1 - vPing using userdata provided by nova metadata service
+--------------------------------------------------------------------
+
+Short name
+----------
+
+opnfv.vping.userdata
+
+
+Use case specification
+----------------------
+
+This test evaluates the use case where an NFVi tenant boots up two VMs and
+requires L3 connectivity between those VMs. The target IP is passed to the VM
+that will initiate pings by using a custom userdata script provided by nova metadata service.
+
+
+Test preconditions
+------------------
+
+At least one compute node is available. No further pre-configuration needed.
+
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Methodology for verifying connectivity
+''''''''''''''''''''''''''''''''''''''
+
+Connectivity between VMs is tested by sending ICMP ping packets between
+selected VMs. The target IP is passed to the VM sending pings by using a
+custom userdata script by means of the config driver mechanism provided by
+Nova metadata service. Whether or not a ping was successful is determined by
+checking the console output of the source VMs.
+
+
+Test execution
+''''''''''''''
+
+* Test action 1:
+ * Create a private tenant network by using neutron client
+ * Create one subnet and one router in the network by neutron client
+ * Add one interface between the subnet and router
+ * Add one gateway route to the router by neutron client
+ * Store the network id in the response
+* **Test assertion 1:** The network id, subnet id and router id can be found in the response
+* Test action 2:
+ * Create an security group by using neutron client
+ * Store the security group id parameter in the response
+* **Test assertion 2:** The security group id can be found in the response
+* Test action 3: boot VM1 by using nova client with configured name, image, flavor, private tenant
+ network created in test action 1, security group created in test action 2
+* **Test assertion 3:** The VM1 object can be found in the response
+* Test action 4: Generate ping script with the IP of VM1 to be passed as userdata provided by
+ the **nova metadata service**.
+* Test action 5: Boot VM2 by using nova client with configured name, image, flavor, private tenant
+ network created in test action 1, security group created in test action 2, userdata created
+ in test action 4
+* **Test assertion 4:** The VM2 object can be found in the response
+* Test action 6: Inside VM2, the ping script is executed automatically when booted and it contains a
+ loop doing the ping until the return code is 0 or timeout reached. For each ping, when the return
+ code is 0, "vPing OK" is printed in the VM2 console-log, otherwise, "vPing KO" is printed.
+ Monitoring the console-log of VM2 to see the response generated by the script.
+* **Test assertion 5:** "vPing OK" is detected, when monitoring the console-log in VM2
+* Test action 7: delete VM1, VM2
+* **Test assertion 6:** VM1 and VM2 are not present in the VM list
+* Test action 8: delete security group, gateway, interface, router, subnet and network
+* **Test assertion 7:** The security group, gateway, interface, router, subnet and network are
+ no longer present in the lists after deleting
+
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates basic NFVi capabilities of the system under test.
+Specifically, the test verifies that:
+
+* Neutron client network, subnet, router, interface create commands return valid "id" parameters
+ which are shown in the create response message
+* Neutron client interface add command to add between subnet and router returns success code
+* Neutron client gateway add command to add to router returns success code
+* Neutron client security group create command returns valid "id" parameter which is shown in
+ the response message
+* Nova client VM create command returns valid VM attributes response message
+* Nova metadata server can transfer userdata configuration at nova client VM booting time
+* Ping command from one VM to the other in same private tenant network returns valid code
+* All items created using neutron client or nova client create commands are able to be removed by
+ using the returned identifiers
+
+In order to pass this test, all test assertions listed in the test execution
+above need to pass.
+
+
+Post conditions
+---------------
+
+None
+
+
+----------------------------------------------
+Test Case 2 - vPing using SSH to a floating IP
+----------------------------------------------
+
+Short name
+----------
+
+opnfv.vping.ssh
+
+
+Use case specification
+----------------------
+
+This test evaluates the use case where an NFVi tenant boots up two VMs and requires
+L3 connectivity between those VMs. An SSH connection is establised from the host to
+a floating IP associated with VM2 and ``ping`` is executed on VM2 with the IP of VM1 as target.
+
+
+Test preconditions
+------------------
+
+At least one compute node is available. There should exist an OpenStack external network
+and can assign floating IP.
+
+
+Basic test flow execution description and pass/fail criteria
+------------------------------------------------------------
+
+Methodology for verifying connectivity
+''''''''''''''''''''''''''''''''''''''
+
+Connectivity between VMs is tested by sending ICMP ping packets between
+selected VMs. To this end, the test establishes an SSH connection from the host
+running the test suite to a floating IP associated with VM2 and executes ``ping``
+on VM2 with the IP of VM1 as target.
+
+
+Test execution
+''''''''''''''
+
+
+* Test action 1:
+ * Create a private tenant network by neutron client
+ * Create one subnet and one router are created in the network by using neutron client
+ * Create one interface between the subnet and router
+ * Add one gateway route to the router by neutron client
+ * Store the network id in the response
+* **Test assertion 1:** The network id, subnet id and router id can be found in the response
+* Test action 2:
+ * Create an security group by using neutron client
+ * Store the security group id parameter in the response
+* **Test assertion 2:** The security group id can be found in the response
+* Test action 3: Boot VM1 by using nova client with configured name, image, flavor, private tenant
+ network created in test action 1, security group created in test action 2
+* **Test assertion 3:** The VM1 object can be found in the response
+* Test action 4: Boot VM2 by using nova client with configured name, image, flavor, private tenant
+ network created in test action 1, security group created in test action 2
+* **Test assertion 4:** The VM2 object can be found in the response
+* Test action 5: create one floating IP by using neutron client, storing the floating IP address
+ returned in the response
+* **Test assertion 5:** Floating IP address can be found in the response
+* Test action 6: Assign the floating IP address created in test action 5 to VM2 by using nova client
+* **Test assertion 6:** The assigned floating IP can be found in the VM2 console log file
+* Test action 7: Establish SSH connection between the test host and VM2 through the floating IP
+* **Test assertion 7:** SSH connection between the test host and VM2 is established within
+ 300 seconds
+* Test action 8: Copy the Ping script from the test host to VM2 by using SCPClient
+* **Test assertion 8:** The Ping script can be found inside VM2
+* Test action 9: Inside VM2, to execute the Ping script to ping VM1, the Ping script contains a
+ loop doing the ping until the return code is 0 or timeout reached, for each ping, when the return
+ code is 0, "vPing OK" is printed in the VM2 console-log, otherwise, "vPing KO" is printed.
+ Monitoring the console-log of VM2 to see the response generated by the script.
+* **Test assertion 9:** "vPing OK" is detected, when monitoring the console-log in VM2
+* Test action 10: delete VM1, VM2
+* **Test assertion 10:** VM1 and VM2 are not present in the VM list
+* Test action 11: delete floating IP, security group, gateway, interface, router, subnet and network
+* **Test assertion 11:** The security group, gateway, interface, router, subnet and network are
+ no longer present in the lists after deleting
+
+Pass / fail criteria
+''''''''''''''''''''
+
+This test evaluates basic NFVi capabilities of the system under test.
+Specifically, the test verifies that:
+
+* Neutron client network, subnet, router, interface create commands return valid "id" parameters
+ which are shown in the create response message
+* Neutron client interface add command to add between subnet and router return success code
+* Neutron client gateway add command to add to router return success code
+* Neutron client security group create command returns valid "id" parameter which is shown in the
+ response message
+* Nova client VM create command returns valid VM attributes response message
+* Neutron client floating IP create command return valid floating IP address
+* Nova client add floating IP command returns valid response message
+* SSH connection can be established using a floating IP
+* Ping command from one VM to another in same private tenant network returns valid code
+* All items created using neutron client or nova client create commands are able to be removed by
+ using the returned identifiers
+
+In order to pass this test, all test assertions listed in the test execution
+above need to pass.
+
+
+Post conditions
+---------------
+
+None
diff --git a/docs/testing/user/userguide/testing_guide.rst b/docs/testing/user/userguide/testing_guide.rst
index 9e46b561..08fd8acf 100644
--- a/docs/testing/user/userguide/testing_guide.rst
+++ b/docs/testing/user/userguide/testing_guide.rst
@@ -261,8 +261,8 @@ If the Test Host is online, you can directly pull.
.. code-block:: bash
- $ sudo docker pull opnfv/dovetail:cvp.0.3.0
- cvp.0.3.0: Pulling from opnfv/dovetail
+ $ sudo docker pull opnfv/dovetail:cvp.0.5.0
+ cvp.0.5.0: Pulling from opnfv/dovetail
30d541b48fc0: Pull complete
8ecd7f80d390: Pull complete
46ec9927bb81: Pull complete
@@ -275,9 +275,9 @@ If the Test Host is online, you can directly pull.
bf7c644692de: Pull complete
cdc345e3f363: Pull complete
Digest: sha256:d571b1073b2fdada79562e8cc67f63018e8d89268ff7faabee3380202c05edee
- Status: Downloaded newer image for opnfv/dovetail:cvp.0.3.0
+ Status: Downloaded newer image for opnfv/dovetail:cvp.0.5.0
-An example of the <tag> is *cvp.0.3.0*.
+An example of the <tag> is *cvp.0.5.0*.
If the Test Host is offline, you will need to first pull the Dovetail Docker image, and all the
dependent images that Dovetail uses, to a host that is online. The reason that you need
@@ -287,9 +287,10 @@ offline, then all these dependencies will also need to be manually copied.
.. code-block:: bash
- $ sudo docker pull opnfv/dovetail:cvp.0.3.0
- $ sudo docker pull opnfv/functest:cvp.0.2.0
- $ sudo docker pull opnfv/yardstick:danube.3.1
+ $ sudo docker pull opnfv/dovetail:cvp.0.5.0
+ $ sudo docker pull opnfv/functest:cvp.0.5.0
+ $ sudo docker pull opnfv/yardstick:danube.3.2
+ $ sudo docker pull opnfv/bottlenecks:cvp.0.4.0
$ sudo wget -nc http://artifacts.opnfv.org/sdnvpn/ubuntu-16.04-server-cloudimg-amd64-disk1.img -P {ANY_DIR}
Once all these images are pulled, save the images, copy to the Test Host, and then load
@@ -299,7 +300,8 @@ At the online host, save images.
.. code-block:: bash
- $ sudo docker save -o dovetail.tar opnfv/dovetail:cvp.0.3.0 opnfv/functest:cvp.0.2.0 opnfv/yardstick:danube.3.1
+ $ sudo docker save -o dovetail.tar opnfv/dovetail:cvp.0.5.0 opnfv/functest:cvp.0.5.0 \
+ opnfv/yardstick:danube.3.2 opnfv/bottlenecks:cvp.0.4.0
Copy dovetail.tar file to the Test Host, and then load the images on the Test Host.
@@ -315,9 +317,10 @@ Now check to see that the Dovetail image has been pulled or loaded properly.
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
- opnfv/functest cvp.0.2.0 9eaeaea5f203 8 days ago 1.53GB
- opnfv/dovetail cvp.0.3.0 5d25b289451c 8 days ago 516MB
- opnfv/yardstick danube.3.1 574596b6ea12 8 days ago 1.2GB
+ opnfv/functest cvp.0.5.0 9eaeaea5f203 8 days ago 1.53GB
+ opnfv/dovetail cvp.0.5.0 5d25b289451c 8 days ago 516MB
+ opnfv/yardstick danube.3.2 574596b6ea12 8 days ago 1.2GB
+ opnfv/bottlenecks cvp.0.4.0 00450688bcae 3 hours ago 622 MB
Regardless of whether you pulled down the Dovetail image directly online, or loaded from
a static image tar file, you are ready to run Dovetail.
@@ -463,8 +466,39 @@ When a tester is performing trial runs, Dovetail stores results in a local file
* For each test case result in Yardstick, the logs are stored in dovetail_ha_tcXXX.out, respectively.
#. OPNFV web interface
+ CVP will host a web site to collect test results. Users can upload their results to this web site,
+ so they can review these results in the future.
- Wait for the complement of LF, test community, etc.
+ * web site url
+
+ * Wait for the complement of LF, test community, etc.
+
+ * Sign in / Sign up
+
+ * You need to sign in you account, then you can upload results, and check your private results.
+ CVP is now using openstack id as account provider, but will soon support Linux Foundation ID
+ as well.
+
+ * If you already have a openstack id, you can sign in directly with your id.
+
+ * If you do not have a openstack id, you can sign up a new one on the sign up page.
+
+ * If you do not sign in, you can only check the community results.
+
+ * My results
+
+ * This page lists all results uploaded by you after you signed in,
+
+ * You can also upload your results on this page.
+
+ * There is a *choose file* button, once you click it, you can choose your reuslt file in your harddisk
+ then click the *upload* button, and you will see a results id once your uploading succeed.
+
+ * Check the *review* box to submit your result to the OPNFV. Uncheck the box to withdraw your result.
+
+ * profile
+
+ * This page shows your account info after you signed in.
Updating Dovetail or a Test Suite
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/dovetail/compliance/debug.yml b/dovetail/compliance/debug.yml
index 0ae734ea..9f6d2389 100644
--- a/dovetail/compliance/debug.yml
+++ b/dovetail/compliance/debug.yml
@@ -12,6 +12,5 @@ debug:
# - dovetail.ipv6.tc009
# - dovetail.ipv6.tc018
# - dovetail.ipv6.tc019
- - dovetail.nfvi.tc001
- - dovetail.nfvi.tc002
- - dovetail.nfvi.tc101
+ - dovetail.vping.tc001
+ - dovetail.vping.tc002
diff --git a/dovetail/compliance/proposed_tests.yml b/dovetail/compliance/proposed_tests.yml
index 9d63cb2a..18b8cec9 100644
--- a/dovetail/compliance/proposed_tests.yml
+++ b/dovetail/compliance/proposed_tests.yml
@@ -5,6 +5,9 @@ proposed_tests:
# defcore,defcore.tc001 used for auto-method, defcore.tc002 used for manually method
- dovetail.defcore.tc001
# - dovetail.defcore.tc002
+ # vping
+ - dovetail.vping.tc001
+ - dovetail.vping.tc002
# ipv6
- dovetail.ipv6.tc001
- dovetail.ipv6.tc002
@@ -45,3 +48,11 @@ proposed_tests:
- dovetail.sdnvpn.tc002
- dovetail.sdnvpn.tc004
- dovetail.sdnvpn.tc008
+ # tempest
+ - dovetail.tempest.tc001
+ - dovetail.tempest.tc002
+ - dovetail.tempest.tc003
+ - dovetail.tempest.tc004
+ - dovetail.tempest.tc005
+ # resiliency
+ - dovetail.resiliency.tc001
diff --git a/dovetail/conf/bottlenecks_config.yml b/dovetail/conf/bottlenecks_config.yml
new file mode 100644
index 00000000..43df8c55
--- /dev/null
+++ b/dovetail/conf/bottlenecks_config.yml
@@ -0,0 +1,20 @@
+---
+bottlenecks:
+ image_name: opnfv/bottlenecks
+ docker_tag: cvp.0.4.0
+ opts: '-id --privileged=true'
+ config:
+ dir: '/home/opnfv/userconfig'
+ pre_condition:
+ - 'echo test for precondition in bottlenecks'
+ cmds:
+ - '/home/opnfv/bottlenecks/run_tests.sh -c {{validate_testcase}}'
+ post_condition:
+ - 'echo test for postcondition in bottlenecks'
+ result:
+ dir: '/tmp'
+ file_path: 'bottlenecks.log'
+ openrc: '/tmp/admin_rc.sh'
+ extra_container:
+ - 'Bottlenecks-Yardstick'
+ - 'Bottlenecks-ELK'
diff --git a/dovetail/conf/cmd_config.yml b/dovetail/conf/cmd_config.yml
index a5b262d1..58409f2b 100644
--- a/dovetail/conf/cmd_config.yml
+++ b/dovetail/conf/cmd_config.yml
@@ -21,14 +21,21 @@ cli:
- '-y'
path:
- 'yardstick/docker_tag'
- help: 'Overwrite tag for yardstick docker container (e.g. stable or latest)'
+ help: 'Overwrite tag for yardstick docker container (e.g. danube.3.2)'
func_tag:
flags:
- '--func_tag'
- '-f'
path:
- 'functest/docker_tag'
- help: 'Overwrite tag for functest docker container (e.g. stable or latest)'
+ help: 'Overwrite tag for functest docker container (e.g. cvp.0.5.0)'
+ bott_tag:
+ flags:
+ - '--bott_tag'
+ - '-b'
+ path:
+ - 'bottlenecks/docker_tag'
+ help: 'Overwrite tag for bottlenecks docker container (e.g. cvp.0.4.0)'
control:
testsuite:
flags:
diff --git a/dovetail/conf/dovetail_config.yml b/dovetail/conf/dovetail_config.yml
index fecc0ae1..738b892f 100644
--- a/dovetail/conf/dovetail_config.yml
+++ b/dovetail/conf/dovetail_config.yml
@@ -17,6 +17,9 @@ pri_key: 'id_rsa'
# SDNVPN offline image
sdnvpn_image: 'ubuntu-16.04-server-cloudimg-amd64-disk1.img'
+# Tempest image
+cirros_image: 'cirros-0.3.5-x86_64-disk.img'
+
COMPLIANCE_PATH: compliance/
TESTCASE_PATH: testcase/
# testsuite supported, should adjust accordingly
@@ -30,9 +33,10 @@ testarea_supported:
- example
- ha
- ipv6
- - nfvi
- sdnvpn
- - vimops
+ - vping
+ - resiliency
+ - tempest
functest_testsuite:
- refstack_defcore
@@ -67,10 +71,12 @@ parameters:
include_config:
- functest_config.yml
- yardstick_config.yml
+ - bottlenecks_config.yml
test_project:
- 'yardstick'
- 'functest'
+ - 'bottlenecks'
validate_input:
valid_docker_tag:
@@ -80,6 +86,9 @@ validate_input:
- 'danube.2.0'
- 'danube.3.0'
- 'danube.3.1'
+ - 'danube.3.2'
- 'cvp.0.1.0'
- 'cvp.0.2.0'
- 'cvp.0.3.0'
+ - 'cvp.0.4.0'
+ - 'cvp.0.5.0'
diff --git a/dovetail/conf/functest_config.yml b/dovetail/conf/functest_config.yml
index c33a0a91..11c49e32 100644
--- a/dovetail/conf/functest_config.yml
+++ b/dovetail/conf/functest_config.yml
@@ -1,7 +1,7 @@
---
functest:
image_name: opnfv/functest
- docker_tag: cvp.0.2.0
+ docker_tag: cvp.0.5.0
opts: '-id --privileged=true'
config:
dir: '/home/opnfv/userconfig'
diff --git a/dovetail/conf/yardstick_config.yml b/dovetail/conf/yardstick_config.yml
index fd93d61a..62a4abf9 100644
--- a/dovetail/conf/yardstick_config.yml
+++ b/dovetail/conf/yardstick_config.yml
@@ -1,7 +1,7 @@
---
yardstick:
image_name: opnfv/yardstick
- docker_tag: danube.3.1
+ docker_tag: danube.3.2
opts: '-id --privileged=true'
config:
dir: '/home/opnfv/userconfig'
diff --git a/dovetail/container.py b/dovetail/container.py
index 1a5867a7..cf8e14e5 100644
--- a/dovetail/container.py
+++ b/dovetail/container.py
@@ -18,7 +18,8 @@ from utils.dovetail_config import DovetailConfig as dt_cfg
class Container(object):
container_list = {}
- has_pull_latest_image = {'yardstick': False, 'functest': False}
+ has_pull_latest_image = {'yardstick': False, 'functest': False,
+ 'bottlenecks': False}
logger = None
@@ -123,6 +124,19 @@ class Container(object):
return "%s %s %s" % (envs, log_vol, key_vol)
@classmethod
+ def set_bottlenecks_config(cls, testcase_name):
+ dovetail_config = dt_cfg.dovetail_config
+ yard_tag = dovetail_config['yardstick']['docker_tag']
+ docker_vol = '-v /var/run/docker.sock:/var/run/docker.sock'
+ env = ('-e Yardstick_TAG={} -e OUTPUT_FILE={}.out'
+ .format(yard_tag, testcase_name))
+ report = ""
+ if dovetail_config['report_dest'].startswith("http"):
+ report = ("-e BOTTLENECKS_DB_TARGET={}"
+ .format(dovetail_config['report_dest']))
+ return "{} {} {}".format(docker_vol, env, report)
+
+ @classmethod
def create(cls, type, testcase_name):
dovetail_config = dt_cfg.dovetail_config
docker_image = cls.get_docker_image(type)
@@ -139,11 +153,30 @@ class Container(object):
envs = envs + ' -e BUILD_TAG=%s-%s' % (dovetail_config['build_tag'],
testcase_name)
+ hosts_config = ""
+ hosts_config_file = os.path.join(dovetail_config['config_dir'],
+ 'hosts.yaml')
+ try:
+ with open(hosts_config_file) as f:
+ hosts_info = yaml.safe_load(f)
+ if hosts_info['hosts_info']:
+ for host in hosts_info['hosts_info']:
+ dt_utils.add_hosts_info(host)
+ hosts_config += " --add-host "
+ hosts_config += str(host)
+ cls.logger.info('Get hosts info {}.'.format(hosts_config))
+ except Exception:
+ cls.logger.warn('Failed to get hosts info in {}, '
+ 'maybe some issues with domain name resolution.'
+ .format(hosts_config_file))
+
config = ""
if type.lower() == "functest":
config = cls.set_functest_config(testcase_name)
if type.lower() == "yardstick":
config = cls.set_yardstick_config()
+ if type.lower() == "bottlenecks":
+ config = cls.set_bottlenecks_config(testcase_name)
if not config:
return None
@@ -152,22 +185,6 @@ class Container(object):
' -v %s:%s ' % (os.getenv("DOVETAIL_HOME"),
dovetail_config[type]['config']['dir'])
- hosts_config = ""
- hosts_config_path = os.path.abspath(
- os.path.join(os.path.dirname(__file__), 'userconfig'))
- try:
- with open(os.path.join(hosts_config_path, 'hosts.yaml')) as f:
- hosts_info = yaml.safe_load(f)
- if hosts_info['hosts_info']:
- for host in hosts_info['hosts_info']:
- hosts_config += " --add-host "
- hosts_config += str(host)
- cls.logger.info('Get hosts info {}.'.format(hosts_config))
- except Exception:
- cls.logger.warn('Failed to get hosts info in {}/hosts.yaml, '
- 'maybe some issues with domain name resolution.'
- .format(hosts_config_path))
-
cacert_volume = ""
https_enabled = dt_utils.check_https_enabled(cls.logger)
cacert = os.getenv('OS_CACERT',)
@@ -207,6 +224,13 @@ class Container(object):
dest_path = '/home/opnfv/functest/images'
Container.pre_copy(container_id, src_path, dest_path)
+ if type.lower() == 'functest':
+ prefix_path = dt_cfg.dovetail_config[type]['config']['dir']
+ file_name = dt_cfg.dovetail_config['cirros_image']
+ src_path = os.path.join(prefix_path, 'pre_config', file_name)
+ dest_path = '/home/opnfv/functest/images'
+ Container.pre_copy(container_id, src_path, dest_path)
+
if type.lower() == 'yardstick':
cls.set_yardstick_conf_file(container_id)
@@ -284,11 +308,23 @@ class Container(object):
return image_id
@classmethod
- def clean(cls, container_id):
- cmd1 = 'sudo docker stop %s' % (container_id)
- dt_utils.exec_cmd(cmd1, cls.logger)
- cmd2 = 'sudo docker rm %s' % (container_id)
- dt_utils.exec_cmd(cmd2, cls.logger)
+ def check_container_exist(cls, container_name):
+ cmd = ('sudo docker ps -aq -f name={}'.format(container_name))
+ ret, msg = dt_utils.exec_cmd(cmd, cls.logger)
+ if ret == 0 and msg:
+ return True
+ return False
+
+ @classmethod
+ def clean(cls, container_id, valid_type):
+ cmd = ('sudo docker rm -f {}'.format(container_id))
+ dt_utils.exec_cmd(cmd, cls.logger)
+ if valid_type.lower() == 'bottlenecks':
+ containers = dt_cfg.dovetail_config[valid_type]['extra_container']
+ for container in containers:
+ if cls.check_container_exist(container):
+ cmd = ('sudo docker rm -f {}'.format(container))
+ dt_utils.exec_cmd(cmd, cls.logger)
@classmethod
def exec_cmd(cls, container_id, sub_cmd, exit_on_error=False):
diff --git a/dovetail/report.py b/dovetail/report.py
index 08780b88..fa6a0ba4 100644
--- a/dovetail/report.py
+++ b/dovetail/report.py
@@ -13,6 +13,7 @@ import urllib2
import re
import os
import datetime
+import tarfile
from pbr import version
@@ -25,7 +26,7 @@ from testcase import Testcase
class Report(object):
- results = {'functest': {}, 'yardstick': {}, 'shell': {}}
+ results = {'functest': {}, 'yardstick': {}, 'bottlenecks': {}, 'shell': {}}
logger = None
@@ -162,6 +163,17 @@ class Report(object):
# cls.save(report_txt)
return report_txt
+ @classmethod
+ def save_logs(cls):
+ logs_gz = "logs.tar.gz"
+ result_dir = dt_cfg.dovetail_config['result_dir']
+
+ with tarfile.open(os.path.join(result_dir, logs_gz), "w:gz") as f_out:
+ files = os.listdir(result_dir)
+ for f in files:
+ if f not in ['workspace']:
+ f_out.add(os.path.join(result_dir, f))
+
# save to disk as default
@classmethod
def save(cls, report):
@@ -339,6 +351,53 @@ class YardstickCrawler(object):
return None
+class BottlenecksCrawler(object):
+
+ logger = None
+
+ def __init__(self):
+ self.type = 'bottlenecks'
+ self.logger.debug('Create crawler: {}'.format(self.type))
+
+ @classmethod
+ def create_log(cls):
+ cls.logger = \
+ dt_logger.Logger(__name__ + '.BottlenecksCrawler').getLogger()
+
+ def crawl(self, testcase=None):
+ report_dest = dt_cfg.dovetail_config['report_dest']
+ if report_dest.lower() == 'file':
+ return self.crawl_from_file(testcase)
+
+ if report_dest.lower().startswith('http'):
+ return self.crawl_from_url(testcase)
+
+ def crawl_from_file(self, testcase=None):
+ file_path = os.path.join(dt_cfg.dovetail_config['result_dir'],
+ testcase.name() + '.out')
+ if not os.path.exists(file_path):
+ self.logger.error('Result file not found: {}'.format(file_path))
+ return None
+ criteria = 'FAIL'
+ with open(file_path, 'r') as f:
+ for jsonfile in f:
+ data = json.loads(jsonfile)
+ try:
+ if 'PASS' == data["data_body"]["result"]:
+ criteria = 'PASS'
+ else:
+ criteria = 'FAIL'
+ break
+ except KeyError as e:
+ self.logger.exception('Pass flag not found {}'.format(e))
+ json_results = {'criteria': criteria}
+ self.logger.debug('Results: {}'.format(str(json_results)))
+ return json_results
+
+ def crawl_from_url(self, testcase=None):
+ return None
+
+
class ShellCrawler(object):
def __init__(self):
@@ -364,6 +423,7 @@ class CrawlerFactory(object):
CRAWLER_MAP = {'functest': FunctestCrawler,
'yardstick': YardstickCrawler,
+ 'bottlenecks': BottlenecksCrawler,
'shell': ShellCrawler}
@classmethod
@@ -397,14 +457,16 @@ class FunctestChecker(object):
sub_testcase = re.sub("\[.*?\]", "", sub_testcase)
reg = sub_testcase + '[\s+\d+]'
find_reg = re.compile(reg)
- match = find_reg.findall(result)
- if match:
- return True
+ for tc in result:
+ match = find_reg.findall(tc)
+ if match:
+ return True
reg = sub_testcase + '$'
find_reg = re.compile(reg)
- match = find_reg.findall(result)
- if match:
- return True
+ for tc in result:
+ match = find_reg.findall(tc)
+ if match:
+ return True
return False
def check(self, testcase, db_result):
@@ -466,6 +528,24 @@ class YardstickChecker(object):
return
+class BottlenecksChecker(object):
+
+ logger = None
+
+ @classmethod
+ def create_log(cls):
+ cls.logger = \
+ dt_logger.Logger(__name__ + '.BottlenecksChecker').getLogger()
+
+ @staticmethod
+ def check(testcase, result):
+ if not result:
+ testcase.passed('FAIL')
+ else:
+ testcase.passed(result['criteria'])
+ return
+
+
class ShellChecker(object):
@staticmethod
@@ -480,6 +560,7 @@ class CheckerFactory(object):
CHECKER_MAP = {'functest': FunctestChecker,
'yardstick': YardstickChecker,
+ 'bottlenecks': BottlenecksChecker,
'shell': ShellChecker}
@classmethod
diff --git a/dovetail/run.py b/dovetail/run.py
index f89671f0..01111dd3 100755
--- a/dovetail/run.py
+++ b/dovetail/run.py
@@ -22,8 +22,8 @@ from container import Container
from testcase import Testcase
from testcase import Testsuite
from report import Report
-from report import FunctestCrawler, YardstickCrawler
-from report import FunctestChecker, YardstickChecker
+from report import FunctestCrawler, YardstickCrawler, BottlenecksCrawler
+from report import FunctestChecker, YardstickChecker, BottlenecksChecker
from utils.dovetail_config import DovetailConfig as dt_cfg
from test_runner import DockerRunner, ShellRunner
@@ -90,6 +90,8 @@ def check_tc_result(testcase, logger):
result_file = os.path.join(result_dir, testcase.name() + '.out')
elif validate_type.lower() == 'functest':
result_file = os.path.join(result_dir, functest_result)
+ elif validate_type.lower() == 'bottlenecks':
+ result_file = os.path.join(result_dir, testcase.name() + '.out')
else:
logger.error("Don't support {} now.".format(validate_type))
return
@@ -107,6 +109,7 @@ def validate_input(input_dict, check_dict, logger):
# for 'func_tag' and 'yard_tag' options
func_tag = input_dict['func_tag']
yard_tag = input_dict['yard_tag']
+ bott_tag = input_dict['bott_tag']
valid_tag = check_dict['valid_docker_tag']
if func_tag is not None and func_tag not in valid_tag:
logger.error("The input option 'func_tag' can't be {}, "
@@ -116,6 +119,10 @@ def validate_input(input_dict, check_dict, logger):
logger.error("The input option 'yard_tag' can't be {}, "
"valid values are {}.".format(yard_tag, valid_tag))
raise SystemExit(1)
+ if bott_tag is not None and bott_tag not in valid_tag:
+ logger.error("The input option 'bott_tag' can't be {}, "
+ "valid values are {}.".format(bott_tag, valid_tag))
+ raise SystemExit(1)
# for 'report' option
report = input_dict['report']
@@ -164,8 +171,10 @@ def create_logs():
Report.create_log()
FunctestCrawler.create_log()
YardstickCrawler.create_log()
+ BottlenecksCrawler.create_log()
FunctestChecker.create_log()
YardstickChecker.create_log()
+ BottlenecksChecker.create_log()
Testcase.create_log()
Testsuite.create_log()
DockerRunner.create_log()
@@ -246,6 +255,7 @@ def main(*args, **kwargs):
if(kwargs['report'].endswith('/')):
kwargs['report'] = kwargs['report'][0:kwargs['report'].rfind('/')]
dt_cfg.dovetail_config['report_dest'] = kwargs['report']
+ dt_cfg.update_cmds()
if kwargs['offline']:
dt_cfg.dovetail_config['offline'] = True
@@ -266,6 +276,7 @@ def main(*args, **kwargs):
duration = run_test(testsuite_yaml, testarea, logger)
if dt_cfg.dovetail_config['report_dest'] == "file":
Report.generate(testsuite_yaml, testarea, duration)
+ Report.save_logs()
else:
logger.error('Invalid input commands, testsuite {} testarea {}'
.format(kwargs['testsuite'], testarea))
diff --git a/dovetail/test_runner.py b/dovetail/test_runner.py
index b3fd7a3f..d2697f6d 100644
--- a/dovetail/test_runner.py
+++ b/dovetail/test_runner.py
@@ -82,17 +82,13 @@ class DockerRunner(object):
exist_file_name):
return
- if not self.testcase.prepared():
- prepare_failed = False
- cmds = self.testcase.pre_condition()
- if cmds:
- for cmd in cmds:
- ret, msg = Container.exec_cmd(container_id, cmd)
- if ret != 0:
- prepare_failed = True
- break
- if not prepare_failed:
- self.testcase.prepared(True)
+ cmds = self.testcase.pre_condition()
+ if cmds:
+ for cmd in cmds:
+ ret, msg = Container.exec_cmd(container_id, cmd)
+ if ret != 0:
+ self.logger.error("Failed to exec all pre_condition cmds.")
+ break
if not self.testcase.prepare_cmd(self.type):
self.logger.error(
@@ -111,7 +107,10 @@ class DockerRunner(object):
ret, msg = Container.exec_cmd(container_id, cmd)
self.testcase.cleaned(True)
- Container.clean(container_id)
+ Container.clean(container_id, self.type)
+
+ def save_logs(self):
+ pass
class FunctestRunner(DockerRunner):
@@ -120,6 +119,27 @@ class FunctestRunner(DockerRunner):
self.type = 'functest'
super(FunctestRunner, self).__init__(testcase)
+ def save_logs(self):
+ validate_testcase = self.testcase.validate_testcase()
+ test_area = self.testcase.name().split(".")[1]
+ result_path = os.path.join(os.environ["DOVETAIL_HOME"], 'results')
+ dest_path = os.path.join(result_path, test_area + '_logs')
+ dest_file = os.path.join(dest_path, self.testcase.name() + '.log')
+ if validate_testcase == 'tempest_custom':
+ source_file = os.path.join(result_path, 'tempest', 'tempest.log')
+ elif validate_testcase == 'refstack_defcore':
+ source_file = os.path.join(result_path, 'refstack', 'refstack.log')
+ elif validate_testcase == 'bgpvpn':
+ source_file = os.path.join(result_path, 'bgpvpn.log')
+ else:
+ source_file = None
+ if source_file:
+ if os.path.isfile(source_file):
+ os.renames(source_file, dest_file)
+ else:
+ self.logger.error("Tempest log file for test case {} is not "
+ "found.".format(self.testcase.name()))
+
class YardstickRunner(DockerRunner):
@@ -128,6 +148,13 @@ class YardstickRunner(DockerRunner):
super(YardstickRunner, self).__init__(testcase)
+class BottlenecksRunner(DockerRunner):
+
+ def __init__(self, testcase):
+ self.type = 'bottlenecks'
+ super(BottlenecksRunner, self).__init__(testcase)
+
+
class ShellRunner(object):
logger = None
@@ -190,6 +217,7 @@ class TestRunnerFactory(object):
TEST_RUNNER_MAP = {
"functest": FunctestRunner,
"yardstick": YardstickRunner,
+ "bottlenecks": BottlenecksRunner,
"shell": ShellRunner,
}
diff --git a/dovetail/testcase.py b/dovetail/testcase.py
index 7b012c88..b6819964 100644
--- a/dovetail/testcase.py
+++ b/dovetail/testcase.py
@@ -157,6 +157,7 @@ class Testcase(object):
runner = TestRunnerFactory.create(self)
try:
runner.run()
+ runner.save_logs()
except AttributeError as e:
self.logger.exception(
'Test case: {} Exception: {}'.format(self.name, e))
@@ -254,13 +255,30 @@ class FunctestTestcase(Testcase):
class YardstickTestcase(Testcase):
- validate_testcae_list = {}
+ validate_testcase_list = {}
def __init__(self, testcase_yaml):
super(YardstickTestcase, self).__init__(testcase_yaml)
self.type = 'yardstick'
+class BottlenecksTestcase(Testcase):
+
+ validate_testcase_list = {}
+
+ def __init__(self, testcase_yaml):
+ super(BottlenecksTestcase, self).__init__(testcase_yaml)
+ self.type = 'bottlenecks'
+ self._update_cmds()
+
+ def _update_cmds(self):
+ if dt_cfg.dovetail_config['report_dest'].startswith("http"):
+ try:
+ self.testcase['validate']['cmds'][0] += ' --report'
+ except KeyError:
+ return
+
+
class ShellTestcase(Testcase):
validate_testcase_list = {}
@@ -274,6 +292,7 @@ class TestcaseFactory(object):
TESTCASE_TYPE_MAP = {
'functest': FunctestTestcase,
'yardstick': YardstickTestcase,
+ 'bottlenecks': BottlenecksTestcase,
'shell': ShellTestcase,
}
diff --git a/dovetail/testcase/defcore.tc001.yml b/dovetail/testcase/defcore.tc001.yml
index 39be7471..19092c09 100644
--- a/dovetail/testcase/defcore.tc001.yml
+++ b/dovetail/testcase/defcore.tc001.yml
@@ -9,10 +9,10 @@ dovetail.defcore.tc001:
type: functest
testcase: refstack_defcore
pre_condition:
- - 'echo test for precondition in testcase'
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: defcore.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/refstack_client/defcore.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/refstack_client/defcore.txt
cmds:
- 'functest env prepare'
- 'functest testcase run refstack_defcore -r'
diff --git a/dovetail/testcase/ipv6.tc001.yml b/dovetail/testcase/ipv6.tc001.yml
index a70d41eb..6a2f2543 100644
--- a/dovetail/testcase/ipv6.tc001.yml
+++ b/dovetail/testcase/ipv6.tc001.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc001:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_network[id-d4f9024d-1e28-4fc1-a6b1-25dbc6fa11e2,smoke]
diff --git a/dovetail/testcase/ipv6.tc002.yml b/dovetail/testcase/ipv6.tc002.yml
index c8254bb8..77720581 100644
--- a/dovetail/testcase/ipv6.tc002.yml
+++ b/dovetail/testcase/ipv6.tc002.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc002:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.NetworksIpV6Test.test_create_update_delete_network_subnet[id-0e269138-0da6-4efc-a46d-578161e7b221,smoke]
diff --git a/dovetail/testcase/ipv6.tc003.yml b/dovetail/testcase/ipv6.tc003.yml
index 339d405b..a3b0b9d1 100644
--- a/dovetail/testcase/ipv6.tc003.yml
+++ b/dovetail/testcase/ipv6.tc003.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc003:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.NetworksIpV6Test.test_external_network_visibility[id-af774677-42a9-4e4b-bb58-16fe6a5bc1ec,smoke]
diff --git a/dovetail/testcase/ipv6.tc004.yml b/dovetail/testcase/ipv6.tc004.yml
index 514a846e..41d703c3 100644
--- a/dovetail/testcase/ipv6.tc004.yml
+++ b/dovetail/testcase/ipv6.tc004.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc004:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.NetworksIpV6Test.test_list_networks[id-f7ffdeda-e200-4a7a-bcbe-05716e86bf43,smoke]
diff --git a/dovetail/testcase/ipv6.tc005.yml b/dovetail/testcase/ipv6.tc005.yml
index 3dcca9b2..7b197ec1 100644
--- a/dovetail/testcase/ipv6.tc005.yml
+++ b/dovetail/testcase/ipv6.tc005.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc005:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.NetworksIpV6Test.test_show_network[id-2bf13842-c93f-4a69-83ed-717d2ec3b44e,smoke]
diff --git a/dovetail/testcase/ipv6.tc006.yml b/dovetail/testcase/ipv6.tc006.yml
index dc6b2da6..0f9fd286 100644
--- a/dovetail/testcase/ipv6.tc006.yml
+++ b/dovetail/testcase/ipv6.tc006.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc006:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_in_allowed_allocation_pools[id-0435f278-40ae-48cb-a404-b8a087bc09b1,smoke]
diff --git a/dovetail/testcase/ipv6.tc007.yml b/dovetail/testcase/ipv6.tc007.yml
index b2658ec9..92ba2fba 100644
--- a/dovetail/testcase/ipv6.tc007.yml
+++ b/dovetail/testcase/ipv6.tc007.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc007:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_with_no_securitygroups[id-4179dcb9-1382-4ced-84fe-1b91c54f5735,smoke]
diff --git a/dovetail/testcase/ipv6.tc008.yml b/dovetail/testcase/ipv6.tc008.yml
index 597a4716..b1b60049 100644
--- a/dovetail/testcase/ipv6.tc008.yml
+++ b/dovetail/testcase/ipv6.tc008.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc008:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_update_delete_port[id-c72c1c0c-2193-4aca-aaa4-b1442640f51c,smoke]
diff --git a/dovetail/testcase/ipv6.tc009.yml b/dovetail/testcase/ipv6.tc009.yml
index 013a76ea..579cee54 100644
--- a/dovetail/testcase/ipv6.tc009.yml
+++ b/dovetail/testcase/ipv6.tc009.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc009:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_list_ports[id-cf95b358-3e92-4a29-a148-52445e1ac50e,smoke]
diff --git a/dovetail/testcase/ipv6.tc010.yml b/dovetail/testcase/ipv6.tc010.yml
index 48191f0b..a44ab44a 100644
--- a/dovetail/testcase/ipv6.tc010.yml
+++ b/dovetail/testcase/ipv6.tc010.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc010:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_show_port[id-c9a685bd-e83f-499c-939f-9f7863ca259f,smoke]
diff --git a/dovetail/testcase/ipv6.tc011.yml b/dovetail/testcase/ipv6.tc011.yml
index 18373ef5..16a214fd 100644
--- a/dovetail/testcase/ipv6.tc011.yml
+++ b/dovetail/testcase/ipv6.tc011.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc011:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_routers.RoutersIpV6Test.test_add_multiple_router_interfaces[id-802c73c9-c937-4cef-824b-2191e24a6aab,smoke]
diff --git a/dovetail/testcase/ipv6.tc012.yml b/dovetail/testcase/ipv6.tc012.yml
index 620fdd6b..a987ccb6 100644
--- a/dovetail/testcase/ipv6.tc012.yml
+++ b/dovetail/testcase/ipv6.tc012.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc012:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_port_id[id-2b7d2f37-6748-4d78-92e5-1d590234f0d5,smoke]
diff --git a/dovetail/testcase/ipv6.tc013.yml b/dovetail/testcase/ipv6.tc013.yml
index 8f739bc7..738c8207 100644
--- a/dovetail/testcase/ipv6.tc013.yml
+++ b/dovetail/testcase/ipv6.tc013.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc013:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_subnet_id[id-b42e6e39-2e37-49cc-a6f4-8467e940900a,smoke]
diff --git a/dovetail/testcase/ipv6.tc014.yml b/dovetail/testcase/ipv6.tc014.yml
index 8d3ed342..bf89464a 100644
--- a/dovetail/testcase/ipv6.tc014.yml
+++ b/dovetail/testcase/ipv6.tc014.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc014:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_routers.RoutersIpV6Test.test_create_show_list_update_delete_router[id-f64403e2-8483-4b34-8ccd-b09a87bcc68c,smoke]
diff --git a/dovetail/testcase/ipv6.tc015.yml b/dovetail/testcase/ipv6.tc015.yml
index 19a9806d..225dd719 100644
--- a/dovetail/testcase/ipv6.tc015.yml
+++ b/dovetail/testcase/ipv6.tc015.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc015:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_list_update_show_delete_security_group[id-bfd128e5-3c92-44b6-9d66-7fe29d22c802,smoke]
diff --git a/dovetail/testcase/ipv6.tc016.yml b/dovetail/testcase/ipv6.tc016.yml
index f5899058..3489aa57 100644
--- a/dovetail/testcase/ipv6.tc016.yml
+++ b/dovetail/testcase/ipv6.tc016.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc016:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_show_delete_security_group_rule[id-cfb99e0e-7410-4a3d-8a0c-959a63ee77e9,smoke]
diff --git a/dovetail/testcase/ipv6.tc017.yml b/dovetail/testcase/ipv6.tc017.yml
index 8bef6036..5642ba38 100644
--- a/dovetail/testcase/ipv6.tc017.yml
+++ b/dovetail/testcase/ipv6.tc017.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc017:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_security_groups.SecGroupIPv6Test.test_list_security_groups[id-e30abd17-fef9-4739-8617-dc26da88e686,smoke]
diff --git a/dovetail/testcase/ipv6.tc018.yml b/dovetail/testcase/ipv6.tc018.yml
index 406e02af..0345d071 100644
--- a/dovetail/testcase/ipv6.tc018.yml
+++ b/dovetail/testcase/ipv6.tc018.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc018:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dhcp6_stateless_from_os[compute,id-d7e1f858-187c-45a6-89c9-bdafde619a9f,network,slow]
diff --git a/dovetail/testcase/ipv6.tc019.yml b/dovetail/testcase/ipv6.tc019.yml
index 1e3c171b..afa1d06b 100644
--- a/dovetail/testcase/ipv6.tc019.yml
+++ b/dovetail/testcase/ipv6.tc019.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc019:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_dhcp6_stateless_from_os[compute,id-76f26acd-9688-42b4-bc3e-cd134c4cb09e,network,slow]
diff --git a/dovetail/testcase/ipv6.tc020.yml b/dovetail/testcase/ipv6.tc020.yml
index f7ab8b47..caa423f4 100644
--- a/dovetail/testcase/ipv6.tc020.yml
+++ b/dovetail/testcase/ipv6.tc020.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc020:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_dhcpv6_stateless[compute,id-7ab23f41-833b-4a16-a7c9-5b42fe6d4123,network,slow]
diff --git a/dovetail/testcase/ipv6.tc021.yml b/dovetail/testcase/ipv6.tc021.yml
index 466b75ca..c5578184 100644
--- a/dovetail/testcase/ipv6.tc021.yml
+++ b/dovetail/testcase/ipv6.tc021.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc021:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_dhcpv6_stateless[compute,id-cf1c4425-766b-45b8-be35-e2959728eb00,network]
diff --git a/dovetail/testcase/ipv6.tc022.yml b/dovetail/testcase/ipv6.tc022.yml
index c1d371d6..f8b7e262 100644
--- a/dovetail/testcase/ipv6.tc022.yml
+++ b/dovetail/testcase/ipv6.tc022.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc022:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_slaac_from_os[compute,id-2c92df61-29f0-4eaa-bee3-7c65bef62a43,network,slow]
diff --git a/dovetail/testcase/ipv6.tc023.yml b/dovetail/testcase/ipv6.tc023.yml
index 8b816252..f97ec799 100644
--- a/dovetail/testcase/ipv6.tc023.yml
+++ b/dovetail/testcase/ipv6.tc023.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc023:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_slaac_from_os[compute,id-b6399d76-4438-4658-bcf5-0d6c8584fde2,network,slow]
diff --git a/dovetail/testcase/ipv6.tc024.yml b/dovetail/testcase/ipv6.tc024.yml
index 8d248901..705e3be7 100644
--- a/dovetail/testcase/ipv6.tc024.yml
+++ b/dovetail/testcase/ipv6.tc024.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc024:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_slaac[compute,id-dec222b1-180c-4098-b8c5-cc1b8342d611,network,slow]
diff --git a/dovetail/testcase/ipv6.tc025.yml b/dovetail/testcase/ipv6.tc025.yml
index 35ef78c7..a4013530 100644
--- a/dovetail/testcase/ipv6.tc025.yml
+++ b/dovetail/testcase/ipv6.tc025.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc025:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_slaac[compute,id-9178ad42-10e4-47e9-8987-e02b170cc5cd,network]
diff --git a/dovetail/testcase/nfvi.tc101.yml b/dovetail/testcase/nfvi.tc101.yml
deleted file mode 100644
index 2fa47dee..00000000
--- a/dovetail/testcase/nfvi.tc101.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-dovetail.nfvi.tc101:
- name: dovetail.nfvi.tc101
- objective: measure number of cores and threads, available memory size and cache size
- validate:
- type: yardstick
- testcase: opnfv_yardstick_tc001
- report:
- sub_testcase_list:
diff --git a/dovetail/testcase/nfvi.tc102.yml b/dovetail/testcase/nfvi.tc102.yml
deleted file mode 100644
index 6da52243..00000000
--- a/dovetail/testcase/nfvi.tc102.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-dovetail.nfvi.tc102:
- name: dovetail.nfvi.tc102
- objective: measure number of cores and threads, available memory size and cache size
- validate:
- type: yardstick
- testcase: opnfv_yardstick_tc002
- report:
- sub_testcase_list:
diff --git a/dovetail/testcase/resiliency.tc001.yml b/dovetail/testcase/resiliency.tc001.yml
new file mode 100644
index 00000000..86399849
--- /dev/null
+++ b/dovetail/testcase/resiliency.tc001.yml
@@ -0,0 +1,11 @@
+---
+dovetail.resiliency.tc001:
+ name: dovetail.resiliency.tc001
+ objective: > # This test case verifies the ability of the SUT setting up VM pairs
+ # for different tenants and providing acceptable capacity after the amount of
+ # VM pairs reaches certain quantity.
+ validate:
+ type: bottlenecks
+ testcase: posca_factor_ping
+ report:
+ sub_testcase_list:
diff --git a/dovetail/testcase/tempest.tc001.yml b/dovetail/testcase/tempest.tc001.yml
new file mode 100644
index 00000000..be02e67a
--- /dev/null
+++ b/dovetail/testcase/tempest.tc001.yml
@@ -0,0 +1,15 @@
+---
+dovetail.tempest.tc001:
+ name: dovetail.tempest.tc001
+ objective: forwarding packets through virtual networks in data path
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_mtu_sized_frames[compute,id-b158ea55-472e-4086-8fa9-c64ac0c6c1d0,network]
diff --git a/dovetail/testcase/tempest.tc002.yml b/dovetail/testcase/tempest.tc002.yml
new file mode 100644
index 00000000..54a56f54
--- /dev/null
+++ b/dovetail/testcase/tempest.tc002.yml
@@ -0,0 +1,20 @@
+---
+dovetail.tempest.tc002:
+ name: dovetail.tempest.tc002
+ objective: filtering packets based on security rules and port security in data path
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port[compute,id-7c0bb1a2-d053-49a4-98f9-ca1a1d849f63,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic[compute,id-e79f879e-debb-440c-a7e4-efeda05b6848,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_in_tenant_traffic[compute,id-63163892-bbf6-4249-aa12-d5ea1f8f421b,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups[compute,id-d2f77418-fcc4-439d-b935-72eca704e293,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_security_disable_security_group[compute,id-7c811dcc-263b-49a3-92d2-1b4d8405f50c,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_update_new_security_group[compute,id-f4d556d7-1526-42ad-bafb-6bebf48568f6,network]
diff --git a/dovetail/testcase/tempest.tc003.yml b/dovetail/testcase/tempest.tc003.yml
new file mode 100644
index 00000000..07d7097f
--- /dev/null
+++ b/dovetail/testcase/tempest.tc003.yml
@@ -0,0 +1,19 @@
+---
+dovetail.tempest.tc003:
+ name: dovetail.tempest.tc003
+ objective: dynamic network runtime operations through the life of a VNF
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_hotplug_nic[compute,id-c5adff73-e961-41f1-b4a9-343614f18cfa,network]
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops[compute,id-f323b3ba-82f8-4db7-8ea6-6a895869ec49,network,smoke]
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details[compute,id-d8bb918e-e2df-48b2-97cd-b73c95450980,network]
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_instance_port_admin_state[compute,id-f5dfcc22-45fd-409f-954c-5bd500d7890b,network]
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_router_admin_state[compute,id-04b9fe4e-85e8-4aea-b937-ea93885ac59f,network]
diff --git a/dovetail/testcase/tempest.tc004.yml b/dovetail/testcase/tempest.tc004.yml
new file mode 100644
index 00000000..c9e9c8f6
--- /dev/null
+++ b/dovetail/testcase/tempest.tc004.yml
@@ -0,0 +1,27 @@
+---
+dovetail.tempest.tc004:
+ name: dovetail.tempest.tc004
+ objective: correct behavior after common virtual machine life cycles events
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_minimum_basic.TestMinimumBasicScenario.test_minimum_basic_scenario[compute,id-bdbb5441-9204-419d-a225-b4fdbfb1a1a8,image,network,volume]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_cold_migration[compute,id-a4858f6c-401e-4155-9a49-d5cd053d1a2f,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_cold_migration_revert[compute,id-25b188d7-0183-4b1e-a11d-15840c8e2fd6,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_pause_unpause[compute,id-2b2642db-6568-4b35-b812-eceed3fa20ce,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_reboot[compute,id-7b6860c2-afa3-4846-9522-adeb38dfbe08,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_rebuild[compute,id-88a529c2-1daa-4c85-9aec-d541ba3eb699,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_resize[compute,id-719eb59d-2f42-4b66-b8b1-bb1254473967,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_stop_start[compute,id-61f1aa9a-1573-410e-9054-afa557cab021,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_suspend_resume[compute,id-5cdf9499-541d-4923-804e-b9a60620a7f0,network]
+ - tempest.scenario.test_server_advanced_ops.TestServerAdvancedOps.test_resize_volume_backed_server_confirm[compute,id-e6c28180-7454-4b59-b188-0257af08a63b,volume]
+ - tempest.scenario.test_server_advanced_ops.TestServerAdvancedOps.test_server_sequence_suspend_resume[compute,id-949da7d5-72c8-4808-8802-e3d70df98e2c]
+ - tempest.scenario.test_shelve_instance.TestShelveInstance.test_shelve_instance[compute,id-1164e700-0af0-4a4c-8792-35909a88743c,image,network]
+ - tempest.scenario.test_shelve_instance.TestShelveInstance.test_shelve_volume_backed_instance[compute,id-c1b6318c-b9da-490b-9c67-9339b627271f,image,network,volume]
diff --git a/dovetail/testcase/tempest.tc005.yml b/dovetail/testcase/tempest.tc005.yml
new file mode 100644
index 00000000..d2be3528
--- /dev/null
+++ b/dovetail/testcase/tempest.tc005.yml
@@ -0,0 +1,20 @@
+---
+dovetail.tempest.tc005:
+ name: dovetail.tempest.tc005
+ objective: simple virtual machine resource scheduling on multiple nodes
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_server_multinode.TestServerMultinode.test_schedule_to_all_nodes[compute,id-9cecbe35-b9d4-48da-a37e-7ce70aa43d30,network,smoke]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_create_delete_multiple_server_groups_with_same_name_policy[id-154dc5a4-a2fe-44b5-b99e-f15806a4a113]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_create_delete_server_group_with_affinity_policy[id-5dc57eda-35b7-4af7-9e5f-3c2be3d2d68b]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_create_delete_server_group_with_anti_affinity_policy[id-3645a102-372f-4140-afad-13698d850d23]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_list_server_groups[id-d4874179-27b4-4d7d-80e4-6c560cdfe321]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_show_server_group[id-b3545034-dd78-48f0-bdc2-a4adfa6d0ead]
diff --git a/dovetail/testcase/nfvi.tc002.yml b/dovetail/testcase/vping.tc001.yml
index 28a7adfd..e3b501be 100644
--- a/dovetail/testcase/nfvi.tc002.yml
+++ b/dovetail/testcase/vping.tc001.yml
@@ -1,6 +1,6 @@
---
-dovetail.nfvi.tc002:
- name: dovetail.nfvi.tc002
+dovetail.vping.tc001:
+ name: dovetail.vping.tc001
objective: testing for vping using userdata
validate:
type: functest
diff --git a/dovetail/testcase/nfvi.tc001.yml b/dovetail/testcase/vping.tc002.yml
index 157fc8da..a800a4db 100644
--- a/dovetail/testcase/nfvi.tc001.yml
+++ b/dovetail/testcase/vping.tc002.yml
@@ -1,6 +1,6 @@
---
-dovetail.nfvi.tc001:
- name: dovetail.nfvi.tc001
+dovetail.vping.tc002:
+ name: dovetail.vping.tc002
objective: testing for vping using ssh
validate:
type: functest
diff --git a/dovetail/userconfig/hosts.yaml b/dovetail/userconfig/hosts.yaml.sample
index e4687dfb..e4687dfb 100644
--- a/dovetail/userconfig/hosts.yaml
+++ b/dovetail/userconfig/hosts.yaml.sample
diff --git a/dovetail/userconfig/tempest_conf.yaml.sample b/dovetail/userconfig/tempest_conf.yaml.sample
new file mode 100644
index 00000000..944e3a9f
--- /dev/null
+++ b/dovetail/userconfig/tempest_conf.yaml.sample
@@ -0,0 +1,16 @@
+# This is an empty configuration file to be filled up with the desired options
+# to generate a custom tempest.conf
+# Examples:
+# network-feature-enabled:
+# port_security: True
+
+# volume-feature-enabled:
+# api_v1: False
+
+# validation:
+# image_ssh_user: root
+# ssh_timeout: 300
+
+# compute:
+# min_compute_nodes: 2
+# volume_device_name: vdb
diff --git a/dovetail/utils/dovetail_config.py b/dovetail/utils/dovetail_config.py
index f8193e5d..5e100d69 100644
--- a/dovetail/utils/dovetail_config.py
+++ b/dovetail/utils/dovetail_config.py
@@ -54,3 +54,8 @@ class DovetailConfig(object):
def update_non_envs(cls, path, value):
if value:
cls.set_leaf_dict(cls.dovetail_config, path, value)
+
+ @classmethod
+ def update_cmds(cls):
+ if cls.dovetail_config['report_dest'].startswith("http"):
+ cls.dovetail_config['bottlenecks']['cmds'][0] += ' --report'
diff --git a/dovetail/utils/dovetail_utils.py b/dovetail/utils/dovetail_utils.py
index f74da3a2..23285e3c 100644
--- a/dovetail/utils/dovetail_utils.py
+++ b/dovetail/utils/dovetail_utils.py
@@ -120,10 +120,11 @@ def source_env(env_file):
def check_https_enabled(logger=None):
logger.debug("Checking if https enabled or not...")
- cmd = ("openstack catalog show identity |awk '/public/ {print $4}'")
- ret, msg = exec_cmd(cmd, logger)
- if ret == 0 and "https://" in msg:
+ os_auth_url = os.getenv('OS_AUTH_URL')
+ if os_auth_url.startswith('https'):
+ logger.debug("https is enabled")
return True
+ logger.debug("https is not enabled")
return False
@@ -207,3 +208,9 @@ def check_docker_version(logger=None):
if client_ret != 0 or (LooseVersion(client_ver) < LooseVersion('1.12.3')):
logger.error("Don't support this Docker client version. "
"Docker client should be updated to at least 1.12.3.")
+
+
+def add_hosts_info(hosts_info):
+ hosts_file = '/etc/hosts'
+ with open(hosts_file, 'a') as f:
+ f.write("{}\n".format(hosts_info))
diff --git a/dovetail/utils/local_db/cases.json b/dovetail/utils/local_db/cases.json
new file mode 100644
index 00000000..118f740b
--- /dev/null
+++ b/dovetail/utils/local_db/cases.json
@@ -0,0 +1,36 @@
+{"testcases": [{"project_name": "functest", "run": {"class": "VPingSSH", "module": "functest.opnfv_tests.openstack.vping.vping_ssh"}, "description": "NFV \u201cHello World\u201d using SSH connection and floatting IP", "ci_loop": "daily", "tags": "ping", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "55e05dba514bc52914149f2e", "catalog_description": "vPing using SSH", "creation_date": "2015-08-28 13:10:18.478986", "domains": null, "dependencies": {"installer": "", "scenario": "^((?!bgpvpn|odl_l3).)*$"}, "version": ">arno.1.0", "criteria": null, "tier": "healthcheck", "trust": "silver", "blocking": true, "name": "vping_ssh"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "This test consists in running OpenStack Tempest fonctional suite.Initially based on the smoke suite, functest aims to define its own subset of tests", "ci_loop": "daily", "tags": "tempest,api,interfaces,openstack,vim", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "55effe6f514bc52b1791f966", "catalog_description": "OpenStack Tempest (smoke)", "creation_date": "2015-09-09 09:39:59.661046", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">arno.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "tempest_smoke_serial"}, {"project_name": "functest", "run": {"class": "ODLTests", "module": "functest.opnfv_tests.sdn.odl.odl"}, "description": "This test consists in creating, updating and deleting, networks, ports, subnets, routers in ODL and Neutron", "ci_loop": "daily", "tags": "odl,sdn", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "56169c4e514bc52b17f4adaa", "catalog_description": "OpenDaylight", "creation_date": "2015-10-08 16:39:42.727060", "domains": "networking", "dependencies": {"installer": "", "scenario": "odl"}, "version": ">arno.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "odl"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "Tests of OpenStack performed with Rally framework. These tests aim to qualify OpenStack modules and their associated APIs", "ci_loop": "daily", "tags": "rally,api,interfaces,openstack,vim", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "561e504c514bc5355ba8b3a8", "catalog_description": "OpenStack Rally (sanity)", "creation_date": "2015-10-14 12:53:32.126750", "domains": "vim", "dependencies": {"installer": "", "scenario": "^((?!bgpvpn).)*$"}, "version": ">arno.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "rally_sanity"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "Tests of the ONOS Virtual Network Northbound API", "ci_loop": "daily", "tags": "onos,sdn", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "565d6579514bc5087f2ddd0b", "catalog_description": "ONOS", "creation_date": "2015-12-01 09:16:41.343670", "domains": "networking", "dependencies": {"installer": "", "scenario": "onos"}, "version": ">brahmaputra.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "onos"}, {"project_name": "functest", "run": {"class": "VPingUserdata", "module": "functest.opnfv_tests.openstack.vping.vping_userdata"}, "description": "vPing using userdata and cloudinit mechanisms", "ci_loop": "daily", "tags": "ping", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "569f60cf514bc541f885b206", "catalog_description": "vPing using userdata", "creation_date": "2016-01-20 10:26:23.160020", "domains": "", "dependencies": {"installer": "", "scenario": "^((?!lxd).)*$"}, "version": ">brahmaputra.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "vping_userdata"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "Rally full extended suite", "ci_loop": "weekly", "tags": "openstack,vim", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "573c83ef9377c5287772dc81", "catalog_description": "OpenStack Rally (full)", "creation_date": "2016-05-18 15:02:07.153735", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">colorado.1.0", "criteria": {"step1": "success_rate >=90"}, "tier": "components", "trust": "silver", "blocking": false, "name": "rally_full"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "Tempest full using parallel option", "ci_loop": "weekly", "tags": "openstack,vim,tempest", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "573c840d9377c5287772dc82", "catalog_description": "OpenStack Tempest (full)", "creation_date": "2016-05-18 15:02:37.517083", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">colorado.1.0", "criteria": {"step1": "success_rate >=80"}, "tier": "components", "trust": "silver", "blocking": false, "name": "tempest_full_parallel"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "SFC tests for ONOS based scenarios", "ci_loop": "daily", "tags": "sfc,service", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "578502b89377c54b278bbfe3", "catalog_description": "ONOS Service Function Chaining", "creation_date": "2016-07-12 14:46:16.149806", "domains": "networking", "dependencies": {"installer": "", "scenario": "onos-sfc"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": true, "name": "onos_sfc"}, {"project_name": "functest", "run": {"class": "ConnectionCheck", "module": "functest.opnfv_tests.openstack.snaps.connection_check"}, "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.", "ci_loop": "daily", "tags": "snaps,openstack,vim", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "584a5d4c1d2c6e000ab2d7e4", "catalog_description": "Healthcheck OpenStack connectivity", "creation_date": "2016-12-09 07:29:16.270583", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">danube.1.0", "criteria": null, "tier": "healthcheck", "trust": "silver", "blocking": true, "name": "connection_check"}, {"project_name": "functest", "run": {"class": "ApiCheck", "module": "functest.opnfv_tests.openstack.snaps.api_check"}, "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.", "ci_loop": "daily", "tags": "snaps,api,interfaces,openstack,vim", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "584a5e1d1d2c6e000ab2d7e5", "catalog_description": "Healthcheck OpenStack API", "creation_date": "2016-12-09 07:32:45.435360", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">danube.1.0", "criteria": null, "tier": "healthcheck", "trust": "silver", "blocking": true, "name": "api_check"}, {"project_name": "functest", "run": {"class": "SnapsSmoke", "module": "functest.opnfv_tests.openstack.snaps.smoke"}, "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.", "ci_loop": "daily", "tags": "snaps,openstack,vim", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "584a5e731d2c6e000ab2d7e6", "catalog_description": "SNAPS (smoke)", "creation_date": "2016-12-09 07:34:11.982435", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">danube.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "snaps_smoke"}, {"project_name": "functest", "run": "daily", "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.", "ci_loop": "daily", "tags": "dhcp", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "589c8f248cf551000c78211e", "catalog_description": "Healthcheck OpenStack (network)", "creation_date": "2017-02-09 15:47:48.739222", "domains": "vim", "dependencies": "", "version": ">danube", "criteria": "", "tier": "healthcheck", "trust": null, "blocking": true, "name": "snaps_health_check"}, {"project_name": "functest", "run": {"class": "AaaVnf", "module": "functest.opnfv_tests.vnf.aaa.aaa"}, "description": "AAA VNF sample", "ci_loop": "weekly", "tags": "aaa, freeradius, vnf", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "58a324e6584d06000b0157f2", "catalog_description": "VNF AAA", "creation_date": "2017-02-14 15:40:22.150387", "domains": "vnf", "dependencies": "", "version": ">Danube", "criteria": "", "tier": "vnf", "trust": null, "blocking": false, "name": "aaa"}, {"project_name": "functest", "run": {"class": "ImsVnf", "module": "functest.opnfv_tests.vnf.ims.cloudify_ims"}, "description": "Clearwater vIMS deployed with cloudify orchestrator", "ci_loop": "weekly", "tags": "vnf, ims", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "58a325e8584d06000b0157f5", "catalog_description": "VNF clearwater IMS with Cloudify orchestrator", "creation_date": "2017-02-14 15:44:40.235672", "domains": "vnf", "dependencies": "", "version": ">Danube", "criteria": "", "tier": "vnf", "trust": null, "blocking": false, "name": "cloudify_ims"}, {"project_name": "functest", "run": {"class": "ImsVnf", "module": "functest.opnfv_tests.vnf.ims.orchestra_ims"}, "description": "openIMS deployed with openBaton orchestrator", "ci_loop": "weekly", "tags": "vnf, ims", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "58a3263b584d06000b0157f6", "catalog_description": "VNF openIMS with Openbaton orchestrator", "creation_date": "2017-02-14 15:46:03.398028", "domains": "vnf", "dependencies": "", "version": ">Danube", "criteria": "", "tier": "vnf", "trust": null, "blocking": false, "name": "orchestra_openims"}, {"project_name": "functest", "run": "", "description": "Defcore List of tempest testcases", "ci_loop": "daily", "tags": "", "url": "", "_id": "58b438daf5a101000ac478ea", "catalog_description": "OpenStack Tempest (defcore)", "creation_date": "2017-02-27 14:34:02.219544", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "components", "trust": null, "blocking": "false", "name": "tempest_defcore"}, {"project_name": "functest", "run": null, "description": "A sub group of tests of the OpenStack Defcore testcases by using refstack client", "ci_loop": "daily", "tags": null, "url": null, "_id": "58c91c64b91f23000a62ba0a", "catalog_description": "OpenStack RefStack", "creation_date": "2017-03-15 10:50:12.764115", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": "smoke", "trust": null, "blocking": "false", "name": "refstack_defcore"}, {"project_name": "functest", "run": {"class": "ImsVnf", "module": "functest.opnfv_tests.vnf.ims.opera_ims"}, "description": "Exemple of use of Open-O to deploy a VNF", "ci_loop": "weekly", "tags": "ims, open-o, onap, orchestration", "url": "", "_id": "58ca69abb91f23000a62baae", "catalog_description": "VNF clearwater IMS with Open-O orchestrator", "creation_date": "2017-03-16 10:32:11.203581", "domains": "orchestration, vnf", "dependencies": {"installer": "compass", "scenario": "os-nosdn-openo"}, "version": ">danube", "criteria": "", "tier": "vnf", "trust": null, "blocking": false, "name": "opera_ims"}, {"project_name": "functest", "run": {"class": "VrouterVnf", "module": "functest.opnfv_tests.vnf.router.vyos_vrouter"}, "description": "This test case is vRouter testing", "ci_loop": "", "tags": "vrouter, vnf", "url": "", "_id": "58ca6adeb91f23000a62baaf", "catalog_description": "VNF Vyatta vRouter with Cloudify orchestrator", "creation_date": "2017-03-16 10:37:18.293020", "domains": "network, vnf", "dependencies": {"installer": "fuel", "scenario": "nosdn-nofeature"}, "version": "", "criteria": "", "tier": "vnf", "trust": null, "blocking": "false", "name": "vyos_vrouter"}, {"project_name": "functest", "run": {"class": "ImsVnf", "module": "functest.opnfv_tests.vnf.ims.orchestra_ims"}, "description": "Clearwater vIMS deployed with Openbaton Mano orchestrator.", "ci_loop": "weekly", "tags": "vnf,ims", "url": "http://artifacts.opnfv.org/functest/euphrates/docs/userguide/index.html", "_id": "5922859a356833000a195187", "catalog_description": "VNF Clearwater IMS with OpenBaton orchestrator", "creation_date": "2017-05-22 06:30:50.512246", "domains": "mano,vnf", "dependencies": "", "version": ">euphrates", "criteria": 100, "tier": "vnf", "trust": null, "blocking": "false", "name": "orchestra_ims"}]}
+{"testcases": [{"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatio for DPDK Ovs", "ci_loop": null, "tags": null, "url": "http://tput_ovsdpdk", "_id": "565feb6b514bc5087f3cfe2e", "catalog_description": "Packet Loss Ratio for DPDK OVS (RFC2544)", "creation_date": "2015-12-03 07:12:43.925943", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_ovsdpdk"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatio for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://tput_ovs", "_id": "566005d9514bc5087f3cfe30", "catalog_description": "Packet Loss Ratio for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:05:29.686136", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_ovs"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatio for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://tput_ovs", "_id": "566005ed514bc5087f3cfe31", "catalog_description": "Packet Loss Ratio for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:05:49.363961", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_ovs"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.BackToBackFrames for DPDK Ovs", "ci_loop": null, "tags": null, "url": "http://b2b_ovsdpdk", "_id": "566006c8514bc5087f3cfe32", "catalog_description": "Back To Back Frames for DPDK Ovs (RFC2544)", "creation_date": "2015-12-03 09:09:28.927130", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "b2b_ovsdpdk"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.BackToBackFrames for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://b2b_ovs", "_id": "5660071e514bc5087f3cfe33", "catalog_description": "Back To Back Frames for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:10:54.473180", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "b2b_ovs"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatioFrameModification for DPDK Ovs", "ci_loop": null, "tags": null, "url": "http://tput_mod_vlan_ovsdpdk", "_id": "566007a9514bc5087f3cfe34", "catalog_description": "Packet Loss Ratio Frame Modification for DPDK Ovs (RFC2544)", "creation_date": "2015-12-03 09:13:13.600168", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_mod_vlan_ovsdpdk"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatioFrameModification for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://tput_mod_vlan_ovs", "_id": "566007ec514bc5087f3cfe35", "catalog_description": "Packet Loss Ratio Frame Modification for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:14:20.594501", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_mod_vlan_ovs"}, {"project_name": "vsperf", "run": null, "description": "LTD.Scalability.RFC2544.0PacketLoss for DPDK Ovs", "ci_loop": null, "tags": null, "url": "http://scalability_ovsdpdk", "_id": "56600870514bc5087f3cfe36", "catalog_description": ".Scalability Packet Loss for DPDK Ovs", "creation_date": "2015-12-03 09:16:32.491960", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "scalability_ovsdpdk"}, {"project_name": "vsperf", "run": null, "description": "LTD.Scalability.RFC2544.0PacketLoss for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://scalability_ovs", "_id": "566008b3514bc5087f3cfe37", "catalog_description": "Scalability Packet Loss for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:17:39.501079", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "scalability_ovs"}, {"project_name": "vsperf", "run": null, "description": "PVP LTD.Throughput.RFC2544.PacketLossRatio for DPDK User Ovs", "ci_loop": null, "tags": null, "url": "http://pvp_tput_ovsdpdkuser", "_id": "5660095a514bc5087f3cfe38", "catalog_description": "PVP Packet Loss Ratio for DPDK User Ovs", "creation_date": "2015-12-03 09:20:26.244843", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvp_tput_ovsdpdkuser"}, {"project_name": "vsperf", "run": null, "description": "PVP LTD.Throughput.RFC2544.PacketLossRatio for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://pvp_tput_ovsvirtio", "_id": "566009ae514bc5087f3cfe39", "catalog_description": "PVP Packet Loss Ratio for Vanilla Ovs", "creation_date": "2015-12-03 09:21:50.251212", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvp_tput_ovsvirtio"}, {"project_name": "vsperf", "run": null, "description": "PVP LTD.Throughput.RFC2544.BackToBackFrames for DPDK User Ovs", "ci_loop": null, "tags": null, "url": "http://pvp_b2b_ovsdpdkuser", "_id": "56600a1a514bc5087f3cfe3a", "catalog_description": "PVP Back To Back Frames for DPDK User Ovs", "creation_date": "2015-12-03 09:23:38.269821", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvp_b2b_ovsdpdkuser"}, {"project_name": "vsperf", "run": null, "description": "PVP LTD.Throughput.RFC2544.BackToBackFrames for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://pvp_b2b_ovsvirtio", "_id": "56600a5f514bc5087f3cfe3b", "catalog_description": "PVP Back To Back Frames for Vanilla Ovs", "creation_date": "2015-12-03 09:24:47.990062", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvp_b2b_ovsvirtio"}, {"project_name": "vsperf", "run": null, "description": "PVVP LTD.Throughput.RFC2544.PacketLossRatio for DPDK User Ovs", "ci_loop": null, "tags": null, "url": "http://pvvp_tput_ovsdpdkuser", "_id": "56600ab3514bc5087f3cfe3c", "catalog_description": "PVVP Packet Loss Ratio for DPDK User Ovs", "creation_date": "2015-12-03 09:26:11.657515", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvvp_tput_ovsdpdkuser"}, {"project_name": "vsperf", "run": null, "description": "PVVP LTD.Throughput.RFC2544.PacketLossRatio for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://pvvp_tput_ovsvirtio", "_id": "56600ae9514bc5087f3cfe3d", "catalog_description": "PVVP Packet Loss Ratio for Vanilla Ovs", "creation_date": "2015-12-03 09:27:05.466374", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvvp_tput_ovsvirtio"}, {"project_name": "vsperf", "run": null, "description": "PVVP LTD.Throughput.RFC2544.BackToBackFrames for DPDK User Ovs", "ci_loop": null, "tags": null, "url": "http://pvvp_b2b_ovsdpdkuser", "_id": "56600b2a514bc5087f3cfe3e", "catalog_description": "PVVP Back To Back Frames for DPDK User Ovs", "creation_date": "2015-12-03 09:28:10.150217", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvvp_b2b_ovsdpdkuser"}, {"project_name": "vsperf", "run": null, "description": "PVVP LTD.Throughput.RFC2544.BackToBackFrames for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://pvvp_b2b_ovsvirtio", "_id": "56600b4f514bc5087f3cfe3f", "catalog_description": "PVVP Back To Back Frames for Vanilla Ovs", "creation_date": "2015-12-03 09:28:47.108529", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvvp_b2b_ovsvirtio"}, {"project_name": "vsperf", "run": "", "description": "", "ci_loop": "", "tags": "ovs,dpdk", "url": "", "_id": "591e8a8f41b755000a68c831", "catalog_description": "Phy2Phy Continuous Stream DPDK", "creation_date": "2017-05-19 06:02:55.177254", "domains": "compute", "dependencies": "", "version": ">euphrates", "criteria": "", "tier": "performance", "trust": null, "blocking": "", "name": "cont_ovsdpdk"}, {"project_name": "vsperf", "run": "", "description": "", "ci_loop": "", "tags": "ovs", "url": "", "_id": "5980d1b073ce050010c339ca", "catalog_description": "Phy2Phy Continuous Stream", "creation_date": "2017-08-01 19:08:32.518983", "domains": "compute", "dependencies": "", "version": "euphrates", "criteria": "", "tier": null, "trust": null, "blocking": "", "name": "cont_ovs"}]}
+{"testcases": [{"project_name": "promise", "run": null, "description": "Reservation of a VM for immediate use followed by allocation", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "56583055514bc5087f2ddcea", "catalog_description": null, "creation_date": "2015-11-27 10:28:37.379982", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "VM-reservation-for-immediate-use-followed-by-allocation"}, {"project_name": "promise", "run": null, "description": "Reservation of a VM followed by denial of service to another user and by allocation of reserved VM", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565830a1514bc5087f2ddceb", "catalog_description": null, "creation_date": "2015-11-27 10:29:53.195016", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "VM-reservation-followed-by-denial-of-service-to-another-user-and-by-allocation-of-reserved-VM"}, {"project_name": "promise", "run": null, "description": "Reservation of a VM for future use", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565830cb514bc5087f2ddcec", "catalog_description": null, "creation_date": "2015-11-27 10:30:35.622990", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "VM-reservation-for-future-use"}, {"project_name": "promise", "run": null, "description": "Update of an outstanding reservation, increase capacity", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565830f0514bc5087f2ddced", "catalog_description": null, "creation_date": "2015-11-27 10:31:12.251753", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Update-of-an-outstanding-reservation-increase-capacity"}, {"project_name": "promise", "run": null, "description": "Update of an outstanding reservation, decrease capacity", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "5658310e514bc5087f2ddcee", "catalog_description": null, "creation_date": "2015-11-27 10:31:42.492243", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Update-of-an-outstanding-reservation-decrease-capacity"}, {"project_name": "promise", "run": null, "description": "Notification of reservation change", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "56583126514bc5087f2ddcef", "catalog_description": null, "creation_date": "2015-11-27 10:32:06.281109", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Notification-of-reservation-change"}, {"project_name": "promise", "run": null, "description": "Cancellation of a reservation", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "5658313f514bc5087f2ddcf0", "catalog_description": null, "creation_date": "2015-11-27 10:32:31.819144", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Cancellation-of-a-reservation"}, {"project_name": "promise", "run": null, "description": "Query of a reservation", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "56583162514bc5087f2ddcf1", "catalog_description": null, "creation_date": "2015-11-27 10:33:06.651788", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Query-of-a-reservation"}, {"project_name": "promise", "run": null, "description": "Create a bulk reservation of compute capacity", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "56583180514bc5087f2ddcf2", "catalog_description": null, "creation_date": "2015-11-27 10:33:36.633730", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Create-a-bulk-reservation-of-compute-capacity"}, {"project_name": "promise", "run": null, "description": "Rejection of a reservation due to lack of resources", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565831a1514bc5087f2ddcf3", "catalog_description": null, "creation_date": "2015-11-27 10:34:09.196279", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Rejection-of-a-reservation-due-to-lack-of-resources"}, {"project_name": "promise", "run": null, "description": "Reservation of block storage for future use", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565831c0514bc5087f2ddcf4", "catalog_description": null, "creation_date": "2015-11-27 10:34:40.449825", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Reservation-of-block-storage-for-future-use"}, {"project_name": "promise", "run": null, "description": "Capacity Management, query", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565831db514bc5087f2ddcf5", "catalog_description": null, "creation_date": "2015-11-27 10:35:07.912239", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Capacity-Management-query"}, {"project_name": "promise", "run": null, "description": "Capacity Management, notification", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565831eb514bc5087f2ddcf6", "catalog_description": null, "creation_date": "2015-11-27 10:35:23.003655", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Capacity-Management-notification"}, {"project_name": "promise", "run": {"class": "", "module": ""}, "description": "Global promise suite", "ci_loop": "daily", "tags": "promise,resource reservation, resource management", "url": "https://wiki.opnfv.org/promise", "_id": "56a9d74a851d7e6a0f74930c", "catalog_description": null, "creation_date": "2016-01-28 08:54:34.857669", "domains": "mano", "dependencies": {"installer": "(fuel)|(joid)", "scenario": ""}, "version": ">brahmaputra.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "promise"}]}
+{"testcases": [{"project_name": "sdnvpn", "run": null, "description": "RF tests for ODL VPN service using ODL REST API.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/sdnvpn/main#functest", "_id": "565c7341514bc5087f2ddcfc", "catalog_description": null, "creation_date": "2015-11-30 16:03:13.149596", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "odl_vpn"}, {"project_name": "sdnvpn", "run": null, "description": "RF tests for BGPVPN Neutron API extensions using Tempest framework.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/sdnvpn/main#Main-OpenStackNeutronBGPVPNAPItests", "_id": "565c7348514bc5087f2ddcfd", "catalog_description": null, "creation_date": "2015-11-30 16:03:20.997647", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "functest_tempest"}, {"project_name": "sdnvpn", "run": null, "description": "VPNs provide connectivity across Neutron networks and subnets if configured accordingly.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/sdnvpn/main#Main-TestCase1-VPNprovidesconnectivitybetweensubnets", "_id": "565d5e45514bc5087f2ddd03", "catalog_description": null, "creation_date": "2015-12-01 08:45:57.900254", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "functest_testcase_1"}, {"project_name": "sdnvpn", "run": null, "description": "Using VPNs to isolate tenants so that overlapping IP address ranges can be used.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/sdnvpn/main#Main-TestCase2-tenantseparation", "_id": "565d5e60514bc5087f2ddd04", "catalog_description": null, "creation_date": "2015-12-01 08:46:24.194775", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "functest_testcase_2"}, {"project_name": "sdnvpn", "run": {"class": "SdnVpnTests", "module": "functest.opnfv_tests.features.sdnvpn"}, "description": "This test case is to report the overall result of all the test cases executed in a specific CI run", "ci_loop": "daily", "tags": "bgpvpn", "url": "https://wiki.opnfv.org/display/sdnvpn/main", "_id": "578f743d9377c54b278bc466", "catalog_description": null, "creation_date": "2016-07-20 12:53:17.290365", "domains": "networking", "dependencies": {"installer": "(fuel)|(apex)", "scenario": "bgpvpn"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "bgpvpn"}]}
+{"testcases": [{"project_name": "sfc", "run": {"class": "OpenDaylightSFC", "module": "functest.opnfv_tests.features.odl_sfc"}, "description": "Test case written in Functest.", "ci_loop": "daily", "tags": "sfc,odl", "url": "", "_id": "57d6d3d41d2c6e000ab1d7a8", "catalog_description": null, "creation_date": "2016-09-12 16:12:04.638903", "domains": "networking", "dependencies": {"installer": "(apex)|(fuel)", "scenario": "odl_l2-sfc"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "functest-odl-sfc"}]}
+{"testcases": [{"project_name": "ha", "run": null, "description": "Sample test case for the HA of controller node Openstack service.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc019.html", "_id": "5923c338356833000a1951d1", "catalog_description": "HA_nova-api_service_down", "creation_date": "2017-05-23 05:06:00.729799", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc019"}, {"project_name": "ha", "run": null, "description": "Test case for TC045 :Control node Openstack service down - neutron server.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc045.html", "_id": "5923c339356833000a1951d2", "catalog_description": "HA_neutron-server_service_down", "creation_date": "2017-05-23 05:06:01.464749", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc045"}, {"project_name": "ha", "run": null, "description": "Test case for TC046 :Control node Openstack service down - keystone.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc046.html", "_id": "5923c33a356833000a1951d3", "catalog_description": "HA_keystone_service_down", "creation_date": "2017-05-23 05:06:02.029462", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc046"}, {"project_name": "ha", "run": null, "description": "Test case for TC047 :Control node Openstack service down - glance api.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc047.html", "_id": "5923c33a356833000a1951d4", "catalog_description": "HA_glance-api_service_down", "creation_date": "2017-05-23 05:06:02.675239", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc047"}, {"project_name": "ha", "run": null, "description": "Test case for TC048 :Control node Openstack service down - cinder api.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc048.html", "_id": "5923c33b356833000a1951d5", "catalog_description": "HA_cinder-api_service_down", "creation_date": "2017-05-23 05:06:03.215756", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc048"}, {"project_name": "ha", "run": null, "description": "Test case for TC051 :OpenStack Controller Node CPU Overload High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc051.html", "_id": "5923c33b356833000a1951d6", "catalog_description": "HA_CPU_overload", "creation_date": "2017-05-23 05:06:03.900311", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc051"}, {"project_name": "ha", "run": null, "description": "Test case for TC052 :OpenStack Controller Node Disk I/O Block High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc052.html", "_id": "5923c33c356833000a1951d7", "catalog_description": "HA_disk_I/O_block", "creation_date": "2017-05-23 05:06:04.452133", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc052"}, {"project_name": "ha", "run": null, "description": "Test case for TC053 :Openstack Controller Load Balance Service High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc053.html", "_id": "5923c33d356833000a1951d8", "catalog_description": "HA_load_balancer_service_down", "creation_date": "2017-05-23 05:06:05.031012", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc053"}]}
+{"testcases": [{"project_name": "ipvsix", "run": null, "description": "Test IPv6 connectivity between nodes on the tenant network", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-186", "_id": "565da626514bc5087f2ddd21", "catalog_description": null, "creation_date": "2015-12-01 13:52:38.704783", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC027_IPVSIX: IPv6 connectivity between nodes on the tenant network"}]}
+{"testcases": [{"project_name": "vnfgraph", "run": null, "description": "Verify HTTP is blocked, OpenStack Networking-SFC", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-194", "_id": "565dabcd514bc5087f2ddd23", "catalog_description": null, "creation_date": "2015-12-01 14:16:45.424034", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC032_VNFGRAPH: Block HTTP (OpenStack Networking-SFC)"}, {"project_name": "vnfgraph", "run": null, "description": "Verify HTTP is blocked, ONOS-SFC", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-195", "_id": "565dac1a514bc5087f2ddd24", "catalog_description": null, "creation_date": "2015-12-01 14:18:02.138468", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC034_VNFGRAPH: Block HTTP (ONOS-SFC)"}]}
+{"testcases": [{"project_name": "kvmfornfv", "run": null, "description": "Latency measurements with cyclictest", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-188?jql=project%20%3D%20YARDSTICK", "_id": "565d68f4514bc5087f2ddd0d", "catalog_description": null, "creation_date": "2015-12-01 09:31:32.920841", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC028_KVM: Latency measurements with cyclictest"}, {"project_name": "kvmfornfv", "run": null, "description": "packet forwarding latency with vsperf", "ci_loop": "daily", "tags": null, "url": "https://jira.opnfv.org/browse/KVMFORNFV-58", "_id": "59249e6578a2ad000ae6a15d", "catalog_description": null, "creation_date": "2017-05-23 20:41:09.969403", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "packet forwarding latency with vsperf"}, {"project_name": "kvmfornfv", "run": null, "description": "Fast Live Migration", "ci_loop": "daily", "tags": null, "url": "https://jira.opnfv.org/browse/KVMFORNFV-83", "_id": "5924a0af78a2ad000ae6a15f", "catalog_description": null, "creation_date": "2017-05-23 20:50:55.839838", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Fast Live Migration"}, {"project_name": "kvmfornfv", "run": null, "description": "DPDK interrupt mode", "ci_loop": "daily", "tags": null, "url": "https://jira.opnfv.org/browse/KVMFORNFV-81", "_id": "5924a11578a2ad000ae6a160", "catalog_description": null, "creation_date": "2017-05-23 20:52:37.016807", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "DPDK interrupt mode"}]}
+{"testcases": [{"project_name": "ovsnfv", "run": null, "description": "Yardstick NFVI generic test cases run on OVSNFV environment", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-196", "_id": "565dae87514bc5087f2ddd25", "catalog_description": null, "creation_date": "2015-12-01 14:28:23.946511", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC035_OVSNFV: Yardstick Test suite for OVSNFV"}]}
+{"testcases": [{"project_name": "armband", "run": null, "description": "Yardstick NFVI generic test cases run on ARM-based hardware", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-197", "_id": "565db01d514bc5087f2ddd26", "catalog_description": null, "creation_date": "2015-12-01 14:35:09.108065", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC036_ARMBAND: Yardstick Test suite for ARMBAND"}]}
+{"testcases": [{"project_name": "copper", "run": null, "description": "Set of Tempest test cases to verify the Copper component.", "ci_loop": null, "tags": null, "url": "https://github.com/openstack/congress/tree/master/congress_tempest_tests", "_id": "565d99cb514bc5087f2ddd19", "catalog_description": null, "creation_date": "2015-12-01 12:59:55.741216", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Tempest-copper"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress policy test. Sets up and validates policy creation and execution for: 1) Identifying VMs connected to a DMZ (currently identified through a specifically-named security group); 2) Identifying VMs connected per (1), which are by policy not allowed to be (currently implemented through an image tag intended to identify images that are 'authorized' i.e. tested and secure, to be DMZ-connected); 3) Reactively enforce the dmz placement rule by pausing VMs found to be in violation of the policy.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/dmz.sh", "_id": "577d49739377c54b278bbc92", "catalog_description": null, "creation_date": "2016-07-06 18:09:55.391869", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "dmz"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress policy test. Sets up and validates policy creation and execution for: 1) Detecting that a reserved subnet has been created, by mistake. 'Reserved' in this example means e.g. not intended for use by VMs.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/reserved_subnet.sh", "_id": "577d49819377c54b278bbc93", "catalog_description": null, "creation_date": "2016-07-06 18:10:09.205388", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "reserved_subnet"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress policy test. Sets up and validates policy creation and execution for: 1) Identifying VMs that have STMP (TCP port 25) open for ingress.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/smtp_ingress.sh", "_id": "577d498e9377c54b278bbc94", "catalog_description": null, "creation_date": "2016-07-06 18:10:22.310104", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "smtp_ingress"}, {"project_name": "copper", "run": {"class": "Copper", "module": "functest.opnfv_tests.feature.copper"}, "description": "", "ci_loop": "daily", "tags": "copper,policy management,congress", "url": "https://wiki.opnfv.org/display/copper", "_id": "57adcbce9377c54b278bd67a", "catalog_description": null, "creation_date": "2016-08-12 13:14:54.469155", "domains": "mano", "dependencies": {"installer": "(apex)|(joid)", "scenario": "^((?!fdio|lxd).)*$"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "copper-notification"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress policy test. Sets up and validates policy creation and execution for: 1) Detecting that a VM is connected to two networks of different 'security levels' by mistake. 'Security levels' in this example means that the service provider assigns distinct sensitivity/risk to connections over those networks, e.g. a public network (e.g. DMZ) and an internal/private network (e.g. service provider admin network).", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/network_bridging.sh", "_id": "5846e6341d2c6e000ab2d403", "catalog_description": null, "creation_date": "2016-12-06 16:24:20.749582", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "network_bridging"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress test. Verifies that if one instance of an HA-deployed Congress service fails, the Congress service continues to function during the failure period and after HA is service is restored.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/congress_ha.sh", "_id": "5846e6611d2c6e000ab2d404", "catalog_description": null, "creation_date": "2016-12-06 16:25:05.027643", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "congress_ha"}]}
+{"testcases": [{"project_name": "doctor", "run": {"class": "", "module": ""}, "description": "immediate notification for fault management.", "ci_loop": "daily", "tags": "doctor,fault monitoring", "url": "https://etherpad.opnfv.org/p/doctor_use_case_for_b_release", "_id": "565d9f35514bc5087f2ddd1e", "catalog_description": null, "creation_date": "2015-12-01 13:23:01.972178", "domains": "mano", "dependencies": {"installer": "apex", "scenario": "^((?!fdio).)*$"}, "version": ">brahmaputra.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "doctor-notification"}, {"project_name": "doctor", "run": null, "description": "resource state correction for fault management.", "ci_loop": null, "tags": null, "url": "https://etherpad.opnfv.org/p/doctor_use_case_for_b_release", "_id": "565d9f43514bc5087f2ddd1f", "catalog_description": null, "creation_date": "2015-12-01 13:23:15.994153", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "doctor-mark-down"}]}
+{"testcases": [{"project_name": "qtip", "run": "", "description": "Overall score for system compute performance.", "ci_loop": "", "tags": "", "url": "", "_id": "59530da6bdd637000acb9f02", "catalog_description": "compute performance index", "creation_date": "2017-06-28 02:00:06.539932", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "compute"}]}
+{"testcases": [{"project_name": "ovno", "run": null, "description": "This test suite will check the basic operation such as network creation, noetwork policy, connectivity between VMs on an IPv4 network", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec2cc514bc5087f3cfe27", "catalog_description": null, "creation_date": "2015-12-02 10:07:08.008647", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail"}, {"project_name": "ovno", "run": null, "description": "This test suite will check the support of IPv6 for basic operations in opencontrail.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec2fb514bc5087f3cfe28", "catalog_description": null, "creation_date": "2015-12-02 10:07:55.729717", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail-ipvsix"}, {"project_name": "ovno", "run": null, "description": "This test suite will check the support of Network policy features in opencontrail.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec31a514bc5087f3cfe29", "catalog_description": null, "creation_date": "2015-12-02 10:08:26.150838", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail-policy"}, {"project_name": "ovno", "run": null, "description": "This test suite will check the creation of service template, service instance, network policy related to service instance or policy using opencontrail.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec351514bc5087f3cfe2a", "catalog_description": null, "creation_date": "2015-12-02 10:09:21.915762", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail-service"}, {"project_name": "ovno", "run": null, "description": "This test suite requires an gateway router (probably not possible in all labs in first step). Tests deal with creation of external router, floating IP address pool creation, floating IP allocation, connectivity check with external IP addresses.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec3b2514bc5087f3cfe2b", "catalog_description": null, "creation_date": "2015-12-02 10:10:58.745032", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail-ext"}]}
+{"testcases": [{"project_name": "bottlenecks", "run": null, "description": "Stress tess on dataplane traffic using netperf.", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/BOTTLENECK-94", "_id": "58cf436a32c829000a11507e", "catalog_description": "Bandwidth Baseline", "creation_date": "2017-03-20 02:50:18.066854", "domains": null, "dependencies": null, "version": ">=danube.1.0", "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "posca_factor_system_bandwidth"}, {"project_name": "bottlenecks", "run": null, "description": "Stress tess on performance life-cycle using ping.", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/BOTTLENECK-136", "_id": "58cf486332c829000a11508c", "catalog_description": "Ping Life-cycle Event", "creation_date": "2017-03-20 03:11:31.347177", "domains": null, "dependencies": null, "version": ">=danube.1.0", "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "posca_factor_ping"}]}
+{"testcases": [{"project_name": "policy-test", "run": null, "description": "groupe based policy testing on ODL", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/policytest", "_id": "5669a939514bc5068a345d30", "catalog_description": null, "creation_date": "2015-12-10 16:32:57.643318", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "odl-gbp"}]}
+{"testcases": [{"project_name": "moon", "run": {"class": "", "module": ""}, "description": "This case deals with moon authentication and moon authorization test suites.", "ci_loop": "daily", "tags": "moon,security,keystone,odl,multisite", "url": "To be completed", "_id": "571740a19377c5332042a5e2", "catalog_description": "Moon security module", "creation_date": "2016-04-20 08:41:05.453036", "domains": "security", "dependencies": {"installer": "compass", "scenario": "(odl)*(moon)"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "moon"}]}
+{"testcases": [{"project_name": "storperf", "run": {"class": "", "module": ""}, "description": "Following SNIA guidelines, this test consists of creating as many VMs and Cinder volumes as there are Cinder storage nodes, and then running a series of workloads against that environment.", "ci_loop": "daily", "tags": "openstack,cinder,storage", "url": "https://wiki.opnfv.org/display/storperf/SNIA+Targets", "_id": "588bb3d58cf551000c781d6f", "catalog_description": "Cinder volume testing (SNIA)", "creation_date": "2017-01-27 20:55:49.593736", "domains": "storage", "dependencies": {"installer": "", "scenario": ""}, "version": ">danube.1.0", "criteria": "", "tier": "performance", "trust": null, "blocking": true, "name": "snia_steady_state"}]}
+{"testcases": [{"project_name": "domino", "run": {"class": "Domino", "module": "functest.opnfv_tests.features.domino"}, "description": null, "ci_loop": "daily", "tags": "domino,policy", "url": null, "_id": "578ec6449377c54b278bc3f0", "catalog_description": null, "creation_date": "2016-07-20 00:31:00.307041", "domains": "mano", "dependencies": {"installer": "joid", "scenario": ""}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "domino-multinode"}, {"project_name": "domino", "run": null, "description": null, "ci_loop": null, "tags": null, "url": null, "_id": "578ec7779377c54b278bc3f1", "catalog_description": null, "creation_date": "2016-07-20 00:36:07.772175", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "domino-singlenode"}]}
+{"testcases": [{"project_name": "fastdatastacks", "run": {"args:": {"suites": "/home/opnfv/repos/fds/testing/robot"}, "class": "ODLTests", "module": "functest.opnfv_tests.sdn.odl.odl"}, "description": "Security groups test for http traffic in a fast data stack", "ci_loop": "daily", "tags": "networking, fdio, gbp, odl, openstack, vpp, honeycomb, apex ", "url": "http://artifacts.opnfv.org/fds/colorado/2.0/docs/index.html", "_id": "58c15e568fd6ac000aa241b1", "catalog_description": null, "creation_date": "2017-03-09 13:53:26.886856", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl.*fdio"}, "version": ">danube", "criteria": "", "tier": "smoke", "trust": "silver", "blocking": false, "name": "fds"}, {"project_name": "fastdatastacks", "run": null, "description": "Verify that networking resources are created and deleted correctly across the whole stack - ODL GBP, ODL VBD, ODL LISP, Honeycomb and VPP", "ci_loop": "daily", "tags": "networking, fdio, gbp, vbd, odl, lisp, openstack, vpp, honeycomb, apex", "url": null, "_id": "591eeba9e93345000afa3841", "catalog_description": null, "creation_date": "2017-05-19 12:57:13.983864", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl-fdio"}, "version": ">euphrates", "criteria": null, "tier": "smoke", "trust": null, "blocking": false, "name": "fds_stack_integrity"}, {"project_name": "fastdatastacks", "run": null, "description": "Distributed Virtual Routing (DVR) specific testcases focused on traffic inspection", "ci_loop": "daily", "tags": "networking, fdio, gbp, odl, lisp, openstack, vpp, honeycomb, apex", "url": null, "_id": "591eed2ee93345000afa3843", "catalog_description": null, "creation_date": "2017-05-19 13:03:42.350775", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl-fdio-dvr"}, "version": ">euphrates", "criteria": null, "tier": "features", "trust": null, "blocking": false, "name": "fds_dvr"}, {"project_name": "fastdatastacks", "run": null, "description": "ODL split-rejoin test. In case any of the ODL controllers becomes unreachable the operability of the whole stack is not affected.", "ci_loop": "daily", "tags": "networking, fdio, gbp, odl, lisp, openstack, vpp, honeycomb, apex", "url": null, "_id": "591eeed2e93345000afa3849", "catalog_description": null, "creation_date": "2017-05-19 13:10:42.437167", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl-fdio.*-ha"}, "version": ">euphrates", "criteria": null, "tier": "sdn_suites", "trust": null, "blocking": false, "name": "fds_odl_split_rejoin"}, {"project_name": "fastdatastacks", "run": null, "description": "ODL cluster stress test. Create a very large amount of networks and ports (~20 000) and verify that all of those were created properly.", "ci_loop": null, "tags": "networking, fdio, gbp, odl, lisp, openstack, vpp, honeycomb, apex", "url": null, "_id": "591ef15ce93345000afa384e", "catalog_description": null, "creation_date": "2017-05-19 13:21:32.020394", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl-fdio.*-ha"}, "version": ">euphrates", "criteria": null, "tier": "sdn_suites", "trust": null, "blocking": false, "name": "fds_odl_stress"}]}
+{"testcases": [{"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using Cloudify as VNFM. Based upon the vIMS Functest test, this test uses the same Clearwater IMS blueprint but simplifies it to deploy the Cloudify HelloWorld example, a simple web server. The test will include basic verification that the web server is deployed and operational.", "ci_loop": null, "tags": null, "url": "https://github.com/blsaws/vHello", "_id": "577d4d339377c54b278bbc95", "catalog_description": null, "creation_date": "2016-07-06 18:25:55.058124", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello"}, {"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using Cloudify as VNFM. A single-node simple python web server, connected to two internal networks (private and admin), and accessible via a floating IP. Based upon the OpenStack Tacker project's 'tosca-vnfd-hello-world' blueprint, modified/extended for testing of Cloudify-supported features as of OpenStack Newton.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/models/plain/tests/vHello_Cloudify.sh\ufeff", "_id": "5846edbc1d2c6e000ab2d407", "catalog_description": null, "creation_date": "2016-12-06 16:56:28.523336", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello_Cloudify"}, {"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using Tacker as VNFM. A single-node simple python web server, connected to two internal networks (private and admin), and accessible via a floating IP. Based upon the OpenStack Tacker project's 'tosca-vnfd-hello-world' blueprint, as modified/extended for testing of Tacker-supported features as of OpenStack Newton.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/models/plain/tests/vHello_Tacker.sh", "_id": "5846ee7a1d2c6e000ab2d408", "catalog_description": null, "creation_date": "2016-12-06 16:59:38.631893", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello_Tacker"}, {"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using OpenBaton as VNFM. A single-node simple python web server, connected to two internal networks (private and admin), and accessible via a floating IP. Based upon the OpenStack Tacker project's 'tosca-vnfd-hello-world' blueprint, as modified/extended for testing of OpenBaton-supported features as of OpenStack Newton.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/models/plain/tests/vHello_OpenBaton.sh\ufeff", "_id": "5846eeed1d2c6e000ab2d409", "catalog_description": null, "creation_date": "2016-12-06 17:01:33.215412", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello_OpenBaton"}, {"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using OpenBaton as VNFM. A single-node simple python web server, connected to two internal networks (private and admin), and accessible via a floating IP. Based upon the OpenStack Tacker project's 'tosca-vnfd-hello-world' blueprint, as modified/extended for testing of OpenBaton-supported features as of OpenStack Newton.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/models/plain/tests/vHello_JuJu.sh\ufeff", "_id": "5846ef011d2c6e000ab2d40a", "catalog_description": null, "creation_date": "2016-12-06 17:01:53.074430", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello_JuJu"}]}
+{"testcases": [{"project_name": "multisite", "run": {"class": "", "module": ""}, "description": "", "ci_loop": "daily", "tags": "multisite", "url": "", "_id": "57add11d9377c54b278bd67c", "catalog_description": null, "creation_date": "2016-08-12 13:37:33.326414", "domains": "vim", "dependencies": {"installer": "(fuel)|(compass)", "scenario": "multisite"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "multisite"}]}
+{"testcases": [{"project_name": "parser", "run": {"class": "", "module": ""}, "description": "OPNFV parser Project basic test case", "ci_loop": "daily", "tags": "parser,policy", "url": "", "_id": "57b2cd509377c54b278bdb91", "catalog_description": null, "creation_date": "2016-08-16 08:22:40.579465", "domains": "mano", "dependencies": {"installer": "fuel", "scenario": "^((?!bgpvpn|noha).)*$"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "parser-basics"}]}
+{"testcases": [{"project_name": "netready", "run": null, "description": "This test case will exercise a new API exposed by a L3VPN Proton to configure a L3VPN network service. The API is addressed through a new protonclient.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/netready/Test+Strategy", "_id": "582ef66d1d2c6e000ab2b227", "catalog_description": null, "creation_date": "2016-11-18 12:39:09.904884", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "gluon_vping"}, {"project_name": "netready", "run": null, "description": "This test case exercises the model-driven API creation capabilities of Gluon.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/netready/Test+Strategy", "_id": "5922ca9c356833000a1951b2", "catalog_description": null, "creation_date": "2017-05-22 11:25:16.951468", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "gluon_api_generation"}]}
+{"testcases": [{"project_name": "securityscanning", "run": null, "description": "OpenSCAP security scan of OPNFV system", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/security/Security+Scanning", "_id": "582f29f51d2c6e000ab2b27e", "catalog_description": null, "creation_date": "2016-11-18 16:19:01.360172", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "security_scan"}]}
+{"testcases": [{"project_name": "opera", "run": null, "description": "vIMS is used as initial use case, based on which test cases will be created and aligned with Open-O first release for OPNFV D release.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/PROJ/Opera+Project", "_id": "584888a41d2c6e000ab2d619", "catalog_description": null, "creation_date": "2016-12-07 22:09:40.481402", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opera-vims"}]}
+{"testcases": []}
+null
+{"testcases": []}
+{"testcases": [{"project_name": "yardstick", "run": null, "description": "This is for ci to store test suites status", "ci_loop": "daily", "tags": null, "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/scenario_status.html", "_id": "592292b7356833000a195188", "catalog_description": "Not applicable (used for reporting)", "creation_date": "2017-05-22 07:26:47.523411", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "scenario_status"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC001 config file; Measure network throughput using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run twice. First twice with the least amount of ports and further on.\n", "ci_loop": "daily", "tags": "pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc001.html", "_id": "592292b8356833000a195189", "catalog_description": "network: throughput (pktgen)", "creation_date": "2017-05-22 07:26:48.714560", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc001"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC002 config file; measure network latency using ping;\n", "ci_loop": "daily", "tags": "ping", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc002.html", "_id": "592292b9356833000a19518a", "catalog_description": "network: latency (ping)", "creation_date": "2017-05-22 07:26:49.820133", "domains": "network", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc002"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC005 config file; Measure Storage IOPS, throughput and latency using fio.\n", "ci_loop": "daily", "tags": "fio", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc005.html", "_id": "592292ba356833000a19518b", "catalog_description": "storage: disk IOPS, latency & throughput (fio)", "creation_date": "2017-05-22 07:26:50.927211", "domains": "storage", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc005"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC006 config file.\n", "ci_loop": "daily", "tags": "vtc_throughput", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc006.html", "_id": "592292bc356833000a19518c", "catalog_description": "vtc: data plane throughput", "creation_date": "2017-05-22 07:26:52.058010", "domains": "vtc", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc006"}, {"project_name": "yardstick", "run": null, "description": "Sample benchmark task config file; vTC.\n", "ci_loop": "daily", "tags": "vtc_throughput_noisy", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc007.html", "_id": "592292bd356833000a19518d", "catalog_description": "vtc: data plane throughput(Noisy neighbours)", "creation_date": "2017-05-22 07:26:53.143162", "domains": "vtc", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc007"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC008 config file; Measure network throughput and packet loss using Pktgen; Different amount of flows, from 2 up to 1001000, in combination with different packet sizes are run in each test. Each combination of packet size and flow amount is run 10 times. First 10 times with the smallest packet size, starting with the least amount of ports/flows, then next amount of ports with same packet size, and so on. The test sequence continues with the next packet size, with same ports/flows sequence as before.\n", "ci_loop": "daily", "tags": "pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc008.html", "_id": "592292be356833000a19518e", "catalog_description": "network: throughput and packet loss extended(pktgen)", "creation_date": "2017-05-22 07:26:54.255469", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc008"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC009 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 10 times each. First 10 times with the least amount of ports, then 10 times with the next amount of ports, and so on until all packet sizes have been run with;\n", "ci_loop": "daily", "tags": "pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc009.html", "_id": "592292bf356833000a19518f", "catalog_description": "network: throughput and packet loss (pktgen)", "creation_date": "2017-05-22 07:26:55.406119", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc009"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC010 config file; measure memory read latency using lmbench.\n", "ci_loop": "daily", "tags": "lmbench", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc010.html", "_id": "592292c0356833000a195190", "catalog_description": "compute: memory read latency (lmbench)", "creation_date": "2017-05-22 07:26:56.562861", "domains": "compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc010"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC011 config file; Measure packet delay variation (jitter) using iperf3.\n", "ci_loop": "daily", "tags": "iperf3", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc011.html", "_id": "592292c1356833000a195191", "catalog_description": "network: performance latency (iperf)", "creation_date": "2017-05-22 07:26:57.673084", "domains": "network", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc011"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC012 config file; Measure memory read and write bandwidth using lmbench.\n", "ci_loop": "daily", "tags": "lmbench", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc012.html", "_id": "592292c2356833000a195192", "catalog_description": "compute: memory bandwith (lmbench)", "creation_date": "2017-05-22 07:26:58.871685", "domains": "compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc012"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC014 config file; Measure Processing speed using unixbench.\n", "ci_loop": "daily", "tags": "unixbench", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc014.html", "_id": "592292c4356833000a195193", "catalog_description": "compute: processing speed (unixbench)", "creation_date": "2017-05-22 07:27:00.007018", "domains": "compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc014"}, {"project_name": "yardstick", "run": null, "description": "Sample test case for the HA of controller node Openstack service.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc019.html", "_id": "592292c5356833000a195194", "catalog_description": "HA: nova-api service down", "creation_date": "2017-05-22 07:27:01.147332", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc019"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC020 config file.\n", "ci_loop": "daily", "tags": "vtc_instantiation_validation", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc020.html", "_id": "592292c6356833000a195195", "catalog_description": "vtc instantiation", "creation_date": "2017-05-22 07:27:02.271192", "domains": "vtc", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc020"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC021 config file.\n", "ci_loop": "daily", "tags": "vtc_instantiation_validation_noisy", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc021.html", "_id": "592292c7356833000a195196", "catalog_description": "vtc instantiation (Noisy neighbours)", "creation_date": "2017-05-22 07:27:03.420740", "domains": "vtc", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc021"}, {"project_name": "yardstick", "run": null, "description": "Sample test case for the HA of OpenStack Controll Node abnormally shutdown.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc025.html", "_id": "592292c8356833000a195197", "catalog_description": "HA: controller node shutdown", "creation_date": "2017-05-22 07:27:04.577080", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc025"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC027 config file; Measure IPV6 network latency using ping6.\n", "ci_loop": "daily", "tags": "ping6", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc027.html", "_id": "592292c9356833000a195198", "catalog_description": "network: IPv6 latency", "creation_date": "2017-05-22 07:27:05.736814", "domains": "ipv6", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc027"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC037 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 2 times each. First 2 times with the least amount of ports, then 2 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements system load and network latency are recorded/measured using ping and mpstat, respectively;\n", "ci_loop": "daily", "tags": "cpuload,ping,oktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc037.html", "_id": "592292ca356833000a195199", "catalog_description": "network: throughput and packet loss extended (cpu&ping load)", "creation_date": "2017-05-22 07:27:06.875236", "domains": "network,compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc037"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC038 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 10 times each. First 10 times with the least amount of ports, then 10 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements system load and network latency are recorded/measured using ping and mpstat, respectively;\n", "ci_loop": "daily", "tags": "cpuload,ping,pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc038.html", "_id": "592292cb356833000a19519a", "catalog_description": "network: throughput packet loss (cpu&ping load)", "creation_date": "2017-05-22 07:27:07.988262", "domains": "network,compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc038"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC040 config file; Running Parser Yang-to-Tosca module as a tool, validating output against expected outcome.\n", "ci_loop": "daily", "tags": "parser", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc040.html", "_id": "592292cd356833000a19519b", "catalog_description": "Parser Yang Tosca", "creation_date": "2017-05-22 07:27:09.104621", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc040"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC042 config file; Measure network latency using testpmd and pktgen-dpdk.\n", "ci_loop": "daily", "tags": "pktgenDPDKLatency", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc042.html", "_id": "592292ce356833000a19519c", "catalog_description": "network: throughput latency (dpdk-pktgen)", "creation_date": "2017-05-22 07:27:10.207188", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc042"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC043 config file; Measure latency between NFVI nodes using ping.\n", "ci_loop": "daily", "tags": "ping", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc043.html", "_id": "592292cf356833000a19519d", "catalog_description": "network: node throughput latency(ping)", "creation_date": "2017-05-22 07:27:11.286317", "domains": "network", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc043"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC045 :Control node Openstack service down - neutron server.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc045.html", "_id": "592292d0356833000a19519e", "catalog_description": "HA: neutron-server service down", "creation_date": "2017-05-22 07:27:12.399327", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc045"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC046 :Control node Openstack service down - keystone.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc046.html", "_id": "592292d1356833000a19519f", "catalog_description": "HA: keystone service down", "creation_date": "2017-05-22 07:27:13.502066", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc046"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC047 :Control node Openstack service down - glance api.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc047.html", "_id": "592292d2356833000a1951a0", "catalog_description": "HA: glance-api service down", "creation_date": "2017-05-22 07:27:14.610834", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc047"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC048 :Control node Openstack service down - cinder api.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc048.html", "_id": "592292d3356833000a1951a1", "catalog_description": "HA: cinder-api service down", "creation_date": "2017-05-22 07:27:15.751416", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc048"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC049 :Control node Openstack service down - swift proxy.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc049.html", "_id": "592292d4356833000a1951a2", "catalog_description": "HA: swift proxy service down", "creation_date": "2017-05-22 07:27:16.859383", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc049"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC050 :OpenStack Controller Node Network High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc050.html", "_id": "592292d6356833000a1951a3", "catalog_description": "HA: network interface down", "creation_date": "2017-05-22 07:27:18.014215", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc050"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC051 :OpenStack Controller Node CPU Overload High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc051.html", "_id": "592292d7356833000a1951a4", "catalog_description": "HA: CPU overload", "creation_date": "2017-05-22 07:27:19.124525", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc051"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC052 :OpenStack Controller Node Disk I/O Block High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc052.html", "_id": "592292d8356833000a1951a5", "catalog_description": "HA: disk I/O block", "creation_date": "2017-05-22 07:27:20.288709", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc052"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC053 :Openstack Controller Load Balance Service High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc053.html", "_id": "592292de356833000a1951a6", "catalog_description": "HA: load balancer service down", "creation_date": "2017-05-22 07:27:26.504630", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc053"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC054 :OpenStack VIP Master Node abnormally shutdown High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc054.html", "_id": "592292df356833000a1951a7", "catalog_description": "HA: virtual IP node shutdown", "creation_date": "2017-05-22 07:27:27.763354", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc054"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC055 config file; Collect hardware specification from /proc/cpuinfo /proc/meminfo; compute capacity and scale. the results have, number of CPUs, number of physical cores in a single CPU; number of logical cores, total memory size; cache size per CPU, total cache size; HT (Hyper-Thread) support status, 1 for open, 0 for close.\n", "ci_loop": "daily", "tags": "computeCapacity", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc055.html", "_id": "592292e1356833000a1951a8", "catalog_description": "compute: cpu & memory_specification", "creation_date": "2017-05-22 07:27:29.032130", "domains": "compute", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc055"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC063 config file; Measure disk size, block size and disk utilization using fdisk and iostat.\n", "ci_loop": "daily", "tags": "storageCapacity", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc063.html", "_id": "592292e2356833000a1951a9", "catalog_description": "storage: disk size&utilization", "creation_date": "2017-05-22 07:27:30.302236", "domains": "storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc063"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC069 config file; Measure memory read and write bandwidth using ramspeed.\n", "ci_loop": "daily", "tags": "ramspeed", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc069.html", "_id": "592292e3356833000a1951aa", "catalog_description": "compute: memory bandwith(ramspeed)", "creation_date": "2017-05-22 07:27:31.542189", "domains": "compute", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc069"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC070 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 2 times each. First 2 times with the least amount of ports, then 2 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements memory usage statistics and network latency are recorded/measured using free and ping, respectively;\n", "ci_loop": "daily", "tags": "memoryload,ping,pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc070.html", "_id": "592292e4356833000a1951ab", "catalog_description": "network: throughput packet loss (memory&ping load)", "creation_date": "2017-05-22 07:27:32.747354", "domains": "network,storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc070"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC071 config file; Measure cache hit/miss ratio and usage, network throughput and latency; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 2 times each. First 2 times with the least amount of ports, then 2 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements cache hit/miss ration, cache usage statistics and network latency are recorded/measured using cachestat and ping, respectively;\n", "ci_loop": "daily", "tags": "cachestat,ping,pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc071.html", "_id": "592292e5356833000a1951ac", "catalog_description": "compute: cache hit&network throughput latency", "creation_date": "2017-05-22 07:27:33.957092", "domains": "network,storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc071"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC072 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 2 times each. First 2 times with the least amount of ports, then 2 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements network usage statistics and network latency are recorded/measured using sar and ping, respectively;\n", "ci_loop": "daily", "tags": "netutilization,ping,pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc072.html", "_id": "592292e7356833000a1951ad", "catalog_description": "network: throughput(netutilization&pktgen load)", "creation_date": "2017-05-22 07:27:35.175762", "domains": "network,storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc072"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC073 config file; measure network latency and throughput using netperf; There are two sample scenarios: bulk test and request/response test; In bulk test, UDP_STREAM and TCP_STREAM can be used; send_msg_size and recv_msg_size are options of bulk test; In req/rsp test, TCP_RR TCP_CRR UDP_RR can be used; req_rsp_size is option of req/rsp test;\n", "ci_loop": "daily", "tags": "netperfnode", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc073.html", "_id": "592292e8356833000a1951ae", "catalog_description": "network: node throughput(netperf)", "creation_date": "2017-05-22 07:27:36.466462", "domains": "network", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc073"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC074 StorPerf benchmark task config file; StorPerf is a tool to measure block and object storage performance in an NFVI.\n", "ci_loop": "daily", "tags": "storperf", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc074.html", "_id": "592292e9356833000a1951af", "catalog_description": "storage: storperf integration", "creation_date": "2017-05-22 07:27:37.665283", "domains": "storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc074"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC075 config file; Measure network capacity and scale. Measure number of connections, number of frames received;\n", "ci_loop": "daily", "tags": "networkCapacity", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc075.html", "_id": "592292ea356833000a1951b0", "catalog_description": "network: capacity connections number", "creation_date": "2017-05-22 07:27:38.857919", "domains": "network", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc075"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC076 config file; Monitor network metrics provided by the kernel in a host and calculate IP datagram error rate, ICMP message error rate, TCP segment error rate and UDP datagram error rate.", "ci_loop": "daily", "tags": "ping,nstat", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc076.html", "_id": "592292ec356833000a1951b1", "catalog_description": "network: metrics (ping nstat)", "creation_date": "2017-05-22 07:27:40.163423", "domains": "network", "dependencies": null, "version": ">danube.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc076"}]}
+{"testcases": [{"project_name": "barometer", "run": "", "description": "barometercollectd testcase", "ci_loop": "", "tags": "", "url": "", "_id": "58a2e30e584d06000b0157d3", "catalog_description": null, "creation_date": "2017-02-14 10:59:26.396742", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "barometercollectd"}]}
+{"testcases": [{"project_name": "OpenRetriever", "run": null, "description": "The test cases about Container is integrated into NFV", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/OpenRetriever/Test+Strategy", "_id": "5923e51578a2ad000ae6a140", "catalog_description": null, "creation_date": "2017-05-23 07:30:29.840213", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OpenRetriever Test Cases"}, {"project_name": "OpenRetriever", "run": "", "description": "", "ci_loop": "", "tags": "kubernetes,container", "url": "https://wiki.opnfv.org/display/OpenRetriever/Test+Strategy", "_id": "5923fb0b78a2ad000ae6a143", "catalog_description": "", "creation_date": "2017-05-23 09:04:11.498178", "domains": "", "dependencies": "", "version": ">danube", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "e2e"}]}
+{"testcases": [{"project_name": "ovn4nfv", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "592887af78a2ad000ae6a65f", "catalog_description": "", "creation_date": "2017-05-26 19:53:19.223720", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "connection_check"}, {"project_name": "ovn4nfv", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "592887ce78a2ad000ae6a660", "catalog_description": "", "creation_date": "2017-05-26 19:53:50.130441", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "api_check"}, {"project_name": "ovn4nfv", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "592887e578a2ad000ae6a661", "catalog_description": "", "creation_date": "2017-05-26 19:54:13.939149", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "vping_ssh"}, {"project_name": "ovn4nfv", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "592887ef78a2ad000ae6a662", "catalog_description": "", "creation_date": "2017-05-26 19:54:23.764427", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "vping_userdata"}]}
+{"testcases": [{"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928a9bb78a2ad000ae6a6c8", "catalog_description": "", "creation_date": "2017-05-26 22:18:35.709812", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "connection_check"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928aa4178a2ad000ae6a6ca", "catalog_description": "", "creation_date": "2017-05-26 22:20:49.183239", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "api_check"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928aa6578a2ad000ae6a6cb", "catalog_description": "", "creation_date": "2017-05-26 22:21:25.440080", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "snaps_health_check"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928aad478a2ad000ae6a6cc", "catalog_description": "", "creation_date": "2017-05-26 22:23:16.642815", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "vping_ssh"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ab1878a2ad000ae6a6ce", "catalog_description": "", "creation_date": "2017-05-26 22:24:24.418194", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "vping_userdata"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ab7a78a2ad000ae6a6d1", "catalog_description": "", "creation_date": "2017-05-26 22:26:02.619234", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "tempest_smoke_serial"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928abc878a2ad000ae6a6d2", "catalog_description": "", "creation_date": "2017-05-26 22:27:20.130387", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "rally_sanity"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ac0878a2ad000ae6a6d3", "catalog_description": "", "creation_date": "2017-05-26 22:28:24.564141", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "refstack_defcore"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ac2c78a2ad000ae6a6d4", "catalog_description": "", "creation_date": "2017-05-26 22:29:00.953556", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "onos"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ac5d78a2ad000ae6a6d5", "catalog_description": "", "creation_date": "2017-05-26 22:29:49.322376", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "snaps_smoke"}]}
+{"testcases": [{"project_name": "vina", "run": null, "description": "Verify that credentials to access OpenStack environment are valid", "ci_loop": "daily", "tags": "networking, vina, openstack, fuel", "url": null, "_id": "592be78d78a2ad000ae6aad8", "catalog_description": null, "creation_date": "2017-05-29 09:19:09.076114", "domains": "networking", "dependencies": {"installer": "fuel", "scenario": "vina-setup"}, "version": ">euphrates", "criteria": null, "tier": "smoke", "trust": null, "blocking": false, "name": "openstack_integrity"}]}
diff --git a/dovetail/utils/local_db/get_db_schema.py b/dovetail/utils/local_db/get_db_schema.py
new file mode 100644
index 00000000..1106355c
--- /dev/null
+++ b/dovetail/utils/local_db/get_db_schema.py
@@ -0,0 +1,61 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import requests
+import json
+
+
+source_url = 'http://116.66.187.136:9999/api/v1'
+
+
+def get(url):
+ try:
+ ret = requests.get(url)
+ return ret.json()
+ except:
+ return None
+
+
+def pod():
+ source = '{}/pods'.format(source_url)
+ try:
+ pods = get(source)['pods']
+ with open("pods.json", "w") as f:
+ f.write(json.dumps(pods, indent=4))
+ except:
+ return
+
+
+def project():
+ source = '{}/projects'.format(source_url)
+
+ try:
+ projects = get(source)['projects']
+ with open("projects.json", "w") as f:
+ f.write(json.dumps(projects, indent=4))
+ except:
+ return
+
+ for p in projects:
+ source = '{}/projects/{}/cases'.format(source_url, p['name'])
+ print(p['name'])
+ print(source)
+ try:
+ cases = get(source)
+ with open("cases.json", "a+") as f:
+ f.write(json.dumps(cases))
+ f.write('\n')
+ f.close()
+ except:
+ print("useless data")
+
+
+if __name__ == '__main__':
+ pod()
+ project()
diff --git a/dovetail/utils/local_db/init_dovetail.py b/dovetail/utils/local_db/init_dovetail.py
new file mode 100644
index 00000000..6d066cbb
--- /dev/null
+++ b/dovetail/utils/local_db/init_dovetail.py
@@ -0,0 +1,59 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+import requests
+import datetime
+import json
+import yaml
+import sys
+
+base_url = sys.argv[1]
+headers = {'Content-Type': 'application/json'}
+
+
+def create_project():
+
+ name = 'dovetail'
+ s = '2015-10-14 06:56:09'
+ time = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
+
+ data = {
+ 'name': name,
+ 'creation_date': str(time),
+ 'description': ''
+ }
+
+ url = '{}/projects'.format(base_url)
+ requests.post(url, data=json.dumps(data), headers=headers)
+
+
+def dovetail():
+ with open('../../compliance/proposed_tests.yml') as f:
+ data = yaml.safe_load(f)['proposed_tests']['testcases_list']
+
+ url = '{}/projects/dovetail/cases'.format(base_url)
+ for case in data:
+ c = {
+ 'ci_loop': 'daily',
+ 'description': 'dovetail',
+ 'name': case,
+ 'project_name': 'dovetail',
+ 'trust': 'gold',
+ 'url': '',
+ 'version': 'master',
+ 'domains': 'master',
+ 'tags': 'dovetail'
+ }
+ requests.post(url, data=json.dumps(c), headers=headers)
+
+
+if __name__ == '__main__':
+ create_project()
+ dovetail()
diff --git a/dovetail/utils/local_db/launch_db.sh b/dovetail/utils/local_db/launch_db.sh
index 722dc227..956ccfe8 100755
--- a/dovetail/utils/local_db/launch_db.sh
+++ b/dovetail/utils/local_db/launch_db.sh
@@ -8,20 +8,23 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-if [ "$#" -ne 1 ]; then
+if [ "$#" -ne 2 ]; then
echo "Error: missing parameter! try again like this:"
echo ""
- echo "./launch_db.sh 192.168.115.2"
+ echo "./launch_db.sh 192.168.115.2 http://116.66.187.136:9999"
echo ""
echo "parameters:"
- echo " db_host_ip: your localhost ip address "
+ echo " host_ip: your localhost ip address "
+ echo " base_url: your public url for website"
echo ""
exit 1
fi
export mongodb_port=${mongodb_port:-"27017"}
-export testapi_port=${testapi_port:-"8000"}
+export testapi_port=${testapi_port:-"8010"}
export db_host_ip=${db_host_ip:-"$1"}
+export base_url=${base_url:-"$2"}
+
set -e
@@ -47,7 +50,7 @@ fi
# run mongodb container
echo "Step3: run ${container_name} container."
-cmd="sudo docker run -itd -p ${mongodb_port}:27017 --name ${container_name} ${mongodb_img}"
+cmd="sudo docker run -itd -p ${mongodb_port}:27017 -v /home/testapi/mongo:/data/db --name ${container_name} ${mongodb_img}"
echo $cmd
${cmd}
@@ -59,8 +62,7 @@ echo "Create the testapi service."
echo "=========================="
set +e
-# pull image opnfv/testapi:cvp.0.3.0
-testapi_img="opnfv/testapi:cvp.0.3.0"
+testapi_img="opnfv/testapi:cvp.0.5.0"
echo "Step1: pull the image $testapi_img."
sudo docker pull $testapi_img
set -e
@@ -76,20 +78,46 @@ fi
# run testapi container
echo "Step3: run ${container_name} container."
-cmd="sudo docker run -itd -p ${testapi_port}:8000 --name ${container_name} -e mongodb_url=mongodb://${db_host_ip}:${mongodb_port}/ ${testapi_img}"
+cmd="sudo docker run -itd -p 8010:8010 --name ${container_name} -v /home/testapi/logs:/home/testapi/logs -e mongodb_url=mongodb://${db_host_ip}:${mongodb_port}/ -e base_url=${base_url} ${testapi_img}"
echo $cmd
${cmd}
echo "Wait for testapi to work..."
sleep 10
+set +e
+nginx_img="opnfv/dovetail:nginx.cvp.0.5.0"
+echo "Step1: pull the image $nginx_img."
+sudo docker pull $nginx_img
+set -e
+
+container_name='nginx_cvp'
+
+echo "Step2: remove the exist container with the same name '$container_name' if exists."
+sudo docker ps -a -f "name=${container_name}"
+
+if [[ ! -z $(sudo docker ps -aq -f "name=${container_name}") ]]; then
+ sudo docker ps -aq -f "name=${container_name}" | xargs sudo docker rm -f
+fi
+
+# run nginx container
+echo "Step3: run ${container_name} container."
+cmd="sudo docker run -itd -p 8000:8000 -v /home/testapi/logs:/home/testapi/logs --name ${container_name} -e testapi_url=${db_host_ip}:8010 ${nginx_img}"
+echo $cmd
+${cmd}
+
echo "================================="
echo "Upload default project info to DB"
echo "================================="
echo "Init DB info..."
-cmd="python ./init_db.py ${db_host_ip} ${testapi_port}"
-echo ${cmd}
+cmd="python ./init_db.py ${db_host_ip} 8010"
+echo $cmd
+${cmd}
+
+echo "Init dovetail testcase"
+cmd="python ./init_dovetail.py ${base_url}/api/v1"
+echo $cmd
${cmd}
echo "Successfully load DB info."
diff --git a/dovetail/utils/local_db/pods.json b/dovetail/utils/local_db/pods.json
new file mode 100644
index 00000000..3cd1dadb
--- /dev/null
+++ b/dovetail/utils/local_db/pods.json
@@ -0,0 +1,382 @@
+[
+ {
+ "name": "lf-pod2",
+ "creation_date": "2015-01-01 08:00:00.476549",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "5617f98e514bc5355b51f6b5",
+ "details": ""
+ },
+ {
+ "name": "lf-pod1",
+ "creation_date": "2015-01-01 08:00:00.476549",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "5617fa5a514bc5355b51f6b6",
+ "details": ""
+ },
+ {
+ "name": "orange-pod2",
+ "creation_date": "2015-10-27 15:27:30.312012",
+ "role": "",
+ "mode": "metal",
+ "_id": "562f97e2514bc5174d053d38",
+ "details": "https://wiki.opnfv.org/opnfv-orange"
+ },
+ {
+ "name": "unknown-pod",
+ "creation_date": "2015-11-30 08:55:02.550465",
+ "role": "",
+ "mode": "undefined",
+ "_id": "565c0ee6514bc5087f2ddcf7",
+ "details": null
+ },
+ {
+ "name": "huawei-pod1",
+ "creation_date": "",
+ "role": "",
+ "mode": "metal",
+ "_id": "566fea58514bc5068a345d4b",
+ "details": ""
+ },
+ {
+ "name": "intel-pod5",
+ "creation_date": "2015-12-15 10:24:53.476549",
+ "role": "",
+ "mode": "metal",
+ "_id": "566fea75514bc5068a345d4c",
+ "details": null
+ },
+ {
+ "name": "intel-pod3",
+ "creation_date": "2015-12-21 17:38:31.435593",
+ "role": "",
+ "mode": "metal",
+ "_id": "56783917514bc5068a345d97",
+ "details": null
+ },
+ {
+ "name": "ericsson-pod1",
+ "creation_date": "2015-12-22 07:21:03.765581",
+ "role": "",
+ "mode": "metal",
+ "_id": "5678f9df514bc5068a345d98",
+ "details": null
+ },
+ {
+ "name": "ericsson-pod2",
+ "creation_date": "2015-12-22 07:21:18.173966",
+ "role": "",
+ "mode": "metal",
+ "_id": "5678f9ee514bc5068a345d99",
+ "details": null
+ },
+ {
+ "name": "dell-us-testing-bm-1",
+ "creation_date": "2016-01-08 12:41:54.097114",
+ "role": "",
+ "mode": "metal",
+ "_id": "568fae92514bc5068a60e7d2",
+ "details": null
+ },
+ {
+ "name": "dell-us-deploying-bm-3",
+ "creation_date": "2016-01-08 14:13:16.740415",
+ "role": "",
+ "mode": null,
+ "_id": "568fc3fc514bc5068a60e7d4",
+ "details": null
+ },
+ {
+ "name": "dell-us-deploying-bm-2",
+ "creation_date": "2016-01-08 14:15:54.037500",
+ "role": "",
+ "mode": null,
+ "_id": "568fc49a514bc5068a60e7d5",
+ "details": null
+ },
+ {
+ "name": "dell-us-deploying-bm3",
+ "creation_date": "2016-01-15 12:14:20.956198",
+ "role": "",
+ "mode": "metal",
+ "_id": "5698e29c514bc56e65a47bc8",
+ "details": null
+ },
+ {
+ "name": "intel-pod6",
+ "creation_date": "2016-01-22 13:32:18.767326",
+ "role": "",
+ "mode": "metal",
+ "_id": "56a22f62514bc541f885b2c0",
+ "details": null
+ },
+ {
+ "name": "huawei-virtual2",
+ "creation_date": "",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56a9d7ac851d7e6a0f74930d",
+ "details": ""
+ },
+ {
+ "name": "huawei-virtual1",
+ "creation_date": "",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56a9f411851d7e6a0f749313",
+ "details": ""
+ },
+ {
+ "name": "huawei-virtual3",
+ "creation_date": "",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56e67ba6851d7e4b188676bc",
+ "details": ""
+ },
+ {
+ "name": "huawei-virtual4",
+ "creation_date": "",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56e67bb6851d7e4b188676bd",
+ "details": ""
+ },
+ {
+ "name": "intel-pod8",
+ "creation_date": "2016-03-14 08:52:47.576623",
+ "role": "",
+ "mode": "metal",
+ "_id": "56e67bdf851d7e4b188676be",
+ "details": null
+ },
+ {
+ "name": "intel-pod7",
+ "creation_date": "2016-03-14 08:53:00.757525",
+ "role": "",
+ "mode": "metal",
+ "_id": "56e67bec851d7e4b188676c0",
+ "details": null
+ },
+ {
+ "name": "huawei-pod2",
+ "creation_date": "",
+ "role": "",
+ "mode": "metal",
+ "_id": "56e67c35851d7e4b188676c1",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual1",
+ "creation_date": "2016-03-14 08:58:06.432105",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56e67d1e851d7e4b188676c2",
+ "details": null
+ },
+ {
+ "name": "arm-pod1",
+ "creation_date": "2016-05-05 09:18:54.879497",
+ "role": "",
+ "mode": "metal",
+ "_id": "572b0ffe9377c51472b7878f",
+ "details": null
+ },
+ {
+ "name": "zte-pod1",
+ "creation_date": "2016-05-12 03:36:56.091397",
+ "role": "",
+ "mode": "metal",
+ "_id": "5733fa589377c548e8df3834",
+ "details": null
+ },
+ {
+ "name": "intel-virtual1",
+ "creation_date": "2016-08-23 17:22:30.901081",
+ "role": null,
+ "mode": "virtual",
+ "_id": "57bc86561d2c6e000ab19d93",
+ "details": null
+ },
+ {
+ "name": "intel-virtual2",
+ "creation_date": "2016-08-23 17:24:23.143681",
+ "role": null,
+ "mode": "virtual",
+ "_id": "57bc86c71d2c6e000ab19d94",
+ "details": null
+ },
+ {
+ "name": "zte-pod2",
+ "creation_date": "2016-09-06 09:49:20.228736",
+ "role": "",
+ "mode": "metal",
+ "_id": "57ce91201d2c6e000ab1c261",
+ "details": ""
+ },
+ {
+ "name": "zte-pod3",
+ "creation_date": "2016-09-06 09:49:26.019816",
+ "role": "",
+ "mode": "metal",
+ "_id": "57ce91261d2c6e000ab1c263",
+ "details": ""
+ },
+ {
+ "name": "arm-pod3",
+ "creation_date": "2016-09-12 09:47:50.791351",
+ "role": "",
+ "mode": "metal",
+ "_id": "57d679c61d2c6e000ab1d6bd",
+ "details": "ARM POD3"
+ },
+ {
+ "name": "cisco-pod1",
+ "creation_date": "2016-09-13 13:01:21.906958",
+ "role": "Community lab",
+ "mode": "metal",
+ "_id": "57d7f8a11d2c6e000ab1db88",
+ "details": "not yet declared in CI but needed to validate vpp scenarios for Colorado"
+ },
+ {
+ "name": "ool-virtual1",
+ "creation_date": "2016-09-19 12:43:50.313032",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57dfdd861d2c6e000ab1f37b",
+ "details": "Okinawa lab"
+ },
+ {
+ "name": "ericsson-pod3",
+ "creation_date": "2016-09-26 09:45:40.565795",
+ "role": "",
+ "mode": "metal",
+ "_id": "57e8ee441d2c6e000ab20fa9",
+ "details": ""
+ },
+ {
+ "name": "ericsson-pod4",
+ "creation_date": "2016-09-26 09:45:48.980198",
+ "role": "",
+ "mode": "metal",
+ "_id": "57e8ee4c1d2c6e000ab20faa",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual2",
+ "creation_date": "2016-09-26 09:46:05.508776",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57e8ee5d1d2c6e000ab20fac",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual3",
+ "creation_date": "2016-09-26 09:46:10.244443",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57e8ee621d2c6e000ab20fad",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual4",
+ "creation_date": "2016-09-26 09:46:14.734383",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57e8ee661d2c6e000ab20fae",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual5",
+ "creation_date": "2016-09-26 09:46:19.477110",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57e8ee6b1d2c6e000ab20faf",
+ "details": ""
+ },
+ {
+ "name": "intel-pod9",
+ "creation_date": "2016-11-23 14:07:35.963037",
+ "role": "",
+ "mode": "metal",
+ "_id": "5835a2a71d2c6e000ab2bb4b",
+ "details": "https://wiki.opnfv.org/display/pharos/Intel+Pod9"
+ },
+ {
+ "name": "huawei-pod3",
+ "creation_date": "2017-01-17 13:36:03.908341",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587e1dc38cf551000c780eda",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod4",
+ "creation_date": "2017-01-17 13:36:10.759860",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587e1dca8cf551000c780edb",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod5",
+ "creation_date": "2017-01-17 13:36:15.447849",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587e1dcf8cf551000c780edc",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod6",
+ "creation_date": "2017-01-18 10:53:10.586724",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587f49168cf551000c780f5e",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod7",
+ "creation_date": "2017-01-18 10:53:15.373953",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587f491b8cf551000c780f5f",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod12",
+ "creation_date": "2017-02-09 07:22:46.425836",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "589c18c68cf551000c7820e8",
+ "details": ""
+ },
+ {
+ "name": "intel-pod12",
+ "creation_date": "2017-05-17 14:11:18.852731",
+ "role": "production-ci",
+ "details": "performance",
+ "query": "<function query at 0x7f574c29c500>",
+ "mode": "metal",
+ "_id": "591c5a06ee2e3f000a50f0b4",
+ "miss_fields": [
+ "name"
+ ]
+ },
+ {
+ "name": "cisco-vina-pod10",
+ "creation_date": "2017-05-29 09:13:20.818497",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "592be63078a2ad000ae6aad7",
+ "details": ""
+ },
+ {
+ "name": "zte-virtual1",
+ "creation_date": "2017-05-30 14:11:04.264967",
+ "role": "",
+ "mode": "baremetal",
+ "_id": "592d7d7878a2ad000ae6ac49",
+ "details": ""
+ }
+] \ No newline at end of file
diff --git a/dovetail/utils/local_db/projects.json b/dovetail/utils/local_db/projects.json
new file mode 100644
index 00000000..d034b808
--- /dev/null
+++ b/dovetail/utils/local_db/projects.json
@@ -0,0 +1,218 @@
+[
+ {
+ "_id": "561dfc89514bc5355b51f6c6",
+ "description": "Project functest aims to run suites of functional tests at the end of an OPNFV fresh install. These suites consist in functional tests on the main components of the solution (VIM, SDN controllers). It thus includes several upstream suites from upstream projects.",
+ "name": "functest",
+ "creation_date": "2015-10-14 06:56:09.317134"
+ },
+ {
+ "_id": "5641e12d514bc5174df3d77e",
+ "description": "OPNFV vsperf project",
+ "name": "vsperf",
+ "creation_date": "2015-11-10 12:21:01.464979"
+ },
+ {
+ "_id": "56582fae514bc5087f2ddce9",
+ "description": "Promise is resource reservation and management project to identify NFV related requirements and realize resource reservation for future usage by capacity management of resource pools regarding compute, network and storage. ",
+ "name": "promise",
+ "creation_date": "2015-11-27 10:25:50.539634"
+ },
+ {
+ "_id": "565c5939514bc5087f2ddcfa",
+ "description": "The project aims to integrate the OpenStack Neutron BGPVPN project and its supported backends into the OPNFV reference platform.",
+ "name": "sdnvpn",
+ "creation_date": "2015-11-30 14:12:09.101020"
+ },
+ {
+ "_id": "565c7181514bc5087f2ddcfb",
+ "description": "Service Function Chaining provides the ability to define an ordered list of a network services (e.g. firewalls, NAT, QoS).",
+ "name": "sfc",
+ "creation_date": "2015-11-30 15:55:45.932846"
+ },
+ {
+ "_id": "565d5fa2514bc5087f2ddd05",
+ "description": "High availability for OPNFV",
+ "name": "ha",
+ "creation_date": "2015-12-01 08:51:46.011622"
+ },
+ {
+ "_id": "565d606c514bc5087f2ddd06",
+ "description": "IPv6-enabled OPNFV",
+ "name": "ipvsix",
+ "creation_date": "2015-12-01 08:55:08.824385"
+ },
+ {
+ "_id": "565d60f7514bc5087f2ddd07",
+ "description": "OpenStack based VNF Forwarding Graph",
+ "name": "vnfgraph",
+ "creation_date": "2015-12-01 08:57:27.378992"
+ },
+ {
+ "_id": "565d6398514bc5087f2ddd08",
+ "description": "NFV hypervisors - kvm",
+ "name": "kvmfornfv",
+ "creation_date": "2015-12-01 09:08:40.006837"
+ },
+ {
+ "_id": "565d63f9514bc5087f2ddd09",
+ "description": "Open vSwitch for NFV",
+ "name": "ovsnfv",
+ "creation_date": "2015-12-01 09:10:17.341894"
+ },
+ {
+ "_id": "565d646f514bc5087f2ddd0a",
+ "description": "ARMband project",
+ "name": "armband",
+ "creation_date": "2015-12-01 09:12:15.681896"
+ },
+ {
+ "_id": "565d97be514bc5087f2ddd11",
+ "description": "Project Copper aims to help ensure that virtualized infrastructure deployments comply with goals of the VNF designer/user, e.g. re affinity and partitioning (e.g. per regulation, control/user plane separation, cost\u2026).",
+ "name": "copper",
+ "creation_date": "2015-12-01 12:51:10.776433"
+ },
+ {
+ "_id": "565d9f0f514bc5087f2ddd1d",
+ "description": "Doctor is fault management and maintenance project to develop and realize the consequent implementation for the OPNFV reference platform.",
+ "name": "doctor",
+ "creation_date": "2015-12-01 13:22:23.294997"
+ },
+ {
+ "_id": "565da033514bc5087f2ddd20",
+ "description": "OPNFV platform performance benchmark project",
+ "name": "qtip",
+ "creation_date": "2015-12-01 13:27:15.834860"
+ },
+ {
+ "_id": "565ec191514bc5087f3cfe26",
+ "description": "This project will enable OpenContrail to be selected as the virtual networking technology in OPNFV deployments. The following diagram illustrates how the components of an OPNFV stack that includes OpenContrail map onto the ETSI NFV architecture.",
+ "name": "ovno",
+ "creation_date": "2015-12-02 10:01:53.786607"
+ },
+ {
+ "_id": "566108c7514bc5087f3cfe41",
+ "description": "This project aims to find system bottlenecks by testing and verifying OPNFV infrastructure in a staging environment before committing it to a production environment. ",
+ "name": "bottlenecks",
+ "creation_date": "2015-12-04 03:30:15.934170"
+ },
+ {
+ "_id": "5669a8b4514bc5068a345d2f",
+ "description": "OPNFV policy test based on ODL (Groupe Based Policy)",
+ "name": "policy-test",
+ "creation_date": "2015-12-10 16:30:44.118352"
+ },
+ {
+ "_id": "57173ffe9377c5332042a5e1",
+ "description": "This project proposes a security management system called Moon. NFV uses cloud computing technologies to virtualize the resources and automate the control. The cloud infrastructure is able to provision a set of different cloud resources/services for VNFs (Virtualized Network Functions). Management of isolation and protection of, and interaction between, these VNFs become a big challenge. In order to avoid losing control over the VNFs in the cloud, Moon aims at designing and developing a security management system for OPNFV.",
+ "name": "moon",
+ "creation_date": "2016-04-20 08:38:22.335984"
+ },
+ {
+ "_id": "573395499377c56d4fc3f069",
+ "description": "OPNFV storage perfomance testing project",
+ "name": "storperf",
+ "creation_date": "2016-05-11 20:25:45.317073"
+ },
+ {
+ "_id": "575efa949377c5337aa248f1",
+ "description": "template distribution service",
+ "name": "domino",
+ "creation_date": "2016-06-13 18:25:24.157400"
+ },
+ {
+ "_id": "5762ad599377c5337a5ebc3b",
+ "description": "Project \u201cFastDataStacks\u201d creates and composes a set of scenarios which include the virtual forwarder supplied by the FD.IO project. The project also provides required enhancements to individual components such as SDN controllers or installers to allow for the scenario composition.",
+ "name": "fastdatastacks",
+ "creation_date": "2016-06-16 13:44:57.065160"
+ },
+ {
+ "_id": "577d46ef9377c54b278bbc91",
+ "description": "This project will address various goals for promoting availability and convergence of information and/or data models related to NFV service/VNF management, as being defined in standards (SDOs) and as developed in open source projects.",
+ "name": "models",
+ "creation_date": "2016-07-06 17:59:11.553045"
+ },
+ {
+ "_id": "57add1169377c54b278bd67b",
+ "description": " enhancement to OpenStack ( Nova / Cinder / Neutron / Glance / Ceilometer / KeyStone ), so that OpenStack as the VIM is able to support multisite NFV cloud.",
+ "name": "multisite",
+ "creation_date": "2016-08-12 13:37:26.911022"
+ },
+ {
+ "_id": "57b2cd019377c54b278bdb90",
+ "description": "OPNFV Parser project",
+ "name": "parser",
+ "creation_date": "2016-08-16 08:21:21.788381"
+ },
+ {
+ "_id": "582ef5ec1d2c6e000ab2b226",
+ "description": "The goal of the NetReady project is to investigate how the current OpenStack networking architecture needs to be evolved in order to ensure that NFV-related use cases can be flexibly and efficiently supported. ",
+ "name": "netready",
+ "creation_date": "2016-11-18 12:37:00.875824"
+ },
+ {
+ "_id": "582f29a61d2c6e000ab2b27d",
+ "description": "Security Scanning is a project to insure security compliance and vulnerability checks , as part of an automated CI-CD platform delivery process and as a standalone application. The project makes use of the existing SCAP format to perform deep scanning of NFVi nodes, to insure they are hardened and free of known CVE reported vulnerabilities. The SCAP content itself, is then consumed and run using an upstream opensource tool known as OpenSCAP",
+ "name": "securityscanning",
+ "creation_date": "2016-11-18 16:17:42.047102"
+ },
+ {
+ "_id": "583479f61d2c6e000ab2b9ee",
+ "description": "Opera seeks to develop requirements for OPEN-O MANO support in the OPNFV reference platform, with the plan to eventually integrate OPEN-O in OPNFV as a non-exclusive upstream MANO. ",
+ "name": "opera",
+ "creation_date": "2016-11-22 17:01:42.703558"
+ },
+ {
+ "_id": "58347a121d2c6e000ab2b9ef",
+ "description": "This project will enable the integration of the open source Open Baton platform, already available as ETSI NFV MANO reference implementation since October 2015, with existing OPNFV projects for specific scenarios and use cases.",
+ "name": "orchestra",
+ "creation_date": "2016-11-22 17:02:10.793237"
+ },
+ {
+ "_id": "587520262f248d000c44275b",
+ "description": "",
+ "name": "",
+ "creation_date": "2017-01-10 17:55:50.084797"
+ },
+ {
+ "_id": "587da16e8cf551000c780e93",
+ "description": "Model Oriented Virtualization Interface",
+ "name": "movie",
+ "creation_date": "2017-01-17 04:45:34.074478"
+ },
+ {
+ "_id": "58a155e3584d06000b01574e",
+ "description": "The goal of yardstick is to verify the infrastructure compliance when running VNF applications. NFV Use Cases described in ETSI GS NFV 001 show a large variety of applications, each defining specific requirements and complex configuration on the underlying infrastructure and test tools.The Yardstick concept decomposes typical VNF work-load performance metrics into a number of characteristics/performance vectors, which each of them can be represented by distinct test-cases.",
+ "name": "yardstick",
+ "creation_date": "2015-10-14 06:56:09"
+ },
+ {
+ "_id": "58a2e2c2584d06000b0157d2",
+ "description": "a few plugins that expand the capabilities of collectd which runs on compute nodes regarding collecting and reporting metrics",
+ "name": "barometer",
+ "creation_date": "2017-02-14 10:58:10.292536"
+ },
+ {
+ "_id": "5923e2ff78a2ad000ae6a13f",
+ "description": "Container Integrated For NFV",
+ "name": "OpenRetriever",
+ "creation_date": "2017-05-23 07:21:35.191176"
+ },
+ {
+ "_id": "592887a178a2ad000ae6a65e",
+ "description": "OVN for NFV",
+ "name": "ovn4nfv",
+ "creation_date": "2017-05-26 19:53:05.984276"
+ },
+ {
+ "_id": "5928a4af78a2ad000ae6a6be",
+ "description": "ONOS Framework",
+ "name": "onosfw",
+ "creation_date": "2017-05-26 21:57:03.600198"
+ },
+ {
+ "_id": "592be2ad78a2ad000ae6aad1",
+ "description": "VIM infrastructure networking assurance, visualizing and monitoring low level details of virtual networking, components and inter-connections: internal and across hosts",
+ "name": "vina",
+ "creation_date": "2017-05-29 08:58:21.248835"
+ }
+] \ No newline at end of file
diff --git a/dovetail/utils/local_db/restart_db.sh b/dovetail/utils/local_db/restart_db.sh
index 35096b99..e44bc07c 100755
--- a/dovetail/utils/local_db/restart_db.sh
+++ b/dovetail/utils/local_db/restart_db.sh
@@ -26,4 +26,4 @@ export db_host_ip=${db_host_ip:-"$1"}
sudo docker rm -f testapi
sudo docker run -itd -p $testapi_port:8000 --name testapi \
- -e mongodb_url=mongodb://$db_host_ip:$mongodb_port/ opnfv/testapi:cvp.0.3.0
+ -e mongodb_url=mongodb://$db_host_ip:$mongodb_port/ opnfv/testapi:cvp.0.5.0
diff --git a/dovetail/utils/offline/config.yaml b/dovetail/utils/offline/config.yaml
index 11134dd1..9ff4a387 100644
--- a/dovetail/utils/offline/config.yaml
+++ b/dovetail/utils/offline/config.yaml
@@ -2,19 +2,23 @@
docker_images:
dovetail:
domain: opnfv
- tag: cvp.0.3.0
+ tag: cvp.0.5.0
store_name: image_dovetail.docker
functest:
domain: opnfv
- tag: cvp.0.2.0
+ tag: cvp.0.5.0
store_name: image_functest.docker
yardstick:
domain: opnfv
- tag: danube.3.1
+ tag: danube.3.2
store_name: image_yardstick.docker
+ bottlenecks:
+ domain: opnfv
+ tag: cvp.0.4.0
+ store_name: image_bottlenecks.docker
testapi:
domain: opnfv
- tag: cvp.0.3.0
+ tag: cvp.0.5.0
store_name: image_testapi.docker
mongo:
tag: 3.2.1
diff --git a/setup.cfg b/setup.cfg
index 64d35f68..003d2710 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,6 @@
[metadata]
name = dovetail
-version = 0.3.0
+version = 0.5.0
home-page = https://wiki.opnfv.org/display/dovetail
[entry_points]