def test_time_index(notification, clean_mongo, crate_translator): # If present, use entity-level dateModified as time_index global_modified = datetime(2000, 1, 2).isoformat() modified = {'type': 'DateTime', 'value': global_modified} notification['data'][0]['dateModified'] = modified r = requests.post('{}'.format(notify_url), data=json.dumps(notification), headers=HEADERS_PUT) assert r.status_code == 200 assert r.json() == 'Notification successfully processed' time.sleep(1) entity_type = notification['data'][0]['type'] crate_translator._refresh([entity_type]) entities = crate_translator.query() assert len(entities) == 1 assert_equal_time_index_arrays(entities[0]['index'], [global_modified]) # If not, use newest of changes notification['data'][0].pop('dateModified') temp = notification['data'][0]['temperature'] notification['data'][0]['pressure'] = copy.deepcopy(temp) older = datetime(2001, 1, 2).isoformat() newer = datetime(2002, 1, 2).isoformat() e = notification['data'][0] e['temperature']['metadata']['dateModified']['value'] = older e['pressure']['metadata']['dateModified']['value'] = newer r = requests.post('{}'.format(notify_url), data=json.dumps(notification), headers=HEADERS_PUT) assert r.status_code == 200 assert r.json() == 'Notification successfully processed' time.sleep(1) crate_translator._refresh([entity_type]) entities = crate_translator.query() assert len(entities) == 1 obtained = entities[0]['index'] assert_equal_time_index_arrays(obtained, [global_modified, newer]) # Otherwise, use current time. current = datetime.now() notification['data'][0]['pressure'].pop('metadata') notification['data'][0]['temperature'].pop('metadata') r = requests.post('{}'.format(notify_url), data=json.dumps(notification), headers=HEADERS_PUT) assert r.status_code == 200 assert r.json() == 'Notification successfully processed' time.sleep(1) crate_translator._refresh([entity_type]) entities = crate_translator.query() assert len(entities) == 1 obtained = entities[0]['index'] assert obtained[-1].startswith("{}".format(current.year))
def assert_1T1E1A_response(obtained, expected): """ Check API responses for 1T1E1A """ # Assert time index obt_index = obtained.pop('index') exp_index = expected.pop('index') assert_equal_time_index_arrays(obt_index, exp_index) # Assert rest of data assert obtained == expected
def assert_1TNENA_response(obtained, expected, values_only=False): """ Check API responses for 1TNENA """ assert isinstance(obtained, dict) if not values_only: assert obtained['entityType'] == entity_type obt_entities_index = obtained['entities'][0]['index'] exp_entities_index = expected['entities'][0]['index'] else: obt_entities_index = obtained['values'][0]['index'] exp_entities_index = expected['values'][0]['index'] assert_equal_time_index_arrays(obt_entities_index, exp_entities_index) assert obtained == expected
def test_time_index(service, notification): # If present, use entity-level dateModified as time_index global_modified = datetime(2000, 1, 2, 0, 0, 0, 0, timezone.utc).isoformat() modified = {'type': 'DateTime', 'value': global_modified} notification['data'][0]['dateModified'] = modified r = requests.post('{}'.format(notify_url), data=json.dumps(notification), headers=notify_header(service)) assert r.status_code == 200 assert r.json().startswith('Notification successfully processed') time.sleep(SLEEP_TIME) entity_type = notification['data'][0]['type'] entities_url = "{}/entities".format(QL_URL) time.sleep(SLEEP_TIME) r = requests.get(entities_url, params=None, headers=query_header(service)) entities = r.json() assert len(entities) == 1 assert_equal_time_index_arrays(entities[0]['index'], [global_modified]) # If not, use newest of changes notification['data'][0].pop('dateModified') temp = notification['data'][0]['temperature'] notification['data'][0]['pressure'] = copy.deepcopy(temp) older = datetime(2001, 1, 2, 0, 0, 0, 0, timezone.utc).isoformat() newer = datetime(2002, 1, 2, 0, 0, 0, 0, timezone.utc).isoformat() e = notification['data'][0] e['temperature']['metadata']['dateModified']['value'] = older e['pressure']['metadata']['dateModified']['value'] = newer r = requests.post('{}'.format(notify_url), data=json.dumps(notification), headers=notify_header(service)) assert r.status_code == 200 assert r.json().startswith('Notification successfully processed') time.sleep(SLEEP_TIME) r = requests.get(entities_url, params=None, headers=query_header(service)) entities = r.json() assert len(entities) == 1 obtained = entities[0]['index'] assert_equal_time_index_arrays(obtained, [global_modified, newer]) # Otherwise, use current time. current = datetime.now() notification['data'][0]['pressure'].pop('metadata') notification['data'][0]['temperature'].pop('metadata') r = requests.post('{}'.format(notify_url), data=json.dumps(notification), headers=notify_header(service)) assert r.status_code == 200 assert r.json().startswith('Notification successfully processed') time.sleep(SLEEP_TIME) r = requests.get(entities_url, params=None, headers=query_header(service)) entities = r.json() assert len(entities) == 1 obtained = entities[0]['index'] assert obtained[-1].startswith("{}".format(current.year)) delete_entity_type(service, notification['data'][0]['type'])