Example #1
0
    def test_add_app_statistics(self):
        now = datetime.utcnow()
        userid = 1
        channel = DEFAULT_CHANNEL
        platform = 'win'
        app = dict(appid='{F97917B1-20AB-48C1-9802-CEF305B10804}', version='30.0.123.1234')
        appid = app.get('appid')
        version = app.get('version')

        events_appid = DayEvents('new_install:%s' % app.get('appid'), now.year, now.month, now.day)
        events_appid_version = DayEvents('request:{}:{}'.format(appid, version), now.year, now.month, now.day)
        events_appid_platform = DayEvents('new_install:{}:{}'.format(appid, platform), now.year, now.month, now.day)
        events_appid_channel = DayEvents('request:{}:{}'.format(appid, channel), now.year, now.month, now.day)
        events_appid_platform_version = DayEvents('request:{}:{}:{}'.format(appid, platform, version), now.year, now.month, now.day)

        self.assertEqual(len(events_appid), 0)
        self.assertEqual(len(events_appid_version), 0)
        self.assertEqual(len(events_appid_platform), 0)
        self.assertEqual(len(events_appid_channel), 0)
        self.assertEqual(len(events_appid_platform_version), 0)

        add_app_statistics(userid, platform, app)

        self.assertEqual(len(events_appid), 1)
        self.assertEqual(len(events_appid_version), 1)
        self.assertEqual(len(events_appid_platform), 1)
        self.assertEqual(len(events_appid_channel), 1)
        self.assertEqual(len(events_appid_platform_version), 1)

        self.assertIn(userid, events_appid)
        self.assertIn(userid, events_appid_version)
        self.assertIn(userid, events_appid_platform)
        self.assertIn(userid, events_appid_channel)
        self.assertIn(userid, events_appid_platform_version)
Example #2
0
def test_mark_with_diff_days():
    delete_all_events()

    mark_event('active', 123, track_hourly=True)

    now = datetime.utcnow()

    # Month
    assert 123 in MonthEvents('active', now.year, now.month)
    assert 124 not in MonthEvents('active', now.year, now.month)

    # Week
    assert 123 in WeekEvents('active', now.year, now.isocalendar()[1])
    assert 124 not in WeekEvents('active', now.year, now.isocalendar()[1])

    # Day
    assert 123 in DayEvents('active', now.year, now.month, now.day)
    assert 124 not in DayEvents('active', now.year, now.month, now.day)

    # Hour
    assert 123 in HourEvents('active', now.year, now.month, now.day, now.hour)
    assert 124 not in HourEvents('active', now.year, now.month, now.day,
                                 now.hour)
    assert 124 not in HourEvents('active', now.year, now.month, now.day,
                                 now.hour - 1)
Example #3
0
def test_different_dates():
    now = datetime.utcnow()
    yesterday = now - timedelta(days=1)

    mark_event('active', 123, now=now)
    mark_event('active', 23232, now=yesterday)

    assert DayEvents('active', now.year, now.month, now.day).get_count() == 1

    assert DayEvents('active', yesterday.year, yesterday.month,
                     yesterday.day).get_count() == 1
Example #4
0
def test_bit_operations_magic():
    mark_event('foo', 1)
    mark_event('foo', 2)
    mark_event('bar', 2)
    mark_event('bar', 3)
    foo = DayEvents('foo')
    bar = DayEvents('bar')
    assert list(foo & bar) == [2]
    assert list(foo | bar) == [1, 2, 3]
    assert list(foo ^ bar) == [1, 3]
    assert list(~foo & bar) == [3]
