def generate_events(app_id, **options): versions = Version.objects.filter_by_enabled(app__id=app_id) userid_list = list(map(lambda x: get_random_uuid(), range(1, 25))) sessionid_list = list(map(lambda x: get_random_uuid(), range(1, 50))) for i in range(1, options['count'] + 1): if i % 10 == 0: print('=> ', i) version = random.choice(versions) request = request_tml.format( sessionid=random.choice(sessionid_list), requestid=get_random_uuid(), userid=random.choice(userid_list), os_version=random.choice(os_version_list), os_sp=random.choice(os_sp_list), os_arch=random.choice(os_arch_list), app_id=app_id, version=str(version.version), nextversion='', events=random.choice(event_list) ) request = bytes(request, 'utf8') request_obj = parse_request(request) with freeze_time(get_random_date()): collect_statistics(request_obj, ip='8.8.8.8')
def generate_events(app_id, **options): versions = Version.objects.filter_by_enabled(app__id=app_id) userid_list = list([get_random_uuid() for x in range(1, 25)]) sessionid_list = list([get_random_uuid() for x in range(1, 50)]) for i in range(1, options['count'] + 1): if i % 10 == 0: print('=> ', i) version = random.choice(versions) request = request_tml.format( sessionid=random.choice(sessionid_list), requestid=get_random_uuid(), userid=random.choice(userid_list), os_version=random.choice(os_version_list), os_sp=random.choice(os_sp_list), os_arch=random.choice(os_arch_list), app_id=app_id, version='', nextversion=str(version.version), events=random.choice(event_list) ) request = bytes(request, 'utf8') request_obj = parse_request(request) with freeze_time(get_random_date()): collect_statistics(request_obj, ip='8.8.8.8')
def generate_fake_hour(): for version in versions: for i in range(random.randint(0, 20)): id = uuid.UUID(int=i) request = event_install % (id, app_id, version) request = bytes(request, 'utf8') request = parse_request(request) collect_statistics(request)
def generate_fake_hour(): for version in versions: for i in range(random.randint(0, 20)): id = uuid.UUID(int=i) request = event_updatecheck % (id, app_id, version) request = bytes(request, 'utf8') request = parse_request(request) collect_statistics(request)
def collect_statistics(request, ip=None): statistics.collect_statistics(parse_request(request), ip=ip)
def test_collect_statistics(self): request = parse_request(fixtures.request_event) self.assertEqual(Os.objects.all().count(), 0) self.assertEqual(Hw.objects.all().count(), 0) self.assertEqual(Request.objects.all().count(), 0) self.assertEqual(AppRequest.objects.all().count(), 0) self.assertEqual(Event.objects.all().count(), 0) collect_statistics(request) self.assertEqual(Os.objects.all().count(), 1) self.assertEqual(Hw.objects.all().count(), 0) self.assertEqual(Request.objects.all().count(), 1) self.assertEqual(AppRequest.objects.all().count(), 1) self.assertEqual(Event.objects.all().count(), 3) os = Os.objects.get() req = Request.objects.get() app_req = AppRequest.objects.get() events = Event.objects.all() self.assertEqual(os.platform, "win") self.assertEqual(os.version, "6.1") self.assertEqual(os.sp, "") self.assertEqual(os.arch, "x64") self.assertEqual(req.version, Request._meta.get_field_by_name("version")[0].to_python("1.3.23.0")) self.assertEqual(req.ismachine, 1) self.assertEqual(req.sessionid, "{2882CF9B-D9C2-4edb-9AAF-8ED5FCF366F7}") self.assertEqual(req.userid, "{D0BBD725-742D-44ae-8D46-0231E881D58E}") self.assertEqual(req.originurl, None) self.assertEqual(req.testsource, "ossdev") self.assertEqual(req.updaterchannel, None) self.assertEqual(req.os, os) self.assertEqual(req.hw, None) self.assertEqual(app_req.version, None) self.assertEqual(app_req.nextversion, Request._meta.get_field_by_name("version")[0].to_python("13.0.782.112")) self.assertEqual(app_req.lang, "en") self.assertEqual(app_req.tag, None) self.assertEqual(app_req.installage, 6) self.assertEqual(app_req.appid, "{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}") self.assertEqual(app_req.request, req) event = events[0] self.assertEqual(event.eventtype, 9) self.assertEqual(event.eventresult, 1) self.assertEqual(event.errorcode, 0) self.assertEqual(event.extracode1, 0) self.assertEqual(event.download_time_ms, None) self.assertEqual(event.downloaded, None) self.assertEqual(event.total, None) self.assertEqual(event.update_check_time_ms, None) self.assertEqual(event.install_time_ms, None) self.assertEqual(event.source_url_index, None) self.assertEqual(event.state_cancelled, None) self.assertEqual(event.time_since_update_available_ms, None) self.assertEqual(event.time_since_download_start_ms, None) self.assertEqual(event.nextversion, None) self.assertEqual(event.previousversion, None) for e in events: self.assertIn(e, app_req.events.all())
def test_collect_statistics(self): request = parse_request(fixtures.request_event) self.assertEqual(Os.objects.all().count(), 0) self.assertEqual(Hw.objects.all().count(), 0) self.assertEqual(Request.objects.all().count(), 0) self.assertEqual(AppRequest.objects.all().count(), 0) self.assertEqual(Event.objects.all().count(), 0) collect_statistics(request) self.assertEqual(Os.objects.all().count(), 1) self.assertEqual(Hw.objects.all().count(), 0) self.assertEqual(Request.objects.all().count(), 1) self.assertEqual(AppRequest.objects.all().count(), 1) self.assertEqual(Event.objects.all().count(), 3) os = Os.objects.get() req = Request.objects.get() app_req = AppRequest.objects.get() events = Event.objects.all() self.assertEqual(os.platform, 'win') self.assertEqual(os.version, '6.1') self.assertEqual(os.sp, '') self.assertEqual(os.arch, 'x64') self.assertEqual( req.version, Request._meta.get_field('version').to_python('1.3.23.0')) self.assertEqual(req.ismachine, 1) self.assertEqual(req.sessionid, '{2882CF9B-D9C2-4edb-9AAF-8ED5FCF366F7}') self.assertEqual(req.userid, '{D0BBD725-742D-44ae-8D46-0231E881D58E}') self.assertEqual(req.originurl, None) self.assertEqual(req.testsource, 'ossdev') self.assertEqual(req.updaterchannel, None) self.assertEqual(req.os, os) self.assertEqual(req.hw, None) self.assertEqual(app_req.version, None) self.assertEqual( app_req.nextversion, Request._meta.get_field('version').to_python('13.0.782.112')) self.assertEqual(app_req.lang, 'en') self.assertEqual(app_req.tag, 'stable') self.assertEqual(app_req.installage, 6) self.assertEqual(app_req.appid, '{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}') self.assertEqual(app_req.request, req) event = events[0] self.assertEqual(event.eventtype, 9) self.assertEqual(event.eventresult, 1) self.assertEqual(event.errorcode, 0) self.assertEqual(event.extracode1, 0) self.assertEqual(event.download_time_ms, None) self.assertEqual(event.downloaded, None) self.assertEqual(event.total, None) self.assertEqual(event.update_check_time_ms, None) self.assertEqual(event.install_time_ms, None) self.assertEqual(event.source_url_index, None) self.assertEqual(event.state_cancelled, None) self.assertEqual(event.time_since_update_available_ms, None) self.assertEqual(event.time_since_download_start_ms, None) self.assertEqual(event.nextversion, None) self.assertEqual(event.previousversion, None) for e in events: self.assertIn(e, app_req.events.all())
def test_collect_statistics(self): request = parse_request(fixtures.request_event) self.assertEqual(Os.objects.all().count(), 0) self.assertEqual(Hw.objects.all().count(), 0) self.assertEqual(Request.objects.all().count(), 0) self.assertEqual(AppRequest.objects.all().count(), 0) self.assertEqual(Event.objects.all().count(), 0) collect_statistics(request) self.assertEqual(Os.objects.all().count(), 1) self.assertEqual(Hw.objects.all().count(), 0) self.assertEqual(Request.objects.all().count(), 1) self.assertEqual(AppRequest.objects.all().count(), 1) self.assertEqual(Event.objects.all().count(), 3) os = Os.objects.get() req = Request.objects.get() app_req = AppRequest.objects.get() events = Event.objects.all() self.assertEqual(os.platform, 'win') self.assertEqual(os.version, '6.1') self.assertEqual(os.sp, '') self.assertEqual(os.arch, 'x64') self.assertEqual(req.version, Request._meta.get_field_by_name('version')[0].to_python('1.3.23.0')) self.assertEqual(req.ismachine, 1) self.assertEqual(req.sessionid, '{2882CF9B-D9C2-4edb-9AAF-8ED5FCF366F7}') self.assertEqual(req.userid, '{F25EC606-5FC2-449b-91FF-FA21CADB46E4}') self.assertEqual(req.originurl, None) self.assertEqual(req.testsource, 'ossdev') self.assertEqual(req.updaterchannel, None) self.assertEqual(req.os, os) self.assertEqual(req.hw, None) self.assertEqual(app_req.version, None) self.assertEqual(app_req.nextversion, Request._meta.get_field_by_name('version')[0].to_python('13.0.782.112')) self.assertEqual(app_req.lang, 'en') self.assertEqual(app_req.tag, None) self.assertEqual(app_req.installage, 6) self.assertEqual(app_req.appid, '{8A69D345-D564-463C-AFF1-A69D9E530F96}') self.assertEqual(app_req.request, req) event = events[0] self.assertEqual(event.eventtype, 9) self.assertEqual(event.eventresult, 1) self.assertEqual(event.errorcode, 0) self.assertEqual(event.extracode1, 0) self.assertEqual(event.download_time_ms, None) self.assertEqual(event.downloaded, None) self.assertEqual(event.total, None) self.assertEqual(event.update_check_time_ms, None) self.assertEqual(event.install_time_ms, None) self.assertEqual(event.source_url_index, None) self.assertEqual(event.state_cancelled, None) self.assertEqual(event.time_since_update_available_ms, None) self.assertEqual(event.time_since_download_start_ms, None) self.assertEqual(event.nextversion, None) self.assertEqual(event.previousversion, None) for e in events: self.assertIn(e, app_req.events.all())
def collect_statistics(request): statistics.collect_statistics(parse_request(request))