diff --git a/ceilometer/api/controllers/v2.py b/ceilometer/api/controllers/v2.py index 955aa2d25..ea543acf2 100644 --- a/ceilometer/api/controllers/v2.py +++ b/ceilometer/api/controllers/v2.py @@ -1167,7 +1167,8 @@ class ValidatedComplexQuery(object): schema_value_in = { "type": "array", "items": {"oneOf": [{"type": "string"}, - {"type": "number"}]}} + {"type": "number"}]}, + "minItems": 1} schema_field = { "type": "object", diff --git a/ceilometer/tests/api/v2/test_complex_query.py b/ceilometer/tests/api/v2/test_complex_query.py index e1fe4d969..c7009c486 100644 --- a/ceilometer/tests/api/v2/test_complex_query.py +++ b/ceilometer/tests/api/v2/test_complex_query.py @@ -392,3 +392,9 @@ class TestFilterSyntaxValidation(test.BaseTestCase): self.assertRaises(jsonschema.ValidationError, self.query._validate_filter, filter) + + def test_empty_in_query_not_passing(self): + filter = {"in": {"resource_id": []}} + self.assertRaises(jsonschema.ValidationError, + self.query._validate_filter, + filter) diff --git a/ceilometer/tests/storage/test_storage_scenarios.py b/ceilometer/tests/storage/test_storage_scenarios.py index cb04fa0ac..11e204267 100644 --- a/ceilometer/tests/storage/test_storage_scenarios.py +++ b/ceilometer/tests/storage/test_storage_scenarios.py @@ -943,11 +943,6 @@ class ComplexSampleQueryTest(DBTestBase, self.assertTrue(sample.counter_volume > 0.4) self.assertTrue(sample.counter_volume <= 0.8) - def test_query_filter_with_empty_in(self): - results = list( - self.conn.query_samples(filter_expr={"in": {"resource_id": []}})) - self.assertEqual(len(results), 0) - def test_query_simple_metadata_filter(self): self._create_samples()