Example #5
0
    def test_userid_counting(self):
        now = datetime.utcnow()
        userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}'
        user_id = get_id(userid)
        appid1 = '{430FD4D0-B729-4F61-AA34-91526481799D}'
        appid2 = '{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}'

        request_events = DayEvents('request', now.year, now.month, now.day)
        app1_events = DayEvents('request:%s' % appid1, now.year, now.month,
                                now.day)
        app2_events = DayEvents('request:%s' % appid2, now.year, now.month,
                                now.day)

        self.assertEqual(len(request_events), 0)
        self.assertEqual(len(app1_events), 0)
        self.assertEqual(len(app2_events), 0)

        app = ApplicationFactory.create(
            id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
        platform = PlatformFactory.create(name='win')
        channel = ChannelFactory.create(name='stable')
        obj = VersionFactory.create(app=app,
                                    platform=platform,
                                    channel=channel,
                                    version='13.0.782.112',
                                    file=SimpleUploadedFile(
                                        './chrome_installer.exe',
                                        b'_' * 23963192))
        obj.file_hash = 'VXriGUVI0TNqfLlU02vBel4Q3Zo='
        obj.save()

        Action.objects.create(version=obj,
                              arguments='--do-not-launch-chrome',
                              event=EVENT_DICT_CHOICES['install'],
                              run='chrome_installer.exe')

        Action.objects.create(version=obj,
                              event=EVENT_DICT_CHOICES['postinstall'],
                              other=dict(
                                  version='13.0.782.112',
                                  onsuccess='exitsilentlyonlaunchcmd',
                              ))

        self.client.post(reverse('update'),
                         fixtures.request_update_check,
                         content_type='text/xml')

        self.assertEqual(len(request_events), 1)
        self.assertEqual(len(app1_events), 1)
        self.assertEqual(len(app2_events), 1)
        self.assertTrue(user_id in request_events)
        self.assertTrue(user_id in app1_events)
        self.assertTrue(user_id in app2_events)
Example #6
0
def get_users_statistics_weeks(app_id=None):
    now = timezone.now()
    event_name = 'request:%s' % app_id if app_id else 'request'
    year = now.year
    current_week = now.isocalendar()[1]
    previous_week = (now - timedelta(weeks=1)).isocalendar()[1]
    yesterday = now - timedelta(days=1)
    data = [
        ('Previous week', len(WeekEvents(event_name, year, previous_week))),
        ('Current week', len(WeekEvents(event_name, year, current_week))),
        ('Yesterday', len(DayEvents(event_name, year, yesterday.month, yesterday.day))),
        ('Today', len(DayEvents(event_name, year, now.month, now.day))),
    ]
    return data
Example #7
0
def test_bitop_key_sharing():
    today = datetime.utcnow()

    mark_event('task1', 111, now=today)
    mark_event('task2', 111, now=today)
    mark_event('task1', 222, now=today)
    mark_event('task2', 222, now=today)

    ev1_task1 = DayEvents('task1', today.year, today.month, today.day)
    ev1_task2 = DayEvents('task2', today.year, today.month, today.day)
    ev1_both = BitOpAnd(ev1_task1, ev1_task2)

    ev2_task1 = DayEvents('task1', today.year, today.month, today.day)
    ev2_task2 = DayEvents('task2', today.year, today.month, today.day)
    ev2_both = BitOpAnd(ev2_task1, ev2_task2)

    assert ev1_both.redis_key == ev2_both.redis_key
    assert len(ev1_both) == len(ev1_both) == 2
    ev1_both.delete()
    assert len(ev1_both) == len(ev1_both) == 0
Example #8
0
def get_daily_data_by_platform(app_id, end, n_days, versions, platform):
    start = end - timezone.timedelta(days=n_days)
    event_name = "request:{}:{}:{}"

    days = [start + timezone.timedelta(days=x) for x in range(0, n_days + 1)]
    data = [(v, [[
        day.strftime("%Y-%m-%dT00:%M:%S.%fZ"),
        len(DayEvents.from_date(event_name.format(app_id, platform, v), day))
    ] for day in days]) for v in versions]
    data = filter(
        lambda version_data: sum([data[1] for data in version_data[1]]), data)
    return dict(data)
Example #9
0
    def test_userid_counting(self, mock_add_app_statistics):
        now = datetime.utcnow()

        userid1 = '{F07B3878-CD6F-4B96-B52F-95C4D23077E0}'
        user1_id = get_id(userid1)

        userid2 = '{EC4C5647-F798-4BCA-83DA-926CD448A1D5}'
        user2_id = get_id(userid2)

        app_list = [
            dict(appid='{F97917B1-19AB-48C1-9802-CEF305B10804}'),
            dict(appid='{555B8D18-076D-4576-9579-1FD7F0399EAE}')
        ]

        request_events = DayEvents('request', now.year, now.month, now.day)

        self.assertFalse(user1_id in request_events)
        self.assertEqual(len(request_events), 0)

        userid_counting(userid1, app_list, 'win')

        for app in app_list:
            mock_add_app_statistics.assert_any_call(user1_id,
                                                    'win',
                                                    app,
                                                    now=None)

        self.assertEqual(len(request_events), 1)
        self.assertTrue(user1_id in request_events)

        userid_counting(userid1, app_list, 'win')

        for app in app_list:
            mock_add_app_statistics.assert_any_call(user1_id,
                                                    'win',
                                                    app,
                                                    now=None)

        self.assertEqual(len(request_events), 1)

        self.assertFalse(user2_id in request_events)
        userid_counting(userid2, app_list[:1], 'win')
        self.assertTrue(user2_id in request_events)
        for app in app_list[:1]:
            mock_add_app_statistics.assert_any_call(user2_id,
                                                    'win',
                                                    app,
                                                    now=None)

        self.assertEqual(len(request_events), 2)
Example #10
0
def test_bit_operations_complex():
    now = datetime.utcnow()
    tom = now + timedelta(days=1)

    mark_event('task1', 111, now=now)
    mark_event('task1', 111, now=tom)
    mark_event('task2', 111, now=now)
    mark_event('task2', 111, now=tom)
    mark_event('task1', 222, now=now)
    mark_event('task1', 222, now=tom)
    mark_event('task2', 222, now=now)
    mark_event('task2', 222, now=tom)

    now_events = BitOpAnd(DayEvents('task1', now.year, now.month, now.day),
                          DayEvents('task2', now.year, now.month, now.day))

    tom_events = BitOpAnd(DayEvents('task1', tom.year, tom.month, tom.day),
                          DayEvents('task2', tom.year, tom.month, tom.day))

    both_events = BitOpAnd(now_events, tom_events)

    assert len(now_events) == len(tom_events)
    assert len(now_events) == len(both_events)
Example #11
0
def get_daily_data_by_platform(app_id, end, n_days, versions, platform, channel):
    def build_event_name(app_id, platform, channel, v):
        if channel:
            return "request:{}:{}:{}:{}".format(app_id, platform, channel, v)
        else:
            return "request:{}:{}:{}".format(app_id, platform, v)

    start = end - timezone.timedelta(days=n_days)

    days = [start + timezone.timedelta(days=x) for x in range(0, n_days+1)]
    data = [(v, [[day.strftime("%Y-%m-%dT00:%M:%S.%fZ"),
                  len(DayEvents.from_date(build_event_name(app_id, platform, channel, v), day))]
                 for day in days])
            for v in versions]
    data = filter(lambda version_data: sum([data[1] for data in version_data[1]]), data)
    return dict(data)
Example #12
0
def get_daily_data_by_platform(app_id, end, n_days, versions, platform, channel):
    def build_event_name(app_id, platform, channel, v):
        if channel:
            return "request:{}:{}:{}:{}".format(app_id, platform, channel, v)
        else:
            return "request:{}:{}:{}".format(app_id, platform, v)

    start = end - timezone.timedelta(days=n_days)

    days = [start + timezone.timedelta(days=x) for x in range(0, n_days+1)]
    data = [(v, [[day.strftime("%Y-%m-%dT00:%M:%S.%fZ"),
                  len(DayEvents.from_date(build_event_name(app_id, platform, channel, v), day))]
                 for day in days])
            for v in versions]
    data = [version_data for version_data in data if sum([data[1] for data in version_data[1]])]
    return dict(data)
Example #13
0
def _day_events_fn(key, date, system):
    return DayEvents(key, date.year, date.month, date.day, system=system)
    def test_add_app_statistics(self):
        now = datetime.utcnow()
        next_month = now.replace(month=now.month + 1)
        userid = 1
        channel = DEFAULT_CHANNEL
        platform = "win"
        app_kwargs = dict(appid="{F97917B1-20AB-48C1-9802-CEF305B10804}", version="30.0.123.1234")
        success_app = create_app_xml(events=fixtures.event_install_success, **app_kwargs)
        error_app = create_app_xml(events=fixtures.event_install_error, **app_kwargs)
        appid = app_kwargs.get("appid")
        version = app_kwargs.get("version")

        events_request_appid = lambda date=now: DayEvents.from_date("request:%s" % appid, date)
        events_new_appid = lambda date=now: DayEvents.from_date("new_install:%s" % appid, date)
        events_request_appid_version = lambda date=now: DayEvents.from_date(
            "request:{}:{}".format(appid, version), date
        )
        events_request_appid_platform = lambda date=now: DayEvents.from_date(
            "request:{}:{}".format(appid, platform), date
        )
        events_new_appid_platform = lambda date=now: DayEvents.from_date(
            "new_install:{}:{}".format(appid, platform), date
        )
        events_request_appid_channel = lambda date=now: DayEvents.from_date(
            "request:{}:{}".format(appid, channel), date
        )
        events_request_appid_platform_version = lambda date=now: DayEvents.from_date(
            "request:{}:{}:{}".format(appid, platform, version), date
        )

        self.assertEqual(len(events_new_appid()), 0)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 0)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_new_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 0)
        self.assertEqual(len(events_request_appid_platform_version()), 0)

        add_app_statistics(userid, platform, error_app)

        self.assertEqual(len(events_new_appid()), 0)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 0)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_new_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 0)
        self.assertEqual(len(events_request_appid_platform_version()), 0)

        add_app_statistics(userid, platform, success_app)
        self.assertEqual(len(events_new_appid()), 1)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 1)
        self.assertEqual(len(events_new_appid_platform()), 1)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)

        self.assertIn(userid, events_new_appid())
        self.assertIn(userid, events_request_appid_version())
        self.assertIn(userid, events_new_appid_platform())
        self.assertIn(userid, events_request_appid_channel())
        self.assertIn(userid, events_request_appid_platform_version())

        add_app_statistics(userid, platform, success_app)
        self.assertEqual(len(events_new_appid()), 1)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 1)
        self.assertEqual(len(events_new_appid_platform()), 1)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)

        with freeze_time(next_month):
            add_app_statistics(userid, platform, error_app)

        self.assertEqual(len(events_request_appid(next_month)), 0)
        self.assertEqual(len(events_request_appid_platform(next_month)), 0)

        with freeze_time(next_month):
            add_app_statistics(userid, platform, success_app)

        self.assertEqual(len(events_request_appid(next_month)), 1)
        self.assertEqual(len(events_request_appid_platform(next_month)), 1)
        self.assertEqual(len(events_new_appid(next_month)), 0)
        self.assertEqual(len(events_request_appid_version(next_month)), 1)
        self.assertEqual(len(events_new_appid_platform(next_month)), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)

        self.assertIn(userid, events_request_appid(next_month))
        self.assertIn(userid, events_request_appid_platform(next_month))
