/
dbmocks.go
137 lines (119 loc) · 5.27 KB
/
dbmocks.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// 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)
}