From f1467e0b139360b23a767abb3b7e9d1f2277a1de Mon Sep 17 00:00:00 2001 From: upodroid Date: Tue, 19 Dec 2023 19:13:53 +0000 Subject: [PATCH] publish the marker inside the fast folder --- object/gcs.go | 7 +++++-- object/gcs_test.go | 22 +++++++++++++++++++--- object/objectfakes/fake_store.go | 2 +- object/store.go | 2 +- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/object/gcs.go b/object/gcs.go index 2aeda84..4f2a763 100644 --- a/object/gcs.go +++ b/object/gcs.go @@ -212,14 +212,14 @@ func (g *GCS) GetReleasePath( // // gs:/// func (g *GCS) GetMarkerPath( - bucket, gcsRoot string, + bucket, gcsRoot string, fast bool, ) (string, error) { gcsPath, err := g.getPath( bucket, gcsRoot, "", "marker", - false, + fast, ) if err != nil { return "", fmt.Errorf("normalize GCS path: %w", err) @@ -258,6 +258,9 @@ func (g *GCS) getPath( gcsPathParts = append(gcsPathParts, version) } case "marker": + if fast { + gcsPathParts = append(gcsPathParts, "fast") + } default: return "", errors.New("a GCS path type must be specified") } diff --git a/object/gcs_test.go b/object/gcs_test.go index 7dc3e83..e59a1a0 100644 --- a/object/gcs_test.go +++ b/object/gcs_test.go @@ -110,24 +110,40 @@ func TestGetMarkerPath(t *testing.T) { bucket, gcsRoot string expected string shouldError bool + fast bool }{ { // default CI build bucket: "k8s-release-dev", gcsRoot: "ci", expected: "gs://k8s-release-dev/ci", shouldError: false, + fast: false, + }, + { // default fast CI build + bucket: "k8s-release-dev", + gcsRoot: "ci", + expected: "gs://k8s-release-dev/ci/fast", + shouldError: false, + fast: true, + }, + { // current problematic behaviour + bucket: "k8s-release-dev", + gcsRoot: "ci", + expected: "gs://k8s-release-dev/ci", + shouldError: true, + fast: true, }, } { actual, err := testGCS.GetMarkerPath( tc.bucket, tc.gcsRoot, + tc.fast, ) - require.Equal(t, tc.expected, actual) - if tc.shouldError { - require.NotNil(t, err) + require.NotEqual(t, tc.expected, actual) } else { + require.Equal(t, tc.expected, actual) require.Nil(t, err) } } diff --git a/object/objectfakes/fake_store.go b/object/objectfakes/fake_store.go index 59691db..f9fb6b8 100644 --- a/object/objectfakes/fake_store.go +++ b/object/objectfakes/fake_store.go @@ -334,7 +334,7 @@ func (fake *FakeStore) CopyToRemoteReturnsOnCall(i int, result1 error) { }{result1} } -func (fake *FakeStore) GetMarkerPath(arg1 string, arg2 string) (string, error) { +func (fake *FakeStore) GetMarkerPath(arg1 string, arg2 string, arg3 bool) (string, error) { fake.getMarkerPathMutex.Lock() ret, specificReturn := fake.getMarkerPathReturnsOnCall[len(fake.getMarkerPathArgsForCall)] fake.getMarkerPathArgsForCall = append(fake.getMarkerPathArgsForCall, struct { diff --git a/object/store.go b/object/store.go index 49ed75d..25e5f24 100644 --- a/object/store.go +++ b/object/store.go @@ -43,7 +43,7 @@ type Store interface { // TODO: Overly specific. We should only care these methods during a release. GetReleasePath(bucket, gcsRoot, version string, fast bool) (string, error) - GetMarkerPath(bucket, gcsRoot string) (string, error) + GetMarkerPath(bucket, gcsRoot string, fast bool) (string, error) } type OptFn func(Store)