MCPcopy
hub / github.com/github/gh-ost / TestMigratorGetMigrationStateAndETA

Function TestMigratorGetMigrationStateAndETA

go/logic/migrator_test.go:356–408  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

354}
355
356func TestMigratorGetMigrationStateAndETA(t *testing.T) {
357 migrationContext := base.NewMigrationContext()
358 migrator := NewMigrator(migrationContext, "1.2.3")
359 now := time.Now()
360 migrationContext.RowCopyStartTime = now.Add(-time.Minute)
361 migrationContext.RowCopyEndTime = now
362
363 {
364 migrationContext.TotalRowsCopied = 456
365 state, eta, etaDuration := migrator.getMigrationStateAndETA(123456)
366 require.Equal(t, "migrating", state)
367 require.Equal(t, "4h29m44s", eta)
368 require.Equal(t, "4h29m44s", etaDuration.String())
369 }
370 {
371 // Test using rows-per-second added data.
372 migrationContext.TotalRowsCopied = 456
373 migrationContext.EtaRowsPerSecond = 100
374 state, eta, etaDuration := migrator.getMigrationStateAndETA(123456)
375 require.Equal(t, "migrating", state)
376 require.Equal(t, "20m30s", eta)
377 require.Equal(t, "20m30s", etaDuration.String())
378 }
379 {
380 migrationContext.TotalRowsCopied = 456
381 state, eta, etaDuration := migrator.getMigrationStateAndETA(456)
382 require.Equal(t, "migrating", state)
383 require.Equal(t, "due", eta)
384 require.Equal(t, "0s", etaDuration.String())
385 }
386 {
387 migrationContext.TotalRowsCopied = 123456
388 state, eta, etaDuration := migrator.getMigrationStateAndETA(456)
389 require.Equal(t, "migrating", state)
390 require.Equal(t, "due", eta)
391 require.Equal(t, "0s", etaDuration.String())
392 }
393 {
394 atomic.StoreInt64(&migrationContext.CountingRowsFlag, 1)
395 state, eta, etaDuration := migrator.getMigrationStateAndETA(123456)
396 require.Equal(t, "counting rows", state)
397 require.Equal(t, "due", eta)
398 require.Equal(t, "0s", etaDuration.String())
399 }
400 {
401 atomic.StoreInt64(&migrationContext.CountingRowsFlag, 0)
402 atomic.StoreInt64(&migrationContext.IsPostponingCutOver, 1)
403 state, eta, etaDuration := migrator.getMigrationStateAndETA(123456)
404 require.Equal(t, "postponing cut-over", state)
405 require.Equal(t, "due", eta)
406 require.Equal(t, "0s", etaDuration.String())
407 }
408}
409
410func TestMigratorShouldPrintStatus(t *testing.T) {
411 migrationContext := base.NewMigrationContext()

Callers

nothing calls this directly

Calls 4

NewMigrationContextFunction · 0.92
NewMigratorFunction · 0.85
StringMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…