コード例 #1
0
    def test_13_day_window(self):
        addon = Addon.objects.get(pk=3615)

        # can't use a fixed date since we are relying on
        # mysql to get us the `CURDATE()`
        today = datetime.date.today()

        # data is coming from `tab groups` add-on from
        # jun 11 till may 29th 2017
        stats = [
            (today - datetime.timedelta(days=days_in_past), update_count)
            for days_in_past, update_count in (
                (1, 82708), (2, 78793), (3, 99586), (4, 104426), (5, 105431),
                (6, 106065), (7, 98093), (8, 81710), (9, 78843), (10, 99383),
                (11, 104431), (12, 105943), (13, 105039), (14, 100183),
                (15, 82265)
            )]

        UpdateCount.objects.bulk_create([
            UpdateCount(addon=addon, date=date, count=count)
            for date, count in stats
        ])

        addon.update(average_daily_users=0)

        cron.update_addon_average_daily_users()

        addon.refresh_from_db()

        assert (
            82708 + 78793 + 99586 + 104426 + 105431 + 106065 + 98093 +
            81710 + 78843 + 99383 + 104431 + 105943) / 12 == 95451

        assert addon.average_daily_users == 95451
コード例 #2
0
    def test_13_day_window(self):
        addon = Addon.objects.get(pk=3615)

        # can't use a fixed date since we are relying on
        # mysql to get us the `CURDATE()`
        today = datetime.date.today()

        # data is coming from `tab groups` add-on from
        # jun 11 till may 29th 2017
        stats = [
            (today - datetime.timedelta(days=days_in_past), update_count)
            for days_in_past, update_count in (
                (1, 82708), (2, 78793), (3, 99586), (4, 104426), (5, 105431),
                (6, 106065), (7, 98093), (8, 81710), (9, 78843), (10, 99383),
                (11, 104431), (12, 105943), (13, 105039), (14, 100183),
                (15, 82265)
            )]

        UpdateCount.objects.bulk_create([
            UpdateCount(addon=addon, date=date, count=count)
            for date, count in stats
        ])

        addon.update(average_daily_users=0)

        cron.update_addon_average_daily_users()

        addon.refresh_from_db()

        assert (
            82708 + 78793 + 99586 + 104426 + 105431 + 106065 + 98093 +
            81710 + 78843 + 99383 + 104431 + 105943) / 12 == 95451

        assert addon.average_daily_users == 95451
コード例 #3
0
    def test_update_addon_average_daily_users_values_with_bigquery(
            self, get_mock, create_chunked_mock):
        create_chunked_mock.return_value = group([])
        addon = Addon.objects.get(pk=3615)
        addon.update(average_daily_users=0)
        count = 56789
        langpack = addon_factory(type=amo.ADDON_LPAPP, average_daily_users=0)
        langpack_count = 12345
        dictionary = addon_factory(type=amo.ADDON_DICT, average_daily_users=0)
        dictionary_count = 6789
        addon_without_count = addon_factory(type=amo.ADDON_DICT,
                                            average_daily_users=2)
        # This one should be ignored.
        addon_factory(guid=None, type=amo.ADDON_LPAPP)
        # This one should be ignored as well.
        addon_factory(guid='', type=amo.ADDON_LPAPP)
        get_mock.return_value = [
            (addon.guid, count),
            (langpack.guid, langpack_count),
            (dictionary.guid, dictionary_count),
        ]

        cron.update_addon_average_daily_users()

        create_chunked_mock.assert_called_with(
            update_addon_average_daily_users, [
                (addon_without_count.guid, 0),
                (addon.guid, count),
                (langpack.guid, langpack_count),
                (dictionary.guid, dictionary_count),
            ], 250)
コード例 #4
0
    def test_update_addon_average_daily_users_with_bigquery(self, get_mock):
        addon = Addon.objects.get(pk=3615)
        addon.update(average_daily_users=0)
        count = 56789
        langpack = addon_factory(type=amo.ADDON_LPAPP, average_daily_users=0)
        langpack_count = 12345
        dictionary = addon_factory(type=amo.ADDON_DICT, average_daily_users=0)
        dictionary_count = 5567
        addon_without_count = addon_factory(type=amo.ADDON_DICT,
                                            average_daily_users=2)
        assert addon.average_daily_users == 0
        assert langpack.average_daily_users == 0
        assert dictionary.average_daily_users == 0
        assert addon_without_count.average_daily_users == 2

        get_mock.return_value = [
            (addon.guid, count),
            (dictionary.guid, dictionary_count),
            (langpack.guid, langpack_count),
        ]

        cron.update_addon_average_daily_users()
        addon.refresh_from_db()
        langpack.refresh_from_db()
        dictionary.refresh_from_db()
        addon_without_count.refresh_from_db()

        get_mock.assert_called
        assert addon.average_daily_users == count
        assert langpack.average_daily_users == langpack_count
        assert dictionary.average_daily_users == dictionary_count
        # The value is 0 because the add-on does not exist in BigQuery.
        assert addon_without_count.average_daily_users == 0
