Skip to content

Commit c23ff99

Browse files
Add some e2e boilerplate
Signed-off-by: Gabriel Adrian Samfira <[email protected]>
1 parent e8ea711 commit c23ff99

File tree

4 files changed

+135
-16
lines changed

4 files changed

+135
-16
lines changed

test/integration/e2e/client_utils.go

Lines changed: 69 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/cloudbase/garm/client"
77
clientControllerInfo "github.com/cloudbase/garm/client/controller_info"
88
clientCredentials "github.com/cloudbase/garm/client/credentials"
9+
clientEndpoints "github.com/cloudbase/garm/client/endpoints"
910
clientFirstRun "github.com/cloudbase/garm/client/first_run"
1011
clientInstances "github.com/cloudbase/garm/client/instances"
1112
clientJobs "github.com/cloudbase/garm/client/jobs"
@@ -18,9 +19,7 @@ import (
1819
"github.com/cloudbase/garm/params"
1920
)
2021

21-
// ///////////
22-
// Garm Init /
23-
// ///////////
22+
// firstRun will initialize a new garm installation.
2423
func firstRun(apiCli *client.GarmAPI, newUser params.NewUserParams) (params.User, error) {
2524
firstRunResponse, err := apiCli.FirstRun.FirstRun(
2625
clientFirstRun.NewFirstRunParams().WithBody(newUser),
@@ -41,9 +40,7 @@ func login(apiCli *client.GarmAPI, params params.PasswordLoginParams) (string, e
4140
return loginResponse.Payload.Token, nil
4241
}
4342

44-
// ////////////////////////////
45-
// Credentials and Providers //
46-
// ////////////////////////////
43+
// listCredentials lists all the credentials configured in GARM.
4744
func listCredentials(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter) (params.Credentials, error) {
4845
listCredentialsResponse, err := apiCli.Credentials.ListCredentials(
4946
clientCredentials.NewListCredentialsParams(),
@@ -54,6 +51,69 @@ func listCredentials(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfo
5451
return listCredentialsResponse.Payload, nil
5552
}
5653

54+
func createGithubCredentials(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, credentialsParams params.CreateGithubCredentialsParams) (*params.GithubCredentials, error) {
55+
createCredentialsResponse, err := apiCli.Credentials.CreateCredentials(
56+
clientCredentials.NewCreateCredentialsParams().WithBody(credentialsParams),
57+
apiAuthToken)
58+
if err != nil {
59+
return nil, err
60+
}
61+
return &createCredentialsResponse.Payload, nil
62+
}
63+
64+
func deleteGithubCredentials(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, credentialsID int64) error {
65+
return apiCli.Credentials.DeleteCredentials(
66+
clientCredentials.NewDeleteCredentialsParams().WithID(credentialsID),
67+
apiAuthToken)
68+
}
69+
70+
func getGithubCredential(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, credentialsID int64) (*params.GithubCredentials, error) {
71+
getCredentialsResponse, err := apiCli.Credentials.GetCredentials(
72+
clientCredentials.NewGetCredentialsParams().WithID(credentialsID),
73+
apiAuthToken)
74+
if err != nil {
75+
return nil, err
76+
}
77+
return &getCredentialsResponse.Payload, nil
78+
}
79+
80+
func createGithubEndpoint(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, endpointParams params.CreateGithubEndpointParams) (*params.GithubEndpoint, error) {
81+
createEndpointResponse, err := apiCli.Endpoints.CreateGithubEndpoint(
82+
clientEndpoints.NewCreateGithubEndpointParams().WithBody(endpointParams),
83+
apiAuthToken)
84+
if err != nil {
85+
return nil, err
86+
}
87+
return &createEndpointResponse.Payload, nil
88+
}
89+
90+
func listGithubEndpoints(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter) (params.GithubEndpoints, error) {
91+
listEndpointsResponse, err := apiCli.Endpoints.ListGithubEndpoints(
92+
clientEndpoints.NewListGithubEndpointsParams(),
93+
apiAuthToken)
94+
if err != nil {
95+
return nil, err
96+
}
97+
return listEndpointsResponse.Payload, nil
98+
}
99+
100+
func getGithubEndpoint(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, endpointName string) (*params.GithubEndpoint, error) {
101+
getEndpointResponse, err := apiCli.Endpoints.GetGithubEndpoint(
102+
clientEndpoints.NewGetGithubEndpointParams().WithName(endpointName),
103+
apiAuthToken)
104+
if err != nil {
105+
return nil, err
106+
}
107+
return &getEndpointResponse.Payload, nil
108+
}
109+
110+
func deleteGithubEndpoint(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter, endpointName string) error {
111+
return apiCli.Endpoints.DeleteGithubEndpoint(
112+
clientEndpoints.NewDeleteGithubEndpointParams().WithName(endpointName),
113+
apiAuthToken)
114+
}
115+
116+
// listProviders lists all the providers configured in GARM.
57117
func listProviders(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter) (params.Providers, error) {
58118
listProvidersResponse, err := apiCli.Providers.ListProviders(
59119
clientProviders.NewListProvidersParams(),
@@ -64,9 +124,7 @@ func listProviders(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWr
64124
return listProvidersResponse.Payload, nil
65125
}
66126

67-
// ////////////////////////
68-
// // Controller info ////
69-
// ////////////////////////
127+
// getControllerInfo returns information about the GARM controller.
70128
func getControllerInfo(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter) (params.ControllerInfo, error) {
71129
controllerInfoResponse, err := apiCli.ControllerInfo.ControllerInfo(
72130
clientControllerInfo.NewControllerInfoParams(),
@@ -77,9 +135,7 @@ func getControllerInfo(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthIn
77135
return controllerInfoResponse.Payload, nil
78136
}
79137

80-
// ////////
81-
// Jobs //
82-
// ////////
138+
// listJobs lists all the jobs configured in GARM.
83139
func listJobs(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter) (params.Jobs, error) {
84140
listJobsResponse, err := apiCli.Jobs.ListJobs(
85141
clientJobs.NewListJobsParams(),
@@ -90,9 +146,7 @@ func listJobs(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter)
90146
return listJobsResponse.Payload, nil
91147
}
92148

93-
// //////////////////
94-
// / Metrics Token //
95-
// //////////////////
149+
// getMetricsToken returns the metrics token.
96150
func getMetricsToken(apiCli *client.GarmAPI, apiAuthToken runtime.ClientAuthInfoWriter) (string, error) {
97151
getMetricsTokenResponse, err := apiCli.MetricsToken.GetMetricsToken(
98152
clientMetricsToken.NewGetMetricsTokenParams(),

test/integration/e2e/e2e.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,65 @@ func ListCredentials() params.Credentials {
1818
return credentials
1919
}
2020

21+
func CreateGithubCredentials(credentialsParams params.CreateGithubCredentialsParams) *params.GithubCredentials {
22+
slog.Info("Create GitHub credentials")
23+
credentials, err := createGithubCredentials(cli, authToken, credentialsParams)
24+
if err != nil {
25+
panic(err)
26+
}
27+
return credentials
28+
}
29+
30+
func GetGithubCredential(id int64) *params.GithubCredentials {
31+
slog.Info("Get GitHub credential")
32+
credentials, err := getGithubCredential(cli, authToken, id)
33+
if err != nil {
34+
panic(err)
35+
}
36+
return credentials
37+
}
38+
39+
func DeleteGithubCredential(id int64) {
40+
slog.Info("Delete GitHub credential")
41+
if err := deleteGithubCredentials(cli, authToken, id); err != nil {
42+
panic(err)
43+
}
44+
}
45+
46+
func CreateGithubEndpoint(endpointParams params.CreateGithubEndpointParams) *params.GithubEndpoint {
47+
slog.Info("Create GitHub endpoint")
48+
endpoint, err := createGithubEndpoint(cli, authToken, endpointParams)
49+
if err != nil {
50+
panic(err)
51+
}
52+
return endpoint
53+
}
54+
55+
func ListGithubEndpoints() params.GithubEndpoints {
56+
slog.Info("List GitHub endpoints")
57+
endpoints, err := listGithubEndpoints(cli, authToken)
58+
if err != nil {
59+
panic(err)
60+
}
61+
return endpoints
62+
}
63+
64+
func GetGithubEndpoint(name string) *params.GithubEndpoint {
65+
slog.Info("Get GitHub endpoint")
66+
endpoint, err := getGithubEndpoint(cli, authToken, name)
67+
if err != nil {
68+
panic(err)
69+
}
70+
return endpoint
71+
}
72+
73+
func DeleteGithubEndpoint(name string) {
74+
slog.Info("Delete GitHub endpoint")
75+
if err := deleteGithubEndpoint(cli, authToken, name); err != nil {
76+
panic(err)
77+
}
78+
}
79+
2180
func ListProviders() params.Providers {
2281
slog.Info("List providers")
2382
providers, err := listProviders(cli, authToken)

test/integration/e2e/instances.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ import (
1212
func waitInstanceStatus(name string, status commonParams.InstanceStatus, runnerStatus params.RunnerStatus, timeout time.Duration) (*params.Instance, error) {
1313
var timeWaited time.Duration // default is 0
1414
var instance *params.Instance
15+
var err error
1516

1617
slog.Info("Waiting for instance to reach desired status", "instance", name, "desired_status", status, "desired_runner_status", runnerStatus)
1718
for timeWaited < timeout {
18-
instance, err := getInstance(cli, authToken, name)
19+
instance, err = getInstance(cli, authToken, name)
1920
if err != nil {
2021
return nil, err
2122
}

test/integration/main.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ func main() {
7676
e2e.FirstRun(adminUsername, adminPassword, adminFullName, adminEmail)
7777
e2e.Login(adminUsername, adminPassword)
7878

79+
// Ensure that the default "github.com" endpoint is automatically created.
80+
e2e.MustDefaultGithubEndpoint()
81+
// Create test credentials
82+
e2e.EnsureTestCredentials(credentialsName, ghToken, "github.com")
83+
7984
// //////////////////
8085
// controller info //
8186
// //////////////////

0 commit comments

Comments
 (0)