test/lvol: Test plan for provisioning

Change-Id: Ia1ccf8091fb2dbbb97a7acecc230d9f6cb7c1002
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/391257
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Karol Latecki <karol.latecki@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Pawel Kaminski 2017-12-11 20:09:20 +01:00 committed by Jim Harris
parent db739e1594
commit 4ab8589ba3

View File

@ -16,6 +16,10 @@ Some configuration calls may also be validated by use of
"get_*" RPC calls, which provide additional information for verifying
results.
Tests with thin provisioned lvol bdev are using nbd devices.
Before writing/reading to lvol bdev, bdev is installed with rpc start_nbd_disk.
After finishing writing/reading, rpc stop_nbd_disk is used.
## Tests
### construct_lvol_store - positive tests
@ -549,9 +553,117 @@ Expected result:
- return code != 0
- Error code response printed to stdout
### Provisioning
#### TEST CASE 650 - Name: thin_provisioning_check_space
- create malloc bdev
- construct lvol store on malloc bdev
- create thin provisioned lvol bdev with size equals to lvol store free space
- check and save number of free clusters for lvol store
- write data (less than lvs cluster size) to created lvol bdev starting from offset 0.
- check that free clusters on lvol store was decremented by 1
- write data (lvs cluster size) to lvol bdev with offset set to one and half of cluster size
- check that free clusters on lvol store was decremented by 2
- write data to lvol bdev to the end of its size
- check that lvol store free clusters number equals to 0
- destroy thin provisioned lvol bdev
- check that saved number of free clusters equals to current free clusters
- destroy lvol store
- destroy malloc bdev
Expected result:
- calls successful, return code = 0
- no other operation fails
#### TEST CASE 651 - Name: thin_provisioning_read_empty_bdev
- create malloc bdev
- construct lvol store on malloc bdev
- create thick provisioned lvol bvdev with size equal to lvol store
- create thin provisioned lvol bdev with the same size
- fill the whole thick provisioned lvol bdev
- perform read operations on thin provisioned lvol bdev
and check if they return zeroes
- destroy thin provisioned lvol bdev
- destroy lvol store
- destroy malloc bdev
Expected result:
- calls successful, return code = 0
- no other operation fails
#### TEST CASE 652 - Name: thin_provisioning_data_integrity_test
- create malloc bdev
- construct lvol store on malloc bdev
- construct thin provisioned lvol bdev with size equal to lvol store
- on the whole lvol bdev perform write operation with verification
- destroy thin provisioned lvol bdev
- destroy lvol store
- destroy malloc bdev
Expected result:
- calls successful, return code = 0
- verification ends with success
- no other operation fails
#### TEST CASE 653 - Name: thin_provisioning_resize
- create malloc bdev
- construct lvol store on malloc bdev
- construct thin provisioned lvol bdevs on created lvol store
with size equal to 50% of lvol store
- fill all free space of lvol bdev with data
- save number of free clusters for lvs
- resize bdev to full size of lvs
- check if bdev size changed (total_data_clusters*cluster_size
equal to num_blocks*block_size)
- check if free_clusters on lvs remain unaffected
- perform write operation with verification
to newly created free space of lvol bdev
- resize bdev to 30M and check if it ended with success
- check if free clusters on lvs equals to saved counter
- destroy thin provisioned lvol bdev
- destroy lvol store
- destroy malloc bdev
Expected result:
- calls successful, return code = 0
- no other operation fails
#### TEST CASE 654 - Name: thin_overprovisioning
- create malloc bdev
- construct lvol store on malloc bdev
- construct two thin provisioned lvol bdevs on created lvol store
with size equals to free lvs size
- fill first bdev to 75% of its space with specific pattern
- fill second bdev up to 75% of its space
- check that error message occured while filling second bdev with data
- check if data on first disk stayed unchanged
- destroy thin provisioned lvol bdev
- destroy lvol store
- destroy malloc bdev
Expected result:
- calls successful, return code = 0
- no other operation fails
#### TEST CASE 655 - Name: thin_provisioning_filling_disks_less_than_lvs_size
- create malloc bdev
- construct lvol store on malloc bdev
- construct two thin provisioned lvol bdevs on created lvol store
with size equal to 70% of lvs size
- check if bdevs are available and size of every disk is equal to 70% of lvs size
- fill first disk with 70% of its size and second one also with 70% of its size
- check if operation didn't fail
- destroy thin provisioned lvol bdevs
- destroy lvol store
- destroy malloc bdev
Expected result:
- calls successful, return code = 0
- no other operation fails
### logical volume tasting tests
#### TEST CASE 650 - Name: tasting_positive
#### TEST CASE 700 - Name: tasting_positive
Positive test for tasting a multi lvol bdev configuration.
Create a lvol store with some lvol bdevs on NVMe drive and restart vhost app.
After restarting configuration should be automatically loaded and should be exactly
@ -593,7 +705,7 @@ Expected results:
- all RPC configuration calls successful, return code = 0
- no other operation fails
#### TEST CASE 651 - Name: tasting_lvol_store_positive
#### TEST CASE 701 - Name: tasting_lvol_store_positive
Positive test for tasting lvol store.
Steps:
- run vhost app with NVMe bdev
@ -609,7 +721,7 @@ Expected result:
### SIGTERM
#### TEST CASE 700 - Name: SIGTERM
#### TEST CASE 750 - Name: SIGTERM
Call CTRL+C (SIGTERM) occurs after creating lvol store
Steps:
- create a malloc bdev