Skip to content

Commit

Permalink
Refs. #13. Add tests for the batched report/whitelist functionality.
Browse files Browse the repository at this point in the history
  • Loading branch information
alexkiro committed Jul 11, 2014
1 parent 2e06dee commit c3c6672
Show file tree
Hide file tree
Showing 4 changed files with 125 additions and 2 deletions.
4 changes: 2 additions & 2 deletions pyzor/client.py
Expand Up @@ -186,8 +186,8 @@ class BatchClient(Client):

def __init__(self, accounts=None, timeout=None, spec=None):
Client.__init__(self, accounts=accounts, timeout=timeout, spec=spec)
self.r_request = collections.defaultdict(self._new_r_request())
self.w_request = collections.defaultdict(self._new_w_request())
self.r_request = collections.defaultdict(self._new_r_request)
self.w_request = collections.defaultdict(self._new_w_request)

def _new_r_request(self):
return pyzor.message.ReportRequest(spec=self.spec)
Expand Down
2 changes: 2 additions & 0 deletions tests/functional/__init__.py
Expand Up @@ -16,6 +16,7 @@ def suite():
import test_pyzor
import test_mysql
import test_redis
import test_server
import test_digest
import test_account
import test_forwarder
Expand All @@ -27,6 +28,7 @@ def suite():
test_suite.addTest(test_redis.suite())
test_suite.addTest(test_pyzor.suite())
test_suite.addTest(test_digest.suite())
test_suite.addTest(test_server.suite())
test_suite.addTest(test_account.suite())
test_suite.addTest(test_forwarder.suite())
return test_suite
Expand Down
1 change: 1 addition & 0 deletions tests/functional/test_pyzor.py
Expand Up @@ -156,6 +156,7 @@ def test_digest(self):
out = self.check_pyzor("digest", None, input=msg).strip()
self.assertEqual(out.decode("utf8"), digest)


class MultipleServerPyzorScriptTest(PyzorTestBase):
password_file = None
access = """ALL : anonymous : allow
Expand Down
120 changes: 120 additions & 0 deletions tests/functional/test_server.py
@@ -0,0 +1,120 @@
import sys
import redis
import unittest

import pyzor.client

from tests.util import *

class BatchedDigestsTest(PyzorTestBase):
password_file = None
access = """ALL : anonymous : allow
"""
servers = """127.0.0.1:9999
127.0.0.1:9998
"""

def setUp(self):
PyzorTestBase.setUp(self)
self.client = pyzor.client.BatchClient()

def check_digest(self, digest, address, counts=(0, 0)):
result = self.client.check(digest, address)

self.assertEqual((int(result["Count"]), int(result["WL-Count"])),
counts)
return result

def test_batched_report(self):
digest = "da39a3ee5e6b4b0d3255bfef95601890afd80709"

for i in range(9):
self.client.report(digest, ("127.0.0.1", 9999))
self.check_digest(digest, ("127.0.0.1", 9999))

self.client.report(digest, ("127.0.0.1", 9999))
self.check_digest(digest, ("127.0.0.1", 9999), (10, 0))


def test_batched_whitelist(self):
digest = "da39a3ee5e6b4b0d3255bfef95601890afd80708"

for i in range(9):
self.client.whitelist(digest, ("127.0.0.1", 9999))
self.check_digest(digest, ("127.0.0.1", 9999))

self.client.whitelist(digest, ("127.0.0.1", 9999))
self.check_digest(digest, ("127.0.0.1", 9999), (0, 10))

def test_batched_combined(self):
digest = "da39a3ee5e6b4b0d3255bfef95601890afd80707"

for i in range(9):
self.client.report(digest, ("127.0.0.1", 9999))
self.client.whitelist(digest, ("127.0.0.1", 9999))
self.check_digest(digest, ("127.0.0.1", 9999))

self.client.report(digest, ("127.0.0.1", 9999))
self.check_digest(digest, ("127.0.0.1", 9999), (10, 0))

self.client.whitelist(digest, ("127.0.0.1", 9999))
self.check_digest(digest, ("127.0.0.1", 9999), (10, 10))

def test_batched_multiple_report(self):
digest = "%sa39a3ee5e6b4b0d3255bfef95601890afd80706"
for i in range(10):
self.client.report(digest % i, ("127.0.0.1", 9999))

for i in range(10):
self.check_digest(digest % i, ("127.0.0.1", 9999), (1, 0))

def test_batched_multiple_whitelist(self):
digest = "%sa39a3ee5e6b4b0d3255bfef95601890afd80705"
for i in range(10):
self.client.whitelist(digest % i, ("127.0.0.1", 9999))

for i in range(10):
self.check_digest(digest % i, ("127.0.0.1", 9999), (0, 1))

def test_multiple_addresses_report(self):
digest1 = "da39a3ee5e6b4b0d3255bfef95601890afd80704"
digest2 = "da39a3ee5e6b4b0d3255bfef95601890afd80703"
for i in range(9):
self.client.report(digest1, ("127.0.0.1", 9999))
self.client.report(digest2, ("127.0.0.1", 9998))

self.check_digest(digest1, ("127.0.0.1", 9999))
self.check_digest(digest2, ("127.0.0.1", 9998))

self.client.report(digest1, ("127.0.0.1", 9999))
self.check_digest(digest1, ("127.0.0.1", 9999), (10, 0))

self.client.report(digest2, ("127.0.0.1", 9998))
self.check_digest(digest2, ("127.0.0.1", 9998), (10, 0))

def test_multiple_addresses_whitelist(self):
digest1 = "da39a3ee5e6b4b0d3255bfef95601890afd80702"
digest2 = "da39a3ee5e6b4b0d3255bfef95601890afd80701"
for i in range(9):
self.client.whitelist(digest1, ("127.0.0.1", 9999))
self.client.whitelist(digest2, ("127.0.0.1", 9998))

self.check_digest(digest1, ("127.0.0.1", 9999))
self.check_digest(digest2, ("127.0.0.1", 9998))

self.client.whitelist(digest1, ("127.0.0.1", 9999))
self.check_digest(digest1, ("127.0.0.1", 9999), (0, 10))

self.client.whitelist(digest2, ("127.0.0.1", 9998))
self.check_digest(digest2, ("127.0.0.1", 9998), (0, 10))



def suite():
"""Gather all the tests from this module in a test suite."""
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.makeSuite(BatchedDigestsTest))
return test_suite

if __name__ == '__main__':
unittest.main()

0 comments on commit c3c6672

Please sign in to comment.