func testUDF_WritePoint(u udf.Interface, uio *udf_test.IO, t *testing.T) { go func() { req := <-uio.Requests _, ok := req.Message.(*udf.Request_Init) if !ok { t.Errorf("expected init message got %T", req.Message) } res := &udf.Response{ Message: &udf.Response_Init{ Init: &udf.InitResponse{ Success: true, }, }, } uio.Responses <- res req = <-uio.Requests pt, ok := req.Message.(*udf.Request_Point) if !ok { t.Errorf("expected point message got %T", req.Message) } res = &udf.Response{ Message: &udf.Response_Point{ Point: pt.Point, }, } uio.Responses <- res close(uio.Responses) }() err := u.Open() if err != nil { t.Fatal(err) } err = u.Init(nil) if err != nil { t.Fatal(err) } // Write point to server pt := models.Point{ Name: "test", Database: "db", RetentionPolicy: "rp", Tags: models.Tags{"t1": "v1", "t2": "v2"}, Fields: models.Fields{"f1": 1.0, "f2": 2.0}, Time: time.Date(1971, 1, 1, 0, 0, 0, 0, time.UTC), } u.PointIn() <- pt rpt := <-u.PointOut() if !reflect.DeepEqual(rpt, pt) { t.Errorf("unexpected returned point got: %v exp %v", rpt, pt) } u.Close() // read all requests and wait till the chan is closed for range uio.Requests { } if err := <-uio.ErrC; err != nil { t.Error(err) } }
func testUDF_WriteBatch(u udf.Interface, uio *udf_test.IO, t *testing.T) { go func() { req := <-uio.Requests _, ok := req.Message.(*udf.Request_Init) if !ok { t.Errorf("expected init message got %T", req.Message) } res := &udf.Response{ Message: &udf.Response_Init{ Init: &udf.InitResponse{ Success: true, }, }, } uio.Responses <- res // Begin batch req = <-uio.Requests bb, ok := req.Message.(*udf.Request_Begin) if !ok { t.Errorf("expected begin message got %T", req.Message) } res = &udf.Response{ Message: &udf.Response_Begin{ Begin: bb.Begin, }, } uio.Responses <- res // Point req = <-uio.Requests pt, ok := req.Message.(*udf.Request_Point) if !ok { t.Errorf("expected point message got %T", req.Message) } res = &udf.Response{ Message: &udf.Response_Point{ Point: pt.Point, }, } uio.Responses <- res // End batch req = <-uio.Requests eb, ok := req.Message.(*udf.Request_End) if !ok { t.Errorf("expected end message got %T", req.Message) } res = &udf.Response{ Message: &udf.Response_End{ End: eb.End, }, } uio.Responses <- res close(uio.Responses) }() err := u.Open() if err != nil { t.Fatal(err) } err = u.Init(nil) if err != nil { t.Fatal(err) } // Write point to server b := models.Batch{ Name: "test", Tags: models.Tags{"t1": "v1"}, TMax: time.Date(1971, 1, 1, 0, 0, 0, 0, time.UTC), Points: []models.BatchPoint{{ Fields: models.Fields{"f1": 1.0, "f2": 2.0, "f3": int64(1), "f4": "str"}, Time: time.Date(1971, 1, 1, 0, 0, 0, 0, time.UTC), Tags: models.Tags{"t1": "v1", "t2": "v2"}, }}, } u.BatchIn() <- b rb := <-u.BatchOut() if !reflect.DeepEqual(b, rb) { t.Errorf("unexpected returned batch got: %v exp %v", rb, b) } u.Close() // read all requests and wait till the chan is closed for range uio.Requests { } if err := <-uio.ErrC; err != nil { t.Error(err) } }