func testStreamTablesPanics(t *testing.T, bpc binlogplayer.Client) { ctx := context.Background() stream, err := bpc.StreamTables(ctx, testTablesRequest.Position, testTablesRequest.Tables, testTablesRequest.Charset) if err != nil { t.Fatalf("got error: %v", err) } if se, err := stream.Recv(); err == nil { t.Fatalf("got a response when error expected: %v", se) } else { if !strings.Contains(err.Error(), "test-triggered panic") { t.Errorf("wrong error from panic: %v", err) } } }
func testStreamKeyRangePanics(t *testing.T, bpc binlogplayer.Client) { ctx := context.Background() c, errFunc, err := bpc.StreamKeyRange(ctx, testKeyRangeRequest.Position, testKeyRangeRequest.KeyspaceIdType, testKeyRangeRequest.KeyRange, testKeyRangeRequest.Charset) if err != nil { t.Fatalf("got error: %v", err) } if se, ok := <-c; ok { t.Fatalf("got a response when error expected: %v", se) } err = errFunc() if err == nil || !strings.Contains(err.Error(), "test-triggered panic") { t.Errorf("wrong error from panic: %v", err) } }
func testServeUpdateStreamPanics(t *testing.T, bpc binlogplayer.Client) { ctx := context.Background() c, errFunc, err := bpc.ServeUpdateStream(ctx, testUpdateStreamRequest) if err != nil { t.Fatalf("got error: %v", err) } if se, ok := <-c; ok { t.Fatalf("got a response when error expected: %v", se) } err = errFunc() if err == nil || !strings.Contains(err.Error(), "test-triggered panic") { t.Errorf("wrong error from panic: %v", err) } }
// Run runs the test suite func Run(t *testing.T, bpc binlogplayer.Client, tablet *topodatapb.Tablet, fake *FakeBinlogStreamer) { if err := bpc.Dial(tablet, 30*time.Second); err != nil { t.Fatalf("Dial failed: %v", err) } // no panic testStreamKeyRange(t, bpc) testStreamTables(t, bpc) // panic now, and test fake.panics = true testStreamKeyRangePanics(t, bpc) testStreamTablesPanics(t, bpc) fake.panics = false }
// Run runs the test suite func Run(t *testing.T, bpc binlogplayer.Client, endPoint *pbt.EndPoint, fake *FakeBinlogStreamer) { if err := bpc.Dial(endPoint, 30*time.Second); err != nil { t.Fatalf("Dial failed: %v", err) } // no panic testServeUpdateStream(t, bpc) testStreamKeyRange(t, bpc) testStreamTables(t, bpc) // panic now, and test fake.panics = true testServeUpdateStreamPanics(t, bpc) testStreamKeyRangePanics(t, bpc) testStreamTablesPanics(t, bpc) }
func testServeUpdateStream(t *testing.T, bpc binlogplayer.Client) { ctx := context.Background() stream, err := bpc.ServeUpdateStream(ctx, testUpdateStreamRequest) if err != nil { t.Fatalf("got error: %v", err) } if se, err := stream.Recv(); err != nil { t.Fatalf("got error: %v", err) } else { if !reflect.DeepEqual(*se, *testStreamEvent) { t.Errorf("got wrong result, got \n%#v expected \n%#v", *se, *testStreamEvent) } } if se, err := stream.Recv(); err == nil { t.Fatalf("got a response when error expected: %v", se) } }
func testStreamTables(t *testing.T, bpc binlogplayer.Client) { ctx := context.Background() stream, err := bpc.StreamTables(ctx, testTablesRequest.Position, testTablesRequest.Tables, testTablesRequest.Charset) if err != nil { t.Fatalf("got error: %v", err) } if se, err := stream.Recv(); err != nil { t.Fatalf("got error: %v", err) } else { if !reflect.DeepEqual(*se, *testBinlogTransaction) { t.Errorf("got wrong result, got %v expected %v", *se, *testBinlogTransaction) } } if se, err := stream.Recv(); err == nil { t.Fatalf("got a response when error expected: %v", se) } }
func testStreamKeyRange(t *testing.T, bpc binlogplayer.Client) { ctx := context.Background() c, errFunc, err := bpc.StreamKeyRange(ctx, testKeyRangeRequest.Position, testKeyRangeRequest.KeyspaceIdType, testKeyRangeRequest.KeyRange, testKeyRangeRequest.Charset) if err != nil { t.Fatalf("got error: %v", err) } if se, ok := <-c; !ok { t.Fatalf("got no response") } else { if !reflect.DeepEqual(*se, *testBinlogTransaction) { t.Errorf("got wrong result, got %v expected %v", *se, *testBinlogTransaction) } } if se, ok := <-c; ok { t.Fatalf("got a response when error expected: %v", se) } if err := errFunc(); err != nil { t.Errorf("got unexpected error: %v", err) } }
func testServeUpdateStream(t *testing.T, bpc binlogplayer.Client) { ctx := context.Background() c, errFunc, err := bpc.ServeUpdateStream(ctx, testUpdateStreamRequest) if err != nil { t.Fatalf("got error: %v", err) } if se, ok := <-c; !ok { t.Fatalf("got no response") } else { if !reflect.DeepEqual(*se, *testStreamEvent) { t.Errorf("got wrong result, got %v expected %v", *se, *testBinlogTransaction) } } if se, ok := <-c; ok { t.Fatalf("got a response when error expected: %v", se) } if err := errFunc(); err != nil { t.Errorf("got unexpected error: %v", err) } }