blob: 9cd6a8900852cf90b2cd5130d521237c00a87ecf [file] [log] [blame]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package test_finder
import (
"context"
"log"
"go.chromium.org/chromiumos/config/go/test/api"
"go.chromium.org/luci/common/errors"
"google.golang.org/grpc"
)
// TestFinderServiceServer implementation of dut_service.proto
type TestFinderServiceServer struct {
logger *log.Logger
metadatadir string
}
// NewServer creates an execution server.
func NewServer(logger *log.Logger, metadatadir string) (*grpc.Server, func()) {
s := &TestFinderServiceServer{
logger: logger,
metadatadir: metadatadir,
}
server := grpc.NewServer()
var conns []*grpc.ClientConn
closer := func() {
for _, conn := range conns {
conn.Close()
}
conns = nil
}
api.RegisterTestFinderServiceServer(server, s)
// longrunning.RegisterOperationsServer(server, s.manager)
logger.Println("crostestservice listen to request at ")
return server, closer
}
// FindTests calls the innerMain (test-finder flow) in main.
func (s *TestFinderServiceServer) FindTests(ctx context.Context, req *api.CrosTestFinderRequest) (*api.CrosTestFinderResponse, error) {
s.logger.Println("Received api.CacheRequest: ", req)
rspn, err := FindTests(s.logger, req, s.metadatadir)
if err != nil {
return nil, errors.Annotate(err, "FindTests: failed to find tests").Err()
}
s.logger.Printf("FindTest RPC Command was successful")
return rspn, nil
}