CoprHD: Test Plan – Cinder behind VPLEX Revision History Version New Rev1 Rev2 Date 07/27/2015 07/29/2015 08/3/15 Author H Kushal Prasad H Kushal Prasad H Kushal Prasad Rev3 08/14/15 H Kushal Prasad Rev4 08/18/15 H Kushal Prasad Notes Initial Draft Dev suggested changes to test cases Pre-requisites, new use cases and new cases added based on review comments EMC Japan Team comments and changes due to volume-type reset implementation Modified test strategy: removed point mentioning about adding arrays to support matrix Overview: This document outline the approach for validating 3rd party (Cinder) arrays as backend storage system for VPLEX in CoprHD Scope: This document lists the use cases that need to be supported and test cases executed to validate each use cases. It also captures the test environment that will be used for validation. Test Strategy: Testing should adequately test all the use cases identified and will consists of functional, regression and negative testing. Where ever tests are invoked from CoprHD directly, validation needs to be done to ensure consistency. All test cases need to be run against every supported target array. Prerequisite: 1. OpenStack KILO/JUNO deployment for Northbound integration. 2. Configure ViPR Cinder Driver and configure volume-type minimum one per tenant : https://github.com/emcvipr/controller-openstack-cinder 3. OpenStack KILO deployment for Southbound integration: Use OVA build https://community.emc.com/docs/DOC-37248 4. Cinder FC Drivers for NetApp, 3Par and Fujitsu arrays configured on OpenStack limited installation. 5. 3 Node CoprHD installation and configuration: https://community.emc.com/docs/DOC45923 6. Third-party arrays should be discovered on CoprHD using Cinder southbound. 7. Tenants, Varrays, Vpools, Projects to be created on CoprHD. 8. Tenant, varray and project on CoprHD should be configured in cinder.conf and vpool should be mapped to volume-type. 9. SMI-S for arrays and FC-Switch should be installed and discovered on CoprHD. 10. NTP, AD and DNS servers should be installed and configured on CoprHD. 11. RHEL servers should be registered with RHN. Use cases: Use cases are built around the integration of CoprHD and OpenStack and are classified into 4 sections based on the datacenter requirements. Requirement Provisioning VM Use Case ID 1a 1b Data Volume operations Decommissioning VM Multi-tenancy Use Cases Create Persistent Boot Volume for VM (Create Volume from Image) with HBA on Cinder Northbound Create Persistent Boot Volume for VM (Create Volume from Image) without HBA on Cinder Northbound 2 Launch Instance and Attach Boot Volume to Nova VM 3 Create Data Volume (Create Volume) 4 Attach Volume to VM 5 Extend Data Volume 6 Create Snapshot 7 Create Volume from Snapshot 8 Clone Volume (Create Volume from Volume) 9 Detach Volume 10 Delete Cinder Volume 11 Data migration between two pools (Change Volume-type) 12 Data migration between two arrays (Change Volume-type) 13 Create HA volume with VPLEX Local Mirror 14 Create snapshot of HA volume with VPLEX Local Mirror 15 Detach Volume 16 Delete Volume 17 Terminate instance 18 CRUD operations using multiple tenants Test Environment: • • • Target arrays – Fujitsu ETERNUS – HP 3Par StoreServ7200 with microcode 5.2 SP1 – NetApp FAS (FC Block) 7-mode OpenStack Kilo Release Any other devices used should be part of CoprHD support matrix. Example VPLEX, SAN-Switch CoprHD resources Virtual Pool Virtual Array Project Tenants Configuration Separate virtual pools will be used for each backend array. Virtual pools will have following configuration 1. VPLEX Local High Availability enabled 2. Continuous copies enabled on use case based 3. Snapshot enabled on use case based 4. Expandable enabled on use case based 5. Minimum paths =1, Maximum paths=2 and Paths per initiator=1 will be used as default Each array is placed in different virtual array except for the use case where volume is migrated from one array to another. SAN Zoning will be set to Automatic 3 projects will be used on CoprHD. One project per tenant 3 tenants will be used on Openstack and CoprHD. One to one mapping will be created using the back-ends configuration and volume-types defined on Openstack. Each virtual array and virtual pool are associated to specific tenant Test Cases: Use Case 1a: Provisioning VM: Create Persistent Boot Volume for VM (Create Volume from Image) Below tests are initiated by user from OpenStack UI/CLI These items are tested on Cinder node with HBA configuration Sl No 1 2 3 4 5 6 Test Case Create bootable volume from image/volume/snapshot List volume-types List the volume Show volume details Delete bootable volume created from image Create bootable volume with invalid input Example: Without specifying size, With same name as existing normal volume Expected result New bootable volume is created Type Positive Importance High Volume-types are listed Volumes are listed Details of volume are shown Specified bootable volume is deleted No new bootable volume is created and appropriate error message should be displayed Positive Positive Positive Positive Medium Medium Medium High Negative Low Use Case 1b: Provisioning VM: Create Persistent Boot Volume for VM (Create Volume from Image) Below tests are initiated by user from OpenStack UI/CLI These items are tested on Cinder node without HBA configuration Sl No 1 2 3 4 5 6 Test Case Create bootable volume from image/volume/snapshot List volume-types List the volume Show volume details Delete bootable volume created from image Create bootable volume with invalid input Example: Without specifying size, With same name as existing normal volume Expected result New bootable volume is created Type Positive Importance High Volume-types are listed Volumes are listed Details of volume are shown Specified bootable volume is deleted No new bootable volume is created and appropriate error message should be displayed Positive Positive Positive Positive Medium Medium Medium High Negative Low Use case 2: Provisioning VM: Launch Instance and Attach Boot Volume to Nova VM Below tests are initiated by user from OpenStack UI/CLI Sl No 1 Test Case Create a volume from an image and Expected result New bootable volume is created Type Positive Importance High boot an instance from that volume 2 4 Create bootable volume with and without delete on terminate option Launch an instance from existing bootable volume Reboot instance 5 6 Shutdown instance Start instance 7 Pause instance 8 Resume instance 9 Suspend instance 10 Resize instance 11 Launch instance using normal volume 12 Attach the same bootable volume to more than one instance 3 and instance is booted using newly created volume New bootable volume is created with specified option New instance is launched using existing bootable volume Instance comes up and functions normally Instance is powered off Instance power on and functions normally Instance current state changed to pause Instance comes up and functions normally Instance current state changed to suspend Newly specified size is updated on instance Launch instance operation will fail with appropriate error message Cannot attach a single bootable volume to more than one instance. Attach operation will fail with appropriate error message Positive Medium Positive High Positive High Positive Positive High High Positive Low Positive Low Positive Low Positive Low Negative Low Negative Low Expected result New data volume is created with specified size using the volumetype provided Type Positive Importance High New large data volume is created Positive High Volumes are listed Details of specified volume are shown Specified volume is removed Create volume operation fails with appropriate error message Create volume operation fails with appropriate error message Positive Positive Medium Medium Positive Negative High Low Negative Low Use case 3: Data Volume operations: Create Data Volume (Create Volume) Below tests are initiated by user from OpenStack UI/CLI Sl No 1 2 3 4 5 6 7 Test Case Create volume with specified size and volume-type Example: Size can be 1GB, 10 GB etc Create large volume Example: 500GB, 1TB etc List volumes Show volume details Delete volumes Create volume with invalid size Example: Size= -1GB, abc GB Create volume with same name as existing volume Use case 4: Data Volume operations: Attach Volume to VM Below tests are initiated by user from OpenStack UI/CLI Sl No 1 Test Case Attach volume to an instance 2 Format the volume on instance and mount Example: format the volume as ext3 and mount Write data on volume 3 4 Reattach volume to instance after detach operation 5 Attach multiple volumes to an instance 6 Try to attach volume with invalid inputs. Example: use non existing volume or instance Try to attach the same volume to more than one instances 7 Expected result Data volume is attached to instance and attached path is updated in volume Data volume will be formatted and mount path will be listed Type Positive Importance High Positive High New file/dir can be created and data can be written Data volume is attached to instance and new attached path is updated in volume Multiple volumes are attached to an instance and each volume will have unique attached path Attach volume operation fails with appropriate error message Positive High Positive High Positive High Negative Low Negative Low Expected result Size of a volume is updated with new size. Volume can be used normally Type Positive Importance High Size of the volume remains same and appropriate error message displayed. Volume can be used normally Negative Low Volume expand operation fails with appropriate error message Negative Low Type Positive Importance High Attach volume operation fails with appropriate error message Use case 5: Data Volume operations: Extend Data Volume Below tests are initiated by user from OpenStack UI/CLI Sl No 1 2 3 Test Case Expand volume which is not exported Example: If volume is of size 1GB expand it to 5 GB Expand volume with invalid arguments. Example: negative size or by specifying size less than current size of volume Expand when volume is attached with instance Use case 6: Data Volume operations: Create Snapshot Below tests are initiated by user from OpenStack UI/CLI Sl No 1 Test Case Create snapshot of volume Expected result New snapshot is created 2 3 4 5 6 7 which has data Create multiple snapshots of the same volume Delete volume snapshots List snapshots Show snapshot Create snapshot of volume which is not attached and has no data Create snapshot with invalid inputs. Example: use same name as existing snapshot name Multiple snapshots of a volume are created Volume snapshots are removed Volume snapshots are listed Details of volume snapshot are shown New snapshot is created Positive High Positive Positive Positive High Medium Medium Positive Medium Create volume snapshot operation fails with appropriate error message Negative Low Expected result New volume is created Newly created data volume can be mounted and data can validated Multiple data volumes are created Type Positive Positive Importance High High Positive Medium Create volume from snapshot fails with appropriate error message Negative Low Expected result New volume is created Type Positive Importance High Data volume is attached to instance and attached path is updated in volume. Data volume can be mounted and data can validated Multiple clones of a volume are created Volume clones are removed Volume clones are listed Details of clone volume is shown Create volume clone operation fails with appropriate error message Positive High Positive High Positive Positive Positive Negative High Medium Medium Low Use case 7: Data Volume operations: Create Volume from Snapshot Below tests are initiated by user from OpenStack UI/CLI Sl No 1 2 3 4 Test Case Create volume from snapshot Mount the volume created from snapshot and validate data Create multiple volumes from snapshot Create volume from snapshot with invalid inputs. Example: Use the non-existing snapshot to create volume Use case 8: Data Volume operations: Clone Volume (Create Volume from Volume) Below tests are initiated by user from OpenStack UI/CLI Sl No 1 2 3 4 5 6 7 Test Case Create volume from the existing volume Attach and mount the clone volume and verify data Create multiple clones of a volume Delete clone volumes List clone volumes Show clone volume Create clone with invalid inputs. Example: use the same name for clone as existing volume or use the non-existing volume to create clone Use case 9: Data Volume operations: Detach Volume Below tests are initiated by user from OpenStack UI/CLI Sl No 1 2 3 Test Case Un-mount volume on instance Detach volume from instance Detach volume with invalid input. Example: use nonexisting volume Expected result Volume is un-mounted Volume is detached from volume Volume detach operation fails with appropriate error message Type Positive Positive Negative Importance High High Low Expected result Volume is removed Type Positive Importance High Multiple volumes are removed Volume is removed Positive Positive High High Volume delete operation fails with appropriate error message Volume delete operation fails with appropriate error message Volume delete operation fails with appropriate error message Negative Low Negative Low Negative Low Use case 10: Data Volume operations: Delete Cinder Volume Below tests are initiated by user from OpenStack UI/CLI Sl No 1 2 3 4 5 6 Test Case Delete a volume which is not attached to instance Delete multiple volume Delete volume which has clones Delete a volume which is attached with instance Delete volume which has snapshots Delete volume with invalid inputs. Example: use nonexisting volume Use case 11: Data Volume operations: Data migration between two pools (Change Volume-type) Below tests are initiated by user from Openstack UI/CLI Sl No 1 Test Case Migrate a volume between volume-types 2 Migrate all volumes belonging to a volume-type to different volume-type Expected result Volume migrated from source volume-type to destination volume-type given underneath vpool have different properties Volume migrated from source volume-type to destination volume-type given underneath vpool have different properties Type Positive Importance High Positive High 3 Perform volume related operations like expand, attach, detach ,clone, export, snapshot after migrating the volume 4 Migrate volumes which are attached to instance 5 Migrate a non VPLEX volume to VPLEX 6 Migrate a volume which has clones between volume-types 7 Migrate bootable volumes which are not assigned to instance between volumetypes 8 Migrate a volume which has snapshots 9 Migrate a volume between volume-types which are associated with identical vpools Migrate a volume between volume-types by passing invalid inputs. Example: Use non-existing volume or non-existing volume-type Migrate a volume between volume-types when target vpool does not have enough space 10 11 All volume related operations can be performed on volume after migration Volume migrated from source volume-type to destination volume-type given underneath vpool have different properties and is still attached to instance Non-VPLEX volume is converted into VPLEX volume Volume migrated from source volume-type to destination volume-type given underneath vpool have different properties Volume migrated from source volume-type to destination volume-type given underneath vpool have different properties Volume migrate operation fails with appropriate error message Volume migrate operation fails with appropriate error message Volume migrate operation fails with appropriate error message Volume migrate operation fails with appropriate error message Positive High Positive High Positive High Positive High Positive High Negative Low Negative Low Negative Low Negative Low Use case 12: Data Volume operations: Data migration between two arrays (Change Volume-type) Below tests are initiated by user from OpenStack UI/CLI Sl No 1 Test Case Migrate a volume between volume-types where underneath vpools are associated with different arrays Expected result Volume migrated from source volume-type to destination volume-type and same is reflected on OpenStack UI/CLI. Volume migrated to target Type Positive Importance High 2 Migrate all volume between volume-types associated with different arrays 3 Perform volume related operations like expand, clone, export, snapshot after migrating the volume 4 Migrate a non VPLEX volume to VPLEX 5 Migrate volumes which are attached to instance 6 Migrate a volume between volume-types by passing invalid inputs. Example: Use non-existing volume or volume-type Migrate a volume between volume-types when target vpool does not have enough space 7 array All volumes are migrated from source volume-type to destination volumetype. Volumes are migrated to target array All volume related operations can be performed on volume after migration Non-VPLEX volume are converted into VPLEX volume Volume migrate operation fails with appropriate error message Volume migrate operation fails with appropriate error message Volume migrate operation fails with appropriate error message Positive High Positive High Positive Low Negative Low Negative Low Negative Low Expected result New vpool is created with VPLEX Local data protection and continuous copies enabled Mirror volume is created All volume related operations from OpenStack can be performed on volume after mirror volume is created Type Positive Importance High Positive Positive High High Mirror volume is deleted Mirror volume are listed Details of mirror volume are shown Mirror volume is paused Mirror volume is resumed Swap primary volume with mirror volume failover to mirror volume Establish mirror volume and primary volume Positive Positive Positive Positive Positive Positive High Medium Medium Medium Medium Medium Positive Positive Medium Medium Use case 13: Data Volume operations: Create HA volume with VPLEX Local Mirror Below tests are initiated by user from CoprHD UI/CLI Sl No 1 4 5 6 7 8 9 Test Case Create vpool with VPLEX Local data protection and enable continuous copies Create mirror volume Perform volume related operations like expand, attach/detach, delete after creating mirror volume *Note: This tests are initiated from OpenStack UI/CLI Delete mirror volume List mirror volume Show mirror volume Pause mirror volume Resume mirror volume Swap mirror volume 10 11 Failover mirror volume Establish mirror volume 2 3 12 Restore mirror volume 13 Stop mirror volume 14 Create multiple mirror volumes Delete volume with mirror 15 16 Restore primary volume from mirror volume Stop mirroring between primary and mirror volume Multiple new mirror volumes are created Positive Medium Positive High Positive High Mirror volume delete operation fails with appropriate error message Create volume mirror operation fails with appropriate error message Negative Low Negative Low Expected result New snapshot of volume is created Type Positive Importance High Multiple new snapshots are created Positive High Snapshot of a mirrored volume is removed Positive High Snapshots are listed Details of snapshot are shown New snapshot of volume is created Positive Positive Positive Medium Medium Low Create snapshot operation will fail with appropriate error message Negative Low Type Positive Importance High Create mirror volume with invalid input. Example: Use non-existing volume or use mirror name same as existing mirror Use case 14: Create snapshot of HA volume with VPLEX Local Mirror Below tests are initiated by user from OpenStack UI/CLI Sl No 1 2 3 4 5 6 7 Test Case Create snapshot of a volume which is mirrored Create multiple snapshots of the volume which is mirrored Deleted snapshot of a volume which is mirrored List snapshots Show snapshot Create snapshot of volume which is not attached and has no data Create snapshot with invalid inputs. Example: use same name as existing snapshot name Use case 15: Decommissioning VM: Detach Volume Below tests are initiated by user from OpenStack UI/CLI Sl No 1 Test Case Detach volume after instance is shutdown Expected result Volume is detached from instance 2 Detach volume when instance is running Detach volume operation fails with appropriate error message Negative Low Expected result Volume is removed Type Positive Importance High Volume delete operation fails with appropriate error message Negative Low Type Positive Importance High Expected result Only volume-types to which tenant/user has access will be listed All 5 operations completed successfully Type Positive Importance High Positive High 5 new volumes of 1 GB are created Positive High 5 new volumes of specified size are created Positive High 5 new volumes of 1 TB are created Positive High 20 new volumes of 1 TB are created Positive High Use case 16: Decommissioning VM: Delete Volume Below tests are initiated by user from OpenStack UI/CLI Sl No 1 2 Test Case Delete volume after detaching from instance Delete volume while it is still attached to instance Use case 17: Decommissioning VM: Terminate instance Below tests are initiated by user from OpenStack UI/CLI Sl No 1 Test Case Terminate instance Expected result Instance is terminated Use case 18: Multi-tenancy: CRUD operations using multiple tenants Below tests are initiated by user from OpenStack UI/CLI Sl No 1 Test Case List volume-types 2 Simultaneously perform 5 operations (create clone, Delete volume, Create snapshot, Create mirror, list volumes ) as different Tenants From different Tenants concurrently create 5 volumes of size 1 GB each From different Tenants concurrently create 5 volumes of size of different size From different Tenants concurrently create 5 volumes of size 1 TB each From different Tenants concurrently create 20 3 4 5 6 7 8 9 volumes of size 1 TB each Create volume using the volume- type associated with different tenant Create a snapshot using the volume associated with different tenant Delete volume clone associated with different tenant Create volume operation will fail with appropriate error message Negative Low Create snapshot operation will fail with appropriate error message Negative Low Delete volume operation will fail with appropriate error message Negative Low Apart from above listed use case based testing; following Sanity/Unit test cases will be covered from CoprHD UI/CLI/Catalog services during testing cycle. Sl No 1 2 3 4 5 6 7 8 9 Test Case Discover storage system Discover fabric manager Discover Nova compute node Discover Windows/Linux host Create virtual array Associate third-party storage system with virtual array Create virtual pool with storage pools of third-party Create block volume for a host Remove volume by host 10 11 Create block volume Remove block volumes 12 Export VPLEX volume Unexport volume Create and mount 13 14 Expected result Storage system, storage pools and DEFAULT storage port will be discovered Fabric manager and associated networks are discovered Nova compute node and associated FC ports are discovered Windows/Linux host and associated FC ports are discovered Virtual array will be created Third-party array will be added to the virtual array Type Positive Importance High Positive High Positive High Positive High Positive Positive High High Virtual pool will be created with third-party storage pools Positive High Block volume will be created and exported to specified host Block volume along with snapshot, export group, clones of a block volume which is associated with specified host will be removed Block volume will be created Block volume and associated resources like snapshot, export group, clones will be removed VPLEX volume will be attached to specified host VPLEX volume will be detached from host New volume will be created and mounted on Positive High Positive High Positive Positive High High Positive High Positive Positive High High 15 16 17 18 19 20 21 block volume on Linux host Unmount and delete volume on Linux host Mount existing volume on Linux Unmount volume on Linux Create and mount volume on Windows host Unmount and delete volume on Windows host Mount volume on Windows Unmount Volume on Windows Linux host volume will be removed after unmounted from Linux host Volume will be mounted on Linux host Positive High Positive High volume will be un mounted from Linux host Positive High New volume will be created and mounted on Windows host Positive High volume will be removed after unmounted from Windows host Positive High Volume will be mounted on Windows host Positive High Volume will be unmounted from Windows host Positive High