Skip to content
Snippets Groups Projects
Commit 70547097 authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

SW-44: cleanup of test code.

parent b4b26771
Branches
Tags
No related merge requests found
...@@ -41,7 +41,7 @@ def tearDownModule(): ...@@ -41,7 +41,7 @@ def tearDownModule():
class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest): class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest):
def test_resource_usages_performance(self): def test_resource_usages_performance(self):
ELAPSED_TRESHOLD = 1.0 ELAPSED_TRESHOLD = 2.0 #max allowed insert/update/delete time in seconds
num_resources = self.radb._executeQuery('select count(id) from virtual_instrument.resource;', fetch=_FETCH_ONE)['count'] num_resources = self.radb._executeQuery('select count(id) from virtual_instrument.resource;', fetch=_FETCH_ONE)['count']
# make sure all resources have 1000 units available # make sure all resources have 1000 units available
...@@ -63,7 +63,6 @@ class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest): ...@@ -63,7 +63,6 @@ class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest):
with open(filename, 'w') as file: with open(filename, 'w') as file:
file.write('#tasks, #claims, #claims_per_resource, #inserted_claims, elapsed_insert\n') file.write('#tasks, #claims, #claims_per_resource, #inserted_claims, elapsed_insert\n')
counter = 0 counter = 0
for repeat_nr in range(10):
# it is not common to claim a single resource multiple times for the same task, but it can happen, so test for it. # it is not common to claim a single resource multiple times for the same task, but it can happen, so test for it.
for preferred_num_claims_per_resource in [1, 2, 5, 10, 20, 50]: for preferred_num_claims_per_resource in [1, 2, 5, 10, 20, 50]:
# let's test over a feasible range of #claims. A lofar observation usually has ~200 claims. # let's test over a feasible range of #claims. A lofar observation usually has ~200 claims.
...@@ -71,12 +70,12 @@ class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest): ...@@ -71,12 +70,12 @@ class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest):
num_claims_to_insert = min(num_claims_to_insert, preferred_num_claims_per_resource*num_resources) num_claims_to_insert = min(num_claims_to_insert, preferred_num_claims_per_resource*num_resources)
num_claims_per_resource = min(preferred_num_claims_per_resource, num_claims_to_insert) num_claims_per_resource = min(preferred_num_claims_per_resource, num_claims_to_insert)
for oversubscription_factor in [1, 10]: for oversubscription_factor in [1, 999]:
counter += 1 counter += 1
logger.info('*****************************************************************') logger.info('*****************************************************************')
logger.info('starting task and claim scheduling: counter=%s repeat_nr=%s num_claims_per_resource=%s num_claims_to_insert=%s claim_factor=%s', logger.info('starting task and claim scheduling: counter=%s num_claims_per_resource=%s num_claims_to_insert=%s oversubscription_factor=%s',
counter, repeat_nr, num_claims_per_resource, num_claims_to_insert, oversubscription_factor) counter, num_claims_per_resource, num_claims_to_insert, oversubscription_factor)
result = self.radb.insertSpecificationAndTask(counter, counter, 'approved', 'observation', result = self.radb.insertSpecificationAndTask(counter, counter, 'approved', 'observation',
now+timedelta(hours=3*counter), now+timedelta(hours=3*counter),
...@@ -138,8 +137,8 @@ class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest): ...@@ -138,8 +137,8 @@ class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest):
# are they indeed claimed? # are they indeed claimed?
self.assertEqual(num_claims_to_insert, len(self.radb.getResourceClaims(task_ids=task_id, status='claimed'))) self.assertEqual(num_claims_to_insert, len(self.radb.getResourceClaims(task_ids=task_id, status='claimed')))
# enforce perfomance criterion: updating claims should take less than ELAPSED_TRESHOLD sec # enforce perfomance criterion: updating claims should take less than 2*ELAPSED_TRESHOLD sec (2* because we update both tasks and claims)
self.assertLess(elapsed_status_update, ELAPSED_TRESHOLD, msg="updateTaskAndResourceClaims took longer than allowed. (%ssec > %ssec) num_tasks=%s num_claims=%s num_claims_to_insert=%s num_claims_per_resource=%s" % ( self.assertLess(elapsed_status_update, 2*ELAPSED_TRESHOLD, msg="updateTaskAndResourceClaims took longer than allowed. (%ssec > %ssec) num_tasks=%s num_claims=%s num_claims_to_insert=%s num_claims_per_resource=%s" % (
elapsed_status_update, ELAPSED_TRESHOLD, num_tasks, num_claims, num_claims_to_insert, num_claims_per_resource)) elapsed_status_update, ELAPSED_TRESHOLD, num_tasks, num_claims, num_claims_to_insert, num_claims_per_resource))
# ... and proceed with cycling through the task status # ... and proceed with cycling through the task status
...@@ -149,8 +148,8 @@ class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest): ...@@ -149,8 +148,8 @@ class ResourceAssignmentDatabaseTest(radb_common_testing.RADBCommonTest):
self.radb.updateTaskAndResourceClaims(task_id=task_id, task_status=task_status) self.radb.updateTaskAndResourceClaims(task_id=task_id, task_status=task_status)
elapsed_status_update = totalSeconds(datetime.utcnow() - start) elapsed_status_update = totalSeconds(datetime.utcnow() - start)
# enforce perfomance criterion: updating task status should take less than ELAPSED_TRESHOLD sec # enforce perfomance criterion: updating task status should take less than 2*ELAPSED_TRESHOLD sec (2* because we update both tasks and claims)
self.assertLess(elapsed_status_update, ELAPSED_TRESHOLD, msg="updateTaskAndResourceClaims took longer than allowed. (%ssec > %ssec) num_tasks=%s num_claims=%s num_claims_to_insert=%s num_claims_per_resource=%s task_status=%s" % ( self.assertLess(elapsed_status_update, 2*ELAPSED_TRESHOLD, msg="updateTaskAndResourceClaims took longer than allowed. (%ssec > %ssec) num_tasks=%s num_claims=%s num_claims_to_insert=%s num_claims_per_resource=%s task_status=%s" % (
elapsed_status_update, ELAPSED_TRESHOLD, num_tasks, num_claims, num_claims_to_insert, num_claims_per_resource, task_status)) elapsed_status_update, ELAPSED_TRESHOLD, num_tasks, num_claims, num_claims_to_insert, num_claims_per_resource, task_status))
# check task status # check task status
...@@ -197,35 +196,3 @@ if __name__ == "__main__": ...@@ -197,35 +196,3 @@ if __name__ == "__main__":
os.environ['TZ'] = 'UTC' os.environ['TZ'] = 'UTC'
logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO) logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO)
unittest.main() unittest.main()
exit()
from lofar.common import dbcredentials
radb = RADatabase(dbcredentials.DBCredentials().get('RADB'), log_queries=True)
now = datetime.utcnow()
now -= timedelta(minutes=now.minute, seconds=now.second, microseconds=now.microsecond) # round to full hour
counter = 0
for k in range(25000):
num_claims_to_insert = 5
num_insert_repeats = 10
elapsed_insert = 0
for i in range(num_insert_repeats):
counter += 1
result = radb.insertSpecificationAndTask(counter, counter, 'approved', 'observation',
now+timedelta(hours=3*counter),
now + timedelta(hours=1 + 3*counter),
'content', 'CEP4')
task_id = result['task_id']
task = radb.getTask(task_id)
claims = [{'resource_id': 117,
'starttime': task['starttime']-timedelta(minutes=randint(0, 1800)),
'endtime': task['starttime']+timedelta(seconds=randint(1801, 3600)),
'status': 'tentative',
'claim_size': q}
for q in range(num_claims_to_insert)]
radb.insertResourceClaims(task_id, claims, 'foo', 1, 1)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment