Commit 0101fade by Piotr Mitros

Rename db to mongodb

parent 0a2eb4b4
...@@ -163,9 +163,9 @@ def cron(period, params=None): ...@@ -163,9 +163,9 @@ def cron(period, params=None):
@periodic_task(run_every=period, name=f.__name__) @periodic_task(run_every=period, name=f.__name__)
def run(): def run():
import djanalytics.core.views import djanalytics.core.views
db = core.views.get_database(f) mongodb = core.views.get_mongo(f)
fs = core.views.get_filesystem(f) fs = core.views.get_filesystem(f)
f(fs, db, params) f(fs, mongodb, params)
return decorator(run,f) return decorator(run,f)
return factory return factory
......
...@@ -40,7 +40,7 @@ def namespace(f): ...@@ -40,7 +40,7 @@ def namespace(f):
module = f module = f
return str(module).replace(".","_") return str(module).replace(".","_")
def get_database(f): def get_mongo(f):
''' Given a function in a module, return the Mongo DB associated ''' Given a function in a module, return the Mongo DB associated
with that function. with that function.
''' '''
...@@ -144,7 +144,7 @@ def optional_parameter_call(function, optional_kwargs, passed_kwargs, arglist = ...@@ -144,7 +144,7 @@ def optional_parameter_call(function, optional_kwargs, passed_kwargs, arglist =
return function(**args) return function(**args)
default_optional_kwargs = {'fs' : get_filesystem, default_optional_kwargs = {'fs' : get_filesystem,
'db' : get_database, 'mongodb' : get_mongo,
'cache' : get_cache, 'cache' : get_cache,
# 'analytics' : get_djobject, # 'analytics' : get_djobject,
'view' : get_view, 'view' : get_view,
......
...@@ -12,50 +12,50 @@ def djt_hello_template(): ...@@ -12,50 +12,50 @@ def djt_hello_template():
return render("hello.html", {}) return render("hello.html", {})
@query() @query()
def djt_event_count(db): def djt_event_count(mongodb):
''' Number of hits to event_handler since clear_database ''' Number of hits to event_handler since clear_database
''' '''
collection = db['event_count'] collection = mongodb['event_count']
t = list(collection.find()) t = list(collection.find())
if len(t): if len(t):
return t[0]['event_count'] return t[0]['event_count']
return 0 return 0
@query() @query()
def djt_user_event_count(db, user): def djt_user_event_count(mongodb, user):
''' Number of hits by a specific user to event_handler since ''' Number of hits by a specific user to event_handler since
clear_database clear_database
''' '''
collection = db['user_event_count'] collection = mongodb['user_event_count']
t = list(collection.find({'user':user})) t = list(collection.find({'user':user}))
if len(t): if len(t):
return t[0]['event_count'] return t[0]['event_count']
return 0 return 0
@query() @query()
def djt_clear_database(db): def djt_clear_database(mongodb):
''' Clear event counts ''' Clear event counts
''' '''
collection = db['event_count'] collection = mongodb['event_count']
collection.remove({}) collection.remove({})
collection = db['user_event_count'] collection = mongodb['user_event_count']
collection.remove({}) collection.remove({})
return "Database clear" return "Database clear"
@event_handler() @event_handler()
def djt_event_count_event(db, events): def djt_event_count_event(mongodb, events):
''' Count events per user and per system. Used as test case for ''' Count events per user and per system. Used as test case for
per-user and global queries. ''' per-user and global queries. '''
for evt in events: for evt in events:
if 'user' in evt: if 'user' in evt:
collection = db['user_event_count'] collection = mongodb['user_event_count']
user = evt['user'] user = evt['user']
t = list(collection.find({'user' : user})) t = list(collection.find({'user' : user}))
if len(t): if len(t):
collection.update({'user' : user}, {'$inc':{'event_count':1}}) collection.update({'user' : user}, {'$inc':{'event_count':1}})
else: else:
collection.insert({'event_count' : 1, 'user' : user}) collection.insert({'event_count' : 1, 'user' : user})
collection = db['event_count'] collection = mongodb['event_count']
t = list(collection.find()) t = list(collection.find())
if len(t): if len(t):
collection.update({}, {'$inc':{'event_count':1}}) collection.update({}, {'$inc':{'event_count':1}})
...@@ -149,13 +149,19 @@ def djt_event_property_check(cache, events): ...@@ -149,13 +149,19 @@ def djt_event_property_check(cache, events):
if "event_property_check" in evt: if "event_property_check" in evt:
cache.set("last_seen_user", evt.djt_agent, 30) cache.set("last_seen_user", evt.djt_agent, 30)
@query() @query(name='djt_fake_user_count')
def djt_fake_user_count(): def djt_fake_user_count_query():
return 2 return 2
@view() @view(name='djt_fake_user_count')
def djt_fake_user_count(query): def djt_fake_user_count_view(query):
''' Test of an abstraction used to call queries, abstracting away ''' Test of an abstraction used to call queries, abstracting away
the network, as well as optional parameters like fs, db, etc. the network, as well as optional parameters like fs, mongodb, etc.
''' '''
return "<html>Users: {uc}</html>".format(uc = query.djt_fake_user_count()) return "<html>Users: {uc}</html>".format(uc = query.djt_fake_user_count())
@event_handler()
def router(events):
for e in events:
if e.university == "Harvard":
track_event(e)
...@@ -30,7 +30,7 @@ class SimpleTest(TestCase): ...@@ -30,7 +30,7 @@ class SimpleTest(TestCase):
c = Client() c = Client()
response = c.get('/query/djt_clear_database') response = c.get('/query/djt_clear_database')
self.assertEqual(response.content, '"Database clear"') self.assertEqual(response.content, 'Database clear')
response = c.get('/query/djt_event_count') response = c.get('/query/djt_event_count')
response = c.get('/query/djt_event_count') response = c.get('/query/djt_event_count')
self.assertEqual(response.content, "0") self.assertEqual(response.content, "0")
...@@ -45,14 +45,14 @@ class SimpleTest(TestCase): ...@@ -45,14 +45,14 @@ class SimpleTest(TestCase):
self.assertEqual(response.content, "3") self.assertEqual(response.content, "3")
print "After 3 events: ", response.content print "After 3 events: ", response.content
response = c.get('/query/djt_clear_database') response = c.get('/query/djt_clear_database')
self.assertEqual(response.content, '"Database clear"') self.assertEqual(response.content, 'Database clear')
def test_per_user_works(self): def test_per_user_works(self):
''' Test that we can have per-user events and queries ''' Test that we can have per-user events and queries
''' '''
c = Client() c = Client()
response = c.get('/query/djt_clear_database') response = c.get('/query/djt_clear_database')
self.assertEqual(response.content, '"Database clear"') self.assertEqual(response.content, 'Database clear')
response = c.get('/query/djt_user_event_count?user=alice') response = c.get('/query/djt_user_event_count?user=alice')
self.assertEqual(response.content, "0") self.assertEqual(response.content, "0")
self.assertEqual(self.send_event(c, {'user':'alice'}).content, "Success") self.assertEqual(self.send_event(c, {'user':'alice'}).content, "Success")
...@@ -78,7 +78,7 @@ class SimpleTest(TestCase): ...@@ -78,7 +78,7 @@ class SimpleTest(TestCase):
c = Client() c = Client()
def verify(d): def verify(d):
for key in d: for key in d:
r = json.loads(c.get('/query/djt_readfile?filename='+key).content) r = c.get('/query/djt_readfile?filename='+key).content
if d[key]: if d[key]:
self.assertEqual(r, "hello world!") self.assertEqual(r, "hello world!")
else: else:
...@@ -123,26 +123,26 @@ class SimpleTest(TestCase): ...@@ -123,26 +123,26 @@ class SimpleTest(TestCase):
'value': 'value2', 'value': 'value2',
'timeout':30}).content, "Success") 'timeout':30}).content, "Success")
response = json.loads(c.get('/query/djt_cache_get?key=key1').content) response = c.get('/query/djt_cache_get?key=key1').content
self.assertEqual(response, 'value1') self.assertEqual(response, 'value1')
response = json.loads(c.get('/query/djt_cache_get?key=key2').content) response = c.get('/query/djt_cache_get?key=key2').content
self.assertEqual(response, 'value2') self.assertEqual(response, 'value2')
self.assertEqual(self.send_event(c, {'event':'cachetest', self.assertEqual(self.send_event(c, {'event':'cachetest',
'key' : 'key1', 'key' : 'key1',
'value': 'valuea', 'value': 'valuea',
'timeout':30}).content, "Success") 'timeout':30}).content, "Success")
response = json.loads(c.get('/query/djt_cache_get?key=key1').content) response = c.get('/query/djt_cache_get?key=key1').content
self.assertEqual(response, 'valuea') self.assertEqual(response, 'valuea')
def test_event_property(self): def test_event_property(self):
c = Client() c = Client()
self.assertEqual(self.send_event(c, {'event_property_check':True, self.assertEqual(self.send_event(c, {'event_property_check':True,
'user' : 'bob'}).content, "Success") 'user' : 'bob'}).content, "Success")
response = json.loads(c.get('/query/djt_cache_get?key=last_seen_user').content) response = c.get('/query/djt_cache_get?key=last_seen_user').content
self.assertEqual(response, "bob") self.assertEqual(response, "bob")
self.assertEqual(self.send_event(c, {'event_property_check':True, self.assertEqual(self.send_event(c, {'event_property_check':True,
'user' : 'joe'}).content, "Success") 'user' : 'joe'}).content, "Success")
response = json.loads(c.get('/query/djt_cache_get?key=last_seen_user').content) response = c.get('/query/djt_cache_get?key=last_seen_user').content
self.assertEqual(response, "joe") self.assertEqual(response, "joe")
def test_djobject(self): def test_djobject(self):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment