public async Task Recovery() { var bucketName = _bucket.Name; _writeApi = Client.GetWriteApi(); var listener = new WriteApiTest.EventListener(_writeApi); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, "h2o_feet,location=coyote_creek level\\ water_level=1.0 1x"); _writeApi.Flush(); var error = listener.Get <WriteErrorEvent>(); Assert.IsNotNull(error); Assert.AreEqual( "unable to parse 'h2o_feet,location=coyote_creek level\\ water_level=1.0 1x': bad timestamp", error.Exception.Message); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, "h2o_feet,location=coyote_creek level\\ water_level=1.0 1"); _writeApi.Flush(); listener.Get <WriteSuccessEvent>(); var query = await _queryApi.QueryAsync( $"from(bucket:\"{bucketName}\") |> range(start: 1970-01-01T00:00:00.000000001Z)", _organization.Id); Assert.AreEqual(1, query.Count); Assert.AreEqual(1, query[0].Records.Count); Assert.AreEqual("coyote_creek", query[0].Records[0].GetValueByKey("location")); Assert.AreEqual("level water_level", query[0].Records[0].GetValueByKey("_field")); Assert.AreEqual(1, query[0].Records[0].GetValue()); }
public async Task FlushByOne() { var bucketName = _bucket.Name; var writeOptions = WriteOptions.CreateNew().BatchSize(1).FlushInterval(500_000).Build(); _writeApi = Client.GetWriteApi(writeOptions); var eventListener = new WriteApiTest.EventListener(_writeApi); const string record1 = "h2o_feet,location=coyote_creek level\\ water_level=1.0 1"; const string record2 = "h2o_feet,location=coyote_creek level\\ water_level=2.0 2"; const string record3 = "h2o_feet,location=coyote_creek level\\ water_level=3.0 3"; const string record4 = "h2o_feet,location=coyote_creek level\\ water_level=4.0 4"; const string record5 = "h2o_feet,location=coyote_creek level\\ water_level=5.0 5"; _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record1); Thread.Sleep(100); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record2); Thread.Sleep(100); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record3); Thread.Sleep(100); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record4); Thread.Sleep(100); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record5); Thread.Sleep(100); Assert.AreEqual(record1, eventListener.Get <WriteSuccessEvent>().LineProtocol); Assert.AreEqual(record2, eventListener.Get <WriteSuccessEvent>().LineProtocol); Assert.AreEqual(record3, eventListener.Get <WriteSuccessEvent>().LineProtocol); Assert.AreEqual(record4, eventListener.Get <WriteSuccessEvent>().LineProtocol); Assert.AreEqual(record5, eventListener.Get <WriteSuccessEvent>().LineProtocol); var query = await _queryApi.QueryAsync( $"from(bucket:\"{bucketName}\") |> range(start: 1970-01-01T00:00:00.000000000Z)", _organization.Id); Assert.AreEqual(1, query.Count); var records = query[0].Records; Assert.AreEqual(5, records.Count); Assert.AreEqual(0, eventListener.EventCount()); }
public void ListenWriteErrorEvent() { var bucketName = _bucket.Name; _writeApi = Client.GetWriteApi(); var listener = new WriteApiTest.EventListener(_writeApi); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, "h2o_feet,location=coyote_creek level\\ water_level=1.0 123456.789"); _writeApi.Flush(); var error = listener.Get <WriteErrorEvent>(); Assert.IsNotNull(error); Assert.AreEqual( "unable to parse 'h2o_feet,location=coyote_creek level\\ water_level=1.0 123456.789': bad timestamp", error.Exception.Message); }
public void ListenWriteSuccessEvent() { var bucketName = _bucket.Name; _writeApi = Client.GetWriteApi(); var listener = new WriteApiTest.EventListener(_writeApi); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, "h2o_feet,location=coyote_creek level\\ water_level=1.0 1"); _writeApi.Flush(); var success = listener.Get <WriteSuccessEvent>(); Assert.IsNotNull(success); Assert.AreEqual(success.Organization, _organization.Id); Assert.AreEqual(success.Bucket, bucketName); Assert.AreEqual(success.Precision, WritePrecision.Ns); Assert.AreEqual(success.LineProtocol, "h2o_feet,location=coyote_creek level\\ water_level=1.0 1"); }
public async Task FlushByCount() { var bucketName = _bucket.Name; var writeOptions = WriteOptions.CreateNew().BatchSize(6).FlushInterval(500_000).Build(); _writeApi = Client.GetWriteApi(writeOptions); var listener = new WriteApiTest.EventListener(_writeApi); const string record1 = "h2o_feet,location=coyote_creek level\\ water_level=1.0 1"; const string record2 = "h2o_feet,location=coyote_creek level\\ water_level=2.0 2"; const string record3 = "h2o_feet,location=coyote_creek level\\ water_level=3.0 3"; const string record4 = "h2o_feet,location=coyote_creek level\\ water_level=4.0 4"; const string record5 = "h2o_feet,location=coyote_creek level\\ water_level=5.0 5"; const string record6 = "h2o_feet,location=coyote_creek level\\ water_level=6.0 6"; _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record1); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record2); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record3); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record4); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record5); var query = await _queryApi.Query( "from(bucket:\"" + bucketName + "\") |> range(start: 1970-01-01T00:00:00.000000001Z)", _organization.Id); Assert.AreEqual(0, query.Count); _writeApi.WriteRecord(bucketName, _organization.Id, WritePrecision.Ns, record6); listener.Get <WriteSuccessEvent>(); query = await _queryApi.Query( "from(bucket:\"" + bucketName + "\") |> range(start: 1970-01-01T00:00:00.000000001Z)", _organization.Id); Assert.AreEqual(1, query.Count); var records = query[0].Records; Assert.AreEqual(6, records.Count); }