-
Notifications
You must be signed in to change notification settings - Fork 96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/list objects eqc addition (squashed) #784
Conversation
- Two EQC properties for listing objects (GET Bucket), one without delimiter and one with delimiter "/". Those properties assert following two are equal: 1. keys from listing objects by repetitive usage of riak_cs_list_objects_fsm_v2 2. active keys from generated [{State, Key},...] - When counterexample is found, states and keys are written to file $PWD/.riak_cs_list_objects_fsm_v2_eqc.txt. Each line consists of line number, status and key. Example output: 1,active,0123456/10 2,scheduled_delete,0123456/1000 - To generate manifests, generator of whole manifests is avoided and generate only states and keys of manifests. The property list-all-objects generates several thousands of nested tuples, #lfs_manifest_v3 and #acl_v2 in this case. But generators of nested tuples seem not so fast. TODOs remaining - prefix of request parameter - non-default max-keys
Clean up the list objects EQC test and start threading the 2i request page size through spawn_link of the FSM. This allows us to test with constants far below 1002. 1002 is a nice size for production 2i queries, but is terrible for getting good shrinks out of QuickCheck.
Added in 0cdb828. |
This has uncovered a new Riak CS bug. When a |
Update, erlcloud does not support the |
I've fixed the lists:last error in 0d2caed, by supporting the NextMarker element. The test is still failing, but it's now failing for a different reason. Progress. |
Smallest failing case for
|
The bug appears to be related to what @shino initially suspected: we incorrectly skip past a prefix, even if it's deleted. When it's deleted, it won't be included in the result set, and we might be skipping past other keys that fall under that prefix but are not deleted. |
Removing the |
I cherry-picked eqc part of |
At the current HEAD (ed88f35), I confirmed
Everything seems nice. I will +1 to that branch after squash! 😂 |
Some of the NextMarker support is missing in the cherry-picking. I'll add it and then re-order the commits. |
Close in favor of #788 |
This PR adds two EQC properties for listing all objects.
Two EQC properties for listing objects (GET Bucket),
one without delimiter and one with delimiter "/".
Those properties assert following two are equal:
riak_cs_list_objects_fsm_v2
When counterexample is found, states and keys are
written to file
$PWD/.riak_cs_list_objects_fsm_v2_eqc.txt
.Each line consists of line number, status and key.
Example output:
To generate manifests, generator of whole manifests is avoided
and generate only states and keys of manifests.
The property list-all-objects generates several thousands of nested tuples,
#lfs_manifest_v3 and #acl_v2 in this case.
But generators of nested tuples seem not so fast.
TODOs remaining (not this PR's TODOs but ones for future)