Example #15
0
    def test_add_app_statistics(self):
        now = datetime.utcnow()
        next_month = now.replace(month=now.month + 1)
        userid = 1
        channel = DEFAULT_CHANNEL
        platform = 'win'
        app_kwargs = dict(appid='{2882CF9B-D9C2-4edb-9AAF-8ED5FCF366F7}', nextversion='0.0.0.1')
        success_app = create_app_xml(events=fixtures.event_install_success, **app_kwargs)
        error_app = create_app_xml(events=fixtures.event_install_error, **app_kwargs)
        appid = app_kwargs.get('appid')
        version = app_kwargs.get('nextversion')

        events_request_appid = lambda date=now: DayEvents.from_date('request:%s' % appid, date)
        events_new_appid = lambda date=now: DayEvents.from_date('new_install:%s' % appid, date)
        events_request_appid_version = lambda date=now: DayEvents.from_date('request:{}:{}'.format(appid, version), date)
        events_request_appid_platform = lambda date=now: DayEvents.from_date('request:{}:{}'.format(appid, platform), date)
        events_new_appid_platform = lambda date=now: DayEvents.from_date('new_install:{}:{}'.format(appid, platform), date)
        events_request_appid_channel = lambda date=now: DayEvents.from_date('request:{}:{}'.format(appid, channel), date)
        events_request_appid_platform_version = lambda date=now: DayEvents.from_date(
            'request:{}:{}:{}'.format(appid, platform, version), date)
        events_request_appid_platform_channel_version = lambda date=now: DayEvents.from_date(
            'request:{}:{}:{}:{}'.format(appid, platform, channel, version), date)

        self.assertEqual(len(events_new_appid()), 0)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 0)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_new_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 0)
        self.assertEqual(len(events_request_appid_platform_version()), 0)
        self.assertEqual(len(events_request_appid_platform_channel_version()), 0)

        add_app_statistics(userid, platform, error_app)

        self.assertEqual(len(events_new_appid()), 0)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 0)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_new_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 0)
        self.assertEqual(len(events_request_appid_platform_version()), 0)
        self.assertEqual(len(events_request_appid_platform_channel_version()), 0)

        add_app_statistics(userid, platform, success_app)
        self.assertEqual(len(events_new_appid()), 1)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 1)
        self.assertEqual(len(events_new_appid_platform()), 1)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)
        self.assertEqual(len(events_request_appid_platform_channel_version()), 1)

        self.assertIn(userid, events_new_appid())
        self.assertIn(userid, events_request_appid_version())
        self.assertIn(userid, events_new_appid_platform())
        self.assertIn(userid, events_request_appid_channel())
        self.assertIn(userid, events_request_appid_platform_version())
        self.assertIn(userid, events_request_appid_platform_channel_version())

        add_app_statistics(userid, platform, success_app)
        self.assertEqual(len(events_new_appid()), 1)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 1)
        self.assertEqual(len(events_new_appid_platform()), 1)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)

        with freeze_time(next_month):
            add_app_statistics(userid, platform, error_app)

        self.assertEqual(len(events_request_appid(next_month)), 0)
        self.assertEqual(len(events_request_appid_platform(next_month)), 0)

        with freeze_time(next_month):
            add_app_statistics(userid, platform, success_app)

        self.assertEqual(len(events_request_appid(next_month)), 1)
        self.assertEqual(len(events_request_appid_platform(next_month)), 1)
        self.assertEqual(len(events_new_appid(next_month)), 0)
        self.assertEqual(len(events_request_appid_version(next_month)), 1)
        self.assertEqual(len(events_new_appid_platform(next_month)), 0)
        self.assertEqual(len(events_request_appid_channel(next_month)), 1)
        self.assertEqual(len(events_request_appid_platform_version(next_month)), 1)
        self.assertEqual(len(events_request_appid_platform_channel_version(next_month)), 1)

        self.assertIn(userid, events_request_appid(next_month))
        self.assertIn(userid, events_request_appid_platform(next_month))
