Fix metric-statistics doesn't respond "Bad Request"
When metric-statistics with end_time equals start_time received, python monasca-api responds "200 OK" instead of "400 Bad Request". Change-Id: I56cf42c2530be83b4555a05b4c433666a4ccdb5e Closes-Bug: #1520029
This commit is contained in:
parent
8505c41328
commit
b71f57313e
|
@ -134,3 +134,40 @@ class TestRoleValidation(unittest.TestCase):
|
|||
self.assertRaises(
|
||||
falcon.HTTPUnauthorized,
|
||||
helpers.validate_authorization, req, authorized_roles)
|
||||
|
||||
|
||||
class TestTimestampsValidation(unittest.TestCase):
|
||||
|
||||
def test_valid_timestamps(self):
|
||||
start_time = '2015-01-01T00:00:00Z'
|
||||
end_time = '2015-01-01T00:00:01Z'
|
||||
start_timestamp = helpers._convert_time_string(start_time)
|
||||
end_timestamp = helpers._convert_time_string(end_time)
|
||||
|
||||
try:
|
||||
helpers.validate_start_end_timestamps(start_timestamp,
|
||||
end_timestamp)
|
||||
except:
|
||||
self.fail("shouldn't happen")
|
||||
|
||||
def test_same_timestamps(self):
|
||||
start_time = '2015-01-01T00:00:00Z'
|
||||
end_time = start_time
|
||||
start_timestamp = helpers._convert_time_string(start_time)
|
||||
end_timestamp = helpers._convert_time_string(end_time)
|
||||
|
||||
self.assertRaises(
|
||||
falcon.HTTPBadRequest,
|
||||
helpers.validate_start_end_timestamps,
|
||||
start_timestamp, end_timestamp)
|
||||
|
||||
def test_end_before_than_start(self):
|
||||
start_time = '2015-01-01T00:00:00Z'
|
||||
end_time = '2014-12-31T23:59:59Z'
|
||||
start_timestamp = helpers._convert_time_string(start_time)
|
||||
end_timestamp = helpers._convert_time_string(end_time)
|
||||
|
||||
self.assertRaises(
|
||||
falcon.HTTPBadRequest,
|
||||
helpers.validate_start_end_timestamps,
|
||||
start_timestamp, end_timestamp)
|
||||
|
|
|
@ -222,6 +222,13 @@ def get_query_endtime_timestamp(req, required=True):
|
|||
raise HTTPUnprocessableEntityError('Unprocessable Entity', ex.message)
|
||||
|
||||
|
||||
def validate_start_end_timestamps(start_timestamp, end_timestamp=None):
|
||||
if end_timestamp:
|
||||
if not start_timestamp < end_timestamp:
|
||||
raise falcon.HTTPBadRequest('Bad request',
|
||||
'start_time must be before end_time')
|
||||
|
||||
|
||||
def _convert_time_string(date_time_string):
|
||||
dt = timeutils.parse_isotime(date_time_string)
|
||||
dt = dt.replace(tzinfo=None)
|
||||
|
|
|
@ -168,6 +168,7 @@ class MetricsMeasurements(metrics_api_v2.MetricsMeasurementsV2API):
|
|||
helpers.validate_query_dimensions(dimensions)
|
||||
start_timestamp = helpers.get_query_starttime_timestamp(req)
|
||||
end_timestamp = helpers.get_query_endtime_timestamp(req, False)
|
||||
helpers.validate_start_end_timestamps(start_timestamp, end_timestamp)
|
||||
offset = helpers.get_query_param(req, 'offset')
|
||||
limit = helpers.get_limit(req)
|
||||
merge_metrics_flag = get_merge_metrics_flag(req)
|
||||
|
@ -222,6 +223,7 @@ class MetricsStatistics(metrics_api_v2.MetricsStatisticsV2API):
|
|||
helpers.validate_query_dimensions(dimensions)
|
||||
start_timestamp = helpers.get_query_starttime_timestamp(req)
|
||||
end_timestamp = helpers.get_query_endtime_timestamp(req, False)
|
||||
helpers.validate_start_end_timestamps(start_timestamp, end_timestamp)
|
||||
statistics = helpers.get_query_statistics(req)
|
||||
period = helpers.get_query_period(req)
|
||||
offset = helpers.get_query_param(req, 'offset')
|
||||
|
|
|
@ -184,6 +184,16 @@ class TestMeasurements(base.BaseMonascaTest):
|
|||
self._verify_list_measurements_meas_len(measurements=measurements,
|
||||
test_len=NUM_MEASUREMENTS)
|
||||
|
||||
@test.attr(type="gate")
|
||||
@test.attr(type=['negative'])
|
||||
def test_list_measurements_with_endtime_equals_starttime(self):
|
||||
query_parms = '?name=' + str(self._names_list[0]) + \
|
||||
'&merge_metrics=true' \
|
||||
'&start_time=' + str(self._start_time) + \
|
||||
'&end_time=' + str(self._start_time)
|
||||
self.assertRaises(exceptions.BadRequest,
|
||||
self.monasca_client.list_measurements, query_parms)
|
||||
|
||||
@test.attr(type="gate")
|
||||
def test_list_measurements_with_offset_limit(self):
|
||||
query_parms = '?name=' + str(self._names_list[1]) + \
|
||||
|
|
Loading…
Reference in New Issue