func runTest( t *testing.T, f func(t *testing.T, apiClient pps.ApiClient), ) { storeClient, err := getRethinkClient() require.NoError(t, err) pfstesting.RunTest( t, func(t *testing.T, apiClient pfs.ApiClient, internalApiClient pfs.InternalApiClient) { grpctest.Run( t, testNumServers, func(servers map[string]*grpc.Server) { for _, server := range servers { pps.RegisterApiServer(server, newAPIServer(apiClient, storeClient, timing.NewSystemTimer())) } }, func(t *testing.T, clientConns map[string]*grpc.ClientConn) { var clientConn *grpc.ClientConn for _, c := range clientConns { clientConn = c break } f( t, pps.NewApiClient( clientConn, ), ) }, ) }, ) }
func RunTest( t *testing.T, f func(*testing.T, pfs.APIClient, pps.JobAPIClient, pps.PipelineAPIClient), ) { pfstesting.RunTest( t, func(t *testing.T, pfsAPIClient pfs.APIClient, _ pfstesting.Cluster) { pfsMountDir, err := ioutil.TempDir("", "") require.NoError(t, err) mounter := fuse.NewMounter("localhost", pfsAPIClient) ready := make(chan bool) go func() { require.NoError(t, mounter.Mount(pfsMountDir, &pfs.Shard{Number: 0, Modulus: 1}, nil, ready)) }() <-ready persistservertesting.RunTestWithRethinkAPIServer( t, func(t *testing.T, persistAPIServer persist.APIServer) { persistAPIClient := persist.NewLocalAPIClient(persistAPIServer) var pipelineAPIServer pipelineserver.APIServer prototest.RunT( t, testNumServers, func(servers map[string]*grpc.Server) { jobAPIServer := jobserver.NewAPIServer( pfsAPIClient, persistAPIClient, nil, ) jobAPIClient := pps.NewLocalJobAPIClient(jobAPIServer) pipelineAPIServer = pipelineserver.NewAPIServer( pfsAPIClient, jobAPIClient, persistAPIClient, ) for _, server := range servers { pps.RegisterJobAPIServer(server, jobAPIServer) pps.RegisterPipelineAPIServer(server, pipelineAPIServer) } }, func(t *testing.T, clientConns map[string]*grpc.ClientConn) { pipelineAPIServer.Start() var clientConn *grpc.ClientConn for _, c := range clientConns { clientConn = c break } f( t, pfsAPIClient, pps.NewJobAPIClient( clientConn, ), pps.NewPipelineAPIClient( clientConn, ), ) }, func() { _ = mounter.Unmount(pfsMountDir) }, ) }, ) }, ) }