Skip to content
This repository has been archived by the owner on Oct 31, 2023. It is now read-only.

Commit

Permalink
Fix VbR BucketVerifier and add tests (#4725)
Browse files Browse the repository at this point in the history
  • Loading branch information
mplebanski authored Sep 13, 2019
1 parent 091078f commit 4dfc1d4
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
4 changes: 3 additions & 1 deletion apps/wasm/vbr.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ def __init__(self,
self.normal_actor_count = redundancy_factor + 1
self.referee_count = referee_count
self.majority = (self.normal_actor_count + self.referee_count) // 2 + 1
self.max_actor_cnt = self.normal_actor_count + self.referee_count

def validate_actor(self, actor):
if actor in self.actors:
Expand Down Expand Up @@ -208,7 +209,8 @@ def compute_verdicts(self) -> None:
if actor in winners else fail)
for actor in self.actors
]
elif self.majority - max_popularity <= self.referee_count:
elif self.majority - max_popularity <= self.referee_count and \
len(self.actors) < self.max_actor_cnt:
self.verdicts = None
self.more_actors_needed = True
else:
Expand Down
45 changes: 45 additions & 0 deletions tests/apps/wasm/test_vbr.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,3 +250,48 @@ def test_r1_result_already_added_value_error():

with pytest.raises(ValueError):
verifier.add_result(actors[1], 1)


def test_r1_with_referee_all_different():
verifier = BucketVerifier(1, SimpleComparator(), 1)

verifier.add_actor(actors[1])
verifier.add_actor(actors[2])

verifier.add_result(actors[1], 1)
verifier.add_result(actors[2], 2)

verifier.add_actor(actors[3])
verifier.add_result(actors[3], 3)

assert verifier.get_verdicts() is not None


def test_r1_with_referee_all_different_with_none():
verifier = BucketVerifier(1, SimpleComparator(), 1)

verifier.add_actor(actors[1])
verifier.add_actor(actors[2])

verifier.add_result(actors[1], 1)
verifier.add_result(actors[2], None)

verifier.add_actor(actors[3])
verifier.add_result(actors[3], 3)

assert verifier.get_verdicts() is not None


def test_r1_with_referee_none_result():
verifier = BucketVerifier(1, SimpleComparator(), 1)

verifier.add_actor(actors[1])
verifier.add_actor(actors[2])

verifier.add_result(actors[1], None)
verifier.add_result(actors[2], 2)

verifier.add_actor(actors[3])
verifier.add_result(actors[3], None)

assert verifier.get_verdicts() is not None

0 comments on commit 4dfc1d4

Please # to comment.