You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.6 KiB
77 lines
1.6 KiB
4 months ago
|
.. _module-pw_target_runner-go:
|
||
|
|
||
|
--
|
||
|
Go
|
||
|
--
|
||
|
|
||
|
Server
|
||
|
------
|
||
|
|
||
|
.. TODO(frolv): Build and host documentation using godoc and link to it.
|
||
|
|
||
|
Full API documentation for the server library can be found here.
|
||
|
|
||
|
Example program
|
||
|
^^^^^^^^^^^^^^^
|
||
|
|
||
|
The code below implements a very basic test server with two test workers which
|
||
|
print out the path of the tests they are scheduled to run.
|
||
|
|
||
|
.. code-block:: go
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"flag"
|
||
|
"log"
|
||
|
|
||
|
pb "pigweed.dev/proto/pw_target_runner/target_runner_pb"
|
||
|
"pigweed.dev/pw_target_runner"
|
||
|
)
|
||
|
|
||
|
// Custom test worker that implements the interface server.UnitTestRunner.
|
||
|
type MyWorker struct {
|
||
|
id int
|
||
|
}
|
||
|
|
||
|
func (w *MyWorker) WorkerStart() error {
|
||
|
log.Printf("Starting test worker %d\n", w.id)
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (w *MyWorker) WorkerExit() {
|
||
|
log.Printf("Exiting test worker %d\n", w.id)
|
||
|
}
|
||
|
|
||
|
func (w *MyWorker) HandleRunRequest(req *server.UnitTestRunRequest) *server.UnitTestRunResponse {
|
||
|
log.Printf("Worker %d running unit test %s\n", w.id, req.Path)
|
||
|
return &server.UnitTestRunResponse{
|
||
|
Output: []byte("Success!"),
|
||
|
Status: pb.TestStatus_SUCCESS,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// To run:
|
||
|
//
|
||
|
// $ go build -o server
|
||
|
// $ ./server -port 80
|
||
|
//
|
||
|
func main() {
|
||
|
port := flag.Int("port", 8080, "Port on which to run server")
|
||
|
flag.Parse()
|
||
|
|
||
|
s := server.New()
|
||
|
|
||
|
// Create and register as many unit test workers as you need.
|
||
|
s.RegisterWorker(&MyWorker{id: 0})
|
||
|
s.RegisterWorker(&MyWorker{id: 1})
|
||
|
|
||
|
if err := s.Bind(*port); err != nil {
|
||
|
log.Fatalf("Failed to bind to port %d: %v", *port, err)
|
||
|
}
|
||
|
|
||
|
if err := s.Serve(); err != nil {
|
||
|
log.Fatalf("Failed to start server: %v", err)
|
||
|
}
|
||
|
}
|