forked from google/knative-gcp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
client.go
94 lines (78 loc) · 2.6 KB
/
client.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
/*
Copyright 2019 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 testing
import (
"context"
"google.golang.org/api/option"
"github.com/google/knative-gcp/pkg/gclient/scheduler"
"github.com/googleapis/gax-go/v2"
schedulerpb "google.golang.org/genproto/googleapis/cloud/scheduler/v1"
)
// TestClientCreator returns a scheduler.CreateFn used to construct the test Scheduler client.
func TestClientCreator(value interface{}) scheduler.CreateFn {
var data TestClientData
var ok bool
if data, ok = value.(TestClientData); !ok {
data = TestClientData{}
}
if data.CreateClientErr != nil {
return func(_ context.Context, _ ...option.ClientOption) (scheduler.Client, error) {
return nil, data.CreateClientErr
}
}
return func(_ context.Context, _ ...option.ClientOption) (scheduler.Client, error) {
return &testClient{
data: data,
}, nil
}
}
// TestClientData is the data used to configure the test Scheduler client.
type TestClientData struct {
CreateClientErr error
CreateJobErr error
DeleteJobErr error
GetJobErr error
CloseErr error
}
// testClient is the test Scheduler client.
type testClient struct {
data TestClientData
}
// Verify that it satisfies the scheduler.Client interface.
var _ scheduler.Client = &testClient{}
// Close implements client.Close
func (c *testClient) Close() error {
return c.data.CloseErr
}
// CreateJob implements client.CreateJob
func (c *testClient) CreateJob(ctx context.Context, req *schedulerpb.CreateJobRequest, opts ...gax.CallOption) (*schedulerpb.Job, error) {
if c.data.CreateJobErr != nil {
return nil, c.data.CreateJobErr
}
return &schedulerpb.Job{
Name: req.Job.Name,
}, nil
}
// CreateJob implements client.DeleteJob
func (c *testClient) DeleteJob(ctx context.Context, req *schedulerpb.DeleteJobRequest, opts ...gax.CallOption) error {
return c.data.DeleteJobErr
}
// GetJob implements client.GetJob
func (c *testClient) GetJob(ctx context.Context, req *schedulerpb.GetJobRequest, opts ...gax.CallOption) (*schedulerpb.Job, error) {
if c.data.GetJobErr != nil {
return nil, c.data.GetJobErr
}
return &schedulerpb.Job{
Name: req.Name,
}, nil
}