Skip to content

Commit

Permalink
PC-14087 Review changes pt 2
Browse files Browse the repository at this point in the history
  • Loading branch information
BSski committed Oct 7, 2024
1 parent cffa4db commit 63150ab
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 76 deletions.
2 changes: 1 addition & 1 deletion sdk/endpoints/slostatusapi/v1/endpoints.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ type endpoints struct {
client endpointsHelpers.Client
}

func (e endpoints) GetSLO(ctx context.Context, name, project string) (slo SLODetails, err error) {
func (e endpoints) GetSLO(ctx context.Context, project, name string) (slo SLODetails, err error) {
req, err := e.client.CreateRequest(
ctx,
http.MethodGet,
Expand Down
2 changes: 1 addition & 1 deletion sdk/endpoints/slostatusapi/v1/endpoints_interface.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion sdk/endpoints/slostatusapi/v2/endpoints.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ type endpoints struct {
client endpointsHelpers.Client
}

func (e endpoints) GetSLO(ctx context.Context, name, project string) (slo SLODetails, err error) {
func (e endpoints) GetSLO(ctx context.Context, project, name string) (slo SLODetails, err error) {
req, err := e.client.CreateRequest(
ctx,
http.MethodGet,
Expand Down
2 changes: 1 addition & 1 deletion sdk/endpoints/slostatusapi/v2/endpoints_interface.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

114 changes: 42 additions & 72 deletions tests/slostatusapi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func Test_SLOStatusAPI_V1_GetSLO(t *testing.T) {
t.Cleanup(func() { v1Delete(t, allObjects) })

responseSLO, err := tryExecuteGetSLORequest(t, func() (v1.SLODetails, error) {
return client.SLOStatusAPI().V1().GetSLO(ctx, slo.GetName(), project.GetName())
return client.SLOStatusAPI().V1().GetSLO(ctx, project.GetName(), slo.GetName())
})
require.NoError(t, err)
assert.NotEmpty(t, responseSLO)
Expand Down Expand Up @@ -64,19 +64,33 @@ func Test_SLOStatusAPI_V1_GetSLOs(t *testing.T) {
t.Cleanup(func() { v1Delete(t, []manifest.Object{slo3, slo4, slo5}) })

limit := 2
firstResponse, err := tryExecuteGetSLOsV1Request(t, func() (v1.SLOListResponse, error) {
return client.SLOStatusAPI().V1().GetSLOs(ctx, v1.GetSLOsRequest{Limit: limit})
}, limit)
firstResponse, err := tryExecuteGetSLORequest(t, func() (v1.SLOListResponse, error) {
response, err := client.SLOStatusAPI().V1().GetSLOs(ctx, v1.GetSLOsRequest{Limit: limit})
if err != nil {
return response, err
}
if len(response.Data) != limit {
err = fmt.Errorf("expected %d SLOs, got %d", limit, len(response.Data))
}
return response, err
})
require.NoError(t, err)
assert.NotEmpty(t, firstResponse)
assert.NotEmpty(t, firstResponse.Links.Self, "expected first response's self link to be set")
assert.NotEmpty(t, firstResponse.Links.Next, "expected first response's next link to be set")
firstCursor := firstResponse.Links.Cursor
require.NotEmpty(t, firstCursor)

secondResponse, err := tryExecuteGetSLOsV1Request(t, func() (v1.SLOListResponse, error) {
return client.SLOStatusAPI().V1().GetSLOs(ctx, v1.GetSLOsRequest{Limit: limit, Cursor: firstCursor})
}, limit)
secondResponse, err := tryExecuteGetSLORequest(t, func() (v1.SLOListResponse, error) {
response, err := client.SLOStatusAPI().V1().GetSLOs(ctx, v1.GetSLOsRequest{Limit: limit, Cursor: firstCursor})
if err != nil {
return response, err
}
if len(response.Data) != limit {
err = fmt.Errorf("expected %d SLOs, got %d", limit, len(response.Data))
}
return response, err
})
require.NoError(t, err)
assert.NotEmpty(t, secondResponse)
assert.NotEmpty(t, secondResponse.Links.Self, "expected second response's self link to be set")
Expand All @@ -97,7 +111,7 @@ func Test_SLOStatusAPI_V2_GetSLO(t *testing.T) {
t.Cleanup(func() { v1Delete(t, allObjects) })

responseSLO, err := tryExecuteGetSLORequest(t, func() (v2.SLODetails, error) {
return client.SLOStatusAPI().V2().GetSLO(ctx, slo.GetName(), project.GetName())
return client.SLOStatusAPI().V2().GetSLO(ctx, project.GetName(), slo.GetName())
})
require.NoError(t, err)
assert.NotEmpty(t, responseSLO)
Expand Down Expand Up @@ -130,19 +144,33 @@ func Test_SLOStatusAPI_V2_GetSLOs(t *testing.T) {
t.Cleanup(func() { v1Delete(t, []manifest.Object{slo3, slo4, slo5}) })

limit := 2
firstResponse, err := tryExecuteGetSLOsV2Request(t, func() (v2.SLOListResponse, error) {
return client.SLOStatusAPI().V2().GetSLOs(ctx, v2.GetSLOsRequest{Limit: limit})
}, limit)
firstResponse, err := tryExecuteGetSLORequest(t, func() (v2.SLOListResponse, error) {
response, err := client.SLOStatusAPI().V2().GetSLOs(ctx, v2.GetSLOsRequest{Limit: limit})
if err != nil {
return response, err
}
if len(response.Data) != limit {
err = fmt.Errorf("expected %d SLOs, got %d", limit, len(response.Data))
}
return response, err
})
require.NoError(t, err)
assert.NotEmpty(t, firstResponse)
assert.NotEmpty(t, firstResponse.Links.Self, "expected first response's self link to be set")
assert.NotEmpty(t, firstResponse.Links.Next, "expected first response's next link to be set")
firstCursor := firstResponse.Links.Cursor
require.NotEmpty(t, firstCursor)

secondResponse, err := tryExecuteGetSLOsV2Request(t, func() (v2.SLOListResponse, error) {
return client.SLOStatusAPI().V2().GetSLOs(ctx, v2.GetSLOsRequest{Limit: limit, Cursor: firstCursor})
}, limit)
secondResponse, err := tryExecuteGetSLORequest(t, func() (v2.SLOListResponse, error) {
response, err := client.SLOStatusAPI().V2().GetSLOs(ctx, v2.GetSLOsRequest{Limit: limit, Cursor: firstCursor})
if err != nil {
return response, err
}
if len(response.Data) != limit {
err = fmt.Errorf("expected %d SLOs, got %d", limit, len(response.Data))
}
return response, err
})
require.NoError(t, err)
assert.NotEmpty(t, secondResponse)
assert.NotEmpty(t, secondResponse.Links.Self, "expected second response's self link to be set")
Expand Down Expand Up @@ -213,61 +241,3 @@ func tryExecuteGetSLORequest[T any](t *testing.T, reqFunc func() (T, error)) (T,
}
}
}

func tryExecuteGetSLOsV1Request(
t *testing.T, reqFunc func() (v1.SLOListResponse, error), limit int,
) (v1.SLOListResponse, error) {
t.Helper()
ticker := time.NewTicker(5 * time.Second)
timer := time.NewTimer(time.Minute)
defer ticker.Stop()
defer timer.Stop()
var (
response v1.SLOListResponse
err error
)
for {
select {
case <-ticker.C:
response, err = reqFunc()
if len(response.Data) != limit {
err = fmt.Errorf("expected %d SLOs, got %d", limit, len(response.Data))
}
if err == nil {
return response, nil
}
case <-timer.C:
t.Error("timeout")
return response, err
}
}
}

func tryExecuteGetSLOsV2Request(
t *testing.T, reqFunc func() (v2.SLOListResponse, error), limit int,
) (v2.SLOListResponse, error) {
t.Helper()
ticker := time.NewTicker(5 * time.Second)
timer := time.NewTimer(time.Minute)
defer ticker.Stop()
defer timer.Stop()
var (
response v2.SLOListResponse
err error
)
for {
select {
case <-ticker.C:
response, err = reqFunc()
if len(response.Data) != limit {
err = fmt.Errorf("expected %d SLOs, got %d", limit, len(response.Data))
}
if err == nil {
return response, nil
}
case <-timer.C:
t.Error("timeout")
return response, err
}
}
}

0 comments on commit 63150ab

Please sign in to comment.