Example #16
0
    def test_add_app_statistics(self):
        now = datetime.utcnow()
        next_month = now.replace(month=now.month + 1)
        userid = 1
        channel = DEFAULT_CHANNEL
        platform = 'win'
        app_kwargs = dict(appid='{2882CF9B-D9C2-4edb-9AAF-8ED5FCF366F7}',
                          nextversion='0.0.0.1')
        success_app = create_app_xml(events=fixtures.event_install_success,
                                     **app_kwargs)
        error_app = create_app_xml(events=fixtures.event_install_error,
                                   **app_kwargs)
        appid = app_kwargs.get('appid')
        version = app_kwargs.get('nextversion')

        events_request_appid = lambda date=now: DayEvents.from_date(
            'request:%s' % appid, date)
        events_new_appid = lambda date=now: DayEvents.from_date(
            'new_install:%s' % appid, date)
        events_request_appid_version = lambda date=now: DayEvents.from_date(
            'request:{}:{}'.format(appid, version), date)
        events_request_appid_platform = lambda date=now: DayEvents.from_date(
            'request:{}:{}'.format(appid, platform), date)
        events_new_appid_platform = lambda date=now: DayEvents.from_date(
            'new_install:{}:{}'.format(appid, platform), date)
        events_request_appid_channel = lambda date=now: DayEvents.from_date(
            'request:{}:{}'.format(appid, channel), date)
        events_request_appid_platform_version = lambda date=now: DayEvents.from_date(
            'request:{}:{}:{}'.format(appid, platform, version), date)
        events_request_appid_platform_channel_version = lambda date=now: DayEvents.from_date(
            'request:{}:{}:{}:{}'.format(appid, platform, channel, version),
            date)

        self.assertEqual(len(events_new_appid()), 0)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 0)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_new_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 0)
        self.assertEqual(len(events_request_appid_platform_version()), 0)
        self.assertEqual(len(events_request_appid_platform_channel_version()),
                         0)

        add_app_statistics(userid, platform, error_app)

        self.assertEqual(len(events_new_appid()), 0)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 0)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_new_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 0)
        self.assertEqual(len(events_request_appid_platform_version()), 0)
        self.assertEqual(len(events_request_appid_platform_channel_version()),
                         0)

        add_app_statistics(userid, platform, success_app)
        self.assertEqual(len(events_new_appid()), 1)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 1)
        self.assertEqual(len(events_new_appid_platform()), 1)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)
        self.assertEqual(len(events_request_appid_platform_channel_version()),
                         1)

        self.assertIn(userid, events_new_appid())
        self.assertIn(userid, events_request_appid_version())
        self.assertIn(userid, events_new_appid_platform())
        self.assertIn(userid, events_request_appid_channel())
        self.assertIn(userid, events_request_appid_platform_version())
        self.assertIn(userid, events_request_appid_platform_channel_version())

        add_app_statistics(userid, platform, success_app)
        self.assertEqual(len(events_new_appid()), 1)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 1)
        self.assertEqual(len(events_new_appid_platform()), 1)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)

        with freeze_time(next_month):
            add_app_statistics(userid, platform, error_app)

        self.assertEqual(len(events_request_appid(next_month)), 0)
        self.assertEqual(len(events_request_appid_platform(next_month)), 0)

        with freeze_time(next_month):
            add_app_statistics(userid, platform, success_app)

        self.assertEqual(len(events_request_appid(next_month)), 1)
        self.assertEqual(len(events_request_appid_platform(next_month)), 1)
        self.assertEqual(len(events_new_appid(next_month)), 0)
        self.assertEqual(len(events_request_appid_version(next_month)), 1)
        self.assertEqual(len(events_new_appid_platform(next_month)), 0)
        self.assertEqual(len(events_request_appid_channel(next_month)), 1)
        self.assertEqual(
            len(events_request_appid_platform_version(next_month)), 1)
        self.assertEqual(
            len(events_request_appid_platform_channel_version(next_month)), 1)

        self.assertIn(userid, events_request_appid(next_month))
        self.assertIn(userid, events_request_appid_platform(next_month))
