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
Beispiel #3
0
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'])