mirror of
https://github.com/bspeice/metrik
synced 2024-11-23 07:38:09 -05:00
Add time- and version-stamps to created objects
This commit is contained in:
parent
5e6bc68a33
commit
eb0c96b691
@ -54,7 +54,7 @@
|
|||||||
<ConfirmationsSetting value="0" id="Add" />
|
<ConfirmationsSetting value="0" id="Add" />
|
||||||
<ConfirmationsSetting value="0" id="Remove" />
|
<ConfirmationsSetting value="0" id="Remove" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_3" default="false" assert-keyword="false" jdk-15="false" project-jdk-name="Python 2.7.12 virtualenv at ~/Development/metrik/py2-virt" project-jdk-type="Python SDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_3" default="false" assert-keyword="false" jdk-15="false" project-jdk-name="Python 3.5.1 virtualenv at C:\Users\Bradlee Speice\Development\metrik\metrik-virtual" project-jdk-type="Python SDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PythonCompatibilityInspectionAdvertiser">
|
<component name="PythonCompatibilityInspectionAdvertiser">
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
__version__ = '0.4.1'
|
__version__ = '0.4.2'
|
||||||
__release__ = __version__
|
__release__ = __version__
|
@ -4,6 +4,7 @@ from datetime import datetime
|
|||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
|
|
||||||
from metrik.conf import get_config
|
from metrik.conf import get_config
|
||||||
|
from metrik import __version__ as version
|
||||||
|
|
||||||
|
|
||||||
class MongoTarget(Target):
|
class MongoTarget(Target):
|
||||||
@ -29,9 +30,12 @@ class MongoTarget(Target):
|
|||||||
'_id': self.id
|
'_id': self.id
|
||||||
}) is not None
|
}) is not None
|
||||||
|
|
||||||
def persist(self, dict_object):
|
def persist(self, dict_object, present=None):
|
||||||
id_dict = dict_object
|
id_dict = dict_object
|
||||||
id_dict['_id'] = self.id
|
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:
|
with self.get_db() as db:
|
||||||
return db[self.collection].insert_one(id_dict).inserted_id
|
return db[self.collection].insert_one(id_dict).inserted_id
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
from pymongo import MongoClient
|
from pymongo import MongoClient
|
||||||
from random import randint
|
from random import randint
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from metrik.targets.mongo import MongoTarget
|
from metrik.targets.mongo import MongoTarget
|
||||||
from metrik.conf import get_config
|
from metrik.conf import get_config
|
||||||
from test.mongo_test import MongoTest
|
from test.mongo_test import MongoTest
|
||||||
|
from metrik import __version__ as version
|
||||||
|
|
||||||
class MongoTargetTest(MongoTest):
|
class MongoTargetTest(MongoTest):
|
||||||
|
|
||||||
@ -38,4 +39,23 @@ class MongoTargetTest(MongoTest):
|
|||||||
# Make sure we can trivially scale correctly
|
# Make sure we can trivially scale correctly
|
||||||
targets = [MongoTarget('test_collection', i) for i in range(10000)]
|
targets = [MongoTarget('test_collection', i) for i in range(10000)]
|
||||||
|
|
||||||
self.assertEqual(len(targets), 10000)
|
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'])
|
Loading…
Reference in New Issue
Block a user