At the moment a typical upgrade/downgrade test consists of:
* table creation
* data insertion
* a selection of data
This end-to-end actions are now called a test set
For a given configuration of a ring with capabilities a test set may have
to terminate after the table creation stage, or the data insertion one
The purpose of this refactoring is to:
* make it possible to have tests that implment as little or as much
of a full test set as required
* make the test set exendable for other tests like deletion/list keys
In addition the upgrade/downgrade runner has been seperated out into a
part file.
The purpose of this is to make it explicit to the writer of a new test
exactly what they have to do to write a successful up/down test
Tuck the node up-/downgrade, table creation and query checking conveniences
into ts_updown_util, to be used from actual CT modules, such as
ts_updowngrade_select_aggregation_SUITE (included).
Iterate over all possible combinations of tables created on upgraded or
downgraded nodes, queried from up-/downgraded nodes, in progression
[uuu, uud, udd, ddd, ddu, duu, uuu].
with some renaming and code prettification.
The rt_slave.erl is a derivative work of OTP/common_test/ct_slave.erl,
which needed to be fixed wrt handling of host names. In particular, it
proved annoyingly problematic to create a slave node with a simple
ct_slave:start(fafa).
See http://erlang.org/pipermail/erlang-questions/2016-February/087632.html
it's less noisy and a bit faster than doing it with two riak-admin
commands (which ts_util:create_and_activate_bucket_type uses).
I wonder if the ts_util function could be migrated to use direct query
as well.
A squash of the following commits:
* First cut of upgrade/downgrade
Also includes a spelling fix for 'aggregration'
* Experimental branch of riak_test that includes the capability to force downgrade and upgrade the client
* whitespace cleanup, copyright year update
* ensure ts_util:assert brings a ct test down
* This is the 5th commit message:
take care to fuzzy-compare those floats in returned rows
* don't bother reloading protobuff, but do reload riak_pb mods & apps
* always dumbly drop 'ok' from query returned tuple
* trivial code touchups
* remove client up/downgrade code, extra io:format's; use 3 nodes not 5