def test_basic_reporter(self): test1 = EventCounter("test1", events=["test_event"]) register_counter(test1) v = SimpleValueReporter() register_reporter(v) start_auto_reporting(0.01) try: test1.report_event("test_event", "value", 2) sleep(0.1) self.assertEqual(v.values_wo_metadata, {"test1": 2}) test1.report_event("test_event", "value", 1) sleep(0.05) self.assertEqual(v.values_wo_metadata, {"test1": 3}) stop_auto_reporting() test1.report_event("test_event", "value", 1) sleep(0.05) self.assertEqual(v.values_wo_metadata, {"test1": 3}) finally: unregister_counter(counter=test1) unregister_reporter(v)
def test_perf_frequency(self): class FakeFrequencyCounter(FrequencyCounter): i = 0 def _get_current_time(self): self.i = self.i + 1 return self.i c = FakeFrequencyCounter("c", events=["f", "c"], window_size=10) register_counter(c) try: @frequency(auto_add_counter=None) def f(): pass @frequency("c") def g(): pass f() g() self.assertEquals(c.get_value().value, 0.5) finally: unregister_counter(counter=c)
def test_munin_output(self): cfg = self.make_basic_cfg() plugin = self.create_plugin(cfg) jsfr = JSONFileReporter(output_file=self.filename) register_reporter(jsfr) test1 = EventCounter("test1") register_counter(test1) try: test1.report_event("test1", "value", 2) output_report() plugin.output_data(cfg) self.assertEqual(self.get_last_plugin_output(), ["multigraph test", "test1.value 2"]) plugin.max_file_age_in_seconds = 0.00001 self.clear_last_plugin_output() plugin.output_data(cfg) self.assertEqual(self.get_last_plugin_output(), []) plugin.max_file_age_in_seconds = None plugin.output_data(cfg) self.assertEqual(self.get_last_plugin_output(), ["multigraph test", "test1.value 2"]) os.unlink(self.filename) finally: unregister_counter(counter=test1) unregister_reporter(jsfr)
def test_one_counter_multiple_events(self): test = TotalCounter("test", events=["test1", "test2"]) register_counter(test) test.report_event("test1", "value", 1) test.report_event("test2", "value", 2) self.assertEquals(test.get_value().value, 3) unregister_counter(counter=test)
def test_perf_time(self): c = AverageTimeCounter("c") c.timer = FakeThreadLocalTimer() register_counter(c) try: @time(name="c") def f(): c.timer._get_current_time() # advances time -> just like sleep 1 pass f() f() self.assertEqual(c.get_value().value, 2) finally: unregister_counter(counter=c)
def test_multiple_counters_one_event(self): test1 = TotalCounter("test1", events=["test"]) register_counter(test1) test2 = TotalCounter("test2", events=["test"]) register_counter(test2) v = SimpleValueReporter() register_reporter(v) report_value("test", 1) output_report() self.assertEquals(v.values_wo_metadata, dict(test1=1, test2=1)) unregister_counter(counter=test1) unregister_counter(counter=test2) unregister_reporter(reporter=v)
def test_json_output(self): filename = "/tmp/json_test.txt" jsfr = JSONFileReporter(output_file=filename) test1 = EventCounter("test1") register_counter(test1) register_reporter(jsfr) try: test1.report_event("test1", "value", 2) output_report() report = JSONFileReporter.safe_read(filename) report = dict([(k, v) for k, v in report.iteritems() if not k.startswith("__")]) self.assertEqual(report, {"test1": 2}) os.unlink(filename) finally: unregister_counter(counter=test1) unregister_reporter(jsfr)
def test_frequency_cleans(self): c = FrequencyCounter("c", events=["f", "c"], window_size=0.5) register_counter(c) try: @frequency(auto_add_counter=None) def f(): pass @frequency("c") def g(): pass g() f() self.assertTrue(c.get_value().value > 0) sleep(0.7) #self.assertEqual(c.get_value().value, None) finally: unregister_counter(counter=c)
def test_basic_collection(self): test1 = TotalCounter("test1") register_counter(test1) test2 = TotalCounter("test2") register_counter(test2) v = SimpleValueReporter() register_reporter(v) report_value("test1", 1) report_value("test2", 2) output_report() self.assertTrue("__collection_time__" in v.last_values) self.assertEquals(v.values_wo_metadata,dict(test1=1,test2=2)) unregister_counter(counter=test1) unregister_counter(counter=test2) unregister_reporter(reporter=v)
def test_counted_func(self): c = EventCounter("c") register_counter(c) try: @count("c") def f(): pass f() f() f() self.assertEqual(c.get_value().value, 3L) c.clear() self.assertEqual(c.get_value().value, 0L) f() self.assertEqual(c.get_value().value, 1L) finally: unregister_counter(counter=c)