def test_kv_store_decode_restores_encoded_event(): event = MetricsEvent(gen_next_timestamp(), gen_metrics_name(), 4.2) k, v = KvStoreMetricsFormat.encode(event) decoded_event = KvStoreMetricsFormat.decode(k, v) assert event == decoded_event
def test_kv_store_encode_generate_different_keys_for_different_seq_no(): event = MetricsEvent(gen_next_timestamp(), gen_metrics_name(), 4.2) k1, v1 = KvStoreMetricsFormat.encode(event, 1) k2, v2 = KvStoreMetricsFormat.encode(event, 2) assert k1 != k2 assert v1 == v2
def generate_events(num: int, min_ts=None) -> List[MetricsEvent]: ts = gen_next_timestamp(min_ts) result = [] for _ in range(num): ts = gen_next_timestamp(ts) name = gen_metrics_name() value = gauss(0.0, 100.0) result += [MetricsEvent(ts, name, value)] return result
def generate_events(num: int, min_ts=None) -> List[MetricsEvent]: ts = gen_next_timestamp(min_ts) result = [] for _ in range(num): ts = gen_next_timestamp(ts) name = gen_metrics_name() if random() > 0.5: value = gauss(0.0, 100.0) else: value = ValueAccumulator([gauss(0.0, 100.0) for _ in range(randint(2, 5))]) result += [MetricsEvent(ts, name, value)] return result
def test_kv_store_metrics_collector_stores_properly_encoded_data(storage: KeyValueStorage, value): ts = MockTimestamp(gen_next_timestamp()) metrics = KvStoreMetricsCollector(storage, ts) assert len([(k, v) for k, v in storage.iterator()]) == 0 id = gen_metrics_name() event = MetricsEvent(ts.value, id, value) encoded_key, encoded_value = KvStoreMetricsFormat.encode(event) metrics.add_event(id, value) stored_events = [(k, v) for k, v in storage.iterator()] assert len(stored_events) == 1 assert stored_events[0][0] == encoded_key assert stored_events[0][1] == encoded_value