blob: 8be1bcc3fcb30d3210e4f5d432de6515987b063a [file] [log] [blame]
package lro_test
import (
"context"
"net"
"testing"
"chromiumos/lro"
"go.chromium.org/chromiumos/config/go/longrunning"
"go.chromium.org/chromiumos/config/go/test/api"
"google.golang.org/grpc"
)
type exampleServer struct {
api.UnimplementedTestServiceServer
*lro.Manager
}
func (s *exampleServer) Serve(l net.Listener) error {
s.Manager = lro.New()
defer s.Manager.Close()
server := grpc.NewServer()
api.RegisterTestServiceServer(server, s)
longrunning.RegisterOperationsServer(server, s.Manager)
return server.Serve(l)
}
func (s *exampleServer) RunTests(ctx context.Context, req *api.RunTestsRequest) (*longrunning.Operation, error) {
op := s.Manager.NewOperation()
go s.provision(ctx, req, op.Name)
return op, nil
}
func (s *exampleServer) provision(ctx context.Context, req *api.RunTestsRequest, op string) {
s.Manager.SetResult(op, &api.RunTestsResponse{})
}
func RunServer() {
l, err := net.Listen("tcp", ":0")
if err != nil {
panic(err)
}
s := exampleServer{}
if err := s.Serve(l); err != nil {
panic(err)
}
}
func TestServe(t *testing.T) {
go RunServer()
// TODO(shapiroc): Add testing
}