|  | package main | 
|  |  | 
|  | import ( | 
|  | "flag" | 
|  |  | 
|  | "go.skia.org/infra/go/common" | 
|  | "go.skia.org/infra/go/sklog" | 
|  | "go.skia.org/infra/perf/go/workflows" | 
|  | "go.skia.org/infra/perf/go/workflows/internal" | 
|  | "go.skia.org/infra/temporal/go/metrics" | 
|  | "go.temporal.io/sdk/client" | 
|  | "go.temporal.io/sdk/worker" | 
|  | "go.temporal.io/sdk/workflow" | 
|  | ) | 
|  |  | 
|  | var ( | 
|  | // Run the following command to portforward Temporal service so the client can connect to it. | 
|  | // kubectl port-forward service/temporal --address 0.0.0.0 -n temporal 7233:7233 | 
|  | hostPort  = flag.String("hostPort", "localhost:7233", "Host the worker connects to.") | 
|  | promPort  = flag.String("promPort", ":8000", "Prometheus port that it listens on.") | 
|  | namespace = flag.String("namespace", "default", "The namespace the worker registered to.") | 
|  | taskQueue = flag.String("taskQueue", "localhost.dev", "Task queue name registered to worker services.") | 
|  | ) | 
|  |  | 
|  | func main() { | 
|  | flag.Parse() | 
|  | common.InitWithMust( | 
|  | "grouping-worker", | 
|  | common.PrometheusOpt(promPort), | 
|  | ) | 
|  |  | 
|  | // The client is a heavyweight object that should be created once per process. | 
|  | c, err := client.Dial(client.Options{ | 
|  | MetricsHandler: metrics.NewMetricsHandler(map[string]string{}, nil), | 
|  | HostPort:       *hostPort, | 
|  | Namespace:      *namespace, | 
|  | }) | 
|  | if err != nil { | 
|  | sklog.Errorf("Unable to create client", err) | 
|  | return | 
|  | } | 
|  | defer c.Close() | 
|  | w := worker.New(c, *taskQueue, worker.Options{}) | 
|  | csa := &internal.CulpritServiceActivity{} | 
|  | w.RegisterActivity(csa) | 
|  | w.RegisterWorkflowWithOptions(internal.ProcessCulpritWorkflow, workflow.RegisterOptions{Name: workflows.ProcessCulprit}) | 
|  |  | 
|  | agsa := &internal.AnomalyGroupServiceActivity{} | 
|  | w.RegisterActivity(agsa) | 
|  | w.RegisterWorkflowWithOptions(internal.MaybeTriggerBisectionWorkflow, workflow.RegisterOptions{Name: workflows.MaybeTriggerBisection}) | 
|  |  | 
|  | gsa := &internal.GerritServiceActivity{} | 
|  | w.RegisterActivity(gsa) | 
|  |  | 
|  | err = w.Run(worker.InterruptCh()) | 
|  | if err != nil { | 
|  | sklog.Fatalf("Unable to start worker: %s", err) | 
|  | } | 
|  | } |