def test_add(): start_time = datetime.utcnow() a_values = [1, 2, 3, 4] a_events = generate_events(start_time, a_values) b_values = [5, 6, 7, 8] b_events = generate_events(start_time, b_values) add_op = Add(None) events = add_op([a_events, b_events]) expects = [6, 8, 10, 12] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events) - i) assert e.sample == expects[i]
def test_divide(): start_time = datetime.utcnow() a_values = [10, 20, 30, -40] a_events = generate_events(start_time, a_values) b_values = [5, -40, 6, 4] b_events = generate_events(start_time, b_values) divide_op = Divide(None) events = divide_op([a_events, b_events]) expects = [2, -0.5, 5, -10] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events)-i) assert e.sample == expects[i]
def test_add_event_event(): start_time = datetime.utcnow() l_values = [1, 2, 3, 4] l_events = generate_events(start_time, l_values) r_values = [5, 6, 7, 8] r_events = generate_events(start_time, r_values) add_op = Add(None) events = add_op.execute(l_events, r_events) expects = [6, 8, 10, 12] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events)-i-1) assert e.sample == expects[i]
def test_multiply_by_all_integer(): start_time = datetime.utcnow() a_values = [1, -2, 3, 4] a_events = generate_events(start_time, a_values) b_values = [5, 6, -7, 8] b_events = generate_events(start_time, b_values) multiply_by_all_op = MultiplyByAll(None) streams = multiply_by_all_op([a_events, b_events], 10) expects = [[10, -20, 30, 40], [50, 60, -70, 80]] for i, s in enumerate(streams): for j, e in enumerate(s): assert e.timestamp == start_time + timedelta(seconds=len(s) - j) assert e.sample == expects[i][j]
def test_sub_event_event(): start_time = datetime.utcnow() l_values = [1, 2, 13, 14] l_events = generate_events(start_time, l_values) r_values = [5, 6, 7, 8] r_events = generate_events(start_time, r_values) sub_op = Subtract(None) events = sub_op.execute(l_events, r_events) expects = [-4, -4, 6, 6] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events)-i-1) assert e.sample == expects[i]
def test_divide_event_event(): start_time = datetime.utcnow() l_values = [10, -20, 30, 40] l_events = generate_events(start_time, l_values) r_values = [5, 2, 6, 8] r_events = generate_events(start_time, r_values) divide_op = Divide(None) events = divide_op.execute(l_events, r_events) expects = [2, -10, 5, 5] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events)-i-1) assert e.sample == expects[i]
def test_multiply_event_event(): start_time = datetime.utcnow() l_values = [1, -2, 3, 4] l_events = generate_events(start_time, l_values) r_values = [5, 6, 7, 8] r_events = generate_events(start_time, r_values) multiply_op = Multiply(None) events = multiply_op.execute(l_events, r_events) expects = [5, -12, 21, 32] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events)-i-1) assert e.sample == expects[i]
def test_divide_by_all_integer(): start_time = datetime.utcnow() a_values = [10, -12, 5, 4] a_events = generate_events(start_time, a_values) b_values = [5, 6, 7, 8] b_events = generate_events(start_time, b_values) divide_by_all_op = DivideByAll(None) streams = divide_by_all_op([a_events, b_events], 10) expects = [[1, -1.2, 0.5, 0.4], [0.5, 0.6, 0.7, 0.8]] for i, s in enumerate(streams): for j, e in enumerate(s): assert e.timestamp == start_time + timedelta(seconds=len(s) - j) assert e.sample == expects[i][j]
def test_add_to_all_integer(): start_time = datetime.utcnow() a_values = [1, 2, 3, 4] a_events = generate_events(start_time, a_values) b_values = [5, 6, 7, 8] b_events = generate_events(start_time, b_values) add_to_all_op = AddToAll(None) streams = add_to_all_op([a_events, b_events], 10) expects = [[11, 12, 13, 14], [15, 16, 17, 18]] for i, s in enumerate(streams): for j, e in enumerate(s): assert e.timestamp == start_time + timedelta(seconds=len(s) - j) assert e.sample == expects[i][j]
def test_sub(): start_time = datetime.utcnow() a_values = [10, 2, 20, 5] a_events = generate_events(start_time, a_values) b_values = [5, -6, 12, 20] b_events = generate_events(start_time, b_values) c_values = [1, 6, 14, -8] c_events = generate_events(start_time, c_values) sub_op = Sub(None) events = sub_op([a_events, b_events, c_events]) expects = [4, 2, -6, -7] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events) - i) assert e.sample == expects[i]
def test_greater_than_fill_last(): start_time = datetime.utcnow() l_values = [1, 2, 3, 4] l_events = generate_events(start_time, l_values) r_values = [0, 6, 3, 1] r_events = generate_events(start_time, r_values) fill = FillLast(0) gte = GreaterThan(None, fill) events = gte.execute(l_events, r_events) expects = [1, 1, 1, 4] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events) - i - 1) assert e.sample == expects[i]
def test_sub_from_all_integer(): start_time = datetime.utcnow() a_values = [10, 2, -3, 12] a_events = generate_events(start_time, a_values) b_values = [5, 16, 2, -8] b_events = generate_events(start_time, b_values) sub_from_all_op = SubFromAll(None) streams = sub_from_all_op([a_events, b_events], 10) expects = [[0, -8, -13, 2], [-5, 6, -8, -18]] for i, s in enumerate(streams): for j, e in enumerate(s): assert e.timestamp == start_time + timedelta(seconds=len(s)-j) assert e.sample == expects[i][j]
def test_multiply_by_all_stream(): start_time = datetime.utcnow() a_values = [1, 2, 3, -4] a_events = generate_events(start_time, a_values) b_values = [5, 6, 7, 8] b_events = generate_events(start_time, b_values) c_values = [-1, 10, 6, -4] c_events = generate_events(start_time, c_values) multiply_by_all_op = MultiplyByAll(None) streams = multiply_by_all_op([a_events, b_events], c_events) expects = [[-1, 20, 18, 16], [-5, 60, 42, -32]] for i, s in enumerate(streams): for j, e in enumerate(s): assert e.timestamp == start_time + timedelta(seconds=len(s) - j) assert e.sample == expects[i][j]
def test_divide_by_all_stream(): start_time = datetime.utcnow() a_values = [10, -12, 6, 4] a_events = generate_events(start_time, a_values) b_values = [5, 6, -12, 8] b_events = generate_events(start_time, b_values) c_values = [2, 10, 3, 2] c_events = generate_events(start_time, c_values) divide_by_all_op = DivideByAll(None) streams = divide_by_all_op([a_events, b_events], c_events) expects = [[5, -1.2, 2, 2], [2.5, 0.6, -4, 4]] for i, s in enumerate(streams): for j, e in enumerate(s): assert e.timestamp == start_time + timedelta(seconds=len(s) - j) assert e.sample == expects[i][j]
def test_get_events_incorrect_window(): start_time = datetime.utcnow() - timedelta(seconds=80) num_buffer_events = 10 buffer_events = generate_events(num_buffer_events, 2, start_time) store = create_store(buffer_events) events = store.get_events(-60*1000) assert 0 == len(events)
def test_get_events(): start_time = datetime.utcnow() - timedelta(seconds=80) num_buffer_events = 10 buffer_events = generate_events(num_buffer_events, 2, start_time) store = create_store(buffer_events) num_new_events = 10 start_time = datetime.utcnow() - timedelta(seconds=12) new_events = generate_events(num_new_events, 1, start_time, random=True) store.add_events(new_events) events = store.get_events(60*1000) assert num_new_events == len(events) for i in range(num_new_events): assert events[i] == new_events[i]
def test_sub_from_all_stream(): start_time = datetime.utcnow() a_values = [10, 2, -3, 12] a_events = generate_events(start_time, a_values) b_values = [5, 16, 2, -8] b_events = generate_events(start_time, b_values) c_values = [9, 10, 11, 12] c_events = generate_events(start_time, c_values) sub_from_all_op = SubFromAll(None) streams = sub_from_all_op([a_events, b_events], c_events) expects = [[1, -8, -14, 0], [-4, 6, -9, -20]] for i, s in enumerate(streams): for j, e in enumerate(s): assert e.timestamp == start_time + timedelta(seconds=len(s)-j) assert e.sample == expects[i][j]
def test_get_n_events_empty(): start_time = datetime.utcnow() num_buffer_events = 20 buffer_events = generate_events(num_buffer_events, 2, start_time) store = create_store(buffer_events) num_events = 0 events = store.get_n_events(num_events) assert num_events == len(events)
def test_add_events_empty_buffer(): store = create_store() num_events = 2 events = generate_events(num_events, 2) store.add_events(events) assert len(store.buffer) == num_events for i in range(num_events): assert events[i] == store.buffer[i]
def test_add_events_newer_ordered(): start_time = datetime.utcnow() num_buffer_events = 2 buffer_events = generate_events(num_buffer_events, 2, start_time) store = create_store(buffer_events) num_new_events = 3 start_time = start_time + timedelta(seconds=5) new_events = generate_events(num_new_events, 2, start_time) store.add_events(new_events) assert len(store.buffer) == num_buffer_events + num_new_events for i in range(num_new_events): assert new_events[i] == store.buffer[i] for i in range(num_buffer_events): assert buffer_events[i] == store.buffer[i+num_new_events]
def test_mean(): start_time = datetime.utcnow() a_values = [1, 2, 3, 4] a_events = generate_events(start_time, a_values) mean_op = Mean(None) events = mean_op(a_events) expects = [2.5] assert events[0].timestamp == start_time + timedelta(seconds=len(events)) assert events[0].sample == expects[0]
def test_first(): start_time = datetime.utcnow() a_values = [10, 2, 20, 5] a_events = generate_events(start_time, a_values) first_op = First(None) events = first_op([a_events, b_events, c_events]) expects = [4, 2, -6, -7] assert events[0].timestamp == start_time assert events[0].sample == expects[0]
def test_add_interleaved_events_new_after(): start_time = datetime.utcnow() num_buffer_events = 3 buffer_events = generate_events(num_buffer_events, 3, start_time) store = create_store(buffer_events) num_new_events = 2 start_time = start_time - timedelta(seconds=10) new_events = generate_events(num_new_events, 1, start_time, random=True) store.add_events(new_events) test_events = [] test_events.extend(buffer_events) test_events.extend((new_events)) test_events = sorted(test_events, key=attrgetter("timestamp"), reverse=True) assert len(store.buffer) == len(test_events) for i in range(len(test_events)): assert test_events[i] == store.buffer[i]
def test_median(): start_time = datetime.utcnow() values = [1, 2, 3, 10] events = generate_events(start_time, values) median_op = Median(None) out_events = median_op.execute(events) expects = [2.5] assert out_events[0].timestamp == start_time + timedelta( seconds=len(events) - 1) assert out_events[0].sample == expects[0]
def test_sub_const_event(): start_time = datetime.utcnow() r_values = [1, 2, 13, 14] r_events = generate_events(start_time, r_values) sub_op = Subtract(None) events = sub_op.execute(10, r_events) expects = [9, 8, -3, -4] for i, e in enumerate(events): assert e.timestamp == start_time + timedelta(seconds=len(events)-i-1) assert e.sample == expects[i]
def test_range(): start_time = datetime.utcnow() values = [1, 2, 3, 10] events = generate_events(start_time, values) range_op = Range(None) out_events = range_op.execute(events) expects = [9] assert out_events[0].timestamp == start_time + timedelta( seconds=len(events) - 1) assert out_events[0].sample == expects[0]
def test_percentile(): start_time = datetime.utcnow() values = [1, 2, 3, 10] events = generate_events(start_time, values) pct_op = Percentile(None, 90) out_events = pct_op.execute(events) expects = [7.9] assert out_events[0].timestamp == start_time + timedelta( seconds=len(events) - 1) assert out_events[0].sample == pytest.approx(expects[0])
def test_std(): start_time = datetime.utcnow() values = [1, 2, 3, 10] events = generate_events(start_time, values) std_op = Std(None) out_events = std_op.execute(events) expects = [3.535] assert out_events[0].timestamp == start_time + timedelta( seconds=len(events) - 1) assert out_events[0].sample == pytest.approx(expects[0], rel=1e-3)
def test_add_events_newer_unordered(): start_time = datetime.utcnow() num_buffer_events = 2 buffer_events = generate_events(num_buffer_events, 2, start_time) store = create_store(buffer_events) num_new_events = 3 start_time = start_time + timedelta(seconds=5) new_events = generate_events(num_new_events, 2, start_time, random=True, in_order=False) store.add_events(new_events) assert len(store.buffer) == num_buffer_events + num_new_events test_new_events = sorted(new_events, key=attrgetter("timestamp"), reverse=True) for i in range(num_new_events): assert test_new_events[i] == store.buffer[i] for i in range(num_buffer_events): assert buffer_events[i] == store.buffer[i+num_new_events]
def test_min(): start_time = datetime.utcnow() values = [1, 2, 3, 10] events = generate_events(start_time, values) min_op = Min(None) out_events = min_op.execute(events) expects = [1] assert out_events[0].timestamp == start_time + timedelta( seconds=len(events) - 1) assert out_events[0].sample == pytest.approx(expects[0])