Skip to content

Commit

Permalink
Adjust for v18
Browse files Browse the repository at this point in the history
Signed-off-by: Matt Lord <[email protected]>
  • Loading branch information
mattlord committed Apr 4, 2024
1 parent 1735391 commit 8762790
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 202 deletions.
33 changes: 2 additions & 31 deletions go/test/endtoend/vreplication/partial_movetables_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,20 +270,9 @@ func TestPartialMoveTablesBasic(t *testing.T) {
require.Error(t, err)
require.Contains(t, err.Error(), "target: customer.-80.replica", "Query was routed to the target before partial SwitchTraffic")

<<<<<<< HEAD
// We cannot Complete a partial move tables at the moment because
// it will find that all traffic has (obviously) not been switched.
err = tstWorkflowExec(t, "", wfName, "", targetKs, "", workflowActionComplete, "", "", "", false)
=======
workflowExec := tstWorkflowExec
if flavor == workflowFlavorVtctl {
workflowExec = tstWorkflowExecVtctl
}

// We cannot Complete a partial move tables at the moment because
// it will find that all traffic has (obviously) not been switched.
err = workflowExec(t, "", workflowName, "", targetKs, "", workflowActionComplete, "", "", "", workflowExecOptsPartial80Dash)
>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))
err = tstWorkflowExecVtctl(t, "", wfName, "", targetKs, "", workflowActionComplete, "", "", "", false)
require.Error(t, err)

// Confirm global routing rules: -80 should still be be routed to customer
Expand Down Expand Up @@ -323,13 +312,8 @@ func TestPartialMoveTablesBasic(t *testing.T) {
for _, wf := range []string{"partialDash80", "partial80Dash"} {
// We switched traffic, so it's the reverse workflow we want to cancel.
reverseWf := wf + "_reverse"
<<<<<<< HEAD
reverseKs := sourceKs // customer
err = tstWorkflowExec(t, "", reverseWf, "", reverseKs, "", workflowActionCancel, "", "", "", false)
=======
reverseKs := sourceKeyspace
err = workflowExec(t, "", reverseWf, "", reverseKs, "", workflowActionCancel, "", "", "", opts)
>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))
err = tstWorkflowExecVtctl(t, "", reverseWf, "", reverseKs, "", workflowActionCancel, "", "", "", false)
require.NoError(t, err)

output, err := vc.VtctlClient.ExecuteCommandWithOutput("Workflow", fmt.Sprintf("%s.%s", reverseKs, reverseWf), "show")
Expand All @@ -353,17 +337,4 @@ func TestPartialMoveTablesBasic(t *testing.T) {
// Confirm that the shard routing rules are now gone.
require.Equal(t, emptyShardRoutingRules, getShardRoutingRules(t))

<<<<<<< HEAD
=======
// TestPartialMoveTablesBasic tests partial move tables by moving each
// customer shard -- -80,80- -- once a a time to customer2.
// We test with both the vtctlclient and vtctldclient flavors.
func TestPartialMoveTablesBasic(t *testing.T) {
currentWorkflowType = binlogdatapb.VReplicationWorkflowType_MoveTables
for _, flavor := range workflowFlavors {
t.Run(workflowFlavorNames[flavor], func(t *testing.T) {
testPartialMoveTablesBasic(t, flavor)
})
}
>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))
}
26 changes: 5 additions & 21 deletions go/test/endtoend/vreplication/resharding_workflows_v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,16 +94,10 @@ func tstWorkflowAction(t *testing.T, action, tabletTypes, cells string) error {
return tstWorkflowExec(t, cells, workflowName, sourceKs, targetKs, tablesToMove, action, tabletTypes, "", "", false)
}

