Skip to content

Commit f539f41

Browse files
committed
test(integration): align Pirlo integration test behavior with Zonal buckets when rapid writes are enabled
When rapid writes are enabled for Pirlo (RCU) buckets (`--experimental-enable-pirlo --enable-rapid-writes=true`), open files and appends create unfinalized objects on GCS prior to file flush or close, following the exact behavior of Zonal (RAPID) buckets. This PR updates GCSFuse integration tests to handle Pirlo buckets with rapid writes enabled identically to Zonal buckets: - Updated integration test suites to check Pirlo rapid-write runs alongside Zonal bucket checks for unfinalized object behaviors (such as object content visibility before flush/close, metadata attributes, storage class assertions, and permission error handling). - Renamed and standardized flush/close wait duration constants (`WaitDurationAfterFlushRapid` and `WaitDurationAfterCloseRapid`) to ensure tests wait appropriately for unfinalized object size and metadata propagation after file flushes and handle closes. - Updated integration test configs (`test_config.yaml`) to define Pirlo flag sets with `run_on_gke: false` and appropriate test selection (`run:` / `skip:`). - Standardized test error assertions across modified suites using `require.NoError` and `assert.NoError`. b/537635447 1. Manual - NA 2. Unit tests - NA 3. Integration tests - Automated No
1 parent 1e47126 commit f539f41

22 files changed

Lines changed: 391 additions & 360 deletions

File tree

tools/integration_tests/explicit_dir/list_test.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,7 @@ func TestListOnlyExplicitObjectsFromBucket(t *testing.T) {
4040
// testBucket/dirForExplicitDirTests/explicitDirectory/fileInExplicitDir1 -- File
4141
// testBucket/dirForExplicitDirTests/explicitDirectory/fileInExplicitDir2 -- File
4242

43-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
44-
if setup.IsZonalBucketRun() {
45-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, DirForExplicitDirTests)
46-
} else {
47-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructure(DirForExplicitDirTests)
48-
}
43+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, DirForExplicitDirTests)
4944
implicit_and_explicit_dir_setup.CreateExplicitDirectoryStructure(DirForExplicitDirTests, t)
5045

