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 }