mirror of
				https://github.com/bspeice/metrik
				synced 2025-11-04 02:10:43 -05:00 
			
		
		
		
	Get some tests in place for the MongoDB stuff
This commit is contained in:
		@ -5,7 +5,8 @@ python:
 | 
				
			|||||||
  - "3.4"
 | 
					  - "3.4"
 | 
				
			||||||
  - "3.5"
 | 
					  - "3.5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
before_install:
 | 
					services:
 | 
				
			||||||
  - export TZ=America/New_York
 | 
					  - mongodb
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
install: pip install -r requirements.txt
 | 
					install: pip install -r requirements.txt
 | 
				
			||||||
script: python setup.py test
 | 
					script: python setup.py test
 | 
				
			||||||
							
								
								
									
										7
									
								
								conftest.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								conftest.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					def pytest_configure(config):
 | 
				
			||||||
 | 
					    import sys
 | 
				
			||||||
 | 
					    sys._called_from_test = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def pytest_unconfigure(config):
 | 
				
			||||||
 | 
					    del sys._called_from_test
 | 
				
			||||||
@ -1,4 +1,16 @@
 | 
				
			|||||||
 | 
					import os
 | 
				
			||||||
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					IS_TRAVIS = 'TRAVIS_BUILD_NUMBER' in os.environ
 | 
				
			||||||
 | 
					IS_PYTEST = hasattr(sys, '_called_from_test')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEST = IS_PYTEST or IS_TRAVIS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
 | 
					USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"
 | 
				
			||||||
MONGO_HOST = 'localhost'
 | 
					MONGO_HOST = 'localhost'
 | 
				
			||||||
MONGO_PORT = 27017
 | 
					MONGO_PORT = 27017
 | 
				
			||||||
MONGO_DATABASE = 'metrik'
 | 
					
 | 
				
			||||||
 | 
					if TEST:
 | 
				
			||||||
 | 
					    MONGO_DATABASE = 'metrik'
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    MONGO_DATABASE = 'metrik-test'
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,6 @@ class MongoTarget(Target):
 | 
				
			|||||||
    def persist(self, dict_object):
 | 
					    def persist(self, dict_object):
 | 
				
			||||||
        id_dict = dict_object
 | 
					        id_dict = dict_object
 | 
				
			||||||
        id_dict['_id'] = self.id
 | 
					        id_dict['_id'] = self.id
 | 
				
			||||||
        id_dict['_retrieved'] = datetime.now()
 | 
					 | 
				
			||||||
        return self.collection.insert_one(id_dict).inserted_id
 | 
					        return self.collection.insert_one(id_dict).inserted_id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def retrieve(self):
 | 
					    def retrieve(self):
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										25
									
								
								test/mongo_test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								test/mongo_test.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					from unittest import TestCase
 | 
				
			||||||
 | 
					from pymongo import MongoClient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from metrik.conf import MONGO_DATABASE, MONGO_PORT, MONGO_HOST
 | 
				
			||||||
 | 
					from metrik.targets.mongo_target import MongoTarget
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MongoTest(TestCase):
 | 
				
			||||||
 | 
					    def tearDown(self):
 | 
				
			||||||
 | 
					        super(MongoTest, self).tearDown()
 | 
				
			||||||
 | 
					        client = MongoClient(MONGO_HOST, MONGO_PORT)
 | 
				
			||||||
 | 
					        client.drop_database(MONGO_DATABASE)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MongoTestTest(MongoTest):
 | 
				
			||||||
 | 
					    # Test that the database is dropped correctly after each test
 | 
				
			||||||
 | 
					    def test_round1(self):
 | 
				
			||||||
 | 
					        t = MongoTarget('consistent_collection', 'consistent_id')
 | 
				
			||||||
 | 
					        assert not t.exists()
 | 
				
			||||||
 | 
					        t.persist({'a': 'b'})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_round2(self):
 | 
				
			||||||
 | 
					        t = MongoTarget('consistent_collection', 'consistent_id')
 | 
				
			||||||
 | 
					        assert not t.exists()
 | 
				
			||||||
 | 
					        t.persist({'a': 'b'})
 | 
				
			||||||
							
								
								
									
										34
									
								
								test/targets/test_mongo_target.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								test/targets/test_mongo_target.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					from pymongo import MongoClient
 | 
				
			||||||
 | 
					from random import randint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from metrik.targets.mongo_target import MongoTarget
 | 
				
			||||||
 | 
					from metrik.conf import MONGO_DATABASE, MONGO_HOST, MONGO_PORT
 | 
				
			||||||
 | 
					from test.mongo_test import MongoTest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MongoTargetTest(MongoTest):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_exists(self):
 | 
				
			||||||
 | 
					        collection = 'test_collection'
 | 
				
			||||||
 | 
					        id = 1234
 | 
				
			||||||
 | 
					        t = MongoTarget(collection, id)
 | 
				
			||||||
 | 
					        assert not t.exists()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        t.persist({'a': 'b'})
 | 
				
			||||||
 | 
					        assert t.exists()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        db = MongoClient(MONGO_HOST, MONGO_PORT)[MONGO_DATABASE]
 | 
				
			||||||
 | 
					        db_collection = db[collection]
 | 
				
			||||||
 | 
					        db_collection.remove(id)
 | 
				
			||||||
 | 
					        assert not t.exists()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_persist_retrieve(self):
 | 
				
			||||||
 | 
					        collection = 'test_collection'
 | 
				
			||||||
 | 
					        id = 1234
 | 
				
			||||||
 | 
					        t = MongoTarget(collection, id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        d = {str(k): randint(0, 9999) for k in range(20)}
 | 
				
			||||||
 | 
					        t.persist(d)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        u = MongoTarget(collection, id)
 | 
				
			||||||
 | 
					        assert u.retrieve() == d
 | 
				
			||||||
		Reference in New Issue
	
	Block a user