reverbrain/elliptics — pull request #565 by shaitan (2014-12-02 16:15:55+00:00)
Title: Fixes & updates

## Updates
* allowed `elliptics.Id` to be initialized by any iterable object and group
* replaced `cPickle` by `msgpack` for packing intermediate results in recovery - it speeded up merging phase
* added new recovery statistics:
* `total_keys` - total number of keys that will be recovered / processed - available only at `dc` mode
* `recovery_speed` - average speed of recovering which is measured in keys per second
* `iteration_speed` - average speed of iteration which is also measured in keys per second
* added ability to iterate keys without metadata (user_flags and timestamp):
* added '-M' option to dnet_recovery which speedups iteration phases of recovery but sacrifices checking metadata. Recovery with this option will not check metadata, will not replace old records by new ones, but will only copy some available replica of keys to groups which do not have these keys.

## Fixes
* fixed `elapsed_time` of async_result calculation and provided start/stop timestamps of async_result
* fixed `PyEval_InitThreads` at `gil_guard()` - some times it crashes python on trusty
* fixed parsing `group` from config - negative group is improper

## Tests
* disabled srw in the cluster for test_specific_cases
* added tests of iteration
* updated tests of recovery: made some cases use new option '-M'

## Others
* cleaned up python scripts
* moved server fixture to conftest and made server (elliptics testing cluster) session-wide - made pytests to control lifetime of all server nodes