Example #17
0
    def test_add_app_statistics(self):
        userid1 = '{F07B3878-CD6F-4B96-B52F-95C4D23077E0}'
        user1_id = get_id(userid1)

        userid2 = '{EC4C5647-F798-4BCA-83DA-926CD448A1D5}'
        user2_id = get_id(userid2)

        appid = '{F97917B1-19AB-48C1-9802-CEF305B10804}'
        version = '0.0.0.1'
        channel = 'test'
        test_app = dict(appid=appid, version=version, tag=channel)

        install_app_events = DayEvents('new_install:%s' % appid)
        request_app_events = DayEvents('request:%s' % appid)
        request_version_events = DayEvents('request:{}:{}'.format(
            appid, version))
        install_platform_events = DayEvents('new_install:{}:{}'.format(
            appid, 'mac'))
        request_platform_events = DayEvents('request:{}:{}'.format(
            appid, 'mac'))
        request_channel_events = DayEvents('request:{}:{}'.format(
            appid, channel))
        request_platform_version_events = DayEvents('request:{}:{}:{}'.format(
            appid, 'mac', version))

        self.assertFalse(user1_id in install_app_events)
        self.assertEqual(len(install_app_events), 0)
        self.assertFalse(user1_id in install_platform_events)
        self.assertEqual(len(install_platform_events), 0)
        self.assertFalse(user1_id in request_app_events)
        self.assertEqual(len(request_app_events), 0)
        self.assertFalse(user1_id in request_platform_events)
        self.assertEqual(len(request_platform_events), 0)
        self.assertFalse(user1_id in request_version_events)
        self.assertEqual(len(request_version_events), 0)
        self.assertFalse(user1_id in request_channel_events)
        self.assertEqual(len(request_channel_events), 0)
        self.assertFalse(user1_id in request_platform_version_events)
        self.assertEqual(len(request_platform_version_events), 0)

        add_app_statistics(user1_id, 'mac', test_app)
        self.assertTrue(user1_id in install_app_events)
        self.assertEqual(len(install_app_events), 1)
        self.assertFalse(user1_id in request_app_events)
        self.assertEqual(len(request_app_events), 0)
        self.assertFalse(user1_id in request_platform_events)
        self.assertEqual(len(request_platform_events), 0)
        self.assertTrue(user1_id in request_version_events)
        self.assertEqual(len(request_version_events), 1)
        self.assertTrue(user1_id in install_platform_events)
        self.assertEqual(len(install_platform_events), 1)
        self.assertTrue(user1_id in request_channel_events)
        self.assertEqual(len(request_channel_events), 1)
        self.assertTrue(user1_id in request_platform_version_events)
        self.assertEqual(len(request_platform_version_events), 1)

        add_app_statistics(user2_id, 'mac', test_app)

        self.assertTrue(user2_id in install_app_events)
        self.assertEqual(len(install_app_events), 2)
        self.assertFalse(user2_id in request_app_events)
        self.assertEqual(len(request_app_events), 0)
        self.assertFalse(user2_id in request_platform_events)
        self.assertEqual(len(request_platform_events), 0)
        self.assertTrue(user2_id in request_version_events)
        self.assertEqual(len(request_version_events), 2)
        self.assertTrue(user2_id in install_platform_events)
        self.assertEqual(len(install_platform_events), 2)
        self.assertTrue(user2_id in request_channel_events)
        self.assertEqual(len(request_channel_events), 2)
        self.assertTrue(user2_id in request_platform_version_events)
        self.assertEqual(len(request_platform_version_events), 2)

        add_app_statistics(user1_id, 'mac', test_app)

        self.assertTrue(user1_id in install_app_events)
        self.assertEqual(len(install_app_events), 2)
        self.assertFalse(user1_id in request_app_events)
        self.assertEqual(len(request_app_events), 0)
        self.assertFalse(user1_id in request_platform_events)
        self.assertEqual(len(request_platform_events), 0)
        self.assertTrue(user1_id in request_version_events)
        self.assertEqual(len(request_version_events), 2)
        self.assertTrue(user1_id in install_platform_events)
        self.assertEqual(len(install_platform_events), 2)
        self.assertTrue(user1_id in request_channel_events)
        self.assertEqual(len(request_channel_events), 2)
        self.assertTrue(user1_id in request_platform_version_events)
        self.assertEqual(len(request_platform_version_events), 2)
