def test_delete(requireMocking): # add test sample tm = TableManager() table = tm.get_tracking_table() table.put_item( Item={ "id": "test-to-delete", "experiment": "unknown", "sample": "test-to-delete", "status": [{ "time": 1524772162698, "value": "PROCESSING" }] }) # check it's there result = get.get({"pathParameters": {"sample": "test-to-delete"}}, {}) assert json.loads(result['body'])["id"] == "test-to-delete" # call deletion result = delete.delete({"pathParameters": { "sample": "test-to-delete" }}, {}) # assert test data is gone assert result['statusCode'] == 204 assert get.get({"pathParameters": { "sample": "test-to-delete" }}, {})['statusCode'] == 404
def delete(events, context): """deletes the specific element from the storage""" logger.info("received event: " + json.dumps(events, indent=2)) if 'pathParameters' in events: if 'sample' in events['pathParameters']: tm = TableManager() table = tm.get_tracking_table() result = table.query(KeyConditionExpression=Key('id').eq( events['pathParameters']['sample'])) logger.info("found result to delete: %s" % result) if 'Items' in result and len(result['Items']) > 0: result = json.dumps(result['Items'][0], use_decimal=True) result = json.loads(result, use_decimal=True) # create a response when sample is found table.delete_item(Key={ 'id': result['id'], 'sample': result['id'] }) return { 'statusCode': 204, 'headers': __HTTP_HEADERS__, 'isBase64Encoded': False, 'body': '' } else: # create a response when sample is not found return { 'statusCode': 404, 'headers': __HTTP_HEADERS__, 'isBase64Encoded': False, 'body': json.dumps({"error": "sample not found"}) } else: return { 'statusCode': 422, 'headers': __HTTP_HEADERS__, 'isBase64Encoded': False, 'body': json.dumps({"error": "sample name is not provided!"}) } else: return { 'statusCode': 404, 'headers': __HTTP_HEADERS__, 'isBase64Encoded': False, 'body': json.dumps({ "error": "not supported, need's be called from a http event!" }) }
def test_get(requireMocking): # store data tm = TableManager() table = tm.get_tracking_table() table.put_item(Item={ "id": "test", "experiment": "unknown", "sample": "test", "status": [{"time": 1524772162698, "value": "processing"}] }) # process data result = get.get({ "pathParameters": { "sample": "test" } }, {}) assert 200 == result['statusCode'] assert 'body' in result assert "test" == json.loads(result['body'])["id"]
def test_get_with_fileHandle(requireMocking): # store data tm = TableManager() table = tm.get_tracking_table() table.put_item(Item={ "id": "test", "experiment": "unknown", "sample": "test", "status": [{"time": 1524772162698, "value": "PROCESSING", "fileHandle": "test.mzml"}] }) # process data result = get.get({ "pathParameters": { "sample": "test" } }, {}) assert 200 == result['statusCode'] assert 'body' in result assert 'test' == json.loads(result['body'])['id'] assert 'test.mzml' == json.loads(result['body'])['status'][0]['fileHandle']
def get(events, context): """returns the specific sample from the storage""" if 'pathParameters' in events: if 'sample' in events['pathParameters']: tm = TableManager() table = tm.get_tracking_table() result = table.query( KeyConditionExpression=Key('id').eq(events['pathParameters']['sample']) ) if 'Items' in result and len(result['Items']) > 0: # create a response when sample is found return { "statusCode": 200, "headers": __HTTP_HEADERS__, "body": json.dumps(result['Items'][0]) } else: # create a response when sample is not found return { "statusCode": 404, "headers": __HTTP_HEADERS__, "body": json.dumps({"error": "sample not found"}) } else: return { "statusCode": 422, "headers": __HTTP_HEADERS__, "body": json.dumps({"error": "sample name is not provided!"}) } else: return { "statusCode": 404, "headers": __HTTP_HEADERS__, "body": json.dumps({"error": "not supported, need's be called from a http event!"}) }
def test_sync_currently_processing(requireMocking, mocked_10_sample_job): tm = TableManager() for i in range(0, 10): tracking.create({'body': json.dumps( { "job": "12345", "sample": "abc_{}".format(i), "state": SCHEDULED } )}, {}) assert load_job_samples_with_states("12345")['abc_{}'.format(i)] == "scheduled" # dummy stasis data which need to be in the system for this test to pass tm.get_tracking_table().put_item(Item= { "experiment": "12345", "id": "abc_{}".format(i), "sample": "abc_{}".format(i), "status": [ { "fileHandle": "abc_{}.d".format(i), "priority": 1, "time": 1563307359163, "value": "entered" }, { "fileHandle": "abc_{}.d".format(i), "priority": 100, "time": 1563307360393, "value": "acquired" }, { "fileHandle": "abc_{}.mzml".format(i), "priority": 200, "time": 1563307361543, "value": "converted" }, { "fileHandle": "abc_{}.mzml".format(i), "priority": 300, "time": 1563330092360, "value": "scheduled" }, { "fileHandle": "abc_{}.mzml".format(i), "priority": 410, "time": 1563330183632, "value": "deconvoluted" }, { "fileHandle": "abc_{}.mzml".format(i), "priority": 420, "time": 1563330184868, "value": "corrected" }, { "fileHandle": "abc_{}.mzml".format(i), "priority": 430, "time": 1563330189108, "value": "annotated" }, { "fileHandle": "abc_{}.mzml".format(i), "priority": 440, "time": 1563330190650, "value": "quantified" }, { "fileHandle": "abc_{}.mzml".format(i), "priority": 450, "time": 1563330244348, "value": "replaced" } ] } ) calculate_job_state(job="12345") assert all(value == str(REPLACED) for value in load_job_samples_with_states("12345").values())