-
Notifications
You must be signed in to change notification settings - Fork 72
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
Riak Test v1.1.0 #786
base: master
Are you sure you want to change the base?
Riak Test v1.1.0 #786
Conversation
@@ -0,0 +1,38 @@ | |||
#!/bin/bash |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we remove this script prior to merge? We had always intended to remove it, but it may prove useful until for verifying changes until the v1 wrapper is dropped in v2.0.0.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's still useful for now. Easy to remove later.
Notes on the planner design
Ideally, we have a pipeline constructed with the following stages:
Each of these stages can emit a test_result event that is broadcast to a list of reporters (e.g. console, giddyup). A planner stage accepts a list of tests, backends, and groups and creates a set of test plans to be scheduled for execution. The following is (roughly) the test planner API I have in mind:
A scheduler stage accepts a test plan, reserves the quantity of nodes requested by the plan, and submits the schedule to an executor stage for execution. The following is (roughly) the test scheduler API I have in mind:
Finally, a Runner stage provisions the nodes allocated in the test schedule, executes the test specified in the test schedule, and reports the results of the test run the to reporters. The following is (roughly) the API I have in mind:
Based on this (high-level) design, I propose the following refactorings:
/cc @javajolt |
* Change riak_test API to add a properties and setup function in addition to confirm. The goal is to remove test environment specification from actual test case logic. * Change confirm/0 to confirm/2 to accept data about the test environment as input. * Add capability for any test to be run as a rolling upgrade test. * Add rt_cluster module with some supporting functions. * Change verify_build_cluster and secondary_index_tests modules to conform to the new API in order to demonstrate the changes.
- functions include set_conf/2, set_advanced_conf/2, and update_app_config/2.
- Move rt module functions to new rt_http module. - Convert http_bucket_types to new test convention.
- Have lager fire up an extra handler for each test run - Place lager output in riak_test.log and upload to GiddyUp - Remove rt.hrl and move the rt_webhook record into giddyup.erl - Remove unused GiddyUp code from escript - Let the test_runner know the name of the log directory so it knows where to put the riak_test.log - Add separate flag to rt_reporter to indicate the need to upload files to GiddyUp - Always copy log files to local directory before uploading to GiddyUp
- Always copy log files to local directory - Removed unused command-line options in escript - Get rid of extraneous commented-out code - Move as much GiddyUp-specific logic into `giddyup' - Correctly upload config files - Upload files asynchronously to scheduler can reclaim used nodes
15a7493
to
d50506c
Compare
Add a few notes about debugging and version info
…ddyup_host is not set in config file
Add comment and example of `continue_on_fail'
rt_harness_util:deploy_nodes/5 to handle cuttlefish
- Default backend in rt_planner is now undefined - All lists of backends are now atoms - Command-line limits backends when using GiddyUp - Command-line now properly generates multiple tests when a list of backends is specified - "multi" backend added for verify_2i_aae-multi for GiddyUp
7edbe91
to
deebded
Compare
tuples when building a cluster
- rt_host defines a protocol for performing operations on a host (e.g. exec, mkdir, etc). Adds rt_local_host for working on a local host - Moves various general purpose functions to rt_util - Introduces rt_driver to define extension points for product specific test planning and scheduling activities
- Required to get legacy upgrade tests to pass (e.g. BTA-231, BTA-232) - Upgrade path name is in rt_test_plan currently for execution - Fix get_node_logs/0 for verify_handoff_mixed (BTA-75), yz_rs_migration_test and yz_solr_start_timeout - Fix rtdev:node_id/0 for kv679_dataloss (BTA-218) and verify_riak_stats (BTA-174)
- Changed hard-coded devrel path in test - Update relpath/1 to resolve new version paths
cluster construction from rt_riak_cluster.
This PR is not intended to be merged at this time. It is being used to review the work done thus far, and begin the process of cleanup for merge into master.
Riak Test v1.1.0 ... more writeup to come.
/cc @javajolt