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('request:%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('request:{}:{}'.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)
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)
def collect_statistics(request, appid, channel, now=None): deviceID = request.GET.get('deviceID') version = request.GET.get('appVersionShort') if not deviceID or not version: return userid = get_id(deviceID) app = dict(appid=appid, version=version, tag=channel) mark_event('request', userid, now=now) add_app_statistics(userid, 'mac', app) update_live_statistics(userid, appid, version)
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_userid_counting(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) request_app_events = DayEvents('request:%s' % appid) request_version_events = DayEvents('request:{}:{}'.format(appid, version)) 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 request_app_events) self.assertEqual(len(request_app_events), 0) self.assertFalse(user1_id in request_version_events) self.assertEqual(len(request_version_events), 0) self.assertFalse(user1_id in request_platform_events) self.assertEqual(len(request_platform_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 request_app_events) self.assertEqual(len(request_app_events), 1) self.assertTrue(user1_id in request_version_events) self.assertEqual(len(request_version_events), 1) self.assertTrue(user1_id in request_platform_events) self.assertEqual(len(request_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(user1_id, 'mac', test_app) self.assertTrue(user1_id in request_app_events) self.assertEqual(len(request_app_events), 1) self.assertTrue(user1_id in request_version_events) self.assertEqual(len(request_version_events), 1) self.assertTrue(user1_id in request_platform_events) self.assertEqual(len(request_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 request_app_events) self.assertEqual(len(request_app_events), 2) self.assertTrue(user2_id in request_version_events) self.assertEqual(len(request_version_events), 2) self.assertTrue(user2_id in request_platform_events) self.assertEqual(len(request_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)
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)
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))