def test_get_last(self): from core.Status import Status from core.Test import Test from core.Base import Base test_id = str(uuid.uuid4()) test_status1 = 'FAILURE' details = {'browser': random.choice(['Firefox', 'Chrome'])} test_type = str(uuid.uuid4()) status1 = Status(test_id, test_type, test_status1, details=details) status1.save_and_update() at = Base().get_all(Test.collection, {}) assert at.count() == 1 assert at[0]['test_id'] == test_id test_status2 = 'SUCCESS' status2 = Status(test_id, test_type, test_status2, details=details) status2.save_and_update() at = Base().get_all(Test.collection, {}) assert at.count() == 1 Base().upsert_by_id(Status.collection, bson.ObjectId(status1._id), {Status._on: datetime.datetime.now() - datetime.timedelta(seconds=3)}) Base().upsert_by_id(Status.collection, bson.ObjectId(status2._id), {Status._on: datetime.datetime.now() - datetime.timedelta(seconds=3)}) sl = Status(test_id).get_last() assert sl._status == 'SUCCESS' assert sl._test_id == test_id at = Base().get_all(Test.collection, {}) assert at.count() == 1 assert at[0]['last_seen'] > Status(base_id=status2._id).get()._on + datetime.timedelta(seconds=1)
def test_save(self): from core.Status import Status from core.Test import Test from core.Index import Index from core.TestType import TestType from core.Base import Base test_id = str(uuid.uuid4()) test_status = random.choice(['SUCCESS', 'FAILURE']) test_type = str(uuid.uuid4()) details = {'browser': random.choice(['Firefox', 'Chrome'])} status = Status(test_id, test_type, test_status, details=details) TestType(test_type, doc_fields_to_index=['browser']).save() now = datetime.datetime.now() status.save() ast = Base().get_all(Status.collection, {}) assert ast.count() == 1 assert ast[0]['test_id'] == test_id assert ast[0]['status'] == test_status assert ast[0]['details'] == details assert ast[0]['type'] == test_type assert ast[0]['on'] < now + datetime.timedelta(seconds=1) at = Base().get_all(Test.collection, {}) assert at.count() == 1 assert at[0]['test_id'] == test_id assert at[0]['type'] == test_type assert at[0]['last_seen'] < ast[0]['on'] + datetime.timedelta(seconds=1) st = Base().get_one(Index.collection, {}) assert st['type'] == test_type assert st['field'] == 'browser' assert st['values'] == [details['browser']] st = Base().get_one(TestType.collection, {}) assert st['type'] == test_type assert st['doc_fields'] == ['browser'] test_id = str(uuid.uuid4()) test_status = 'TO_RERUN' test_type = str(uuid.uuid4()) status = Status(test_id, test_type, test_status) now = datetime.datetime.now() status.save() st = Base().get_one(Status.collection, {'test_id': test_id}) assert st['status'] == 'CUSTOM' assert st['details']['original_status'] == test_status
def test_save(self): from core.TestType import TestType from core.Base import Base my_type = str(uuid.uuid4()) doc = [str(uuid.uuid4()), str(uuid.uuid4()), str(uuid.uuid4())] test_type = TestType(my_type, doc) test_type.save() ast = Base().get_all(TestType.collection, {}) assert ast.count() == 1 assert ast[0]['type'] == my_type assert ast[0]['doc_fields'] == doc
def test_save_and_update(self): from core.Status import Status from core.Base import Base test_id = str(uuid.uuid4()) test_status1 = 'FAILURE' test_type = str(uuid.uuid4()) details = {'browser': random.choice(['Firefox', 'Chrome'])} status1 = Status(test_id, test_type, test_status1, details=details) status1.save_and_update() st = Base().get_one(Status.collection, {}) assert st['last'] == True test_status2 = 'SUCCESS' status2 = Status(test_id, test_type, test_status2, details=details) status2.save_and_update() ast = Base().get_all(Status.collection, {}) assert ast.count() == 2 ast = Base().get_all(Status.collection, {'last': False}) assert ast.count() == 1 assert ast[0]['status'] == 'FAILURE' ast = Base().get_all(Status.collection, {'last': True}) assert ast.count() == 1 assert ast[0]['status'] == 'SUCCESS'
def test_index(self): from core.Index import Index from core.Status import Status from core.TestType import TestType from core.Base import Base test_id = str(uuid.uuid4()) test_status = random.choice(['SUCCESS', 'FAILURE']) test_type = str(uuid.uuid4()) field1 = 'browser' field2 = 'environment' details1 = {field1: 'Firefox'} TestType(test_type, doc_fields_to_index=[field1, field2]).save() status1 = Status(test_id, test_type, test_status, details=details1) details2 = {field1: 'Chrome'} status2 = Status(test_id, test_type, test_status, details=details2) details3 = {field2: 'master'} status3 = Status(test_id, test_type, test_status, details=details3) #Index.index(status1) status1.save() ast = Base().get_all(Index.collection, {}) assert ast.count() == 1 assert ast[0]['type'] == test_type assert ast[0]['field'] == field1 assert ast[0]['values'] == ['Firefox'] #Index.index(status2) status2.save() ast = Base().get_all(Index.collection, {}) assert ast.count() == 1 assert sorted(ast[0]['values']) == sorted(['Chrome', 'Firefox']) #Index.index(status3) status3.save() ast = Base().get_all(Index.collection, {}) assert ast.count() == 2 ast = Base().get_all(Index.collection, {'field': 'browser'}) assert ast.count() == 1 assert sorted(ast[0]['values']) == sorted(['Chrome', 'Firefox']) ast = Base().get_all(Index.collection, {'field': 'environment'}) assert ast.count() == 1 assert ast[0]['values'] == ['master']
def test_remove(self): from core.Status import Status from core.Base import Base test_id1 = str(uuid.uuid4()) test_status1 = random.choice(['SUCCESS', 'FAILURE']) test_type = str(uuid.uuid4()) details = {'browser': random.choice(['Firefox', 'Chrome'])} status1 = Status(test_id1, test_type, test_status1, details=details, last=True) status1.save() test_id2 = str(uuid.uuid4()) test_status2 = random.choice(['SUCCESS', 'FAILURE']) status2 = Status(test_id2, test_type, test_status2, details=details, last=True) status2.save() status2.remove() ast = Base().get_all(Status.collection, {}) assert ast.count() == 1 assert ast[0]['test_id'] == test_id1
def test_save(self): from core.Index import Index from core.Base import Base my_type = str(uuid.uuid4()) field = str(uuid.uuid4()) values = [str(uuid.uuid4()), str(uuid.uuid4()), str(uuid.uuid4())] index = Index(my_type, field, values) index.save() ast = Base().get_all(Index.collection, {}) assert ast.count() == 1 assert ast[0]['type'] == my_type assert ast[0]['field'] == field assert ast[0]['values'] == values index2 = Index(my_type, field) assert index2._values == None index2 = index2.get() assert index2._values == values
def test_save(self): from core.Test import Test from core.Base import Base test_id = str(uuid.uuid4()) owner = str(uuid.uuid4()) test_type = str(uuid.uuid4()) test = Test(test_id, owner, test_type) now = datetime.datetime.now() res = test.save() assert res at = Base().get_all(Test.collection, {}) assert at.count() == 1 assert at[0]['_id'] == test_id assert at[0]['owner'] == owner assert at[0]['test_id'] == test_id assert at[0]['type'] == test_type assert at[0]['last_seen'] < now + datetime.timedelta(seconds=1)
def test_update_last(self): from core.Status import Status from core.Base import Base test_id1 = str(uuid.uuid4()) test_status1 = random.choice(['SUCCESS', 'FAILURE']) test_type = str(uuid.uuid4()) details = {'browser': random.choice(['Firefox', 'Chrome'])} status1 = Status(test_id1, test_type, test_status1, details=details, last=True) status1.save() test_id2 = str(uuid.uuid4()) test_status2 = random.choice(['SUCCESS', 'FAILURE']) status2 = Status(test_id2, test_type, test_status2, details=details, last=True) status2.save() st = Base().get_one(Status.collection, {}) assert st['last'] == True status2.update_last() ast = Base().get_all(Status.collection, {'last': True}) assert ast.count() == 1 st = Base().get_one(Status.collection, {'test_id': test_id2}) assert st['last'] == False
def test_purge(self): from core.Status import Status from core.Base import Base test_id = str(uuid.uuid4()) test_status1 = 'FAILURE' details = {'browser': random.choice(['Firefox', 'Chrome'])} test_type = str(uuid.uuid4()) status1 = Status(test_id, test_type, test_status1, details=details) status1.save_and_update() ast = Base().get_all(Status.collection, {}) Base().upsert_by_id(Status.collection, bson.ObjectId(status1._id), {Status._on: datetime.datetime.now() - datetime.timedelta(days=8)}) ast = Base().get_all(Status.collection, {}) test_id2 = str(uuid.uuid4()) test_status2 = 'SUCCESS' status2 = Status(test_id2, test_type, test_status2, details=details) status2.save_and_update() test_status3 = 'SUCCESS' status3 = Status(test_id, test_type, test_status3, details=details) status3.save_and_update() res = status3.purge() assert res['nb_removed'] == 1 ast = Base().get_all(Status.collection, {}) assert ast.count() == 2 assert sorted([str(st['_id']) for st in ast]) == sorted([status2._id, status3._id])