Esempio n. 1
0
    def test_db_query_outofrange(self):
        ship_id = str(uuid1())

        # create dataframe
        date_rng = pd.date_range(start='01/01/2018', end='02/01/2018', freq='15T')
        df = pd.DataFrame(date_rng, columns=['datetime'])
        df['value'] = np.random.uniform(0, 1000, size=(len(date_rng)))
        df['datetime'] = pd.to_datetime(df['datetime'])
        df = df.set_index('datetime')

        # save new timeseries
        DBManager.save_energy_entry(ship_id, df)

        # query
        start = '2019-01-01T00:00:00Z'
        end = '2022-01-05T00:00:00Z'
        got = DBManager.get_energy_entry(ship_id, start, end, MOCK_LOG)
        self.assertTrue(not got)

        # remove ship entry
        DBManager.delete_full_energy_entry(ship_id, MOCK_LOG)
def respond_to_query(ship_id, start, end, log):
    err = Parser.validate_query(ship_id, start, end)
    if err != '':
        return Response(
            dumps({'error': err}),
            status=HTTPStatus.BAD_REQUEST,
            mimetype='application/json',
        )

    try:
        ship_id = int(ship_id)
    except ValueError:
        ship_id = str(ship_id)

    log.info('Got query params: ship_id: {}, start: {}, end: {}'.format(
        ship_id, start, end))
    db_obj = DBManager.get_energy_entry(ship_id, start, end, log)
    if not db_obj:
        message = 'No entries found in date range {} to {}'.format(start, end)
        log.warning('Attempting to query invalid timeframe. sending: %s' %
                    message)
        return Response(
            dumps({'error': message}),
            status=HTTPStatus.BAD_REQUEST,
            mimetype='application/json',
        )
    log.debug("Retrived saved data: {}".format(db_obj))
    resp, err = Parser.db_obj_to_query_response(ship_id, db_obj, log)

    if err != '':
        return Response(
            dumps({'error': err}),
            status=HTTPStatus.SERVICE_UNAVAILABLE,
            mimetype='application/json',
        )
    log.debug('Converted retrived to json response: {}'.format(resp))
    return Response(resp, status=HTTPStatus.OK, mimetype='application/json')