oracle/pkg/agents/standby/dbmocks.go (106 lines of code) (raw):

// Copyright 2022 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package standby import ( "context" "errors" "net" "testing" dbdpb "github.com/GoogleCloudPlatform/elcarro-oracle-operator/oracle/pkg/agents/oracle" "google.golang.org/grpc" "google.golang.org/grpc/test/bufconn" ) type fakeServer struct { *dbdpb.UnimplementedDatabaseDaemonServer fakeRunDataGuard func(context.Context, *dbdpb.RunDataGuardRequest) (*dbdpb.RunDataGuardResponse, error) fakeFetchServiceImageMetaData func(ctx context.Context, req *dbdpb.FetchServiceImageMetaDataRequest) (*dbdpb.FetchServiceImageMetaDataResponse, error) fakeDownloadDirectoryFromGCS func(ctx context.Context, req *dbdpb.DownloadDirectoryFromGCSRequest) (*dbdpb.DownloadDirectoryFromGCSResponse, error) fakeRunSQLPlusFormatted func(ctx context.Context, req *dbdpb.RunSQLPlusCMDRequest) (*dbdpb.RunCMDResponse, error) fakeRunSQLPlus func(ctx context.Context, req *dbdpb.RunSQLPlusCMDRequest) (*dbdpb.RunCMDResponse, error) fakeCreateListener func(ctx context.Context, req *dbdpb.CreateListenerRequest) (*dbdpb.CreateListenerResponse, error) fakeFileExists func(ctx context.Context, req *dbdpb.FileExistsRequest) (*dbdpb.FileExistsResponse, error) fakeBounceDatabase func(ctx context.Context, req *dbdpb.BounceDatabaseRequest) (*dbdpb.BounceDatabaseResponse, error) fakeCreateFile func(ctx context.Context, req *dbdpb.CreateFileRequest) (*dbdpb.CreateFileResponse, error) } func (f *fakeServer) RunDataGuard(ctx context.Context, req *dbdpb.RunDataGuardRequest) (*dbdpb.RunDataGuardResponse, error) { if f.fakeRunDataGuard == nil { return nil, errors.New("RunDataGuard fake not found") } return f.fakeRunDataGuard(ctx, req) } func (f *fakeServer) FetchServiceImageMetaData(ctx context.Context, req *dbdpb.FetchServiceImageMetaDataRequest) (*dbdpb.FetchServiceImageMetaDataResponse, error) { if f.fakeFetchServiceImageMetaData == nil { return nil, errors.New("FetchServiceImageMetaData fake not found") } return f.fakeFetchServiceImageMetaData(ctx, req) } func (f *fakeServer) DownloadDirectoryFromGCS(ctx context.Context, req *dbdpb.DownloadDirectoryFromGCSRequest) (*dbdpb.DownloadDirectoryFromGCSResponse, error) { if f.fakeDownloadDirectoryFromGCS == nil { return nil, errors.New("DownloadDirectoryFromGCS fake not found") } return f.fakeDownloadDirectoryFromGCS(ctx, req) } func (f *fakeServer) RunSQLPlusFormatted(ctx context.Context, req *dbdpb.RunSQLPlusCMDRequest) (*dbdpb.RunCMDResponse, error) { if f.fakeRunSQLPlusFormatted == nil { return nil, errors.New("RunSQLPlusFormatted fake not found") } return f.fakeRunSQLPlusFormatted(ctx, req) } func (f *fakeServer) RunSQLPlus(ctx context.Context, req *dbdpb.RunSQLPlusCMDRequest) (*dbdpb.RunCMDResponse, error) { if f.fakeRunSQLPlus == nil { return nil, errors.New("RunSQLPlus fake not found") } return f.fakeRunSQLPlus(ctx, req) } func (f *fakeServer) CreateListener(ctx context.Context, req *dbdpb.CreateListenerRequest) (*dbdpb.CreateListenerResponse, error) { if f.fakeCreateListener == nil { return nil, errors.New("CreateListener fake not found") } return f.fakeCreateListener(ctx, req) } func (f *fakeServer) FileExists(ctx context.Context, req *dbdpb.FileExistsRequest) (*dbdpb.FileExistsResponse, error) { if f.fakeFileExists == nil { return nil, errors.New("FileExists fake not found") } return f.fakeFileExists(ctx, req) } func (f *fakeServer) BounceDatabase(ctx context.Context, req *dbdpb.BounceDatabaseRequest) (*dbdpb.BounceDatabaseResponse, error) { if f.fakeBounceDatabase == nil { return nil, errors.New("BounceDatabase fake not found") } return f.fakeBounceDatabase(ctx, req) } func (f *fakeServer) CreateFile(ctx context.Context, req *dbdpb.CreateFileRequest) (*dbdpb.CreateFileResponse, error) { if f.fakeCreateFile == nil { return nil, errors.New("CreateFile fake not found") } return f.fakeCreateFile(ctx, req) } func newFakeDatabaseDaemonClient(t *testing.T, server *fakeServer) (dbdpb.DatabaseDaemonClient, func()) { t.Helper() grpcSvr := grpc.NewServer() dbdpb.RegisterDatabaseDaemonServer(grpcSvr, server) lis := bufconn.Listen(2 * 1024 * 1024) go grpcSvr.Serve(lis) dbdConn, err := grpc.Dial("test", grpc.WithInsecure(), grpc.WithContextDialer( func(ctx context.Context, s string) (conn net.Conn, err error) { return lis.Dial() }), ) if err != nil { t.Fatalf("failed to dial to dbDaemon: %v", err) } return dbdpb.NewDatabaseDaemonClient(dbdConn), func() { dbdConn.Close() grpcSvr.GracefulStop() } } type fakeSecretAccessor struct { fakeGet func(context.Context) (string, error) } func (f *fakeSecretAccessor) Get(ctx context.Context) (string, error) { if f.fakeGet == nil { return "", errors.New("Get fake not found") } return f.fakeGet(ctx) }