Index: sitescripts/stats/test/logprocessor.py |
=================================================================== |
--- a/sitescripts/stats/test/logprocessor.py |
+++ b/sitescripts/stats/test/logprocessor.py |
@@ -119,125 +119,136 @@ class Test(unittest.TestCase): |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"", |
"", |
"unknown/unknown", |
"unknown/unknown", |
"unknown/unknown", |
"unknown", |
+ "unknown", |
"", |
), |
( |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"addonName=adblockplus&addonVersion=2.3.1&application=firefox&applicationVersion=22.0a1&platform=gecko&platformVersion=23.0&lastVersion=0", |
"-", |
"adblockplus/2.3.1", |
"firefox/22.0", |
"gecko/23.0", |
"unknown", |
+ "unknown", |
"firstDownload", |
), |
( |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"addonName=adblockplus&addonVersion=2.3.1&platform=gecko&platformVersion=23.0&lastVersion=201307311200", |
"-", |
"adblockplus/2.3.1", |
"unknown/unknown", |
"gecko/23.0", |
"0 hour(s)", |
+ "same day", |
"", |
), |
( |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"addonName=adblockplus&addonVersion=2.3.1&platform=gecko&platformVersion=23.0&lastVersion=201307302200", |
"-", |
"adblockplus/2.3.1", |
"unknown/unknown", |
"gecko/23.0", |
"14 hour(s)", |
+ "1 day(s)", |
"firstInDay", |
), |
( |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"addonName=adblockplus&addonVersion=2.3.1&platform=gecko&platformVersion=23.0&lastVersion=201307282200", |
"-", |
"adblockplus/2.3.1", |
"unknown/unknown", |
"gecko/23.0", |
"2 day(s)", |
+ "3 day(s)", |
"firstInWeek firstInDay", |
), |
( |
datetime(2013, 8, 2, 12, 03, 00), |
"easylist.txt", |
"addonName=adblockplus&addonVersion=2.3.1&platform=gecko&platformVersion=23.0&lastVersion=201307311200", |
"-", |
"adblockplus/2.3.1", |
"unknown/unknown", |
"gecko/23.0", |
"2 day(s)", |
+ "2 day(s)", |
"firstInMonth firstInDay", |
), |
( |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"addonName=adblockplus&addonVersion=2.3.1&platform=gecko&platformVersion=23.0&lastVersion=201306302200", |
"-", |
"adblockplus/2.3.1", |
"unknown/unknown", |
"gecko/23.0", |
"1 month(s)", |
+ "1 month(s)", |
"firstInMonth firstInWeek firstInDay", |
), |
( |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"addonName=adblockplus&addonVersion=2.3.1&platform=gecko&platformVersion=23.0&lastVersion=201305302200", |
"-", |
"adblockplus/2.3.1", |
"unknown/unknown", |
"gecko/23.0", |
"2 month(s)", |
+ "2 month(s)", |
"firstInMonth firstInWeek firstInDay", |
), |
( |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"addonName=adblockplus&addonVersion=2.3.1&platform=gecko&platformVersion=23.0.1&lastVersion=201206302200", |
"-", |
"adblockplus/2.3.1", |
"unknown/unknown", |
"gecko/23.0", |
"1 year(s)", |
+ "1 year(s)", |
"firstInMonth firstInWeek firstInDay", |
), |
( |
datetime(2013, 07, 31, 12, 03, 00), |
"easylist.txt", |
"_=1375142394357", |
"AdBlock/2.5.4", |
"chromeadblock/2.5.4", |
"unknown/unknown", |
"unknown/unknown", |
"unknown", |
+ "unknown", |
"" |
), |
] |
- for time, file, query, clientid, expected_addon, expected_application, expected_platform, expected_interval, expected_flags in tests: |
+ for time, file, query, clientid, expected_addon, expected_application, expected_platform, expected_interval, expected_previous, expected_flags in tests: |
info = {"time": time, "file": file, "query": query, "clientid": clientid} |
logprocessor.parse_downloader_query(info) |
self.assertEqual("%s/%s" % (info["addonName"], info["addonVersion"]), expected_addon, "Add-on for query '%s'" % query) |
self.assertEqual("%s/%s" % (info["application"], info["applicationVersion"]), expected_application, "Application for query '%s'" % query) |
self.assertEqual("%s/%s" % (info["platform"], info["platformVersion"]), expected_platform, "Platform for query '%s'" % query) |
self.assertEqual(info["downloadInterval"], expected_interval, "Download interval for query '%s'" % query) |
+ self.assertEqual(info["previousDownload"], expected_previous, "Previous download for query '%s'" % query) |
flags = [] |
for flag in ("firstDownload", "firstInMonth", "firstInWeek", "firstInDay"): |
if flag in info: |
flags.append(flag) |
self.assertEqual(" ".join(flags), expected_flags, "Flags for query '%s'" % query) |
def test_nameparsing(self): |
@@ -388,16 +399,17 @@ class Test(unittest.TestCase): |
"fullAddon": "adblockplusie 2.0", |
"application": "msie64", |
"applicationVersion": "10.0", |
"fullApplication": "msie64 10.0", |
"platform": "libadblockplus", |
"platformVersion": "1.0", |
"fullPlatform": "libadblockplus 1.0", |
"downloadInterval": "unknown", |
+ "previousDownload": "unknown", |
"firstDownload": True, |
} |
), |
( |
'1.2.3.4 - - [31/Jul/2013:12:03:08 -0530] "GET /adblockplusandroid-1.1.2.apk HTTP/1.1" 200 49152 "https://adblockplus.org/en/android-install" "Mozilla/5.0 (Linux; U; Android 4.1.2; es-es; GT-I9100 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" "-" https "en-US" "downloads.adblockplus.org" "-"', |
{ |
"mirror": "mirror123", |
"ip": "1.2.3.4", |
@@ -461,16 +473,17 @@ class Test(unittest.TestCase): |
"fullAddon": "adblockplus 2.3.2", |
"application": "firefox", |
"applicationVersion": "22.0", |
"fullApplication": "firefox 22.0", |
"platform": "gecko", |
"platformVersion": "22.0", |
"fullPlatform": "gecko 22.0", |
"downloadInterval": "2 hour(s)", |
+ "previousDownload": "same day", |
} |
), |
( |
'1.2.3.4 - - [31/Jul/2013:12:03:08 -0530] "GET /easylist.txt?_=1375446528229 HTTP/1.1" 200 326120 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36" "-" https "nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4" "easylist-downloads.adblockplus.org" "AdBlock/2.6.2"', |
{ |
"mirror": "mirror123", |
"ip": "1.2.3.4", |
"country": "xy", |
@@ -491,16 +504,17 @@ class Test(unittest.TestCase): |
"fullAddon": "chromeadblock 2.6.2", |
"application": "unknown", |
"applicationVersion": "unknown", |
"fullApplication": "unknown unknown", |
"platform": "unknown", |
"platformVersion": "unknown", |
"fullPlatform": "unknown unknown", |
"downloadInterval": "unknown", |
+ "previousDownload": "unknown", |
} |
), |
( |
'1.2.3.4 - - [31/Jul/2013:12:03:08 -0530] "GET /easylistitaly.txt HTTP/1.1" 200 85879 "-" "-" "-" https "-" "easylist-downloads.adblockplus.org" "-"', |
{ |
"mirror": "mirror123", |
"ip": "1.2.3.4", |
"country": "xy", |
@@ -521,16 +535,17 @@ class Test(unittest.TestCase): |
"fullAddon": "unknown unknown", |
"application": "unknown", |
"applicationVersion": "unknown", |
"fullApplication": "unknown unknown", |
"platform": "unknown", |
"platformVersion": "unknown", |
"fullPlatform": "unknown unknown", |
"downloadInterval": "unknown", |
+ "previousDownload": "unknown", |
} |
), |
( |
'1.2.3.4 - - [31/Jul/2013:12:03:08 -0530] "GET /easylistitaly.tpl HTTP/1.1" 200 85879 "-" "-" "-" https "-" "easylist-downloads.adblockplus.org" "-"', |
{ |
"mirror": "mirror123", |
"ip": "1.2.3.4", |
"country": "xy", |
@@ -571,16 +586,17 @@ class Test(unittest.TestCase): |
"fullAddon": "adblockpluschrome 1.5.3", |
"application": "chrome", |
"applicationVersion": "28.0", |
"fullApplication": "chrome 28.0", |
"platform": "chromium", |
"platformVersion": "28.0", |
"fullPlatform": "chromium 28.0", |
"downloadInterval": "1 day(s)", |
+ "previousDownload": "2 day(s)", |
"firstInDay": True, |
} |
), |
] |
for line, expected_record in tests: |
logprocessor.mirror_name = "mirror123" |
self.assertEqual(logprocessor.parse_record(line, set(), FakeGeo(), FakeGeo()), expected_record, "Parsing log line '%s'" % line) |