예제 #1
0
 def test_sample_filter_meta(self):
     q = [
         api.Query(field='metadata.size', op='eq', value='20'),
         api.Query(field='resource_metadata.id', op='eq', value='meta_id')
     ]
     kwargs = api._query_to_kwargs(q, storage.SampleFilter.__init__)
     self.assertEqual(1, len(kwargs))
     self.assertEqual(2, len(kwargs['metaquery']))
     self.assertEqual(20, kwargs['metaquery']['metadata.size'])
     self.assertEqual('meta_id', kwargs['metaquery']['metadata.id'])
예제 #2
0
 def test_sample_filter_timestamp(self):
     ts_start = timeutils.utcnow()
     ts_end = ts_start + datetime.timedelta(minutes=5)
     q = [
         api.Query(field='timestamp', op='lt', value=str(ts_end)),
         api.Query(field='timestamp', op='gt', value=str(ts_start))
     ]
     kwargs = api._query_to_kwargs(q, storage.SampleFilter.__init__)
     self.assertEqual(4, len(kwargs))
     self.assertTimestampEqual(kwargs['start'], ts_start)
     self.assertTimestampEqual(kwargs['end'], ts_end)
     self.assertEqual('gt', kwargs['start_timestamp_op'])
     self.assertEqual('lt', kwargs['end_timestamp_op'])
예제 #3
0
 def test_sample_filter_multi(self):
     q = [
         api.Query(field='user_id', op='eq', value='uid'),
         api.Query(field='project_id', op='eq', value='pid'),
         api.Query(field='resource_id', op='eq', value='rid'),
         api.Query(field='source', op='eq', value='source_name'),
         api.Query(field='meter', op='eq', value='meter_name')
     ]
     kwargs = api._query_to_kwargs(q, storage.SampleFilter.__init__)
     self.assertEqual(5, len(kwargs))
     self.assertEqual('uid', kwargs['user'])
     self.assertEqual('pid', kwargs['project'])
     self.assertEqual('rid', kwargs['resource'])
     self.assertEqual('source_name', kwargs['source'])
     self.assertEqual('meter_name', kwargs['meter'])
예제 #4
0
 def test_sample_filter_non_equality_on_metadata(self):
     queries = [
         api.Query(field='resource_metadata.image_id',
                   op='gt',
                   value='image',
                   type='string'),
         api.Query(field='metadata.ramdisk_id',
                   op='le',
                   value='ramdisk',
                   type='string')
     ]
     with mock.patch('pecan.request') as request:
         request.headers.return_value = {'X-ProjectId': 'foobar'}
         self.assertRaises(wsme.exc.InvalidInput, api._query_to_kwargs,
                           queries, storage.SampleFilter.__init__)
예제 #5
0
 def test_get_value_as_type_integer_expression_without_type(self):
     # bug 1221736
     query = api.Query(field='should_be_a_string',
                       op='eq',
                       value='123-1')
     expected = '123-1'
     self.assertEqual(expected, query._get_value_as_type())
예제 #6
0
 def test_get_value_as_type_with_boolean(self):
     query = api.Query(field='metadata.is_public',
                       op='eq',
                       value='True',
                       type='boolean')
     expected = True
     self.assertEqual(expected, query._get_value_as_type())
예제 #7
0
 def test_get_value_as_type_boolean_expression_without_type(self):
     # bug 1221736
     query = api.Query(field='should_be_a_string',
                       op='eq',
                       value='True or False')
     expected = 'True or False'
     self.assertEqual(expected, query._get_value_as_type())
예제 #8
0
 def test_sample_filter_self_always_excluded(self):
     queries = [api.Query(field='user_id', op='eq', value='20')]
     with mock.patch('pecan.request') as request:
         request.headers.return_value = {'X-ProjectId': 'foobar'}
         kwargs = api._query_to_kwargs(queries,
                                       storage.SampleFilter.__init__)
         self.assertFalse('self' in kwargs)
예제 #9
0
 def test_get_value_as_type_with_integer(self):
     query = api.Query(field='metadata.size',
                       op='eq',
                       value='123',
                       type='integer')
     expected = 123
     self.assertEqual(expected, query._get_value_as_type())
예제 #10
0
 def test_get_value_as_type_with_string(self):
     query = api.Query(field='metadata.name',
                       op='eq',
                       value='linux',
                       type='string')
     expected = 'linux'
     self.assertEqual(expected, query._get_value_as_type())
예제 #11
0
 def test_get_value_as_type_with_float(self):
     query = api.Query(field='metadata.size',
                       op='eq',
                       value='123.456',
                       type='float')
     expected = 123.456
     self.assertEqual(expected, query._get_value_as_type())
예제 #12
0
 def test_sample_filter_invalid_op(self):
     q = [api.Query(field='user_id',
                    op='lt',
                    value='20')]
     self.assertRaises(
         wsme.exc.InvalidInput,
         api._query_to_kwargs, q, storage.SampleFilter.__init__)
예제 #13
0
 def test_sample_filter_invalid_field(self):
     q = [api.Query(field='invalid',
                    op='eq',
                    value='20')]
     self.assertRaises(
         wsme.exc.UnknownArgument,
         api._query_to_kwargs, q, storage.SampleFilter.__init__)
예제 #14
0
 def test_get_value_as_type_with_syntax_error_colons(self):
     # bug 1221736
     value = 'Ref::StackId'
     query = api.Query(field='field_name',
                       op='eq',
                       value=value)
     expected = value
     self.assertEqual(expected, query._get_value_as_type())
