Exemple #1
0
  def test_http_tagdb(self):
    # test http tagdb using django client
    db = HttpTagDB(settings)
    db.base_url = reverse('tagList').replace('/tags', '')
    db.username = ''
    db.password = ''

    # helper class to mock urllib3 response object
    class mockResponse(object):
      def __init__(self, status, data):
        self.status = status
        self.data = data

    # mock http request that forwards requests using django client
    def mockRequest(method, url, fields=None, headers=None, timeout=None):
      if db.username and db.password:
        self.assertEqual(headers, {'Authorization': 'Basic dGVzdDp0ZXN0\n'})
      else:
        self.assertEqual(headers, {})

      req_fields = {}
      for (field, value) in fields:
        if field in req_fields:
          req_fields[field].append(value)
        else:
          req_fields[field] = [value]

      if method == 'POST':
        result = self.client.post(url, req_fields)
      elif method == 'GET':
        result = self.client.get(url, req_fields)
      else:
        raise Exception('Invalid HTTP method %s' % method)

      return mockResponse(result.status_code, result.content)

    # use mockRequest to send http requests to live django running configured tagdb
    with patch('graphite.http_pool.http.request', mockRequest):
      self._test_tagdb(db)

      with self.assertRaisesRegexp(Exception, 'HTTP Error from remote tagdb: 405'):
        db.get_tag('delSeries')

      db.username = '******'
      db.password = '******'

      result = db.tag_series('test.a;hello=tiger;blah=blah')
      self.assertEqual(result, 'test.a;blah=blah;hello=tiger')

      result = db.list_values('hello')
      valueList = [value for value in result if value['value'] in ['tiger', 'lion']]
      self.assertEqual(len(valueList), 1)
      self.assertEqual(valueList[0]['value'], 'tiger')

      result = db.list_values('notarealtag')
      self.assertEqual(result, [])

      self.assertTrue(db.del_series('test.a;blah=blah;hello=tiger'))

      # test auto complete forwarding to remote host
      with self.settings(TAGDB_HTTP_AUTOCOMPLETE=True):
        self.maxDiff = None
        self._test_autocomplete(db, settings.TAGDB + '.find_series')

      # test auto complete using find_series
      with self.settings(TAGDB_HTTP_AUTOCOMPLETE=False):
        self._test_autocomplete(db, settings.TAGDB + '.find_series')
Exemple #2
0
  def test_http_tagdb(self):
    # test http tagdb using django client
    db = HttpTagDB(settings)
    db.base_url = reverse('tagList').replace('/tags', '')
    db.username = ''
    db.password = ''

    # helper class to mock urllib3 response object
    class mockResponse(object):
      def __init__(self, status, data):
        self.status = status
        self.data = data

    # mock http request that forwards requests using django client
    def mockRequest(method, url, fields=None, headers=None, timeout=None):
      if db.username and db.password:
        self.assertEqual(headers, {'Authorization': 'Basic dGVzdDp0ZXN0\n'})
      else:
        self.assertEqual(headers, {})

      req_fields = {}
      for (field, value) in fields:
        if field in req_fields:
          req_fields[field].append(value)
        else:
          req_fields[field] = [value]

      if method == 'POST':
        result = self.client.post(url, req_fields)
      elif method == 'GET':
        result = self.client.get(url, req_fields)
      else:
        raise Exception('Invalid HTTP method %s' % method)

      return mockResponse(result.status_code, result.content)

    # use mockRequest to send http requests to live django running configured tagdb
    with patch('graphite.http_pool.http.request', mockRequest):
      self._test_tagdb(db)

      with self.assertRaisesRegexp(Exception, 'HTTP Error from remote tagdb: 405'):
        db.get_tag('delSeries')

      db.username = '******'
      db.password = '******'

      result = db.tag_series('test.a;hello=tiger;blah=blah')
      self.assertEqual(result, 'test.a;blah=blah;hello=tiger')

      result = db.list_values('hello')
      valueList = [value for value in result if value['value'] in ['tiger', 'lion']]
      self.assertEqual(len(valueList), 1)
      self.assertEqual(valueList[0]['value'], 'tiger')

      result = db.list_values('notarealtag')
      self.assertEqual(result, [])

      self.assertTrue(db.del_series('test.a;blah=blah;hello=tiger'))

      # test auto complete forwarding to remote host
      with self.settings(TAGDB_HTTP_AUTOCOMPLETE=True):
        self.maxDiff = None
        self._test_autocomplete(db, settings.TAGDB + '.find_series')

      # test auto complete using find_series
      with self.settings(TAGDB_HTTP_AUTOCOMPLETE=False):
        self._test_autocomplete(db, settings.TAGDB + '.find_series')