Mforns has uploaded a new change for review. https://gerrit.wikimedia.org/r/223031
Change subject: Add agrgegation across projects ...................................................................... Add agrgegation across projects With this change, a new file 'all.csv' will be created for the raw_daily data as well as for each additional aggregator (daily, weekly_rescaled, etc.). This file will contain an aggregation across all projects. Bug: T95339 Change-Id: Ieee012e60d2286e450779cabf253d6a1f11578b4 --- M aggregator/projectcounts.py M aggregator/util.py A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-010000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-020000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-030000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-040000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-050000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-060000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-070000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-080000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-090000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-100000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-110000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-120000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-130000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-140000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-150000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-160000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-170000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-180000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-190000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-200000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-210000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-220000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-230000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-000000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-010000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-020000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-030000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-040000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-050000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-060000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-070000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-080000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-090000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-100000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-110000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-120000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-130000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-140000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-150000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-160000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-170000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-180000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-190000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-200000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-210000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-220000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-230000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-000000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-010000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-020000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-030000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-040000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-050000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-060000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-070000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-080000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-090000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-100000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-110000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-120000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-130000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-140000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-150000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-160000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-170000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-180000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-190000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-200000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-210000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-220000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-230000 A tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141104-000000 M tests/test_projectcounts/test_per_project_aggregation.py M tests/test_util.py 76 files changed, 387 insertions(+), 24 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/analytics/aggregator refs/changes/31/223031/1 diff --git a/aggregator/projectcounts.py b/aggregator/projectcounts.py index 75c7f5e..32f391a 100644 --- a/aggregator/projectcounts.py +++ b/aggregator/projectcounts.py @@ -497,6 +497,9 @@ :param force_recomputation: If True, recompute data for the given days, even if it is already in the CSV. (Default: False) """ + # Contains the aggregation of all data across projects indexed by date. + all_projects_data = {} + for csv_file_abs in sorted(glob.glob(os.path.join( target_dir_abs, 'daily_raw', '*.csv'))): logging.info("Updating csv '%s'" % (csv_file_abs)) @@ -545,20 +548,69 @@ count_mobile if date >= DATE_MOBILE_ADDED else None, count_zero if date >= DATE_MOBILE_ADDED else None) - util.write_dict_values_sorted_to_csv( - csv_file_abs, + _write_raw_and_aggregated_csv_data( + target_dir_abs, + dbname, csv_data, - header=CSV_HEADER) + first_date, + last_date, + additional_aggregators, + bad_dates, + force_recomputation) - for additional_aggregator in additional_aggregators: - additional_aggregator( - target_dir_abs, - dbname, - csv_data, - first_date, - last_date, - bad_dates=bad_dates, - force_recomputation=force_recomputation) + # Aggregates values across all projects + util.merge_sum_csv_data_dict(all_projects_data, csv_data) + + # Writes aggregations across all projects + _write_raw_and_aggregated_csv_data( + target_dir_abs, + 'all', + all_projects_data, + first_date, + last_date, + additional_aggregators, + bad_dates, + force_recomputation) + + +def _write_raw_and_aggregated_csv_data( + target_dir_abs, dbname, csv_data, first_date, last_date, + additional_aggregators, bad_dates, force_recomputation): + """ + Writes the data passed in the csv_data dict to various destinations: + + 1. Writes the raw data (as it comes in the csv_data dict), to: + <target_dir_abs>/daily_raw/<dbname>.csv + + 2. Uses each aggregator in additional_aggregators to write the data + to the aggregator's specific location. Note: Some of this method's + parameters are just forwarded to these aggregators. + + :param target_dir_abs: Absolute directory of the per project CSVs. + :param dbname: The database name of the wiki to consider (E.g.: 'enwiki') + :param csv_data: The dict containing the data to be written. + :param first_date: The first date to write non-existing data for. + :param last_date: The last date to write non-existing data for. + :param additional_aggregators: See update_per_project_csvs_for_dates. + :param bad_dates: List of dates considered having bad data. + :param force_recomputation: If True, recompute data for the given days. + """ + csv_file_abs = os.path.join(target_dir_abs, 'daily_raw', dbname + '.csv') + + util.write_dict_values_sorted_to_csv( + csv_file_abs, + csv_data, + header=CSV_HEADER) + + for additional_aggregator in additional_aggregators: + additional_aggregator( + target_dir_abs, + dbname, + csv_data, + first_date, + last_date, + bad_dates=bad_dates, + force_recomputation=force_recomputation) def _get_validity_issues_for_aggregated_projectcounts_generic( diff --git a/aggregator/util.py b/aggregator/util.py index 9527b6d..6853521 100644 --- a/aggregator/util.py +++ b/aggregator/util.py @@ -21,6 +21,7 @@ import datetime import os +from operator import add WEBSTATSCOLLECTOR_WHITELISTED_WIKIMEDIA_WIKIS = [ 'commons', @@ -205,3 +206,36 @@ line += ',%s' % ('' if column is None else column) csv_data[first_column] = line return csv_data + + +def merge_sum_csv_data_dict(csv_data_1, csv_data_2): + """ + Merge csv_data_2 into csv_data_1, accumulating values. + + The two dicts have to be of the form dict<key: str, value: str> + and their value format should be 'date,int,int,int,int'. + If any of those is incorrect, a ValueError is raised. + + The merged values will be the cross sum of all integer operators, + with the exception of the first integer column, that will hold + the sum of the other integer columns: + 'date,int1a,int1b,int1c,int1d' + 'date,int2a,int2b,int2c,int2d' = + 'date,<sumOfTheOtherInts>,int1b+int2b,int1c+int2c,int1d+int2d' + Note that the date will always be the same on both sides, + and will remain unchanged. + + :param csv_data_1: The data dict to be merged on. + :param csv_data_2: The data dict to be added from. + """ + parse = lambda vs: [int(v.strip()) for v in vs.split(',')[2:5]] + build = lambda d, vs: ','.join([d, str(sum(vs))] + [str(v) for v in vs]) + + for date in csv_data_2: + + value_1 = parse(csv_data_1[date]) if date in csv_data_1 else [0, 0, 0] + value_2 = parse(csv_data_2[date]) + if len(value_1) != 3 or len(value_2) != 3: + raise ValueError('Cannot parse CSV data dict value.') + + summed_value = map(add, value_1, value_2) + csv_data_1[date] = build(date, summed_value) diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-010000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-010000 new file mode 100644 index 0000000..20a5299 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-010000 @@ -0,0 +1,3 @@ +en - 3 100 +de - 2 100 +fr - 5 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-020000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-020000 new file mode 100644 index 0000000..db54213 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-020000 @@ -0,0 +1,2 @@ +en - 8 100 +fr - 9 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-030000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-030000 new file mode 100644 index 0000000..2ba29f4 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-030000 @@ -0,0 +1 @@ +de - 9 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-040000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-040000 new file mode 100644 index 0000000..f7e2efc --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-040000 @@ -0,0 +1,2 @@ +de - 7 100 +fr - 4 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-050000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-050000 new file mode 100644 index 0000000..f0f4ceb --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-050000 @@ -0,0 +1,3 @@ +en - 10 100 +de - 3 100 +fr - 4 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-060000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-060000 new file mode 100644 index 0000000..550d23f --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-060000 @@ -0,0 +1,2 @@ +de - 5 100 +fr - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-070000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-070000 new file mode 100644 index 0000000..8cd13be --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-070000 @@ -0,0 +1,3 @@ +en - 3 100 +de - 10 100 +fr - 10 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-080000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-080000 new file mode 100644 index 0000000..143f271 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-080000 @@ -0,0 +1,3 @@ +en - 6 100 +de - 5 100 +fr - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-090000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-090000 new file mode 100644 index 0000000..4bdbca3 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-090000 @@ -0,0 +1,3 @@ +en - 2 100 +de - 4 100 +fr - 5 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-100000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-100000 new file mode 100644 index 0000000..d7441c7 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-100000 @@ -0,0 +1,2 @@ +en - 9 100 +fr - 4 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-110000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-110000 new file mode 100644 index 0000000..28320c1 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-110000 @@ -0,0 +1,3 @@ +en - 8 100 +de - 7 100 +fr - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-120000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-120000 new file mode 100644 index 0000000..a411fc0 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-120000 @@ -0,0 +1,2 @@ +en - 6 100 +de - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-130000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-130000 new file mode 100644 index 0000000..79d9344 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-130000 @@ -0,0 +1,3 @@ +en - 1 100 +de - 10 100 +fr - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-140000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-140000 new file mode 100644 index 0000000..0cc611c --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-140000 @@ -0,0 +1,3 @@ +en - 7 100 +de - 6 100 +fr - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-150000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-150000 new file mode 100644 index 0000000..5c990f9 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-150000 @@ -0,0 +1 @@ +de - 10 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-160000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-160000 new file mode 100644 index 0000000..5cbbd36 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-160000 @@ -0,0 +1,2 @@ +de - 7 100 +fr - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-170000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-170000 new file mode 100644 index 0000000..ab12bb5 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-170000 @@ -0,0 +1,2 @@ +en - 10 100 +fr - 5 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-180000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-180000 new file mode 100644 index 0000000..fa98519 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-180000 @@ -0,0 +1,3 @@ +en - 2 100 +de - 4 100 +fr - 2 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-190000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-190000 new file mode 100644 index 0000000..5d9eeee --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-190000 @@ -0,0 +1,2 @@ +de - 4 100 +fr - 3 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-200000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-200000 new file mode 100644 index 0000000..f61ad79 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-200000 @@ -0,0 +1,3 @@ +en - 9 100 +de - 5 100 +fr - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-210000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-210000 new file mode 100644 index 0000000..42cd30b --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-210000 @@ -0,0 +1,3 @@ +en - 4 100 +de - 9 100 +fr - 4 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-220000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-220000 new file mode 100644 index 0000000..f599cc7 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-220000 @@ -0,0 +1,3 @@ +en - 7 100 +de - 1 100 +fr - 4 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-230000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-230000 new file mode 100644 index 0000000..07ec149 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141101-230000 @@ -0,0 +1,2 @@ +en - 8 100 +fr - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-000000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-000000 new file mode 100644 index 0000000..ee33a23 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-000000 @@ -0,0 +1,2 @@ +de - 6 100 +fr - 10 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-010000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-010000 new file mode 100644 index 0000000..b6aee19 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-010000 @@ -0,0 +1,2 @@ +de - 9 100 +fr - 2 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-020000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-020000 new file mode 100644 index 0000000..342f8bb --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-020000 @@ -0,0 +1,2 @@ +en - 3 100 +fr - 10 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-030000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-030000 new file mode 100644 index 0000000..b5d3008 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-030000 @@ -0,0 +1,3 @@ +en - 2 100 +de - 7 100 +fr - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-040000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-040000 new file mode 100644 index 0000000..9b19dea --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-040000 @@ -0,0 +1,3 @@ +en - 5 100 +de - 10 100 +fr - 3 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-050000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-050000 new file mode 100644 index 0000000..1126eaa --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-050000 @@ -0,0 +1,3 @@ +en - 5 100 +de - 5 100 +fr - 3 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-060000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-060000 new file mode 100644 index 0000000..4b01cb0 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-060000 @@ -0,0 +1,2 @@ +de - 1 100 +fr - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-070000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-070000 new file mode 100644 index 0000000..c49e31f --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-070000 @@ -0,0 +1,3 @@ +en - 10 100 +de - 10 100 +fr - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-080000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-080000 new file mode 100644 index 0000000..fe39ef4 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-080000 @@ -0,0 +1,3 @@ +en - 10 100 +de - 6 100 +fr - 5 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-090000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-090000 new file mode 100644 index 0000000..4032e72 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-090000 @@ -0,0 +1,2 @@ +en - 2 100 +fr - 10 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-100000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-100000 new file mode 100644 index 0000000..f1b8aaf --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-100000 @@ -0,0 +1,3 @@ +en - 10 100 +de - 2 100 +fr - 3 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-110000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-110000 new file mode 100644 index 0000000..5d9eeee --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-110000 @@ -0,0 +1,2 @@ +de - 4 100 +fr - 3 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-120000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-120000 new file mode 100644 index 0000000..a3122e3 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-120000 @@ -0,0 +1,3 @@ +en - 9 100 +de - 8 100 +fr - 9 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-130000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-130000 new file mode 100644 index 0000000..a9d5d52 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-130000 @@ -0,0 +1,3 @@ +en - 7 100 +de - 10 100 +fr - 2 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-140000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-140000 new file mode 100644 index 0000000..5ae14a5 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-140000 @@ -0,0 +1 @@ +de - 2 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-150000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-150000 new file mode 100644 index 0000000..d9f9e99 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-150000 @@ -0,0 +1,2 @@ +en - 1 100 +fr - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-160000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-160000 new file mode 100644 index 0000000..5d280f6 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-160000 @@ -0,0 +1,3 @@ +en - 8 100 +de - 4 100 +fr - 8 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-170000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-170000 new file mode 100644 index 0000000..f3b4231 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-170000 @@ -0,0 +1 @@ +en - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-180000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-180000 new file mode 100644 index 0000000..3015d99 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-180000 @@ -0,0 +1,3 @@ +en - 8 100 +de - 1 100 +fr - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-190000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-190000 new file mode 100644 index 0000000..3481f50 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-190000 @@ -0,0 +1,2 @@ +de - 4 100 +fr - 9 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-200000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-200000 new file mode 100644 index 0000000..5b84afe --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-200000 @@ -0,0 +1,2 @@ +en - 2 100 +de - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-210000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-210000 new file mode 100644 index 0000000..fb80dc3 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-210000 @@ -0,0 +1,2 @@ +en - 6 100 +fr - 10 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-220000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-220000 new file mode 100644 index 0000000..fca1e7a --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-220000 @@ -0,0 +1,3 @@ +en - 6 100 +de - 2 100 +fr - 8 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-230000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-230000 new file mode 100644 index 0000000..07dfda7 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141102-230000 @@ -0,0 +1,2 @@ +en - 3 100 +de - 2 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-000000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-000000 new file mode 100644 index 0000000..b9a25ff --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-000000 @@ -0,0 +1,3 @@ +en - 5 100 +de - 6 100 +fr - 2 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-010000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-010000 new file mode 100644 index 0000000..7a7cc98 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-010000 @@ -0,0 +1,3 @@ +en - 4 100 +de - 7 100 +fr - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-020000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-020000 new file mode 100644 index 0000000..e2bfebb --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-020000 @@ -0,0 +1,2 @@ +en - 4 100 +fr - 3 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-030000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-030000 new file mode 100644 index 0000000..769a819 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-030000 @@ -0,0 +1,2 @@ +en - 6 100 +de - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-040000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-040000 new file mode 100644 index 0000000..6f8555c --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-040000 @@ -0,0 +1,2 @@ +en - 4 100 +de - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-050000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-050000 new file mode 100644 index 0000000..7882d2a --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-050000 @@ -0,0 +1,3 @@ +en - 10 100 +de - 9 100 +fr - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-060000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-060000 new file mode 100644 index 0000000..d606e2f --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-060000 @@ -0,0 +1 @@ +de - 3 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-070000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-070000 new file mode 100644 index 0000000..c74e5be --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-070000 @@ -0,0 +1,2 @@ +en - 9 100 +de - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-080000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-080000 new file mode 100644 index 0000000..2466e50 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-080000 @@ -0,0 +1,3 @@ +en - 8 100 +de - 4 100 +fr - 6 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-090000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-090000 new file mode 100644 index 0000000..e37c329 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-090000 @@ -0,0 +1,3 @@ +en - 3 100 +de - 10 100 +fr - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-100000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-100000 new file mode 100644 index 0000000..8d2fa32 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-100000 @@ -0,0 +1,3 @@ +en - 6 100 +de - 1 100 +fr - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-110000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-110000 new file mode 100644 index 0000000..a411fc0 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-110000 @@ -0,0 +1,2 @@ +en - 6 100 +de - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-120000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-120000 new file mode 100644 index 0000000..97476cb --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-120000 @@ -0,0 +1,3 @@ +en - 10 100 +de - 4 100 +fr - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-130000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-130000 new file mode 100644 index 0000000..f193e51 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-130000 @@ -0,0 +1,3 @@ +en - 3 100 +de - 3 100 +fr - 9 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-140000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-140000 new file mode 100644 index 0000000..eaef622 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-140000 @@ -0,0 +1,3 @@ +en - 5 100 +de - 3 100 +fr - 5 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-150000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-150000 new file mode 100644 index 0000000..6ead5be --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-150000 @@ -0,0 +1,3 @@ +en - 6 100 +de - 5 100 +fr - 9 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-160000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-160000 new file mode 100644 index 0000000..88e3715 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-160000 @@ -0,0 +1,2 @@ +en - 1 100 +de - 5 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-170000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-170000 new file mode 100644 index 0000000..25b81aa --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-170000 @@ -0,0 +1,2 @@ +en - 1 100 +de - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-180000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-180000 new file mode 100644 index 0000000..fd852b1 --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-180000 @@ -0,0 +1,3 @@ +en - 6 100 +de - 7 100 +fr - 1 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-190000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-190000 new file mode 100644 index 0000000..47a0c2d --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-190000 @@ -0,0 +1 @@ +en - 2 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-200000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-200000 new file mode 100644 index 0000000..57c813d --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-200000 @@ -0,0 +1,2 @@ +de - 5 100 +fr - 4 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-210000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-210000 new file mode 100644 index 0000000..a5e80dd --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-210000 @@ -0,0 +1,3 @@ +en - 2 100 +de - 2 100 +fr - 7 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-220000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-220000 new file mode 100644 index 0000000..bbb3bab --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-220000 @@ -0,0 +1,3 @@ +en - 5 100 +de - 8 100 +fr - 9 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-230000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-230000 new file mode 100644 index 0000000..5f1c8ef --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141103-230000 @@ -0,0 +1,3 @@ +en - 8 100 +de - 5 100 +fr - 8 100 diff --git a/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141104-000000 b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141104-000000 new file mode 100644 index 0000000..4792cdf --- /dev/null +++ b/tests/test_projectcounts/fixtures/2014-11-3projects-for-aggregation/2014/2014-11/projectcounts-20141104-000000 @@ -0,0 +1,2 @@ +de - 2 100 +fr - 7 100 diff --git a/tests/test_projectcounts/test_per_project_aggregation.py b/tests/test_projectcounts/test_per_project_aggregation.py index c75f400..7b3558e 100644 --- a/tests/test_projectcounts/test_per_project_aggregation.py +++ b/tests/test_projectcounts/test_per_project_aggregation.py @@ -273,19 +273,28 @@ ]) # Checking calls to additional aggregators + expected_dict = { + '2014-11-01': '2014-11-01,24276,24276,0,0', + '2014-11-02': '2014-11-02,48276,48276,0,0', + '2014-11-03': '2014-11-03,72276,72276,0,0' + } self.assertEquals(funcMockParams, [[ self.data_dir_abs, 'enwiki', - { - '2014-11-01': '2014-11-01,24276,24276,0,0', - '2014-11-02': '2014-11-02,48276,48276,0,0', - '2014-11-03': '2014-11-03,72276,72276,0,0' - }, + expected_dict, first_date, last_date, [], False - ]]) + ], [ + self.data_dir_abs, + 'all', + expected_dict, + first_date, + last_date, + [], + False + ]]) def test_update_per_project_additional_aggregators_with_parameters(self): fixture = self.get_fixture_dir_abs( @@ -325,16 +334,52 @@ ]) # Checking calls to additional aggregators + expected_dict = { + '2014-11-01': '2014-11-01,24276,24276,0,0', + '2014-11-02': '2014-11-02,48276,48276,0,0', + '2014-11-03': '2014-11-03,72276,72276,0,0' + } self.assertEquals(funcMockParams, [[ self.data_dir_abs, 'enwiki', - { - '2014-11-01': '2014-11-01,24276,24276,0,0', - '2014-11-02': '2014-11-02,48276,48276,0,0', - '2014-11-03': '2014-11-03,72276,72276,0,0' - }, + expected_dict, first_date, last_date, bad_dates, True - ]]) + ], [ + self.data_dir_abs, + 'all', + expected_dict, + first_date, + last_date, + bad_dates, + True + ]]) + + def test_update_per_project_all_projects_aggregation(self): + fixture = self.get_fixture_dir_abs( + '2014-11-3projects-for-aggregation') + + first_date = datetime.date(2014, 11, 1) + last_date = datetime.date(2014, 11, 3) + + enwiki_file_abs = os.path.join(self.daily_raw_dir_abs, 'enwiki.csv') + dewiki_file_abs = os.path.join(self.daily_raw_dir_abs, 'dewiki.csv') + frwiki_file_abs = os.path.join(self.daily_raw_dir_abs, 'frwiki.csv') + self.create_empty_file(enwiki_file_abs) + self.create_empty_file(dewiki_file_abs) + self.create_empty_file(frwiki_file_abs) + + aggregator.update_per_project_csvs_for_dates( + fixture, + self.data_dir_abs, + first_date, + last_date) + + all_file_abs = os.path.join(self.daily_raw_dir_abs, 'all.csv') + self.assert_file_content_equals(all_file_abs, [ + '2014-11-01,323,323,0,0', + '2014-11-02,321,321,0,0', + '2014-11-03,310,310,0,0', + ]) diff --git a/tests/test_util.py b/tests/test_util.py index 75e4011..34ba5b9 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -408,3 +408,60 @@ "2014-05-12,1,2", "2014-05-13,3,4", ]) + + def test_merge_sum_csv_data_dict_with_empty_add_dict(self): + dict_1 = { + '2014-01-01': '2014-01-01,6,3,2,1', + '2014-01-02': '2014-01-02,9,4,3,2', + } + dict_2 = {} + aggregator.merge_sum_csv_data_dict(dict_1, dict_2) + self.assertEqual(dict_1, dict_1) + + def test_merge_sum_csv_data_dict_with_empty_base_dict(self): + dict_1 = {} + dict_2 = { + '2014-01-01': '2014-01-01,6,3,2,1', + '2014-01-02': '2014-01-02,9,4,3,2', + } + aggregator.merge_sum_csv_data_dict(dict_1, dict_2) + self.assertEqual(dict_1, dict_2) + + def test_merge_sum_csv_data_dict_with_update(self): + dict_1 = { + '2014-01-01': '2014-01-01,6,3,2,1', + '2014-01-03': '2014-01-03,12,5,4,3', + } + dict_2 = { + '2014-01-01': '2014-01-01,6,2,3,1', + '2014-01-02': '2014-01-02,6,4,2,3', + } + aggregator.merge_sum_csv_data_dict(dict_1, dict_2) + expected = { + '2014-01-01': '2014-01-01,12,5,5,2', + '2014-01-02': '2014-01-02,9,4,2,3', + '2014-01-03': '2014-01-03,12,5,4,3', + } + self.assertEqual(dict_1, expected) + + def test_merge_sum_csv_data_dict_with_wrong_value(self): + dict_1 = {} + dict_2 = { + '2014-01-01': 'wrong value', + } + nose.tools.assert_raises( + ValueError, + aggregator.merge_sum_csv_data_dict, + dict_1, + dict_2) + + def test_merge_sum_csv_data_dict_with_non_integers(self): + dict_1 = {} + dict_2 = { + '2014-01-01': '2014-01-01,not,an,integer,value', + } + nose.tools.assert_raises( + ValueError, + aggregator.merge_sum_csv_data_dict, + dict_1, + dict_2) -- To view, visit https://gerrit.wikimedia.org/r/223031 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ieee012e60d2286e450779cabf253d6a1f11578b4 Gerrit-PatchSet: 1 Gerrit-Project: analytics/aggregator Gerrit-Branch: master Gerrit-Owner: Mforns <mfo...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits