MagnetoDB/QA/Test cases
Contents
KVSaaS Test Cases
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 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DeleteItem
DeleteTable
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DescribeTable
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GetItem
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ListTables
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PutItem
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Query
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Scan
|
|
|
|
|
|
|
General |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UpdateItem
UpdateTable
==