Introduce new preview auto-scaling mode for ARC. (#2153)
Co-authored-by: Cory Miller <cory-miller@github.com> Co-authored-by: Nikola Jokic <nikola-jokic@github.com> Co-authored-by: Ava Stancu <AvaStancu@github.com> Co-authored-by: Ferenc Hammerl <fhammerl@github.com> Co-authored-by: Francesco Renzi <rentziass@github.com> Co-authored-by: Bassem Dghaidi <Link-@github.com>
This commit is contained in:
235
github/actions/fake/client.go
Normal file
235
github/actions/fake/client.go
Normal file
@@ -0,0 +1,235 @@
|
||||
package fake
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/actions/actions-runner-controller/github/actions"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type Option func(*FakeClient)
|
||||
|
||||
func WithGetRunnerScaleSetResult(scaleSet *actions.RunnerScaleSet, err error) Option {
|
||||
return func(f *FakeClient) {
|
||||
f.getRunnerScaleSetResult.RunnerScaleSet = scaleSet
|
||||
f.getRunnerScaleSetResult.err = err
|
||||
}
|
||||
}
|
||||
|
||||
func WithGetRunner(runner *actions.RunnerReference, err error) Option {
|
||||
return func(f *FakeClient) {
|
||||
f.getRunnerResult.RunnerReference = runner
|
||||
f.getRunnerResult.err = err
|
||||
}
|
||||
}
|
||||
|
||||
var defaultRunnerScaleSet = &actions.RunnerScaleSet{
|
||||
Id: 1,
|
||||
Name: "testset",
|
||||
RunnerGroupId: 1,
|
||||
RunnerGroupName: "testgroup",
|
||||
Labels: []actions.Label{{Type: "test", Name: "test"}},
|
||||
RunnerSetting: actions.RunnerSetting{},
|
||||
CreatedOn: time.Now(),
|
||||
RunnerJitConfigUrl: "test.test.test",
|
||||
Statistics: nil,
|
||||
}
|
||||
|
||||
var defaultRunnerGroup = &actions.RunnerGroup{
|
||||
ID: 1,
|
||||
Name: "testgroup",
|
||||
Size: 1,
|
||||
IsDefault: true,
|
||||
}
|
||||
|
||||
var sessionID = uuid.New()
|
||||
|
||||
var defaultRunnerScaleSetSession = &actions.RunnerScaleSetSession{
|
||||
SessionId: &sessionID,
|
||||
OwnerName: "testowner",
|
||||
RunnerScaleSet: defaultRunnerScaleSet,
|
||||
MessageQueueUrl: "https://test.url/path",
|
||||
MessageQueueAccessToken: "faketoken",
|
||||
Statistics: nil,
|
||||
}
|
||||
|
||||
var defaultAcquirableJob = &actions.AcquirableJob{
|
||||
AcquireJobUrl: "https://test.url",
|
||||
MessageType: "",
|
||||
RunnerRequestId: 1,
|
||||
RepositoryName: "testrepo",
|
||||
OwnerName: "testowner",
|
||||
JobWorkflowRef: "workflowref",
|
||||
EventName: "testevent",
|
||||
RequestLabels: []string{"test"},
|
||||
}
|
||||
|
||||
var defaultAcquirableJobList = &actions.AcquirableJobList{
|
||||
Count: 1,
|
||||
Jobs: []actions.AcquirableJob{*defaultAcquirableJob},
|
||||
}
|
||||
|
||||
var defaultRunnerReference = &actions.RunnerReference{
|
||||
Id: 1,
|
||||
Name: "testrunner",
|
||||
RunnerScaleSetId: 1,
|
||||
}
|
||||
|
||||
var defaultRunnerScaleSetMessage = &actions.RunnerScaleSetMessage{
|
||||
MessageId: 1,
|
||||
MessageType: "test",
|
||||
Body: "{}",
|
||||
Statistics: nil,
|
||||
}
|
||||
|
||||
var defaultRunnerScaleSetJitRunnerConfig = &actions.RunnerScaleSetJitRunnerConfig{
|
||||
Runner: defaultRunnerReference,
|
||||
EncodedJITConfig: "test",
|
||||
}
|
||||
|
||||
// FakeClient implements actions service
|
||||
type FakeClient struct {
|
||||
getRunnerScaleSetResult struct {
|
||||
*actions.RunnerScaleSet
|
||||
err error
|
||||
}
|
||||
getRunnerScaleSetByIdResult struct {
|
||||
*actions.RunnerScaleSet
|
||||
err error
|
||||
}
|
||||
getRunnerGroupByNameResult struct {
|
||||
*actions.RunnerGroup
|
||||
err error
|
||||
}
|
||||
|
||||
createRunnerScaleSetResult struct {
|
||||
*actions.RunnerScaleSet
|
||||
err error
|
||||
}
|
||||
createMessageSessionResult struct {
|
||||
*actions.RunnerScaleSetSession
|
||||
err error
|
||||
}
|
||||
deleteMessageSessionResult struct {
|
||||
err error
|
||||
}
|
||||
refreshMessageSessionResult struct {
|
||||
*actions.RunnerScaleSetSession
|
||||
err error
|
||||
}
|
||||
acquireJobsResult struct {
|
||||
ids []int64
|
||||
err error
|
||||
}
|
||||
getAcquirableJobsResult struct {
|
||||
*actions.AcquirableJobList
|
||||
err error
|
||||
}
|
||||
getMessageResult struct {
|
||||
*actions.RunnerScaleSetMessage
|
||||
err error
|
||||
}
|
||||
deleteMessageResult struct {
|
||||
err error
|
||||
}
|
||||
generateJitRunnerConfigResult struct {
|
||||
*actions.RunnerScaleSetJitRunnerConfig
|
||||
err error
|
||||
}
|
||||
getRunnerResult struct {
|
||||
*actions.RunnerReference
|
||||
err error
|
||||
}
|
||||
getRunnerByNameResult struct {
|
||||
*actions.RunnerReference
|
||||
err error
|
||||
}
|
||||
removeRunnerResult struct {
|
||||
err error
|
||||
}
|
||||
}
|
||||
|
||||
func NewFakeClient(options ...Option) actions.ActionsService {
|
||||
f := &FakeClient{}
|
||||
f.applyDefaults()
|
||||
for _, opt := range options {
|
||||
opt(f)
|
||||
}
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *FakeClient) applyDefaults() {
|
||||
f.getRunnerScaleSetResult.RunnerScaleSet = defaultRunnerScaleSet
|
||||
f.getRunnerScaleSetByIdResult.RunnerScaleSet = defaultRunnerScaleSet
|
||||
f.getRunnerGroupByNameResult.RunnerGroup = defaultRunnerGroup
|
||||
f.createRunnerScaleSetResult.RunnerScaleSet = defaultRunnerScaleSet
|
||||
f.createMessageSessionResult.RunnerScaleSetSession = defaultRunnerScaleSetSession
|
||||
f.refreshMessageSessionResult.RunnerScaleSetSession = defaultRunnerScaleSetSession
|
||||
f.acquireJobsResult.ids = []int64{1}
|
||||
f.getAcquirableJobsResult.AcquirableJobList = defaultAcquirableJobList
|
||||
f.getMessageResult.RunnerScaleSetMessage = defaultRunnerScaleSetMessage
|
||||
f.generateJitRunnerConfigResult.RunnerScaleSetJitRunnerConfig = defaultRunnerScaleSetJitRunnerConfig
|
||||
f.getRunnerResult.RunnerReference = defaultRunnerReference
|
||||
f.getRunnerByNameResult.RunnerReference = defaultRunnerReference
|
||||
}
|
||||
|
||||
func (f *FakeClient) GetRunnerScaleSet(ctx context.Context, runnerScaleSetName string) (*actions.RunnerScaleSet, error) {
|
||||
return f.getRunnerScaleSetResult.RunnerScaleSet, f.getRunnerScaleSetResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) GetRunnerScaleSetById(ctx context.Context, runnerScaleSetId int) (*actions.RunnerScaleSet, error) {
|
||||
return f.getRunnerScaleSetByIdResult.RunnerScaleSet, f.getRunnerScaleSetResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) GetRunnerGroupByName(ctx context.Context, runnerGroup string) (*actions.RunnerGroup, error) {
|
||||
return f.getRunnerGroupByNameResult.RunnerGroup, f.getRunnerGroupByNameResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) CreateRunnerScaleSet(ctx context.Context, runnerScaleSet *actions.RunnerScaleSet) (*actions.RunnerScaleSet, error) {
|
||||
return f.createRunnerScaleSetResult.RunnerScaleSet, f.createRunnerScaleSetResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) CreateMessageSession(ctx context.Context, runnerScaleSetId int, owner string) (*actions.RunnerScaleSetSession, error) {
|
||||
return f.createMessageSessionResult.RunnerScaleSetSession, f.createMessageSessionResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) DeleteMessageSession(ctx context.Context, runnerScaleSetId int, sessionId *uuid.UUID) error {
|
||||
return f.deleteMessageSessionResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) RefreshMessageSession(ctx context.Context, runnerScaleSetId int, sessionId *uuid.UUID) (*actions.RunnerScaleSetSession, error) {
|
||||
return f.refreshMessageSessionResult.RunnerScaleSetSession, f.refreshMessageSessionResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) AcquireJobs(ctx context.Context, runnerScaleSetId int, messageQueueAccessToken string, requestIds []int64) ([]int64, error) {
|
||||
return f.acquireJobsResult.ids, f.acquireJobsResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) GetAcquirableJobs(ctx context.Context, runnerScaleSetId int) (*actions.AcquirableJobList, error) {
|
||||
return f.getAcquirableJobsResult.AcquirableJobList, f.getAcquirableJobsResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) GetMessage(ctx context.Context, messageQueueUrl, messageQueueAccessToken string, lastMessageId int64) (*actions.RunnerScaleSetMessage, error) {
|
||||
return f.getMessageResult.RunnerScaleSetMessage, f.getMessageResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) DeleteMessage(ctx context.Context, messageQueueUrl, messageQueueAccessToken string, messageId int64) error {
|
||||
return f.deleteMessageResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) GenerateJitRunnerConfig(ctx context.Context, jitRunnerSetting *actions.RunnerScaleSetJitRunnerSetting, scaleSetId int) (*actions.RunnerScaleSetJitRunnerConfig, error) {
|
||||
return f.generateJitRunnerConfigResult.RunnerScaleSetJitRunnerConfig, f.generateJitRunnerConfigResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) GetRunner(ctx context.Context, runnerId int64) (*actions.RunnerReference, error) {
|
||||
return f.getRunnerResult.RunnerReference, f.getRunnerResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) GetRunnerByName(ctx context.Context, runnerName string) (*actions.RunnerReference, error) {
|
||||
return f.getRunnerByNameResult.RunnerReference, f.getRunnerByNameResult.err
|
||||
}
|
||||
|
||||
func (f *FakeClient) RemoveRunner(ctx context.Context, runnerId int64) error {
|
||||
return f.removeRunnerResult.err
|
||||
}
|
||||
Reference in New Issue
Block a user