示例#1
0
 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)
示例#2
0
 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
示例#3
0
 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
示例#4
0
 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'
示例#5
0
 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']
示例#6
0
 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
示例#7
0
 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
示例#8
0
 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)
示例#9
0
 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
示例#10
0
 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])