def test_set(self): # Create some fake metrics. dog = ThreadStats() dog.start(roll_up_interval=10, flush_in_thread=False) reporter = dog.reporter = MemoryReporter() dog.set('test.set.1', "a string", 100.0) dog.set('test.set.1', frozenset(), 105.0) dog.set('test.set.2', 30, 115.0) dog.set('test.set.3', 30, 125.0) dog.flush(120.0) # Assert they've been properly flushed. metrics = self.sort_metrics(reporter.metrics) assert len(metrics) == 2 (first, second) = metrics assert first['metric'] == 'test.set.1' assert first['points'][0][0] == 100.0 assert first['points'][0][1] == 2 assert second['metric'] == 'test.set.2' assert second['points'][0][0] == 110.0 assert second['points'][0][1] == 1 # Flush again and make sure we're progressing. reporter.metrics = [] dog.flush(130.0) metrics = self.sort_metrics(reporter.metrics) assert len(metrics) == 1 assert metrics[0]['metric'] == 'test.set.3' assert metrics[0]['points'][0][0] == 120.0 assert metrics[0]['points'][0][1] == 1 # Finally, make sure we've flushed all metrics. reporter.metrics = [] dog.flush(150.0) assert len(reporter.metrics) == 0