basho/riak_kv — pull request #747 by jrwest (2013-12-05 07:59:32+00:00)
Title: validate consistent bucket type properties

cc/ @jtuple @russelldb

A bucket type that is consistent must remain so (the property is
immutable) and the n_val of the type may not be changed (for the type
or its buckets). A type that has consistent=true is consisdered to be
strongly-cosnsitent regardless of the values of other properties
including the datatype property -- strong-consistency may use this
property for its own purposes in the future. Untyped buckets (default
bucket type) cannot be strongly consistent.

The eqc tests have been updated to reflect the changes.

Other Notes:
* The consistent property is validated in two paths depending on if the
type is consistent or not. This is a bit meh.
* It is assumed that the value of allow_mult does not matter to strong
consistency and thus it is not validated (besides being a valid boolean)
for this path
* The datatype property is not validated if the type is strongly-cosnsitent.
This is because, what the property will mean is still undefined.
* I may have butchered prop_merges() a bit (the most at least). As validation
grows we may want to re-think how we build the expected set in the property