Get lro working in dev/lib for testservice
Moves to new common lro protos, decouples from luci libraries, and
brings in a basic test that just starts the fake server.
BUG=None
TEST=go test manager_test.go
Change-Id: I3807cc16936f121776624e4c85094c052955af13
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/2876744
Tested-by: C Shapiro <shapiroc@chromium.org>
Auto-Submit: C Shapiro <shapiroc@chromium.org>
Reviewed-by: Seewai Fu <seewaifu@google.com>
Commit-Queue: C Shapiro <shapiroc@chromium.org>
diff --git a/lib/src/chromiumos/lro/manager.go b/lib/src/chromiumos/lro/manager.go
index 6c4a865..9a7ba2d 100644
--- a/lib/src/chromiumos/lro/manager.go
+++ b/lib/src/chromiumos/lro/manager.go
@@ -17,7 +17,7 @@
"github.com/golang/protobuf/ptypes"
"github.com/golang/protobuf/ptypes/empty"
"github.com/google/uuid"
- "go.chromium.org/chromiumos/config/go/api/test/tls/dependencies/longrunning"
+ "go.chromium.org/chromiumos/config/go/longrunning"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
@@ -215,7 +215,7 @@
if req.Timeout != nil && req.Timeout.Seconds > 0 {
var cancel context.CancelFunc
- ctx, cancel = context.WithTimeout(ctx, req.Timeout.AsDuration())
+ ctx, cancel = context.WithTimeout(ctx, time.Duration(req.Timeout.GetSeconds()))
defer cancel()
}
diff --git a/lib/src/chromiumos/lro/manager_test.go b/lib/src/chromiumos/lro/manager_test.go
index 531e505..6164766 100644
--- a/lib/src/chromiumos/lro/manager_test.go
+++ b/lib/src/chromiumos/lro/manager_test.go
@@ -3,18 +3,17 @@
import (
"context"
"net"
+ "testing"
- "infra/libs/lro"
+ "chromiumos/lro"
- "go.chromium.org/chromiumos/config/go/api/test/tls"
- "go.chromium.org/chromiumos/config/go/api/test/tls/dependencies/longrunning"
+ "go.chromium.org/chromiumos/config/go/longrunning"
+ "go.chromium.org/chromiumos/config/go/test/api"
"google.golang.org/grpc"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/status"
)
type exampleServer struct {
- tls.UnimplementedCommonServer
+ api.UnimplementedTestServiceServer
*lro.Manager
}
@@ -22,26 +21,22 @@
s.Manager = lro.New()
defer s.Manager.Close()
server := grpc.NewServer()
- tls.RegisterCommonServer(server, s)
+ api.RegisterTestServiceServer(server, s)
longrunning.RegisterOperationsServer(server, s.Manager)
return server.Serve(l)
}
-func (s *exampleServer) ProvisionDut(ctx context.Context, req *tls.ProvisionDutRequest) (*longrunning.Operation, error) {
+func (s *exampleServer) ProvisionDut(ctx context.Context, req *api.ProvisionDutRequest) (*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 *tls.ProvisionDutRequest, op string) {
- if req.GetName() != "some host" {
- s.Manager.SetError(op, status.Newf(codes.NotFound, "Unknown DUT %s", req.GetName()))
- return
- }
- s.Manager.SetResult(op, &tls.ProvisionDutResponse{})
+func (s *exampleServer) provision(ctx context.Context, req *api.ProvisionDutRequest, op string) {
+ s.Manager.SetResult(op, &api.ProvisionDutResponse{})
}
-func Example() {
+func RunServer() {
l, err := net.Listen("tcp", ":0")
if err != nil {
panic(err)
@@ -51,3 +46,8 @@
panic(err)
}
}
+
+func TestServe(t *testing.T) {
+ go RunServer()
+ // TODO(shapiroc): Add testing
+}
diff --git a/lib/src/chromiumos/lro/wait.go b/lib/src/chromiumos/lro/wait.go
index d68f85c..374a4ae 100644
--- a/lib/src/chromiumos/lro/wait.go
+++ b/lib/src/chromiumos/lro/wait.go
@@ -9,8 +9,7 @@
"math/rand"
"time"
- "go.chromium.org/chromiumos/config/go/api/test/tls/dependencies/longrunning"
- "go.chromium.org/luci/common/clock"
+ "go.chromium.org/chromiumos/config/go/longrunning"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
@@ -49,7 +48,7 @@
return op, err
}
delay := rand.Int63n(initialBackoffMillis * (1 << attempt))
- clock.Sleep(ctx, time.Duration(delay)*time.Millisecond)
+ time.Sleep(time.Duration(delay) * time.Millisecond)
attempt++
default:
// Non-retryable error