]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
Relax Throttle::_reset_max conditions and associated unit tests 39/head
authorLoic Dachary <loic@dachary.org>
Sun, 20 Jan 2013 11:35:10 +0000 (11:35 +0000)
committerLoic Dachary <loic@dachary.org>
Tue, 5 Feb 2013 19:06:04 +0000 (20:06 +0100)
commit64ded02c99a662ec290b8b1d987473df6ee41876
tree77486a3443fd53803565273faff3dfcbdb12aa61
parent4b4dba3061de83dbbcca50e8ecd47cc6e8a071be
Relax Throttle::_reset_max conditions and associated unit tests

Removes a condition in Throttle::_reset_max by which the waiting queue is only
Signal()ed if the new maximum is lower than the current maximum.
There is no evidence of a use case where such a restriction would be
useful. In addition waking up a thread when the maximum increases
gives it a chance to immediately continue the suspended process
instead of waiting for the next put().

Create a new test file covering 100% of src/Throttle.{cc,h} lines of code.
The following methods are tested:

* Throttle::Throttle with and without a maximum
* Throttle::~Throttle when each pending Cond is deleted
* Throttle::take
* Throttle::get when updating the maximum ( lower or higher ),
  when going to sleep waiting for the count to lower under
  the maximum, when going to sleep because another thread is
  already asleep waiting
* Throttle::get_or_fail when there is no maximum,
  when requesting a count that is larger than the maximum, either
  when the current value is under the maximum or above the maximum.
* Throttle::wait when used to reset the maximum and wake up
  another thread asleep waiting

All asserts checking the arguments sanity are exercised ( negative argument
for Throttle::take etc. ).
Adds the LGPLv2+ licensing terms to COPYING along with the others.
Adds a Contributors section to the AUTHORS file.

Notes:
Testing asserts outputs verbose error messages that should be silenced
but it does not seem possible.

Signed-off-by: Loic Dachary <loic@dachary.org>
AUTHORS
COPYING
src/Makefile.am
src/common/Throttle.cc
src/test/common/Throttle.cc [new file with mode: 0644]