1 .. _module-pw_target_runner-go:
10 .. TODO(frolv): Build and host documentation using godoc and link to it.
12 Full API documentation for the server library can be found here.
17 The code below implements a very basic test server with two test workers which
18 print out the path of the tests they are scheduled to run.
28 pb "pigweed.dev/proto/pw_target_runner/target_runner_pb"
29 "pigweed.dev/pw_target_runner"
32 // Custom test worker that implements the interface server.UnitTestRunner.
33 type MyWorker struct {
37 func (w *MyWorker) WorkerStart() error {
38 log.Printf("Starting test worker %d\n", w.id)
42 func (w *MyWorker) WorkerExit() {
43 log.Printf("Exiting test worker %d\n", w.id)
46 func (w *MyWorker) HandleRunRequest(req *server.UnitTestRunRequest) *server.UnitTestRunResponse {
47 log.Printf("Worker %d running unit test %s\n", w.id, req.Path)
48 return &server.UnitTestRunResponse{
49 Output: []byte("Success!"),
50 Status: pb.TestStatus_SUCCESS,
56 // $ go build -o server
57 // $ ./server -port 80
60 port := flag.Int("port", 8080, "Port on which to run server")
65 // Create and register as many unit test workers as you need.
66 s.RegisterWorker(&MyWorker{id: 0})
67 s.RegisterWorker(&MyWorker{id: 1})
69 if err := s.Bind(*port); err != nil {
70 log.Fatalf("Failed to bind to port %d: %v", *port, err)
73 if err := s.Serve(); err != nil {
74 log.Fatalf("Failed to start server: %v", err)