Exemplo n.º 1
0
    def setUp(self):
        self.user = User.objects.create_user(username='******', password='******', email='*****@*****.**')
        self.client.credentials(
            HTTP_AUTHORIZATION='Basic %s' % base64.b64encode(bytes('{}:{}'.format('test', 'secret'), 'utf8')).decode())

        redis.flushdb()
        self.app = Application.objects.create(id='app', name='app')
        self.channel = Channel.objects.create(name='stable')
        self.platform = Platform.objects.create(name='win')
        Platform.objects.create(name='mac')
        self.version1 = Version.objects.create(
            app=self.app,
            platform=self.platform,
            channel=self.channel,
            version='1.0.0.0',
            file=SimpleUploadedFile('./chrome_installer.exe', False))
        self.version2 = Version.objects.create(
            app=self.app,
            platform=self.platform,
            channel=self.channel,
            version='2.0.0.0',
            file=SimpleUploadedFile('./chrome_installer.exe', False))
        self.mac_version = SparkleVersion.objects.create(
            app=self.app,
            channel=self.channel,
            version='782.112',
            short_version='13.0.782.112',
            dsa_signature='MCwCFCdoW13VBGJWIfIklKxQVyetgxE7AhQTVuY9uQT0KOV1UEk21epBsGZMPg==',
            file=SimpleUploadedFile('./chrome.dmg', b'_' * 1024),
            file_size=1024)
        app_kwargs = dict(appid=self.app.id, version=str(self.version1.version))
        install_app = create_app_xml(events=[fixtures.event_install_success], **app_kwargs)
        uninstall_app = create_app_xml(events=[fixtures.event_uninstall_success], **app_kwargs)
        self.install_app_list = [install_app]
        self.uninstall_app_list = [uninstall_app]
        self.mac_app = dict(appid=self.app.id, version=str(self.mac_version.short_version))

        self._generate_fake_statistics()
        now = datetime.now()
        updates = [(datetime(now.year-1, x, 1).strftime("%Y-%m"), x - 1) for x in range(2, 13)]
        updates.append((datetime(now.year, 1, 1).strftime("%Y-%m"), 0))
        installs = [(datetime(now.year-1, x, 1).strftime("%Y-%m"), 1) for x in range(2, 13)]
        installs.append((datetime(now.year, 1, 1).strftime("%Y-%m"), 1))
        uninstalls = [(datetime(now.year-1, x, 1).strftime("%Y-%m"), 1) for x in range(2, 13)]
        uninstalls.append((datetime(now.year, 1, 1).strftime("%Y-%m"), 1))

        win_platform_statistics = dict(new=installs, updates=updates, uninstalls=uninstalls)
        mac_platform_statistics = dict(new=installs, updates=updates)
        self.users_statistics = dict(win=win_platform_statistics, mac=mac_platform_statistics)
        self.data = dict(data=dict(self.users_statistics))
Exemplo n.º 2
0
    def setUp(self):
        redis.flushdb()
        self.app = Application.objects.create(id="app", name="app")
        self.channel = Channel.objects.create(name="stable")
        self.platform = Platform.objects.create(name="win")
        self.version1 = Version.objects.create(
            app=self.app,
            platform=self.platform,
            channel=self.channel,
            version="1.0.0.0",
            file=SimpleUploadedFile("./chrome_installer.exe", False),
        )
        self.version2 = Version.objects.create(
            app=self.app,
            platform=self.platform,
            channel=self.channel,
            version="2.0.0.0",
            file=SimpleUploadedFile("./chrome_installer.exe", False),
        )
        self.mac_version = SparkleVersion.objects.create(
            app=self.app,
            channel=self.channel,
            version="782.112",
            short_version="13.0.782.112",
            dsa_signature="MCwCFCdoW13VBGJWIfIklKxQVyetgxE7AhQTVuY9uQT0KOV1UEk21epBsGZMPg==",
            file=SimpleUploadedFile("./chrome.dmg", b"_" * 23963192),
            file_size=23963192,
        )

        app_kwargs = dict(appid=self.app.id, version=str(self.version1.version))
        install_app = create_app_xml(events=[fixtures.event_install_success], **app_kwargs)
        uninstall_app = create_app_xml(events=[fixtures.event_uninstall_success], **app_kwargs)
        self.install_app_list = [install_app]
        self.uninstall_app_list = [uninstall_app]
        self.mac_app = dict(appid=self.app.id, version=str(self.mac_version.short_version))

        self._generate_fake_statistics()
        now = datetime.now()
        win_updates = [(datetime(now.year, x, 1).strftime("%Y-%m"), x - 1) for x in range(1, 13)]
        win_installs = [(datetime(now.year, x, 1).strftime("%Y-%m"), 1) for x in range(1, 13)]
        uninstalls = [(datetime(now.year, x, 1).strftime("%Y-%m"), 1) for x in range(1, 13)]
        mac_updates = [(datetime(now.year, x, 1).strftime("%Y-%m"), x - 1) for x in range(1, 13)]
        mac_installs = [(datetime(now.year, x, 1).strftime("%Y-%m"), 1) for x in range(1, 13)]
        total_installs = map(lambda x, y: (x[0], x[1] + y[1]), win_installs, mac_installs)
        total_updates = map(lambda x, y: (x[0], x[1] + y[1]), win_updates, mac_updates)
        self.users_statistics = dict(new=total_installs, updates=total_updates, uninstalls=uninstalls)
        self.win_users_statistics = dict(new=win_installs, updates=win_updates, uninstalls=uninstalls)
        self.mac_users_statistics = dict(new=mac_installs, updates=mac_updates)
