| Index: sitescripts/stats/test/logprocessor.py |
| =================================================================== |
| --- a/sitescripts/stats/test/logprocessor.py |
| +++ b/sitescripts/stats/test/logprocessor.py |
| @@ -61,26 +61,34 @@ class Test(unittest.TestCase): |
| country = None |
| class FakeGeo(object): |
| ip_checked = None |
| def country_code_by_addr(self, ip): |
| self.ip_checked = ip |
| return country |
| tests = [ |
| - ("1.2.3.4", "xy", "1.2.3.4", "xy"), |
| - ("::ffff:1.2.3.4", "xy", "1.2.3.4", "xy"), |
| - ("1.2.3.4", "--", "1.2.3.4", "unknown"), |
| - ("1.2.3.4", "", "1.2.3.4", "unknown"), |
| - ("::ffff:1.2.3.4", None, "1.2.3.4", "unknown"), |
| + ("1.2.3.4", "xy", "1.2.3.4", "v4", "xy"), |
| + ("::ffff:1.2.3.4", "xy", "1.2.3.4", "v4", "xy"), |
| + ("1.2.3.4", "--", "1.2.3.4", "v4", "unknown"), |
| + ("1.2.3.4", "", "1.2.3.4", "v4", "unknown"), |
| + ("::ffff:1.2.3.4", None, "1.2.3.4", "v4", "unknown"), |
| + ("::1", "xy", "::1", "v6", "xy"), |
| + ("FE80:0000:0000:0000:0202:B3FF:FE1E:8329", None, "FE80:0000:0000:0000:0202:B3FF:FE1E:8329", "v6", "unknown"), |
| ] |
| - for ip, country, expected_ip, expected_country in tests: |
| + for ip, country, expected_ip, expected_type, expected_country in tests: |
| fake_geo = FakeGeo() |
| - self.assertEqual(logprocessor.process_ip(ip, fake_geo), (expected_ip, expected_country), "Processing IP '%s'" % ip) |
| - self.assertEqual(fake_geo.ip_checked, expected_ip, "GeoIP check for IP '%s'" % ip) |
| + fake_geov6 = FakeGeo() |
| + self.assertEqual(logprocessor.process_ip(ip, fake_geo, fake_geov6), (expected_ip, expected_country), "Processing IP '%s'" % ip) |
| + if expected_type == "v4": |
| + self.assertEqual(fake_geo.ip_checked, expected_ip, "GeoIP check for IP '%s'" % ip) |
| + self.assertEqual(fake_geov6.ip_checked, None, "GeoIPv6 check for IP '%s'" % ip) |
| + else: |
| + self.assertEqual(fake_geo.ip_checked, None, "GeoIP check for IP '%s'" % ip) |
| + self.assertEqual(fake_geov6.ip_checked, expected_ip, "GeoIPv6 check for IP '%s'" % ip) |
| def test_timeparsing(self): |
| tests = [ |
| ("31/Jul/2013:12:03:37", 0, 0, datetime(2013, 07, 31, 12, 03, 37), "201307"), |
| ("31/Jul/2013:12:03:37", 5, 0, datetime(2013, 07, 31, 7, 03, 37), "201307"), |
| ("31/Jul/2013:12:03:37", -5, 0, datetime(2013, 07, 31, 17, 03, 37), "201307"), |
| ("31/Jul/2013:12:03:37", 5, 30, datetime(2013, 07, 31, 6, 33, 37), "201307"), |
| ("31/Jul/2013:12:03:37", -5, 30, datetime(2013, 07, 31, 17, 33, 37), "201307"), |
| @@ -572,17 +580,17 @@ class Test(unittest.TestCase): |
| "fullPlatform": "chromium 28.0", |
| "downloadInterval": "1 day(s)", |
| "firstInDay": True, |
| } |
| ), |
| ] |
| for line, expected_record in tests: |
| logprocessor.mirror_name = "mirror123" |
| - self.assertEqual(logprocessor.parse_record(line, set(), FakeGeo()), expected_record, "Parsing log line '%s'" % line) |
| + self.assertEqual(logprocessor.parse_record(line, set(), FakeGeo(), FakeGeo()), expected_record, "Parsing log line '%s'" % line) |
| def test_record_adding(self): |
| tests = [ |
| ( |
| {"size": 200}, |
| {}, |
| (), |
| {"hits": 1, "bandwidth": 200}, |