5146
err := filepath.WalkDir(testDir, func(path string, dir fs.DirEntry, err error) error {
@@ -110,12 +105,7 @@ func TestListOnlyExplicitObjectsFromBucket(t *testing.T) {
110105

111106
func TestStatImplicitDirAfterList(t *testing.T) {
112107
testDirPath := setup.SetupTestDirectory(DirForExplicitDirTests)
113-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
114-
if setup.IsZonalBucketRun() {
115-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, DirForExplicitDirTests)
116-
} else {
117-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructure(DirForExplicitDirTests)
118-
}
108+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, DirForExplicitDirTests)
119109

120110
// List the directory
121111
_, err := os.ReadDir(testDirPath)

tools/integration_tests/implicit_dir/delete_test.go

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"testing"
2121

2222
"github.com/googlecloudplatform/gcsfuse/v3/tools/integration_tests/util/operations"
23-
"github.com/googlecloudplatform/gcsfuse/v3/tools/integration_tests/util/setup"
2423
"github.com/googlecloudplatform/gcsfuse/v3/tools/integration_tests/util/setup/implicit_and_explicit_dir_setup"
2524
)
2625

@@ -32,12 +31,7 @@ import (
3231
func TestDeleteNonEmptyImplicitDir(t *testing.T) {
3332
testDirName := "testDeleteNonEmptyImplicitDir"
3433
testDirPath := setupTestDir(testDirName)
35-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
36-
if setup.IsZonalBucketRun() {
37-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
38-
} else {
39-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructure(path.Join(DirForImplicitDirTests, testDirName))
40-
}
34+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
4135

4236
dirPath := path.Join(testDirPath, implicit_and_explicit_dir_setup.ImplicitDirectory)
4337

@@ -52,12 +46,7 @@ func TestDeleteNonEmptyImplicitDir(t *testing.T) {
5246
func TestDeleteNonEmptyImplicitSubDir(t *testing.T) {
5347
testDirName := "testDeleteNonEmptyImplicitSubDir"
5448
testDirPath := setupTestDir(testDirName)
55-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
56-
if setup.IsZonalBucketRun() {
57-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
58-
} else {
59-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructure(path.Join(DirForImplicitDirTests, testDirName))
60-
}
49+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
6150

6251
subDirPath := path.Join(testDirPath, implicit_and_explicit_dir_setup.ImplicitDirectory, implicit_and_explicit_dir_setup.ImplicitSubDirectory)
6352

@@ -74,12 +63,7 @@ func TestDeleteNonEmptyImplicitSubDir(t *testing.T) {
7463
func TestDeleteImplicitDirWithExplicitSubDir(t *testing.T) {
7564
testDirName := "testDeleteImplicitDirWithExplicitSubDir"
7665
testDirPath := setupTestDir(testDirName)
77-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
78-
if setup.IsZonalBucketRun() {
79-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
80-
} else {
81-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructure(path.Join(DirForImplicitDirTests, testDirName))
82-
}
66+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
8367

8468
explicitDirPath := path.Join(testDirPath, implicit_and_explicit_dir_setup.ImplicitDirectory, ExplicitDirInImplicitDir)
8569

@@ -100,12 +84,7 @@ func TestDeleteImplicitDirWithExplicitSubDir(t *testing.T) {
10084
func TestDeleteImplicitDirWithImplicitSubDirContainingExplicitDir(t *testing.T) {
10185
testDirName := "testDeleteImplicitDirWithImplicitSubDirContainingExplicitDir"
10286
testDirPath := setupTestDir(testDirName)
103-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
104-
if setup.IsZonalBucketRun() {
105-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
106-
} else {
107-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructure(path.Join(DirForImplicitDirTests, testDirName))
108-
}
87+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
10988
explicitDirPath := path.Join(testDirPath, implicit_and_explicit_dir_setup.ImplicitDirectory, implicit_and_explicit_dir_setup.ImplicitSubDirectory, ExplicitDirInImplicitSubDir)
11089

11190
operations.CreateDirectoryWithNFiles(NumberOfFilesInExplicitDirInImplicitSubDir, explicitDirPath, PrefixFileInExplicitDirInImplicitSubDir, t)
@@ -127,12 +106,7 @@ func TestDeleteImplicitDirWithImplicitSubDirContainingExplicitDir(t *testing.T)
127106
func TestDeleteImplicitDirInExplicitDir(t *testing.T) {
128107
testDirName := "testDeleteImplicitDirInExplicitDir"
129108
testDirPath := setupTestDir(testDirName)
130-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
131-
if setup.IsZonalBucketRun() {
132-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryInExplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
133-
} else {
134-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryInExplicitDirectoryStructure(path.Join(DirForImplicitDirTests, testDirName), t)
135-
}
109+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryInExplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
136110

137111
dirPath := path.Join(testDirPath, implicit_and_explicit_dir_setup.ExplicitDirectory, implicit_and_explicit_dir_setup.ImplicitDirectory)
138112

@@ -151,12 +125,7 @@ func TestDeleteImplicitDirInExplicitDir(t *testing.T) {
151125
func TestDeleteExplicitDirContainingImplicitSubDir(t *testing.T) {
152126
testDirName := "testDeleteExplicitDirContainingImplicitSubDir"
153127
testDirPath := setupTestDir(testDirName)
154-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
155-
if setup.IsZonalBucketRun() {
156-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryInExplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
157-
} else {
158-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryInExplicitDirectoryStructure(path.Join(DirForImplicitDirTests, testDirName), t)
159-
}
128+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryInExplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
160129

161130
dirPath := path.Join(testDirPath, implicit_and_explicit_dir_setup.ExplicitDirectory)
162131

tools/integration_tests/implicit_dir/list_test.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,7 @@ func TestListImplicitObjectsFromBucket(t *testing.T) {
4141
// testBucket/dirForImplicitDirTests/testDir/explicitDirectory/fileInExplicitDir1 -- File
4242
// testBucket/dirForImplicitDirTests/testDir/explicitDirectory/fileInExplicitDir2 -- File
4343

44-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
45-
if setup.IsZonalBucketRun() {
46-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
47-
} else {
48-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructure(path.Join(DirForImplicitDirTests, testDirName))
49-
}
44+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, path.Join(DirForImplicitDirTests, testDirName))
5045
implicit_and_explicit_dir_setup.CreateExplicitDirectoryStructure(path.Join(DirForImplicitDirTests, testDirName), t)
5146

5247
err := filepath.WalkDir(testDirPath, func(path string, dir fs.DirEntry, err error) error {
@@ -147,12 +142,7 @@ func TestListImplicitObjectsFromBucket(t *testing.T) {
147142

148143
func TestStatImplicitDirAfterList(t *testing.T) {
149144
testDirPath := setup.SetupTestDirectory(DirForImplicitDirTests)
150-
// TODO: Remove the condition and keep the storage-client flow for non-ZB too.
151-
if setup.IsZonalBucketRun() {
152-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, DirForImplicitDirTests)
153-
} else {
154-
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructure(DirForImplicitDirTests)
155-
}
145+
implicit_and_explicit_dir_setup.CreateImplicitDirectoryStructureUsingStorageClient(testEnv.ctx, t, testEnv.storageClient, DirForImplicitDirTests)
156146

157147
// List the directory
158148
_, err := os.ReadDir(testDirPath)

0 commit comments

Comments
 (0)