github.com/pachyderm/pachyderm@v1.13.4/src/server/pkg/testpachd/mock_transaction.go (about)

     1  package testpachd
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/pachyderm/pachyderm/src/client/pfs"
     8  	"github.com/pachyderm/pachyderm/src/client/pps"
     9  	"github.com/pachyderm/pachyderm/src/server/pkg/transactionenv/txncontext"
    10  )
    11  
    12  // This code can all go away if we ever get the ability to run a PPS server without external dependencies
    13  type updateJobStateInTransactionFunc func(*txncontext.TransactionContext, *pps.UpdateJobStateRequest) error
    14  
    15  type mockUpdateJobStateInTransaction struct {
    16  	handler updateJobStateInTransactionFunc
    17  }
    18  
    19  func (mock *mockUpdateJobStateInTransaction) Use(cb updateJobStateInTransactionFunc) {
    20  	mock.handler = cb
    21  }
    22  
    23  // This code can all go away if we ever get the ability to run a PPS server without external dependencies
    24  type createPipelineInTransactionFunc func(*txncontext.TransactionContext, *pps.CreatePipelineRequest, **pfs.Commit) error
    25  
    26  type mockCreatePipelineInTransaction struct {
    27  	handler createPipelineInTransactionFunc
    28  }
    29  
    30  func (mock *mockCreatePipelineInTransaction) Use(cb createPipelineInTransactionFunc) {
    31  	mock.handler = cb
    32  }
    33  
    34  // This code can all go away if we ever get the ability to run a PPS server without external dependencies
    35  type listPipelineNoAuthFunc func(context.Context, *pps.ListPipelineRequest) (*pps.PipelineInfos, error)
    36  
    37  type mockListPipelineNoAuth struct {
    38  	handler listPipelineNoAuthFunc
    39  }
    40  
    41  func (mock *mockListPipelineNoAuth) Use(cb listPipelineNoAuthFunc) {
    42  	mock.handler = cb
    43  }
    44  
    45  type ppsTransactionAPI struct {
    46  	mock *MockPPSTransactionServer
    47  }
    48  
    49  // MockPPSTransactionServer provides a mocking interface for overriding PPS
    50  // behavior inside transactions.
    51  type MockPPSTransactionServer struct {
    52  	api                         ppsTransactionAPI
    53  	UpdateJobStateInTransaction mockUpdateJobStateInTransaction
    54  	CreatePipelineInTransaction mockCreatePipelineInTransaction
    55  	ListPipelineNoAuth          mockListPipelineNoAuth
    56  }
    57  
    58  func (api *ppsTransactionAPI) UpdateJobStateInTransaction(txnCtx *txncontext.TransactionContext, req *pps.UpdateJobStateRequest) error {
    59  	if api.mock.UpdateJobStateInTransaction.handler != nil {
    60  		return api.mock.UpdateJobStateInTransaction.handler(txnCtx, req)
    61  	}
    62  	return fmt.Errorf("unhandled pachd mock: pps.UpdateJobStateInTransaction")
    63  }
    64  
    65  func (api *ppsTransactionAPI) CreatePipelineInTransaction(txnCtx *txncontext.TransactionContext, req *pps.CreatePipelineRequest, specCommit **pfs.Commit) error {
    66  	if api.mock.UpdateJobStateInTransaction.handler != nil {
    67  		return api.mock.CreatePipelineInTransaction.handler(txnCtx, req, specCommit)
    68  	}
    69  	return fmt.Errorf("unhandled pachd mock: pps.CreatePipelineInTransaction")
    70  }
    71  
    72  func (api *ppsTransactionAPI) ListPipelineNoAuth(ctx context.Context, req *pps.ListPipelineRequest) (*pps.PipelineInfos, error) {
    73  	if api.mock.ListPipelineNoAuth.handler != nil {
    74  		return api.mock.ListPipelineNoAuth.handler(ctx, req)
    75  	}
    76  	return nil, fmt.Errorf("unhandled pachd mock: pps.ListPipelineNoAuth")
    77  }
    78  
    79  // NewMockPPSTransactionServer instantiates a MockPPSTransactionServer
    80  func NewMockPPSTransactionServer() *MockPPSTransactionServer {
    81  	result := &MockPPSTransactionServer{}
    82  	result.api.mock = result
    83  	return result
    84  }