func main() { defer exit.Recover() flag.Parse() args := flag.Args() servenv.Init() defer servenv.Close() ts := topo.GetServer() defer topo.CloseServers() wi = worker.NewInstance(ts, *cell, *commandDisplayInterval) wi.InstallSignalHandlers() wi.InitStatusHandling() if len(args) == 0 { // In interactive mode, initialize the web UI to choose a command. wi.InitInteractiveMode() } else { // In single command mode, just run it. worker, done, err := wi.RunCommand(context.Background(), args, nil /*custom wrangler*/, true /*runFromCli*/) if err != nil { log.Error(err) exit.Return(1) } // Run the subsequent, blocking wait asynchronously. go func() { if err := wi.WaitForCommand(worker, done); err != nil { log.Error(err) logutil.Flush() // We cannot use exit.Return() here because we are in a different go routine now. os.Exit(1) } logutil.Flush() os.Exit(0) }() } servenv.RunDefault() }
// CreateWorkerInstance returns a properly configured vtworker instance. func CreateWorkerInstance(t *testing.T) *worker.Instance { ts := zktestserver.New(t, []string{"cell1", "cell2"}) return worker.NewInstance(context.Background(), ts, "cell1", 1*time.Second) }
// CreateWorkerInstance returns a properly configured vtworker instance. func CreateWorkerInstance(t *testing.T) *worker.Instance { ts := zktopo.NewTestServer(t, []string{"cell1", "cell2"}) return worker.NewInstance(ts, "cell1", 1*time.Second) }