summaryrefslogtreecommitdiffstats
path: root/omaha_server/sparkle/tests/test_statistics.py
diff options
context:
space:
mode:
Diffstat (limited to 'omaha_server/sparkle/tests/test_statistics.py')
-rw-r--r--omaha_server/sparkle/tests/test_statistics.py148
1 files changed, 68 insertions, 80 deletions
diff --git a/omaha_server/sparkle/tests/test_statistics.py b/omaha_server/sparkle/tests/test_statistics.py
index 8d4ce1b..efd017d 100644
--- a/omaha_server/sparkle/tests/test_statistics.py
+++ b/omaha_server/sparkle/tests/test_statistics.py
@@ -19,16 +19,20 @@ the License.
"""
from django.test import TestCase, RequestFactory
+from datetime import datetime
+
import mock
from django_redis import get_redis_connection
from bitmapist import DayEvents, HourEvents
+from freezegun import freeze_time
from omaha.utils import get_id
from sparkle.statistics import update_live_statistics, collect_statistics
-from omaha.statistics import add_app_statistics
+from sparkle.statistics import add_app_statistics
redis = get_redis_connection('statistics')
+
class StatisticsTest(TestCase):
request_factory = RequestFactory()
@@ -38,91 +42,75 @@ class StatisticsTest(TestCase):
def tearDown(self):
redis.flushdb()
+ @freeze_time('2016-1-1')
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)
-
+ 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)
- 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)
+ 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, 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.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, 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)
+
+ 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()), 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_update_live_statistics(self):
userid1 = '{F07B3878-CD6F-4B96-B52F-95C4D23077E0}'