Exemplo n.º 3
0
def generate_statistics(i, versions, channels, year):
    year = year

    if i % 100 == 0:
        print(('=> %s' % i))
    version = random.choice(versions)
    platform = version.platform.name if getattr(version, 'platform',
                                                None) else 'mac'
    channel = random.choice(channels)
    if platform != 'mac':
        app = create_app_xml(appid=version.app.id,
                             version=str(version.version),
                             tag=channel.name,
                             events=[random.choice(events)])
        app_list = [app]
    else:
        app_list = dict(appid=version.app.id,
                        version=str(version.short_version),
                        tag=version.channel)
    month = random.choice(list(range(1, 13)))
    day = random.choice(list(range(1, 28)))
    date = datetime(year, month, day)
    userid = get_random_uuid(platform)
    if platform == 'mac':
        mac_userid_counting(userid, app_list, platform, now=date)
    else:
        userid_counting(userid, app_list, platform, now=date)
def generate_statistics(i, versions, channels, year):
    year = year

    if i % 100 == 0:
        print('=> %s' % i)
    version = random.choice(versions)
    platform = version.platform.name if getattr(version, 'platform', None) else 'mac'
    channel = random.choice(channels)
    if platform == 'win':
        app = create_app_xml(appid=version.app.id,
                       version=str(version.version),
                       tag=channel.name,
                       events=[random.choice(events)])
        app_list = [app]
    else:
        app_list = dict(
            appid=version.app.id,
            version=str(version.short_version),
            tag=version.channel
        )
    month = random.choice(range(1, 13))
    day = random.choice(range(1, 28))
    date = datetime(year, month, day)
    userid = get_random_uuid(platform)
    COUNTING[platform](userid, app_list, platform, now=date)
Exemplo n.º 5
0
    def setUp(self):
        redis.flushdb()
        self.app = Application.objects.create(id='app', name='app')
        self.channel = Channel.objects.create(name='stable')
        self.platform = Platform.objects.create(name='win')
        Platform.objects.create(name='mac')
        self.version1 = Version.objects.create(
            app=self.app,
            platform=self.platform,
            channel=self.channel,
            version='1.0.0.0',
            file=SimpleUploadedFile('./chrome_installer.exe', False))
        self.version2 = Version.objects.create(
            app=self.app,
            platform=self.platform,
            channel=self.channel,
            version='2.0.0.0',
            file=SimpleUploadedFile('./chrome_installer.exe', False))
        self.mac_version = SparkleVersion.objects.create(
            app=self.app,
            channel=self.channel,
            version='782.112',
            short_version='13.0.782.112',
            dsa_signature='MCwCFCdoW13VBGJWIfIklKxQVyetgxE7AhQTVuY9uQT0KOV1UEk21epBsGZMPg==',
            file=SimpleUploadedFile('./chrome.dmg', b'_' * 23963192),
            file_size=23963192)

        app_kwargs = dict(appid=self.app.id, version=str(self.version1.version))
        install_app = create_app_xml(events=[fixtures.event_install_success], **app_kwargs)
        uninstall_app = create_app_xml(events=[fixtures.event_uninstall_success], **app_kwargs)
        self.install_app_list = [install_app]
        self.uninstall_app_list = [uninstall_app]
        self.mac_app = dict(appid=self.app.id, version=str(self.mac_version.short_version))

        self._generate_fake_statistics()
        now = datetime.now()
        win_updates = [(datetime(now.year, x, 1).strftime("%Y-%m"), x - 1) for x in range(1, 13)]
        win_installs = [(datetime(now.year, x, 1).strftime("%Y-%m"), 1) for x in range(1, 13)]
        uninstalls = [(datetime(now.year, x, 1).strftime("%Y-%m"), 1) for x in range(1, 13)]
        mac_updates = [(datetime(now.year, x, 1).strftime("%Y-%m"), x - 1) for x in range(1, 13)]
        mac_installs = [(datetime(now.year, x, 1).strftime("%Y-%m"), 1) for x in range(1, 13)]
        total_installs = map(lambda x, y: (x[0], x[1] + y[1]), win_installs, mac_installs)
        total_updates = map(lambda x, y: (x[0], x[1] + y[1]), win_updates, mac_updates)
        self.users_statistics = dict(new=total_installs, updates=total_updates, uninstalls=uninstalls)
        self.win_users_statistics = dict(new=win_installs, updates=win_updates, uninstalls=uninstalls)
        self.mac_users_statistics = dict(new=mac_installs, updates=mac_updates)
Exemplo n.º 6
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="{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))
Exemplo n.º 7
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))
Exemplo n.º 8
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))