예제 #15
0
 def test_sample_filter_single(self):
     q = [api.Query(field='user_id',
                    op='eq',
                    value='uid')]
     kwargs = api._query_to_kwargs(q, storage.SampleFilter.__init__)
     self.assertIn('user', kwargs)
     self.assertEqual(1, len(kwargs))
     self.assertEqual('uid', kwargs['user'])
예제 #16
0
    def test_timestamp_validation(self):
        q = [api.Query(field='timestamp', op='le', value='123')]

        exc = self.assertRaises(wsme.exc.InvalidInput, api._query_to_kwargs, q,
                                storage.SampleFilter.__init__)
        expected_exc = wsme.exc.InvalidInput('timestamp', '123',
                                             'invalid timestamp format')
        self.assertEqual(str(expected_exc), str(exc))
예제 #17
0
 def test_sample_filter_timestamp_invalid_op(self):
     ts_start = timeutils.utcnow()
     q = [api.Query(field='timestamp',
                    op='eq',
                    value=str(ts_start))]
     self.assertRaises(
         wsme.exc.InvalidInput,
         api._query_to_kwargs, q, storage.SampleFilter.__init__)
예제 #18
0
 def test_get_value_as_type_with_syntax_error(self):
     # bug 1221736
     value = 'WWW-Layer-4a80714f-0232-4580-aa5e-81494d1a4147-uolhh25p5xxm'
     query = api.Query(field='group_id',
                       op='eq',
                       value=value)
     expected = value
     self.assertEqual(expected, query._get_value_as_type())
예제 #19
0
 def test_get_meters_filter_valid_fields(self):
     q = [api.Query(field='abc', op='eq', value='abc')]
     exc = self.assertRaises(wsme.exc.UnknownArgument, api._query_to_kwargs,
                             q, storage_base.Connection.get_meters)
     valid_keys = [
         'metaquery', 'pagination', 'project', 'resource', 'source', 'user'
     ]
     msg = ("unrecognized field in query: %s, "
            "valid keys: %s") % (q, valid_keys)
     expected_exc = wsme.exc.UnknownArgument('abc', msg)
     self.assertEqual(str(expected_exc), str(exc))
예제 #20
0
 def test_sample_filter_translation(self):
     queries = [
         api.Query(field=f, op='eq', value='fake_%s' % f, type='string')
         for f in ['user_id', 'project_id', 'resource_id']
     ]
     with mock.patch('pecan.request') as request:
         request.headers.return_value = {'X-ProjectId': 'foobar'}
         kwargs = api._query_to_kwargs(queries,
                                       storage.SampleFilter.__init__)
         for o in ['user', 'project', 'resource']:
             self.assertEqual('fake_%s_id' % o, kwargs.get(o))
예제 #21
0
 def test_sample_filter_valid_fields(self):
     q = [api.Query(field='abc', op='eq', value='abc')]
     exc = self.assertRaises(wsme.exc.UnknownArgument, api._query_to_kwargs,
                             q, storage.SampleFilter.__init__)
     valid_keys = [
         'message_id', 'metaquery', 'meter', 'project', 'resource',
         'search_offset', 'source', 'timestamp', 'user'
     ]
     msg = ("unrecognized field in query: %s, "
            "valid keys: %s") % (q, valid_keys)
     expected_exc = wsme.exc.UnknownArgument('abc', msg)
     self.assertEqual(str(expected_exc), str(exc))
예제 #22
0
 def test_sample_filter_exclude_internal(self):
     queries = [
         api.Query(field=f, op='eq', value='fake', type='string')
         for f in ['y', 'on_behalf_of', 'x']
     ]
     with mock.patch('pecan.request') as request:
         request.headers.return_value = {'X-ProjectId': 'foobar'}
         self.assertRaises(wsme.exc.ClientSideError,
                           api._query_to_kwargs,
                           queries,
                           storage.SampleFilter.__init__,
                           internal_keys=['on_behalf_of'])
예제 #23
0
 def test_get_alarms_filter_valid_fields(self):
     q = [api.Query(field='abc',
                    op='eq',
                    value='abc')]
     exc = self.assertRaises(
         wsme.exc.UnknownArgument,
         api._query_to_kwargs, q, alarm_storage_base.Connection.get_alarms)
     valid_keys = ['alarm_id', 'enabled', 'meter', 'name', 'pagination',
                   'project', 'severity', 'state', 'type', 'user']
     msg = ("unrecognized field in query: %s, "
            "valid keys: %s") % (q, valid_keys)
     expected_exc = wsme.exc.UnknownArgument('abc', msg)
     self.assertEqual(str(expected_exc), str(exc))
예제 #24
0
 def test_get_alarm_changes_filter_valid_fields(self):
     q = [api.Query(field='abc', op='eq', value='abc')]
     exc = self.assertRaises(
         wsme.exc.UnknownArgument, api._query_to_kwargs, q,
         alarm_storage_base.Connection.get_alarm_changes)
     valid_keys = [
         'alarm_id', 'on_behalf_of', 'project', 'search_offset',
         'timestamp', 'type', 'user'
     ]
     msg = ("unrecognized field in query: %s, "
            "valid keys: %s") % (q, valid_keys)
     expected_exc = wsme.exc.UnknownArgument('abc', msg)
     self.assertEqual(str(expected_exc), str(exc))
예제 #25
0
 def test_get_value_as_type_with_bad_value(self):
     query = api.Query(field='metadata.size',
                       op='eq',
                       value='fake',
                       type='integer')
     self.assertRaises(wsme.exc.ClientSideError, query._get_value_as_type)
예제 #26
0
 def test_get_value_as_type_with_string_without_type(self):
     query = api.Query(field='metadata.name',
                       op='eq',
                       value='linux')
     expected = 'linux'
     self.assertEqual(query._get_value_as_type(), expected)