Example #18
0
    def test_add_app_statistics(self):
        now = datetime.utcnow()
        next_month = now.replace(month=now.month + 1)
        userid = 1
        platform = 'mac'
        appid = '{F97917B1-19AB-48C1-9802-CEF305B10804}'
        version = '0.0.0.1'
        channel = 'test'
        test_app = dict(appid=appid, version=version, tag=channel)

        events_request_appid = lambda date=now: DayEvents.from_date('request:%s' % appid, date)
        events_new_appid = lambda date=now: DayEvents.from_date('new_install:%s' % appid, date)
        events_request_appid_version = lambda date=now: DayEvents.from_date('request:{}:{}'.format(appid, version),
                                                                            date)
        events_request_appid_platform = lambda date=now: DayEvents.from_date('request:{}:{}'.format(appid, platform),
                                                                             date)
        events_new_appid_platform = lambda date=now: DayEvents.from_date('new_install:{}:{}'.format(appid, platform),
                                                                         date)
        events_request_appid_channel = lambda date=now: DayEvents.from_date('request:{}:{}'.format(appid, channel),
                                                                            date)
        events_request_appid_platform_version = lambda date=now: DayEvents.from_date(
            'request:{}:{}:{}'.format(appid, platform, version), date)
        events_request_appid_platform_channel_version = lambda date=now: DayEvents.from_date(
            'request:{}:{}:{}:{}'.format(appid, platform, channel, version), date)

        self.assertEqual(len(events_new_appid()), 0)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 0)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_new_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 0)
        self.assertEqual(len(events_request_appid_platform_version()), 0)
        self.assertEqual(len(events_request_appid_platform_channel_version()), 0)

        add_app_statistics(userid, platform, test_app)
        self.assertEqual(len(events_new_appid()), 1)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 1)
        self.assertEqual(len(events_new_appid_platform()), 1)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)
        self.assertEqual(len(events_request_appid_platform_channel_version()), 1)

        self.assertIn(userid, events_new_appid())
        self.assertIn(userid, events_request_appid_version())
        self.assertIn(userid, events_new_appid_platform())
        self.assertIn(userid, events_request_appid_channel())
        self.assertIn(userid, events_request_appid_platform_version())
        self.assertIn(userid, events_request_appid_platform_channel_version())

        add_app_statistics(userid, platform, test_app)
        self.assertEqual(len(events_new_appid()), 1)
        self.assertEqual(len(events_request_appid()), 0)
        self.assertEqual(len(events_request_appid_version()), 1)
        self.assertEqual(len(events_new_appid_platform()), 1)
        self.assertEqual(len(events_request_appid_platform()), 0)
        self.assertEqual(len(events_request_appid_channel()), 1)
        self.assertEqual(len(events_request_appid_platform_version()), 1)
        self.assertEqual(len(events_request_appid_platform_channel_version()), 1)

        with freeze_time(next_month):
            add_app_statistics(userid, platform, test_app)

        self.assertEqual(len(events_request_appid(next_month)), 1)
        self.assertEqual(len(events_request_appid_platform(next_month)), 1)
        self.assertEqual(len(events_new_appid(next_month)), 0)
        self.assertEqual(len(events_request_appid_version(next_month)), 1)
        self.assertEqual(len(events_new_appid_platform(next_month)), 0)
        self.assertEqual(len(events_request_appid_channel(next_month)), 1)
        self.assertEqual(len(events_request_appid_platform_version(next_month)), 1)
        self.assertEqual(len(events_request_appid_platform_channel_version(next_month)), 1)

        self.assertIn(userid, events_request_appid(next_month))
        self.assertIn(userid, events_request_appid_platform(next_month))
        self.assertIn(userid, events_request_appid_platform_channel_version(next_month))
Example #19
0
def test_get_event_names_prefix():
    event_names = {'foo', 'bar', 'baz', 'spam', 'egg'}
    for e in event_names:
        mark_event(e, 1)
    BitOpAnd(DayEvents('foo'), DayEvents('bar'))
    assert set(get_event_names(prefix='b', batch=2)) == {'bar', 'baz'}