<<<<<<< HEAD
func tstWorkflowExec(t *testing.T, cells, workflow, sourceKs, targetKs, tables, action, tabletTypes, sourceShards, targetShards string, atomicCopy bool) error {
=======
// tstWorkflowExec executes a MoveTables or Reshard workflow command using
// vtctldclient. If you need to use the legacy vtctlclient, use
// tstWorkflowExecVtctl instead.
func tstWorkflowExec(t *testing.T, cells, workflow, sourceKs, targetKs, tables, action, tabletTypes,
sourceShards, targetShards string, options *workflowExecOptions) error {

>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))
func tstWorkflowExec(t *testing.T, cells, workflow, sourceKs, targetKs, tables, action, tabletTypes, sourceShards, targetShards string, atomicCopy bool) error {
var args []string
if currentWorkflowType == binlogdatapb.VReplicationWorkflowType_MoveTables {
args = append(args, "MoveTables")
Expand Down Expand Up @@ -145,11 +139,7 @@ func tstWorkflowExec(t *testing.T, cells, workflow, sourceKs, targetKs, tables,
}
args = append(args, "--timeout=90s")
}
<<<<<<< HEAD
if action == workflowActionCreate && atomicCopy {
=======
if currentWorkflowType == binlogdatapb.VReplicationWorkflowType_MoveTables && action == workflowActionCreate && options.atomicCopy {
>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))
if currentWorkflowType == binlogdatapb.VReplicationWorkflowType_MoveTables && action == workflowActionCreate && atomicCopy {
args = append(args, "--atomic-copy")
}
if (action == workflowActionCreate || action == workflowActionSwitchTraffic || action == workflowActionReverseTraffic) && cells != "" {
Expand All @@ -173,9 +163,7 @@ func tstWorkflowExec(t *testing.T, cells, workflow, sourceKs, targetKs, tables,
// tstWorkflowExecVtctl executes a MoveTables or Reshard workflow command using
// vtctlclient. It should operate exactly the same way as tstWorkflowExec, but
// using the legacy client.
func tstWorkflowExecVtctl(t *testing.T, cells, workflow, sourceKs, targetKs, tables, action, tabletTypes,
sourceShards, targetShards string, options *workflowExecOptions) error {

func tstWorkflowExecVtctl(t *testing.T, cells, workflow, sourceKs, targetKs, tables, action, tabletTypes, sourceShards, targetShards string, atomicCopy bool) error {
var args []string
if currentWorkflowType == binlogdatapb.VReplicationWorkflowType_MoveTables {
args = append(args, "MoveTables")
Expand All @@ -188,7 +176,7 @@ func tstWorkflowExecVtctl(t *testing.T, cells, workflow, sourceKs, targetKs, tab
if BypassLagCheck {
args = append(args, "--max_replication_lag_allowed=2542087h")
}
if options.atomicCopy {
if atomicCopy {
args = append(args, "--atomic-copy")
}
switch action {
Expand All @@ -209,15 +197,11 @@ func tstWorkflowExecVtctl(t *testing.T, cells, workflow, sourceKs, targetKs, tab
// Test new experimental --defer-secondary-keys flag
switch currentWorkflowType {
case binlogdatapb.VReplicationWorkflowType_MoveTables, binlogdatapb.VReplicationWorkflowType_Migrate, binlogdatapb.VReplicationWorkflowType_Reshard:
if !options.atomicCopy && options.deferSecondaryKeys {
if !atomicCopy {
args = append(args, "--defer-secondary-keys")
}
args = append(args, "--initialize-target-sequences") // Only used for MoveTables
}
default:
if options.shardSubset != "" {
args = append(args, "--shards", options.shardSubset)
}
}
if cells != "" {
args = append(args, "--cells", cells)
Expand Down
152 changes: 2 additions & 150 deletions go/test/endtoend/vreplication/wrappers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,24 +98,14 @@ func (vmt *VtctlMoveTables) Create() {
}

func (vmt *VtctlMoveTables) SwitchReadsAndWrites() {
<<<<<<< HEAD
err := tstWorkflowExec(vmt.vc.t, "", vmt.workflowName, vmt.sourceKeyspace, vmt.targetKeyspace,
vmt.tables, workflowActionSwitchTraffic, "", "", "", vmt.atomicCopy)
=======
err := tstWorkflowExecVtctl(vmt.vc.t, "", vmt.workflowName, vmt.sourceKeyspace, vmt.targetKeyspace,
vmt.tables, workflowActionSwitchTraffic, "", "", "", defaultWorkflowExecOptions)
>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))
vmt.tables, workflowActionSwitchTraffic, "", "", "", vmt.atomicCopy)
require.NoError(vmt.vc.t, err)
}

func (vmt *VtctlMoveTables) ReverseReadsAndWrites() {
<<<<<<< HEAD
err := tstWorkflowExec(vmt.vc.t, "", vmt.workflowName, vmt.sourceKeyspace, vmt.targetKeyspace,
vmt.tables, workflowActionReverseTraffic, "", "", "", vmt.atomicCopy)
=======
err := tstWorkflowExecVtctl(vmt.vc.t, "", vmt.workflowName, vmt.sourceKeyspace, vmt.targetKeyspace,
vmt.tables, workflowActionReverseTraffic, "", "", "", defaultWorkflowExecOptions)
>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))
vmt.tables, workflowActionReverseTraffic, "", "", "", vmt.atomicCopy)
require.NoError(vmt.vc.t, err)
}

Expand All @@ -124,18 +114,6 @@ func (vmt *VtctlMoveTables) Show() {
panic("implement me")
}

<<<<<<< HEAD
=======
func (vmt *VtctlMoveTables) exec(action string) {
options := &workflowExecOptions{
deferSecondaryKeys: false,
atomicCopy: vmt.atomicCopy,
}
err := tstWorkflowExecVtctl(vmt.vc.t, "", vmt.workflowName, vmt.sourceKeyspace, vmt.targetKeyspace,
vmt.tables, action, vmt.tabletTypes, vmt.sourceShards, "", options)
require.NoError(vmt.vc.t, err)
}
>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))
func (vmt *VtctlMoveTables) SwitchReads() {
//TODO implement me
panic("implement me")
Expand Down Expand Up @@ -226,129 +204,3 @@ func (v VtctldMoveTables) Complete() {
//TODO implement me
panic("implement me")
}
<<<<<<< HEAD
=======

func (vrs *VtctlReshard) exec(action string) {
options := &workflowExecOptions{}
err := tstWorkflowExecVtctl(vrs.vc.t, "", vrs.workflowName, "", vrs.targetKeyspace,
"", action, vrs.tabletTypes, vrs.sourceShards, vrs.targetShards, options)
require.NoError(vrs.vc.t, err)
}

func (vrs *VtctlReshard) SwitchReads() {
//TODO implement me
panic("implement me")
}

func (vrs *VtctlReshard) SwitchWrites() {
//TODO implement me
panic("implement me")
}

func (vrs *VtctlReshard) Cancel() {
vrs.exec(workflowActionCancel)
}

func (vrs *VtctlReshard) Complete() {
vrs.exec(workflowActionComplete)
}

func (vrs *VtctlReshard) GetLastOutput() string {
return vrs.lastOutput
}

func (vrs *VtctlReshard) Start() {
panic("implement me")
}

func (vrs *VtctlReshard) Stop() {
panic("implement me")
}

var _ iReshard = (*VtctldReshard)(nil)

type VtctldReshard struct {
*reshardWorkflow
}

func newVtctldReshard(rs *reshardWorkflow) *VtctldReshard {
return &VtctldReshard{rs}
}

func (v VtctldReshard) Flavor() string {
return "vtctld"
}

func (v VtctldReshard) exec(args ...string) {
args2 := []string{"Reshard", "--workflow=" + v.workflowName, "--target-keyspace=" + v.targetKeyspace}
args2 = append(args2, args...)
var err error
if v.lastOutput, err = vc.VtctldClient.ExecuteCommandWithOutput(args2...); err != nil {
v.vc.t.Fatalf("failed to create Reshard workflow: %v: %s", err, v.lastOutput)
}
}

func (v VtctldReshard) Create() {
args := []string{"Create"}
if v.sourceShards != "" {
args = append(args, "--source-shards="+v.sourceShards)
}
if v.targetShards != "" {
args = append(args, "--target-shards="+v.targetShards)
}
if v.skipSchemaCopy {
args = append(args, "--skip-schema-copy="+strconv.FormatBool(v.skipSchemaCopy))
}
args = append(args, v.createFlags...)
v.exec(args...)
}

func (v VtctldReshard) SwitchReadsAndWrites() {
args := []string{"SwitchTraffic"}
args = append(args, v.switchFlags...)
v.exec(args...)
}

func (v VtctldReshard) ReverseReadsAndWrites() {
v.exec("ReverseTraffic")
}

func (v VtctldReshard) Show() {
v.exec("Show")
}

func (v VtctldReshard) SwitchReads() {
//TODO implement me
panic("implement me")
}

func (v VtctldReshard) SwitchWrites() {
//TODO implement me
panic("implement me")
}

func (v VtctldReshard) Cancel() {
args := []string{"Cancel"}
args = append(args, v.cancelFlags...)
v.exec(args...)
}

func (v VtctldReshard) Complete() {
args := []string{"Complete"}
args = append(args, v.completeFlags...)
v.exec(args...)
}

func (v VtctldReshard) GetLastOutput() string {
return v.lastOutput
}

func (vrs *VtctldReshard) Start() {
vrs.exec("Start")
}

func (vrs *VtctldReshard) Stop() {
vrs.exec("Stop")
}
>>>>>>> 4a1870ad59 (VReplication: Get workflowFlavorVtctl endtoend testing working properly again (#15636))

0 comments on commit 8762790

Please sign in to comment.