def testStoreClientEntry(self): currTime = time.time() self.assertEqual(get_client_stats_db().find().count(), 0) stats.storeClientEntry("testuser", "testfield", currTime, 0.002, {"metadata_key": "metadata_val"}) self.assertEqual(get_client_stats_db().find().count(), 1) self.assertEqual(get_client_stats_db().find({"user": "******"}).count(), 1) self.assertEqual(get_client_stats_db().find({"ts": currTime}).count(), 1)
def testStoreClientEntry(self): currTime = time.time() self.assertEqual(get_client_stats_db().query_tags(), None) success = stats.storeClientEntry("testuser", "testfield", currTime, 0.002, {"metadata_key": "metadata_val"}) savedEntries = get_client_stats_db().query_tags() self.assertEquals(type(savedEntries), list) self.assertEquals(len(savedEntries), 1) entry = savedEntries[0] self.assertEquals(entry["Metadata"]["metadata_key"], "metadata_val")
def setUp(self): get_client_stats_db().remove() get_server_stats_db().remove() get_result_stats_db().remove() self.testInputJSON = \ {'Metadata': {'client_app_version': '2.0.1', 'client_os_version': '4.3'}, 'Readings': {'sync_pull_list_size': [[1411418998701, 1111], [1411418998702, 2222], [1411418998703, 3333]], 'battery_level': [[1411418998704, 4444], [1411418998705, 5555], [1411418998706, 6666]], }}
def setUp(self): get_client_stats_db().remove() get_server_stats_db().remove() get_result_stats_db().remove() self.testInputJSON = { "Metadata": {"client_app_version": "2.0.1", "client_os_version": "4.3"}, "Readings": { "sync_pull_list_size": [[1411418998701, 1111], [1411418998702, 2222], [1411418998703, 3333]], "battery_level": [[1411418998704, 4444], [1411418998705, 5555], [1411418998706, 6666]], }, }
def storeClientEntry(user, key, ts, reading, metadata): logging.debug("storing client entry for user %s, key %s at timestamp %s" % (user, key, ts)) response = None # float first, because int doesn't recognize floats represented as strings. # Android timestamps are in milliseconds, while Giles expects timestamps to be # in seconds, so divide by 1000 when you hit this case. # ios timestamps are in seconds. ts = int(ts) if ts > 9999999999: ts = ts/1000 currEntry = createEntry(user, key, ts, reading) # Add the os and app versions from the metadata dict currEntry.update(metadata) try: response = get_client_stats_db().insert(currEntry) if response == None: get_client_stats_db_backup().insert(currEntry) except Exception as e: logging.debug("failed to store client entry for user %s, key %s at timestamp %s" % (user, key, ts)) logging.debug("exception was: %s" % (e)) get_client_stats_db_backup().insert(currEntry) return response != None
def storeClientEntry(user, key, ts, reading, metadata): logging.debug("storing client entry for user %s, key %s at timestamp %s" % (user, key, ts)) response = None # float first, because int doesn't recognize floats represented as strings. # Android timestamps are in milliseconds, while Giles expects timestamps to be # in seconds, so divide by 1000 when you hit this case. # ios timestamps are in seconds. ts = int(ts) if ts > 9999999999: ts = ts / 1000 currEntry = createEntry(user, key, ts, reading) # Add the os and app versions from the metadata dict currEntry.update(metadata) try: response = get_client_stats_db().insert(currEntry) except Exception as e: logging.debug( "failed to store client entry for user %s, key %s at timestamp %s" % (user, key, ts)) logging.debug("exception was: %s" % (e)) get_client_stats_db_backup().insert(currEntry) return response != None
def testStoreServerEntry(self): currTime = time.time() self.assertEqual(get_client_stats_db().query_tags(), None) success = stats.storeServerEntry("testuser", "GET foo", currTime, 0.002) self.assertEquals(success, True) savedEntries = get_server_stats_db().query_tags() self.assertEquals(type(savedEntries), list) self.assertEquals(len(savedEntries), 1) entry = savedEntries[0] self.assertEquals(entry["Metadata"]["user"], "testuser")
def testSetClientMeasurements(self): currTime = time.time() stats.setClientMeasurements("testUser", self.testInputJSON) for savedEntry in get_client_stats_db().find(): self.assertEquals(savedEntry["client_app_version"], "2.0.1") self.assertEquals(savedEntry["client_os_version"], "4.3") self.assertAlmostEqual(savedEntry["reported_ts"], time.time(), places=0) if savedEntry["stat"] == "sync_pull_list_size": self.assertIn(savedEntry["ts"], [1411418998701, 1411418998702, 1411418998703]) self.assertIn(savedEntry["reading"], [1111, 2222, 3333])
def testSetClientMeasurements(self): currTime = time.time() stats.setClientMeasurements("testUser", self.testInputJSON) savedEntries = get_client_stats_db().query_tags() self.assertEquals(type(savedEntries), list) self.assertEquals(len(savedEntries), 2) for savedEntry in savedEntries: self.assertEquals(savedEntry['Metadata']['client_app_version'], '2.0.1') self.assertEquals(savedEntry['Metadata']['client_os_version'], '4.3') self.assertAlmostEqual(savedEntry['Metadata']['reported_ts'], currTime, places = 0)
def testSetClientMeasurements(self): currTime = time.time() stats.setClientMeasurements("testUser", self.testInputJSON) savedEntries = get_client_stats_db().query_tags() self.assertEquals(type(savedEntries), list) self.assertEquals(len(savedEntries), 2) for savedEntry in savedEntries: self.assertEquals(savedEntry['Metadata']['client_app_version'], '2.0.1') self.assertEquals(savedEntry['Metadata']['client_os_version'], '4.3') self.assertAlmostEqual(savedEntry['Metadata']['reported_ts'], currTime, places=0)
def tearDown(self): get_client_stats_db().remove() pass
def storeClientEntry(user, key, ts, reading, metadata): logging.debug("storing client entry for user %s, key %s at timestamp %s" % (user, key, ts)) currEntry = createEntry(user, key, ts, reading) # Add the os and app versions from the metadata dict currEntry.update(metadata) get_client_stats_db().insert(currEntry)