Moving to scaleset client for the controller (#4390)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package fake
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/actions/actions-runner-controller/controllers/actions.github.com/multiclient"
|
||||
)
|
||||
|
||||
// MultiClientOption is a functional option for configuring a fake MultiClient
|
||||
type MultiClientOption func(*MultiClient)
|
||||
|
||||
// WithClient configures the client that GetClientFor will return
|
||||
func WithClient(c multiclient.Client) MultiClientOption {
|
||||
return func(mc *MultiClient) {
|
||||
mc.client = c
|
||||
}
|
||||
}
|
||||
|
||||
// WithGetClientForError configures an error that GetClientFor will return
|
||||
func WithGetClientForError(err error) MultiClientOption {
|
||||
return func(mc *MultiClient) {
|
||||
mc.getClientForErr = err
|
||||
}
|
||||
}
|
||||
|
||||
// MultiClient implements multiclient.MultiClient interface for testing
|
||||
type MultiClient struct {
|
||||
client multiclient.Client
|
||||
getClientForErr error
|
||||
}
|
||||
|
||||
// Compile-time interface check
|
||||
var _ multiclient.MultiClient = (*MultiClient)(nil)
|
||||
|
||||
// NewMultiClient creates a new fake MultiClient with the given options
|
||||
func NewMultiClient(opts ...MultiClientOption) *MultiClient {
|
||||
mc := &MultiClient{}
|
||||
for _, opt := range opts {
|
||||
opt(mc)
|
||||
}
|
||||
// Default behavior: if no client configured, return a default NewClient()
|
||||
if mc.client == nil {
|
||||
mc.client = NewClient()
|
||||
}
|
||||
return mc
|
||||
}
|
||||
|
||||
func (mc *MultiClient) GetClientFor(ctx context.Context, opts *multiclient.ClientForOptions) (multiclient.Client, error) {
|
||||
if mc.getClientForErr != nil {
|
||||
return nil, mc.getClientForErr
|
||||
}
|
||||
return mc.client, nil
|
||||
}
|
||||
Reference in New Issue
Block a user