func testStreamExecuteShardPanic(t *testing.T, conn *vtgateconn.VTGateConn) { ctx := context.Background() execCase := execMap["request1"] packets, errFunc := conn.StreamExecuteShard(ctx, execCase.shardQuery.Sql, execCase.shardQuery.Keyspace, execCase.shardQuery.Shards, execCase.execQuery.BindVariables, execCase.execQuery.TabletType) if _, ok := <-packets; ok { t.Fatalf("Received packets instead of panic?") } err := errFunc() expectPanic(t, err) }
func testStreamExecuteShard(t *testing.T, conn *vtgateconn.VTGateConn) { ctx := context.Background() execCase := execMap["request1"] packets, errFunc := conn.StreamExecuteShard(ctx, execCase.shardQuery.Sql, execCase.shardQuery.Keyspace, execCase.shardQuery.Shards, execCase.execQuery.BindVariables, execCase.execQuery.TabletType) var qr mproto.QueryResult for packet := range packets { if len(packet.Fields) != 0 { qr.Fields = packet.Fields } if len(packet.Rows) != 0 { qr.Rows = append(qr.Rows, packet.Rows...) } } wantResult := *execCase.reply.Result wantResult.RowsAffected = 0 wantResult.InsertId = 0 if !reflect.DeepEqual(qr, wantResult) { t.Errorf("Unexpected result from Execute: got %+v want %+v", qr, wantResult) } err := errFunc() if err != nil { t.Error(err) } packets, errFunc = conn.StreamExecuteShard(ctx, "none", "", []string{}, nil, "") for packet := range packets { t.Errorf("packet: %+v, want none", packet) } err = errFunc() want := "no match for: none" if err == nil || !strings.Contains(err.Error(), want) { t.Errorf("none request: %v, want %v", err, want) } execCase = execMap["errorRequst"] packets, errFunc = conn.StreamExecuteShard(ctx, execCase.shardQuery.Sql, execCase.shardQuery.Keyspace, execCase.shardQuery.Shards, execCase.execQuery.BindVariables, execCase.execQuery.TabletType) for packet := range packets { t.Errorf("packet: %+v, want none", packet) } err = errFunc() want = "app error" if err == nil || !strings.Contains(err.Error(), want) { t.Errorf("errorRequst: %v, want %v", err, want) } }