def test_prefix_added(self): """Namespace prefix gets added to metrics as they are read.""" thread = tcollector.ReaderThread(1, 10, True, "my.namespace.") collector = tcollector.Collector("c", 1, "c") line = "mymetric 123 12 a=b" thread.process_line(collector, line) self.assertEqual(thread.readerq.get(), "my.namespace." + line) self.assertEqual(collector.lines_received, 1) self.assertEqual(collector.lines_invalid, 0)
def test_bad_float(self): """Values that aren't ints/floats aren't sent to OpenTSDB. This can happen if a specific collector is buggy. """ thread = tcollector.ReaderThread(1, 10, True) collector = tcollector.Collector("c", 1, "c") for line in ["xxx", "mymetric 123 True a=b"]: thread.process_line(collector, line) self.assertEqual(thread.readerq.qsize(), 0) self.assertEqual(collector.lines_received, 2) self.assertEqual(collector.lines_invalid, 2)
def test_ok_lines(self): """Good lines are passed on to OpenTSDB.""" thread = tcollector.ReaderThread(1, 10, True) collector = tcollector.Collector("c", 1, "c") for line in [ "mymetric 123.24 12 a=b", "mymetric 124 12.7 a=b", "mymetric 125 12.7" ]: thread.process_line(collector, line) self.assertEqual(thread.readerq.qsize(), 1, line) self.assertEqual(thread.readerq.get(), line) self.assertEqual(collector.lines_received, 3) self.assertEqual(collector.lines_invalid, 0)
def test_bool_true_converted_int(self): """Values that aren't ints/floats aren't sent to OpenTSDB. This can happen if a specific collector is buggy. """ thread = tcollector.ReaderThread(1, 10, True) # pylint:disable=no-member collector = tcollector.Collector("c", 1, "c") # pylint:disable=no-member line = "mymetric 123 True a=b" expected = "mymetric 123 1 a=b" thread.process_line(collector, line) self.assertEqual(thread.readerq.qsize(), 1, line) self.assertEqual(thread.readerq.get(), line) self.assertEqual(collector.lines_received, 1) self.assertEqual(collector.lines_invalid, 0)
def send_query_with_response_code(self, response_code): """ Send a HTTP query using SenderThread, with server that returns given response code. """ self.run_fake_opentsdb(response_code) reader = tcollector.ReaderThread(1, 10, True) sender = tcollector.SenderThread(reader, False, [("localhost", 4242)], False, {}, http=True, http_api_path="api/put") sender.sendq.append("mymetric 123 12 a=b") sender.send_data() return sender