def test_multi_measurements_1(): db = influxdb.InfluxDBClient(database="example") client = InfluxAlchemy(db) fizz = Measurement.new("fuzz") bizz = Measurement.new("buzz") query = client.query(fizz, bizz).limit(10) assert str(query) == "SELECT * FROM /fuzz|buzz/ LIMIT 10;"
def test_multi_measurements_2(): db = influxdb.InfluxDBClient(database="marketdata", port=28088) client = InfluxAlchemy(db) fizz = Measurement.new("fuzz") bizz = Measurement.new("buzz") query = client.query(fizz, bizz).limit(10) assert None == query.first()
def test_multi_measurements_3(): db = influxdb.InfluxDBClient(database="marketdata", port=28088) client = InfluxAlchemy(db) fizz = Measurement.new("term_structure_px") bizz = Measurement.new("term_structure_symbol_list") query = client.query(fizz, bizz).limit(2) rs = query.first() assert True == isinstance(rs, MultiResultSet)
def test_multi_measurements_4(): db = influxdb.InfluxDBClient(database="marketdata", port=28088) client = InfluxAlchemy(db) fizz = Measurement.new("term_structure_px") bizz = Measurement.new("term_structure_symbol_list") query = client.query(fizz, bizz).limit(2) rs1 = query.first() rs2 = query.all() assert type(rs1) == type(rs2[0]) assert True == isinstance(rs2, list) # since 2 measurement x 2 limits = 4 if all data are available print(len(rs2)) assert 4 == len(rs2)
def test_limit_2(mock_limit): db = influxdb.InfluxDBClient(database="example") client = InfluxAlchemy(db) fizz = Measurement.new("fuzz") query = client.query(fizz).filter_by(vendor='quandl', market='XCME') assert str(query) == \ "SELECT * FROM fuzz WHERE (market = 'XCME') AND (vendor = 'quandl');"
def test_fields(mock_flux): mock_res = mock.MagicMock() mock_res.get_points.return_value = [{"name": "fizz"}] mock_flux.return_value = mock_res db = influxdb.InfluxDBClient(database="fizz") client = InfluxAlchemy(db) assert client.fields(Measurement.new("foo")) == ["fizz"]
def test_time_between_dt(): meas = Measurement.new("fizz") d = datetime(2016, 1, 1) exp = meas.time.between(d, "now() - 7d") assert exp == \ TagExp(meas.time, " >= ", d) & \ TagExp(meas.time, " <= ", "now() - 7d")
def test_tags(mock_flux): mock_res = mock.MagicMock() mock_res.get_points.return_value = [{'tagKey': 'sensor_id'}] mock_flux.return_value = mock_res db = influxdb.InfluxDBClient(database="fizz") client = InfluxAlchemy(db) assert client.tags(Measurement.new("environment")) == ["sensor_id"]
def test_filter(mock_qry): mock_qry.side_effect = influxdb.exceptions.InfluxDBClientError(None) db = influxdb.InfluxDBClient(database="example") client = InfluxAlchemy(db) meas = Measurement.new("fizz") query = client.query(meas).filter(meas.buzz == "goo") assert repr(query) == "SELECT * FROM fizz WHERE (buzz = 'goo');"
def test_filter_time_date(mock_qry): mock_qry.side_effect = influxdb.exceptions.InfluxDBClientError(None) db = influxdb.InfluxDBClient(database="example") client = InfluxAlchemy(db) meas = Measurement.new("fizz") d = date(2016, 10, 1) query = client.query(meas).filter(meas.time >= d) assert repr(query) == "SELECT * FROM fizz WHERE (time >= '2016-10-01');"
def test_get_empty_tags_fields(mock_fields, mock_tags): mock_tags.return_value = [] mock_fields.return_value = [] db = influxdb.InfluxDBClient(database="example") client = InfluxAlchemy(db) fizz = Measurement.new("fuzz") query = client.query(fizz) assert str(query) == "SELECT * FROM fuzz;"
def test_limit_3(mock_limit): db = influxdb.InfluxDBClient(database="example") client = InfluxAlchemy(db) fizz = Measurement.new("fuzz") query = client.query(fizz)\ .filter(fizz.foo == '123')\ .filter(fizz.boo == '555')\ .limit(2) assert str(query) == \ "SELECT * FROM fuzz WHERE (foo = '123') AND (boo = '555') LIMIT 2;"
def test_fields(mock_flux): mock_res = mock.MagicMock() mock_res.get_points.return_value = [ {'fieldKey': 'humidity', 'fieldType': 'float'}, {'fieldKey': 'temperature', 'fieldType': 'float'} ] mock_flux.return_value = mock_res db = influxdb.InfluxDBClient(database="fizz") client = InfluxAlchemy(db) assert client.fields(Measurement.new("environment")) == ["humidity", "temperature"]
def test_filter_time_aware(mock_qry): mock_qry.side_effect = influxdb.exceptions.InfluxDBClientError(None) db = influxdb.InfluxDBClient(database="example") client = InfluxAlchemy(db) meas = Measurement.new("fizz") if sys.version_info.major >= 3: tz_vietnam = timezone(timedelta(hours=7, minutes=7)) else: tz_vietnam = timezone('Asia/Ho_Chi_Minh') d_low = datetime(2016, 9, 1, tzinfo=tz_vietnam) d_high = datetime(2016, 10, 2, 8) query = client.query(meas).filter(meas.time.between(d_low, d_high)) assert repr(query) == "SELECT * FROM fizz WHERE (time >= '2016-09-01T00:00:00+07:07' AND time <= '2016-10-02T08:00:00+00:00');"
def test_filter_time_aware(mock_qry): mock_qry.side_effect = influxdb.exceptions.InfluxDBClientError(None) db = influxdb.InfluxDBClient(database="example") client = InfluxAlchemy(db) meas = Measurement.new("fizz") if sys.version_info.major >= 3: tz_vietnam = timezone(timedelta(hours=7, minutes=7)) else: tz_vietnam = timezone('Asia/Ho_Chi_Minh') d_low = datetime(2016, 9, 1, tzinfo=tz_vietnam) d_high = datetime(2016, 10, 2, 8) query = client.query(meas).filter(meas.time.between(d_low, d_high)) assert repr(query) == \ "SELECT * FROM fizz WHERE (time >= '2016-09-01T00:00:00+07:07' "\ "AND time <= '2016-10-02T08:00:00+00:00');"
def test_tag_le(): meas = Measurement.new("fizz") tag = Tag("buzz", meas) exp = tag <= "foo" assert exp == TagExp("buzz", LE, "foo")
def test_meta_getattr(): meas = Measurement.new("fizz") assert meas.buzz == Tag("buzz", meas)
def test_tag_gt(): meas = Measurement.new("fizz") tag = Tag("buzz", meas) exp = tag > "foo" assert exp == TagExp("buzz", GT, "foo")
def test_tag_eq(): meas = Measurement.new("fizz") tag = Tag("buzz", meas) exp = tag == "foo" assert exp == TagExp("buzz", EQ, "foo")
def test_tag_repr(): meas = Measurement.new("fizz") tag = Tag("buzz", meas) assert repr(tag) == "<fizz.buzz>"
def test_greater_equal(): meas = Measurement.new("fizz") exp = TagExp.greater_equal(meas.buzz, "goo") assert exp == TagExp(meas.buzz, GE, "goo")
def test_exp_or(): meas = Measurement.new("fizz") exp0 = TagExp(meas.buzz, " = ", "goo") exp1 = TagExp(meas.guzz, " = ", "zoo") assert (exp0 | exp1) == \ TagExp("buzz = 'goo'", " OR ", "guzz = 'zoo'")
def test_exp_inv(): meas = Measurement.new("fizz") exp = TagExp(meas.buzz, EQ, "goo") assert ~exp == TagExp(meas.buzz, NE, "'goo'")
def test_tag_ne(): meas = Measurement.new("fizz") tag = Tag("buzz", meas) exp = tag != "foo" assert exp == TagExp("buzz", NE, "foo")
def test_tag_init(): meas = Measurement.new("fizz") tag = Tag("buzz", meas) assert tag == meas.buzz
def test_meta_measurement(): meas = Measurement.new("fizz") assert meas == meas.measurement
def test_meta_ne(): meas0 = Measurement.new("fizz") meas1 = Measurement.new("buzz") assert meas0 != meas1
def test_meta_str(): meas = Measurement.new("fizz") assert str(meas) == "fizz"
def test_exp_ne(): meas = Measurement.new("fizz") exp0 = TagExp(meas.buzz, " = ", "goo") exp1 = TagExp(meas.guzz, " = ", "zoo") assert exp0 != exp1
def test_tag_str(): meas = Measurement.new("fizz") tag = Tag("buzz", meas) assert str(tag) == "buzz"
def test_greater_than(): meas = Measurement.new("fizz") exp = TagExp.greater_than(meas.buzz, "goo") assert exp == TagExp(meas.buzz, GT, "goo")
def test_notequals(): meas = Measurement.new("fizz") exp = TagExp.notequals(meas.buzz, "goo") assert exp == TagExp(meas.buzz, NE, "goo")
def test_less_than(): meas = Measurement.new("fizz") exp = TagExp.less_than(meas.buzz, "goo") assert exp == TagExp(meas.buzz, LT, "goo")
def test_less_equal(): meas = Measurement.new("fizz") exp = TagExp.less_equal(meas.buzz, "goo") assert exp == TagExp(meas.buzz, LE, "goo")
def test_notlike(): meas = Measurement.new("fizz") exp = TagExp.notlike(meas.buzz, "goo") assert exp == TagExp(meas.buzz, NK, "goo")
def test_meta_or(): meas0 = Measurement.new("fizz") meas1 = Measurement.new("buzz") assert (meas0 | meas1) == Measurement.new("/fizz|buzz/")
def test_new(): assert Measurement.new("fizz") == Fizz
def test_tag_lt(): meas = Measurement.new("fizz") tag = Tag("buzz", meas) exp = tag < "foo" assert exp == TagExp("buzz", LT, "foo")