mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-05 06:23:03 +00:00
Until this patch, in update expressions like "SET a = :val", we only allowed the right-hand-side of the assignment to be a reference to a value stored in the request - like ":val" in the above example. But DynamoDB also allows the value to be an attribute path (e.g., "a.b[3].c", and can also be a function of a bunch of other values. This patch adds supports for parsing all these value types. This patch only adds the correct parsing of these additional types of values, but they are still not supported: reading existing attributes (i.e., read-modify-write operations) is still not supported, and none of the two functions which UpdateExpression needs to support are supported yet. Nevertheless, the parsing is now correct, and the the "unknown_function" test starts to pass. Note that DynamoDB allows the right-hand side of an assignment to be not only a single value, but also value+value and value-value. This possibility is not yet supported by the parser and will be added later. Signed-off-by: Nadav Har'El <nyh@scylladb.com>
Tests for Alternator that should also pass, identically, against DynamoDB.
Tests use the boto3 library for AWS API, and the pytest frameworks (both are available from Linux distributions, or with "pip install").
To run tests against AWS and not just a local Scylla installation, the files ~/.aws/credentials should be configured with your AWS key:
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
and ~/.aws/config with the default region to use in the test:
[default]
region = us-east-1
- Running "pytest" runs all tests.
- To run all tests in a single file, do
pytest test_table.py. - To run a single specific test, do
pytest test_table.py::test_create_table_unsupported_names. - By default test run against a local Scylla installation at
http://localhost:8000. Add the "--aws" option to test against AWS instead
(the us-east-1 region).
For example -
pytest --aws test_item.pyorpytest --aws. - Additional useful pytest options, especially useful for debugging tests:
- -v: show the names of each individual test running instead of just dots.
- -s: show the full output of running tests (by default, pytest captures the test's output and only displays it if a test fails)