diff --git a/.idea/misc.xml b/.idea/misc.xml
index e659c40..fcf3066 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -54,7 +54,7 @@
-
+
diff --git a/metrik/__init__.py b/metrik/__init__.py
index 99aa587..ba0e4af 100644
--- a/metrik/__init__.py
+++ b/metrik/__init__.py
@@ -1,2 +1,2 @@
-__version__ = '0.4.1'
+__version__ = '0.4.2'
__release__ = __version__
\ No newline at end of file
diff --git a/metrik/targets/mongo.py b/metrik/targets/mongo.py
index 9b1045a..d2064ce 100644
--- a/metrik/targets/mongo.py
+++ b/metrik/targets/mongo.py
@@ -4,6 +4,7 @@ from datetime import datetime
from contextlib import contextmanager
from metrik.conf import get_config
+from metrik import __version__ as version
class MongoTarget(Target):
@@ -29,9 +30,12 @@ class MongoTarget(Target):
'_id': self.id
}) is not None
- def persist(self, dict_object):
+ def persist(self, dict_object, present=None):
id_dict = dict_object
id_dict['_id'] = self.id
+ id_dict['_metrik_version'] = version
+ id_dict['_created_at'] = (present if present is not None
+ else datetime.now())
with self.get_db() as db:
return db[self.collection].insert_one(id_dict).inserted_id
diff --git a/test/targets/test_mongo_target.py b/test/targets/test_mongo_target.py
index 7fc1779..9814147 100644
--- a/test/targets/test_mongo_target.py
+++ b/test/targets/test_mongo_target.py
@@ -1,10 +1,11 @@
from pymongo import MongoClient
from random import randint
+from datetime import datetime, timedelta
from metrik.targets.mongo import MongoTarget
from metrik.conf import get_config
from test.mongo_test import MongoTest
-
+from metrik import __version__ as version
class MongoTargetTest(MongoTest):
@@ -38,4 +39,23 @@ class MongoTargetTest(MongoTest):
# Make sure we can trivially scale correctly
targets = [MongoTarget('test_collection', i) for i in range(10000)]
- self.assertEqual(len(targets), 10000)
\ No newline at end of file
+ self.assertEqual(len(targets), 10000)
+
+ def test_metrik_version_saved(self):
+ t = MongoTarget('test_collection', 1234)
+ t.persist({})
+ r = t.retrieve()
+ assert r['_metrik_version'] == version
+
+ def test_created_at_timestamp(self):
+ present = datetime.now()
+ t = MongoTarget('test_collection', 1234)
+ t.persist({})
+ r = t.retrieve()
+ self.assertGreaterEqual(present, r['_created_at'])
+
+ one_second_past = present - timedelta(seconds=1)
+ t = MongoTarget('test_collection', 1235)
+ t.persist({}, present=one_second_past)
+ r = t.retrieve()
+ self.assertEqual(one_second_past, r['_created_at'])
\ No newline at end of file