Difference between revisions of "MagnetoDB/QA/Test cases"
Line 1: | Line 1: | ||
− | =KVSaaS Test Cases= | + | =KVSaaS Test Cases and Ideas= |
=BatchGetItem= | =BatchGetItem= | ||
Line 486: | Line 486: | ||
Correct Key string and | Correct Key string and | ||
− | + | <nowiki>"SS" : ["string"] values</nowiki> | |
| | | | ||
Line 2,261: | Line 2,261: | ||
| | | | ||
− | + | Create LSI with Hash different from table hash key (table should have H+R key). | |
| | | | ||
Line 2,280: | Line 2,280: | ||
| | | | ||
− | + | Create LSI for table with HASH w/o RANGE. Should fail. But will work for global indexes. | |
| | | | ||
Line 2,299: | Line 2,299: | ||
| | | | ||
− | + | Create similar indexes with different names (the same keys, etc) | |
| | | | ||
Line 2,318: | Line 2,318: | ||
| | | | ||
− | + | create an index just with HASH key, w/o RANGE | |
| | | | ||
Line 2,337: | Line 2,337: | ||
| | | | ||
− | + | ‘Repeat’ key schema of the table. “For a local secondary index, the hash key must be the same as the table's hash key, and the range key must be a non-key table attribute.” | |
| | | | ||
Line 2,356: | Line 2,356: | ||
| | | | ||
− | + | '''''Test for PutItem:''' Ensure range key of LSI is not a mandatory attribute.'' | |
| | | | ||
Line 2,372: | Line 2,372: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | '''Projection''' | |
| | | | ||
Line 2,394: | Line 2,394: | ||
| | | | ||
− | + | Check usage of all projection types: KEYS_ONLY, INCLUDE, ALL. Query tests verify that it works as expected. | |
| | | | ||
Line 2,400: | Line 2,400: | ||
| | | | ||
− | <center></center> | + | <center>P</center> |
| | | | ||
Line 2,413: | Line 2,413: | ||
| | | | ||
− | + | Use NonKeyAttributes but skip ProjectionType | |
| | | | ||
Line 2,419: | Line 2,419: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,432: | Line 2,432: | ||
| | | | ||
− | + | Use NonKeyAttributes list with one attribute in it | |
| | | | ||
Line 2,438: | Line 2,438: | ||
| | | | ||
− | <center></center> | + | <center>P</center> |
| | | | ||
Line 2,451: | Line 2,451: | ||
| | | | ||
− | + | Use key attrs in the NonKeyAttributes list | |
| | | | ||
Line 2,457: | Line 2,457: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,470: | Line 2,470: | ||
| | | | ||
+ | Make NonKeyAttributes list empty | ||
+ | |||
Line 2,476: | Line 2,478: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,489: | Line 2,491: | ||
| | | | ||
− | + | Insert some non-key attrs in NonKeyAttributes list when Pr.Type is KEYS_ONLY. Then - similar but with ALL case. | |
| | | | ||
Line 2,495: | Line 2,497: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,508: | Line 2,510: | ||
| | | | ||
− | + | Create a table with 20 non-key attrs in one LSI. | |
| | | | ||
Line 2,514: | Line 2,516: | ||
| | | | ||
− | <center></center> | + | <center>P</center> |
| | | | ||
Line 2,527: | Line 2,529: | ||
| | | | ||
− | + | Create a table with 21 non-key attrs in one LSI. | |
| | | | ||
Line 2,533: | Line 2,535: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,546: | Line 2,548: | ||
| | | | ||
− | + | Create a table with 20 non-key attrs in multiple LSIs. | |
| | | | ||
Line 2,552: | Line 2,554: | ||
| | | | ||
− | <center></center> | + | <center>P</center> |
| | | | ||
Line 2,565: | Line 2,567: | ||
| | | | ||
− | + | Create a table with 21 non-key attrs in diff. LSIs, without repetitions of attr names. | |
| | | | ||
Line 2,571: | Line 2,573: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,584: | Line 2,586: | ||
| | | | ||
− | + | Create a table with 21 non-key attrs in diff. LSIs, with repetitions of attr names between LSI’s. | |
| | | | ||
Line 2,590: | Line 2,592: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,600: | Line 2,602: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | '''GlobalSecondaryIndexes''' | |
| | | | ||
Line 2,619: | Line 2,621: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | (out of scope now) | |
| | | | ||
Line 2,638: | Line 2,640: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | '''Response''' | |
| | | | ||
Line 2,660: | Line 2,662: | ||
| | | | ||
+ | Most of key-values in TableDescription are equal to data from Request | ||
+ | | | ||
+ | Check and verify: | ||
+ | |||
+ | * AttributeDefinitions | ||
+ | * KeySchema | ||
+ | * LocalSecondaryIndexes (also new attrs appear: IndexSizeBytes, IndexStatus, ItemCount) | ||
+ | * ProvisionedThroughput (also new attrs appear: LastDecreaseDateTime, LastIncreaseDateTime - these two should be absent on creation, NumberOfDecreasesToday - should be 0 on creation) | ||
+ | * TableName | ||
− | |||
| | | | ||
− | <center></center> | + | <center>P</center> |
| | | | ||
Line 2,679: | Line 2,689: | ||
| | | | ||
− | + | Attrs not present in Request but should be present in Response | |
| | | | ||
− | + | * CreationDateTime | |
+ | * ItemCount (should be 0 just after table creation) | ||
+ | * TableSizeBytes (should be 0 on creation) | ||
+ | * TableStatus (should be CREATING, then ACTIVE) | ||
| | | | ||
− | <center></center> | + | <center>P</center> |
| | | | ||
Line 2,698: | Line 2,711: | ||
| | | | ||
− | + | If LSI are not created, should this attr be present in response as empty list? | |
| | | | ||
Line 2,717: | Line 2,730: | ||
| | | | ||
− | + | Think how to check TableSizeBytes value. | |
| | | | ||
Line 2,736: | Line 2,749: | ||
| | | | ||
− | + | CreationDateTime verification: Find a way to get current time from the target system | |
| | | | ||
Line 2,752: | Line 2,765: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | '''Exceptions''' | |
| | | | ||
Line 2,774: | Line 2,787: | ||
| | | | ||
+ | LimitExceededException: | ||
+ | Is related to in-progress states. Not possible to reproduce for now. | ||
| | | | ||
Line 2,780: | Line 2,795: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,793: | Line 2,808: | ||
| | | | ||
+ | ResourceInUseException: | ||
+ | Recreate existing table ''(the case was mentioned above)'' | ||
| | | | ||
Line 2,799: | Line 2,816: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,812: | Line 2,829: | ||
| | | | ||
+ | InternalServerError: | ||
+ | <nowiki>When this error [500] is expected and when some other error should appear?</nowiki> | ||
| | | | ||
Line 2,818: | Line 2,837: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,828: | Line 2,847: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | '''Additional''' | |
| | | | ||
Line 2,850: | Line 2,869: | ||
| | | | ||
− | + | Create more than 255 tables | |
| | | | ||
Line 2,856: | Line 2,875: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,883: | Line 2,902: | ||
− | | | + | |} |
− | |||
− | |||
− | + | ||
+ | =DeleteItem= | ||
+ | |||
+ | =DeleteTable= | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
| | | | ||
+ | <center>'''<nowiki>#</nowiki>'''</center> | ||
+ | | | ||
+ | <center>'''Description'''</center> | ||
| | | | ||
− | <center></center> | + | <center>'''Results'''</center> |
| | | | ||
− | <center></center> | + | <center>'''T'''</center> |
| | | | ||
+ | <center>'''Imp'''</center> | ||
+ | | | ||
+ | <center>'''Notes'''</center> | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | '''General''' | |
| | | | ||
Line 2,923: | Line 2,952: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-1</center> |
| | | | ||
− | + | Delete an existing table. Check if all the Response’s fields (see Table Description object) are equal to the appropriate table parameters | |
| | | | ||
Line 2,932: | Line 2,961: | ||
| | | | ||
− | <center></center> | + | <center>P</center> |
| | | | ||
Line 2,942: | Line 2,971: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Delete a non-existent table | |
| | | | ||
− | + | ''ResourceNotFoundException'' | |
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,961: | Line 2,990: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Delete a table specifying “” as a name | |
| | | | ||
Line 2,970: | Line 2,999: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,980: | Line 3,009: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Delete a table specifying ''NULL'' as a name | |
| | | | ||
Line 2,989: | Line 3,018: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 2,999: | Line 3,028: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Delete a table w/o specifying any parameters | |
| | | | ||
Line 3,008: | Line 3,037: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 3,018: | Line 3,047: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Delete a table having a name that contains only 2 or 1 symbol | |
| | | | ||
Line 3,027: | Line 3,056: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 3,037: | Line 3,066: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Delete a table specifying a name that contains more than 255 symbols | |
| | | | ||
− | + | ''ResourceNotFoundException ?'' | |
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 3,056: | Line 3,085: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Delete an existing table and, while the status is ''DELETING'', run DeleteTable operation for the same table once again | |
| | | | ||
Line 3,065: | Line 3,094: | ||
| | | | ||
− | <center></center> | + | <center>P</center> |
| | | | ||
Line 3,073: | Line 3,102: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | '''Results Verification''' | |
| | | | ||
− | + | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | ||
|- | |- | ||
| | | | ||
− | <center></center> | + | <center>DelT-</center> |
| | | | ||
− | + | ||
| | | | ||
Line 3,123: | Line 3,142: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center></center> |
| | | | ||
− | + | '''Exceptions''' | |
| | | | ||
Line 3,142: | Line 3,161: | ||
|- | |- | ||
| | | | ||
− | <center>DelT- | + | <center>DelT-</center> |
| | | | ||
− | + | Simulate ''InternalServerError'' exception. Ideas? | |
| | | | ||
Line 3,151: | Line 3,170: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 3,161: | Line 3,180: | ||
|- | |- | ||
| | | | ||
− | <center>DelT- | + | <center>DelT-</center> |
| | | | ||
+ | Simulate ''LimitExceededException'' exception. Ideas? | ||
+ | Delete more than 10 tables in the same time | ||
| | | | ||
Line 3,170: | Line 3,191: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 3,178: | Line 3,199: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Simulate ''ResourceInUseException'' exception. Ideas? | |
− | + | Delete a table while it is in use by some other operation | |
− | |||
| | | | ||
− | |||
− | |||
− | |||
| | | | ||
− | <center> | + | <center>N</center> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
Line 3,228: | Line 3,222: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
− | + | Simulate ''ResourceNotFoundException'' exception. Other ideas? | |
| | | | ||
Line 3,237: | Line 3,231: | ||
| | | | ||
− | <center></center> | + | <center>N</center> |
| | | | ||
Line 3,247: | Line 3,241: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
Line 3,266: | Line 3,260: | ||
|- | |- | ||
| | | | ||
− | <center> | + | <center>DelT-</center> |
| | | | ||
Line 3,286: | Line 3,280: | ||
− | |||
+ | |||
+ | =DescribeTable= | ||
− | |||
− | |||
− | |||
− | |||
− | | | + | {| class="wikitable" |
− | <center>'''Description'''</center> | + | |- |
+ | | | ||
+ | <center>'''<nowiki>#</nowiki>'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''Description'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''Results'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''T'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''Imp'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''Notes'''</center> | ||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | '''General''' | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-1</center> | ||
+ | |||
+ | | | ||
+ | Run ''DescribeTable'' against the existing table. Check that all the required params are described correctly (see “Response Syntax” for DescribeTable statement) | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | Run ''DescribeTable'' against the non-existent table (''ResourceNotFoundException'' exception) | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | Run ''DescribeTable'' specifying “” as a table name | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | Run ''DescribeTable'' specifying ''NULL'' as a name | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | Run ''DescribeTable'' w/o specifying any parameters | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | Run ''DescribeTable'' specifying a name that contains only 2 or 1 symbol (causes an exception?) | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | Run ''DescribeTable'' specifying a name that contains more than 255 symbols | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | Simulate ''InternalServerError'' exception | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>DesT-</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |} | ||
+ | |||
+ | |||
+ | =GetItem= | ||
+ | |||
+ | |||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | | | ||
+ | <center>'''<nowiki>#</nowiki>'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''Description'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''Results'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''T'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''Imp'''</center> | ||
+ | |||
+ | | | ||
+ | <center>'''Notes'''</center> | ||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | '''General''' | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-1</center> | ||
+ | |||
+ | | | ||
+ | Get an item specifying correct mandatory attributes | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Get an item specifying all the correct mandatory and optional ttributes | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | '''TableName''' | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Valid (existing) table name | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center>Y</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Existing table name of 3 symbols | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center>Y</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Existing table name of 255 symbols | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center>Y</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | From non-existent table name | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Empty name (“”) | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Less than 3 symbols long | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | More than 255 symbols long | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | '''AttributesToGet:''' | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Specified, correct items in the list | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center>Y</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Section not specified | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center>Y</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | “AttributesToGet” term not specified, but there is a list of items in the section | ||
+ | |||
+ | | | ||
+ | Exception/error | ||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Section AttributesToGet is specified, but there is just an empty list (no items) | ||
+ | |||
+ | | | ||
+ | Exception/error | ||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Specified more attributes than exist in the table | ||
+ | |||
+ | | | ||
+ | Exception/error | ||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Incorrect attributes: Wrong names | ||
+ | |||
+ | | | ||
+ | Exception/error | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Incorrect attributes: Empty values like "" | ||
+ | |||
+ | | | ||
+ | Exception/error | ||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | '''Key''' | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | One Key specified: “B” | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | One Key specified: “N” | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | One Key specified: “S” | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | One key: “BS” | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | One key: “NS” | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | One key: “SS” | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Combination of "B", "N", "S" types | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Combination of "B", "N", "S", "BS", "NS", "SS" types | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Combination of “B”, “B”, "N", "N", “S”, “S”, “BS”, “BS”, "NS", "NS", “SS”, “SS” types | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | The whole section “Key” not specified | ||
+ | |||
+ | | | ||
+ | Exception/error | ||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Section “Key” specified, but the section content is empty | ||
+ | |||
+ | | | ||
+ | Exception/error | ||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | One incorrect key specified: something that is not in ("B", "N", "S", "BS", "NS", "SS") | ||
+ | |||
+ | | | ||
+ | Exception/error | ||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | In section “Key” there is a key of type “N” but a non-existent value specified for it | ||
+ | |||
+ | | | ||
+ | No items returned in Response | ||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center>Y</center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | '''ConsistentRead''' | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | <nowiki>= True</nowiki> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | <nowiki>= False</nowiki> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Not specified | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | <nowiki>= <Something_else></nowiki> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | '''ReturnConsumedCapacity''' | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | <nowiki>= INDEXES</nowiki> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | <nowiki>= TOTAL</nowiki> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | <nowiki>= NONE</nowiki> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>P</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | <nowiki>= <Something_else></nowiki> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | '''Exceptions''' | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Simulate ConditionalCheckFailedException | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Simulate InternalServerError | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Simulate ItemCollectionSizeLimitExceededException | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | | | ||
+ | <center>N</center> | ||
+ | |||
+ | | | ||
+ | <center></center> | ||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | |- | ||
+ | | | ||
+ | <center>GI-</center> | ||
+ | |||
+ | | | ||
+ | Simulate ProvisionedThroughputExceededException | ||
+ | |||
+ | | | ||
+ | |||
| | | | ||
− | <center> | + | <center>N</center> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
Line 3,331: | Line 4,475: | ||
|- | |- | ||
| | | | ||
− | <center>GI- | + | <center>GI-</center> |
| | | | ||
− | + | Simulate ResourceNotFoundException | |
| | | | ||
Line 3,340: | Line 4,484: | ||
| | | | ||
− | <center> | + | <center>N</center> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
Line 3,369: | Line 4,494: | ||
|- | |- | ||
| | | | ||
− | <center>GI- | + | <center>GI-</center> |
| | | | ||
Line 3,393: | Line 4,518: | ||
− | {| class=" | + | {| class="wikitable" |
|- | |- | ||
| | | | ||
Line 3,496: | Line 4,621: | ||
− | {| class=" | + | {| class="wikitable" |
|- | |- | ||
| | | | ||
− | <center>''' | + | <center>'''<nowiki>#</nowiki>'''</center> |
| | | | ||
Line 3,599: | Line 4,724: | ||
− | {| class=" | + | {| class="wikitable" |
|- | |- | ||
| | | | ||
Line 3,702: | Line 4,827: | ||
− | {| class=" | + | {| class="wikitable" |
|- | |- | ||
| | | |
Revision as of 21:04, 26 March 2014
Contents
KVSaaS Test Cases and Ideas
BatchGetItem
BatchWriteItem
|
|
|
|
|
|
|
General |
|
|
|
|
|
Complete set of correct options |
|
|
|
|
|
PutRequest |
|
|
|
|
|
Correct Item string AND "N" : "string" value |
|
|
|
|
|
Non-existent Item string AND "N" : "string" value |
Error + UnprocessedItems contains unprocessed PutRequest Items |
|
|
|
|
EMPTY Item string AND "N" : "string" |
Error + UnprocessedItems contains unprocessed PutRequest Items |
|
|
|
|
Correct Item string and "NS" : ["string"] values |
|
|
|
|
|
Correct Item string and "B" : "string" value |
|
|
|
|
|
Correct Item string and "BS" : ["string"] values |
|
|
|
|
|
Correct Item string and "S" : "string" value |
|
|
|
|
|
Correct Item string and "N" : EMPTY value |
ValidationException + UnprocessedItems contains unprocessed PutRequest Items |
|
|
|
|
Correct Item string and "<SOME_STRANGE_OR_EMPTY_VALUE>" : "string" value |
ValidationException + UnprocessedItems contains unprocessed PutRequest Items |
|
|
|
|
Correct Item string and "NS" : "non-existent_string" value |
ValidationException + UnprocessedItems contains unprocessed PutRequest Items |
|
|
|
|
|
|
|
|
|
|
DeleteRequest |
|
|
|
|
|
Correct Key string and "N" : "string" value |
|
|
|
|
|
Non-existent Key string and "N" : "string" value |
Error + UnprocessedItems contains unprocessed DeleteRequest Items |
|
|
|
|
EMPTY Key string and "N" : "string" value |
Error + UnprocessedItems contains unprocessed DeleteRequest Items |
|
|
|
|
correct Key string and "NS" : ["string"] values |
|
|
|
|
|
correct Key string and "B" : "string" value |
|
|
|
|
|
correct Key string and "BS" : ["string"] values |
|
|
|
|
|
correct Key string and "S" : "string" value |
|
|
|
|
|
Correct Key string and "SS" : ["string"] values |
|
|
|
|
|
CombinedRequest |
|
|
|
|
|
Specify in one statement: correct Key string for DeleteRequest "N" : "string" value AND correct Item string for PutRequest "N" : "string" value |
|
|
|
|
|
Specify in one statement: correct Key string for DeleteRequest "B" : "string" value AND correct Key string for DeleteRequest "SS" : "string" values AND correct Item string for PutRequest "NS" : "string" values AND (!!!) INcorrect Item string for PutRequest "S" : "string" value |
|
|
|
|
|
Specify in one statement: correct Item string for PutRequest "N" : "string_A" value correct Key string for DeleteRequest "N" : "string_A" value |
An error: you can't put and delete the same item in the same BatchWriteItem request |
|
|
|
|
RequestItems (TableName) |
|
|
|
|
|
correct table name and correct PutRequest parameters for the Item |
Line(s) added correctly |
|
|
|
|
Specify 25 correct table names and correct PutRequest parameters for the Items |
Line(s) added correctly into all 25 tables |
|
|
|
|
Specify 26 correct table names and correct PutRequest parameters for the Items |
error/exception (?) |
|
|
|
|
correct table name and correct DeleteRequest parameters for the Key |
Line(s) deleted correctly |
|
|
|
|
INcorrect table name correct PutRequest parameters for an Item Check that UnprocessedItems contains unprocessed PutRequest Items:
|
Exception |
|
|
|
|
Correct table name and correct PutRequest parameters for the Item Make total request size more than 1 MB (how to?) |
error |
|
|
|
|
correct table name and correct PutRequest parameters for the Item Any individual item in a batch exceeds 64 KB (how to?) |
error |
|
|
|
|
ReturnItemCollectionMetrics |
|
|
|
|
|
is NONE (by default) |
no statistics returned |
|
|
|
|
is SIZE |
statistics about item collections, if any, that were modified during the operation are returned in the response |
|
|
|
|
is <Something_else> |
error/exception |
|
|
|
|
ReturnConsumedCapacity |
|
|
|
|
|
is NONE (by default)
|
ConsumedCapacity is not included in the response |
|
|
|
|
is TOTAL |
the response includes ConsumedCapacity data for tables and indexes |
|
|
|
|
is INDEXES |
the response includes ConsumedCapacity for indexes only |
|
|
|
|
is <Something_else> (and empty) |
error/exception |
|
|
|
|
Exceptions |
|
|
|
|
|
Simulate InternalServerError |
|
|
|
|
|
Simulate ItemCollectionSizeLimitExceededException |
|
|
|
|
|
Simulate ProvisionedThroughputExceededException |
|
|
|
|
|
Simulate ResourceNotFoundException |
|
|
|
|
|
|
|
|
|
|
CreateTable
|
|
|
|
|
|
|
General |
|
|
|
|
|
Create table without any optional attributes, only all mandatory |
|
|
|
|
|
Create a table specifying ALL (including mandatory) the correct parameters |
|
|
|
|
|
Try to create two tables with the same name in the same region |
ResourceInUseException expected. |
|
|
|
|
Try to create two tables with the same name in two different regions. |
|
|
|
|
|
Verify first status is CREATING, then ACTIVE |
|
|
|
|
|
What happens if read/write to/from table in CREATING state? Possible to reproduce? |
|
|
|
|
|
Create one table with sec. indexes and then try to create one more table while the first one is in CREATING state. - Possible to reproduce? - How much time the table should be in CREATING state? - Can I manage this time anyhow? |
|
|
|
|
|
Try to create table w/o some mandatory attribute: AttributeDefinitions, KeySchema, ProvisionedThroughput, TableName. |
|
|
|
|
|
AttributeDefinitions |
|
|
|
|
|
Number of attributes |
|
|
|
|
|
create table with 1 attr |
|
|
|
|
|
What is upper limit? Try max and max+1 "Individual items in an DynamoDB table can have any number of attributes, although there is a limit of 64 KB on the item size. An item size is the sum of lengths of its attribute names and values (binary and UTF-8 lengths)." So, number of attr is limited only by item size. Can be tested only via PutItem? |
|
|
|
|
|
Create a table with key and non-key (and non-index also) attributes. It should fail. Non-key attrs are unacceptable. Note: Test for PutItem: PutItem not containing values for non-key/non-indexed attributes of the table to ensure these attrs are not required. |
Error/exception ? |
|
|
|
|
AttrName |
|
|
|
|
|
Try length of 1 symbol, 255 (upper limit) - these limits are applicable only for key attrs and index projections. Other attrs can have longer names, without explicit limits (just size of the whole item). |
|
|
|
|
|
Try lengh 255+1 for key and indexes attr. |
|
|
|
|
|
Check size of non-key / non-index-projected attr names |
|
|
|
|
|
Try to send attr names without attr types. |
|
|
|
|
|
Create table with attrs of each type: S, N, B. Ensure the data types are applied on put/get operations (it could be covered in Put/Get tests). |
|
|
|
|
|
AWS says regarding local indexes creation: “You can project attributes of any data type, including scalar data types and multi-valued sets.” But how to define projection of Set types if they cannot be assigned to the attributes on table creation stage? |
|
|
|
|
|
Try to create a table with attribute of some SET type. It should not be allowed. |
|
|
|
|
|
KeySchema |
|
|
|
|
|
Create table with a key of HASH type. |
|
|
|
|
|
Create table with a key of HASH and RANGE type. |
|
|
|
|
|
Try to enumerate key attrs in wrong order: RANGE and then HASH attrs in the KeySchema list |
|
|
|
|
|
Try to create a table only with RANGE key |
|
|
|
|
|
Try to leave the list empty |
|
|
|
|
|
Try to add more than one HASH and/or RANGE attr. In general, add more than 2 attrs to the list. |
|
|
|
|
|
Try keytype different from HASH and RANGE. |
|
|
|
|
|
Try not to mention key attr in Definitions but only in KeySchema. |
|
|
|
|
|
Try to mention attr names not defined in AttrDefinitions. |
|
|
|
|
|
ProvisionedThroughput (for now, MagnetoDB ignores these values.) |
|
|
|
|
|
Set positive values. |
|
|
|
|
|
Try to mention not all mandatory attrs |
|
|
|
|
|
Try to pass non-number, negative number |
|
|
|
|
|
TableName |
|
|
|
|
|
Name length is 3 |
|
|
|
|
|
Name length is 255 |
|
|
|
|
|
Name length < 3 |
|
|
|
|
|
Name length > 255 |
|
|
|
|
|
What are the limitations regarding lower and upper case, hyphen and other symbols? Do they correspond to DynamoDB rules? AWS says: “For table and secondary index names, allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot). Names can be between 3 and 255 characters long.” |
|
|
|
|
|
Provide an empty table name. |
exception ? |
|
|
|
|
LocalSecondaryIndexes |
|
|
|
|
|
Create index without some of mandatory attributes. |
|
|
|
|
|
Number of indexes |
|
|
|
|
|
Create 1 index for a table |
|
|
|
|
|
Create 5 indexes for the table |
|
|
|
|
|
Create 6 indexes for the table |
|
|
|
|
|
Set LSI attribute as an empty list |
|
|
|
|
|
“There is a 10 GB size limit per hash key” - how to evaluate it? Generate so many items that size of all hash key value is about 10 GB? |
|
|
|
|
|
IndexName |
|
|
|
|
|
Create an index having 3 characters long name |
|
|
|
|
|
Create an index having 255 characters long name |
|
|
|
|
|
Create an index having 2 characters long name |
|
|
|
|
|
Create an index having 256 characters long name |
|
|
|
|
|
TO BE CLARIFIED: Is it case-sensitive? non-letters? |
|
|
|
|
|
Create 2 tables with similar index names. |
successful |
|
|
|
|
Try to create 2 indexes with the same name in one table |
error |
|
|
|
|
KeySchema |
|
|
|
|
|
Create LSI with Hash different from table hash key (table should have H+R key). |
|
|
|
|
|
Create LSI for table with HASH w/o RANGE. Should fail. But will work for global indexes. |
|
|
|
|
|
Create similar indexes with different names (the same keys, etc) |
|
|
|
|
|
create an index just with HASH key, w/o RANGE |
|
|
|
|
|
‘Repeat’ key schema of the table. “For a local secondary index, the hash key must be the same as the table's hash key, and the range key must be a non-key table attribute.” |
|
|
|
|
|
Test for PutItem: Ensure range key of LSI is not a mandatory attribute. |
|
|
|
|
|
Projection |
|
|
|
|
|
Check usage of all projection types: KEYS_ONLY, INCLUDE, ALL. Query tests verify that it works as expected. |
|
|
|
|
|
Use NonKeyAttributes but skip ProjectionType |
|
|
|
|
|
Use NonKeyAttributes list with one attribute in it |
|
|
|
|
|
Use key attrs in the NonKeyAttributes list |
|
|
|
|
|
Make NonKeyAttributes list empty
|
|
|
|
|
|
Insert some non-key attrs in NonKeyAttributes list when Pr.Type is KEYS_ONLY. Then - similar but with ALL case. |
|
|
|
|
|
Create a table with 20 non-key attrs in one LSI. |
|
|
|
|
|
Create a table with 21 non-key attrs in one LSI. |
|
|
|
|
|
Create a table with 20 non-key attrs in multiple LSIs. |
|
|
|
|
|
Create a table with 21 non-key attrs in diff. LSIs, without repetitions of attr names. |
|
|
|
|
|
Create a table with 21 non-key attrs in diff. LSIs, with repetitions of attr names between LSI’s. |
|
|
|
|
|
GlobalSecondaryIndexes |
|
|
|
|
|
(out of scope now) |
|
|
|
|
|
Response |
|
|
|
|
|
Most of key-values in TableDescription are equal to data from Request |
Check and verify:
|
|
|
|
|
Attrs not present in Request but should be present in Response |
|
|
|
|
|
If LSI are not created, should this attr be present in response as empty list? |
|
|
|
|
|
Think how to check TableSizeBytes value. |
|
|
|
|
|
CreationDateTime verification: Find a way to get current time from the target system |
|
|
|
|
|
Exceptions |
|
|
|
|
|
LimitExceededException: Is related to in-progress states. Not possible to reproduce for now. |
|
|
|
|
|
ResourceInUseException: Recreate existing table (the case was mentioned above) |
|
|
|
|
|
InternalServerError: When this error [500] is expected and when some other error should appear? |
|
|
|
|
|
Additional |
|
|
|
|
|
Create more than 255 tables |
|
|
|
|
|
|
|
|
|
|
DeleteItem
DeleteTable
|
|
|
|
|
|
|
General |
|
|
|
|
|
Delete an existing table. Check if all the Response’s fields (see Table Description object) are equal to the appropriate table parameters |
|
|
|
|
|
Delete a non-existent table |
ResourceNotFoundException |
|
|
|
|
Delete a table specifying “” as a name |
|
|
|
|
|
Delete a table specifying NULL as a name |
|
|
|
|
|
Delete a table w/o specifying any parameters |
|
|
|
|
|
Delete a table having a name that contains only 2 or 1 symbol |
|
|
|
|
|
Delete a table specifying a name that contains more than 255 symbols |
ResourceNotFoundException ? |
|
|
|
|
Delete an existing table and, while the status is DELETING, run DeleteTable operation for the same table once again |
|
|
|
|
|
Results Verification |
|
|
|
|
|
|
|
|
|
|
|
Exceptions |
|
|
|
|
|
Simulate InternalServerError exception. Ideas? |
|
|
|
|
|
Simulate LimitExceededException exception. Ideas? Delete more than 10 tables in the same time |
|
|
|
|
|
Simulate ResourceInUseException exception. Ideas? Delete a table while it is in use by some other operation |
|
|
|
|
|
Simulate ResourceNotFoundException exception. Other ideas? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DescribeTable
|
|
|
|
|
|
|
General |
|
|
|
|
|
Run DescribeTable against the existing table. Check that all the required params are described correctly (see “Response Syntax” for DescribeTable statement) |
|
|
|
|
|
Run DescribeTable against the non-existent table (ResourceNotFoundException exception) |
|
|
|
|
|
Run DescribeTable specifying “” as a table name |
|
|
|
|
|
Run DescribeTable specifying NULL as a name |
|
|
|
|
|
Run DescribeTable w/o specifying any parameters |
|
|
|
|
|
Run DescribeTable specifying a name that contains only 2 or 1 symbol (causes an exception?) |
|
|
|
|
|
Run DescribeTable specifying a name that contains more than 255 symbols |
|
|
|
|
|
Simulate InternalServerError exception |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GetItem
|
|
|
|
|
|
|
General |
|
|
|
|
|
Get an item specifying correct mandatory attributes |
|
|
|
|
|
Get an item specifying all the correct mandatory and optional ttributes |
|
|
|
|
|
TableName |
|
|
|
|
|
Valid (existing) table name |
|
|
|
|
|
Existing table name of 3 symbols |
|
|
|
|
|
Existing table name of 255 symbols |
|
|
|
|
|
From non-existent table name |
|
|
|
|
|
Empty name (“”) |
|
|
|
|
|
Less than 3 symbols long |
|
|
|
|
|
More than 255 symbols long |
|
|
|
|
|
AttributesToGet: |
|
|
|
|
|
Specified, correct items in the list |
|
|
|
|
|
Section not specified |
|
|
|
|
|
“AttributesToGet” term not specified, but there is a list of items in the section |
Exception/error |
|
|
|
|
Section AttributesToGet is specified, but there is just an empty list (no items) |
Exception/error |
|
|
|
|
Specified more attributes than exist in the table |
Exception/error |
|
|
|
|
Incorrect attributes: Wrong names |
Exception/error |
|
|
|
|
Incorrect attributes: Empty values like "" |
Exception/error |
|
|
|
|
Key |
|
|
|
|
|
One Key specified: “B” |
|
|
|
|
|
One Key specified: “N” |
|
|
|
|
|
One Key specified: “S” |
|
|
|
|
|
One key: “BS” |
|
|
|
|
|
One key: “NS” |
|
|
|
|
|
One key: “SS” |
|
|
|
|
|
Combination of "B", "N", "S" types |
|
|
|
|
|
Combination of "B", "N", "S", "BS", "NS", "SS" types |
|
|
|
|
|
Combination of “B”, “B”, "N", "N", “S”, “S”, “BS”, “BS”, "NS", "NS", “SS”, “SS” types |
|
|
|
|
|
The whole section “Key” not specified |
Exception/error |
|
|
|
|
Section “Key” specified, but the section content is empty |
Exception/error |
|
|
|
|
One incorrect key specified: something that is not in ("B", "N", "S", "BS", "NS", "SS") |
Exception/error |
|
|
|
|
In section “Key” there is a key of type “N” but a non-existent value specified for it |
No items returned in Response |
|
|
|
|
ConsistentRead |
|
|
|
|
|
= True |
|
|
|
|
|
= False |
|
|
|
|
|
Not specified |
|
|
|
|
|
= <Something_else> |
|
|
|
|
|
ReturnConsumedCapacity |
|
|
|
|
|
= INDEXES |
|
|
|
|
|
= TOTAL |
|
|
|
|
|
= NONE |
|
|
|
|
|
= <Something_else> |
|
|
|
|
|
Exceptions |
|
|
|
|
|
Simulate ConditionalCheckFailedException |
|
|
|
|
|
Simulate InternalServerError |
|
|
|
|
|
Simulate ItemCollectionSizeLimitExceededException |
|
|
|
|
|
Simulate ProvisionedThroughputExceededException |
|
|
|
|
|
Simulate ResourceNotFoundException |
|
|
|
|
|
|
|
|
|
|
ListTables
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PutItem
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Query
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Scan
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UpdateItem
UpdateTable
==