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))
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)
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)
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)
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))
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))
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))