コード例 #5
0
    def test_update_addon_average_daily_users_with_bigquery(self, get_mock):
        addon = Addon.objects.get(pk=3615)
        addon.update(average_daily_users=0)
        count = 56789
        get_mock.return_value = [(addon.guid, count)]

        cron.update_addon_average_daily_users()
        addon.refresh_from_db()

        get_mock.assert_called
        assert addon.average_daily_users == count
コード例 #6
0
ファイル: test_cron.py プロジェクト: luckyvs1/addons-server
    def test_update_addon_average_daily_users_values_with_bigquery(
        self, get_mock, chunked_mock
    ):
        chunked_mock.return_value = []
        addon = Addon.objects.get(pk=3615)
        addon.update(average_daily_users=0)
        count = 56789
        get_mock.return_value = [(addon.guid, count)]
        # We use download counts for langpacks.
        langpack = addon_factory(type=amo.ADDON_LPAPP, average_daily_users=0)
        langpack_count = 12345
        DownloadCount.objects.update_or_create(
            addon=langpack,
            date=datetime.date.today(),
            defaults={'count': langpack_count}
        )
        DownloadCount.objects.update_or_create(
            addon=langpack,
            date=self.days_ago(3),
            defaults={'count': 0}
        )
        # We use download counts for dictionaries.
        dictionary = addon_factory(type=amo.ADDON_DICT, average_daily_users=0)
        dictionary_count = 6789
        DownloadCount.objects.update_or_create(
            addon=dictionary,
            date=datetime.date.today(),
            defaults={'count': 6780}
        )
        DownloadCount.objects.update_or_create(
            addon=dictionary,
            date=self.days_ago(2),
            defaults={'count': 9}
        )
        # This one should be ignored.
        addon_without_guid = addon_factory(guid=None, type=amo.ADDON_LPAPP)
        DownloadCount.objects.update_or_create(
            addon=addon_without_guid,
            date=datetime.date.today(),
            defaults={'count': 123}
        )
        # This one should be ignored as well.
        addon_factory(guid='', type=amo.ADDON_LPAPP)

        cron.update_addon_average_daily_users()

        chunked_mock.assert_called_with([
            (addon.guid, count),
            (langpack.guid, langpack_count),
            (dictionary.guid, dictionary_count),
        ], 250)
コード例 #7
0
ファイル: test_cron.py プロジェクト: luckyvs1/addons-server
    def test_update_addon_average_daily_users_with_bigquery(self, get_mock):
        addon = Addon.objects.get(pk=3615)
        addon.update(average_daily_users=0)
        count = 56789
        # We use download counts for langpacks.
        langpack = addon_factory(type=amo.ADDON_LPAPP, average_daily_users=0)
        langpack_count = 12345
        DownloadCount.objects.update_or_create(
            addon=langpack,
            date=datetime.date.today(),
            defaults={'count': langpack_count}
        )
        # We use download counts for dictionaries.
        dictionary = addon_factory(type=amo.ADDON_DICT, average_daily_users=0)
        dictionary_count = 5567
        DownloadCount.objects.update_or_create(
            addon=dictionary,
            date=datetime.date.today(),
            defaults={'count': dictionary_count}
        )
        addon_without_count = addon_factory(type=amo.ADDON_DICT,
                                            average_daily_users=2)
        assert addon.average_daily_users == 0
        assert langpack.average_daily_users == 0
        assert dictionary.average_daily_users == 0
        assert addon_without_count.average_daily_users == 2

        # Pretend bigquery is returning correct data for the extension, but
        # also incorrect data for langpacks and dicts - we should ignore those.
        get_mock.return_value = [
            (addon.guid, count),
            (dictionary.guid, 42),
            (langpack.guid, 42),
        ]

        cron.update_addon_average_daily_users()
        addon.refresh_from_db()
        langpack.refresh_from_db()
        dictionary.refresh_from_db()
        addon_without_count.refresh_from_db()

        get_mock.assert_called
        assert addon.average_daily_users == count
        assert langpack.average_daily_users == langpack_count
        assert dictionary.average_daily_users == dictionary_count
        # The value is 0 because the add-on does not have download counts.
        assert addon_without_count.average_daily_users == 0