diff --git a/tools/integration_tests/list_large_dir/list_large_dir_test.go b/tools/integration_tests/list_large_dir/list_large_dir_test.go index 3a5a24c58a..0189e429ac 100644 --- a/tools/integration_tests/list_large_dir/list_large_dir_test.go +++ b/tools/integration_tests/list_large_dir/list_large_dir_test.go @@ -49,5 +49,7 @@ func TestMain(m *testing.M) { successCode := static_mounting.RunTests(flags, m) + setup.RemoveBinFileCopiedForTesting() + os.Exit(successCode) } diff --git a/tools/integration_tests/operations/operations_test.go b/tools/integration_tests/operations/operations_test.go index 6d37b19c13..f177e37c34 100644 --- a/tools/integration_tests/operations/operations_test.go +++ b/tools/integration_tests/operations/operations_test.go @@ -118,5 +118,7 @@ func TestMain(m *testing.M) { successCode = creds_tests.RunTestsForKeyFileAndGoogleApplicationCredentialsEnvVarSet(flags, "objectAdmin", m) } + setup.RemoveBinFileCopiedForTesting() + os.Exit(successCode) } diff --git a/tools/integration_tests/readonly/readonly_test.go b/tools/integration_tests/readonly/readonly_test.go index 0a9003781a..727e93c15e 100644 --- a/tools/integration_tests/readonly/readonly_test.go +++ b/tools/integration_tests/readonly/readonly_test.go @@ -93,5 +93,7 @@ func TestMain(m *testing.M) { // Delete objects from bucket after testing. setup.RunScriptForTestData("testdata/delete_objects.sh", setup.TestBucket()) + setup.RemoveBinFileCopiedForTesting() + os.Exit(successCode) } diff --git a/tools/integration_tests/rename_dir_limit/rename_dir_limit_test.go b/tools/integration_tests/rename_dir_limit/rename_dir_limit_test.go index 28c5b19399..83a2ad1bb7 100644 --- a/tools/integration_tests/rename_dir_limit/rename_dir_limit_test.go +++ b/tools/integration_tests/rename_dir_limit/rename_dir_limit_test.go @@ -64,5 +64,7 @@ func TestMain(m *testing.M) { successCode = persistent_mounting.RunTests(flags, m) } + setup.RemoveBinFileCopiedForTesting() + os.Exit(successCode) } diff --git a/tools/integration_tests/util/operations/dir_operations.go b/tools/integration_tests/util/operations/dir_operations.go index d221fb5241..346a6470f8 100644 --- a/tools/integration_tests/util/operations/dir_operations.go +++ b/tools/integration_tests/util/operations/dir_operations.go @@ -28,9 +28,7 @@ import ( const FilePermission_0600 = 0600 const FilePermission_0777 = 0777 -func CopyDir(srcDirPath string, destDirPath string) (err error) { - cmd := exec.Command("cp", "--recursive", srcDirPath, destDirPath) - +func executeCommandForCopyOperation(cmd *exec.Cmd) (err error) { err = cmd.Run() if err != nil { err = fmt.Errorf("Copying dir operation is failed: %v", err) @@ -38,6 +36,22 @@ func CopyDir(srcDirPath string, destDirPath string) (err error) { return } +func CopyDir(srcDirPath string, destDirPath string) (err error) { + cmd := exec.Command("cp", "--recursive", srcDirPath, destDirPath) + + err = executeCommandForCopyOperation(cmd) + + return +} + +func CopyDirWithRootPermission(srcDirPath string, destDirPath string) (err error) { + cmd := exec.Command("sudo", "cp", "--recursive", srcDirPath, destDirPath) + + err = executeCommandForCopyOperation(cmd) + + return +} + func MoveDir(srcDirPath string, destDirPath string) (err error) { cmd := exec.Command("mv", srcDirPath, destDirPath) diff --git a/tools/integration_tests/util/setup/implicit_and_explicit_dir_setup/implicit_and_explicit_dir_setup.go b/tools/integration_tests/util/setup/implicit_and_explicit_dir_setup/implicit_and_explicit_dir_setup.go index bec0d1d538..34e8664c42 100644 --- a/tools/integration_tests/util/setup/implicit_and_explicit_dir_setup/implicit_and_explicit_dir_setup.go +++ b/tools/integration_tests/util/setup/implicit_and_explicit_dir_setup/implicit_and_explicit_dir_setup.go @@ -63,6 +63,8 @@ func RunTestsForImplicitDirAndExplicitDir(flags [][]string, m *testing.M) { successCode = persistent_mounting.RunTests(flags, m) } + setup.RemoveBinFileCopiedForTesting() + os.Exit(successCode) } diff --git a/tools/integration_tests/util/setup/setup.go b/tools/integration_tests/util/setup/setup.go index 462a051484..0d0310339f 100644 --- a/tools/integration_tests/util/setup/setup.go +++ b/tools/integration_tests/util/setup/setup.go @@ -148,6 +148,14 @@ func SetUpTestDir() error { } binFile = path.Join(TestDir(), "bin/gcsfuse") sbinFile = path.Join(TestDir(), "sbin/mount.gcsfuse") + + // mount.gcsfuse will find gcsfuse executable in mentioned locations. + // https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/tools/mount_gcsfuse/find.go#L59 + // Copying the executable to /usr/local/bin + err := operations.CopyDirWithRootPermission(binFile, "/usr/local/bin") + if err != nil { + log.Printf("Error in copying bin file:%v", err) + } } else { // when testInstalledPackage flag is set, gcsfuse is preinstalled on the // machine. Hence, here we are overwriting binFile to gcsfuse. @@ -164,6 +172,17 @@ func SetUpTestDir() error { return nil } +// Removing bin file after testing. +func RemoveBinFileCopiedForTesting() { + if !TestInstalledPackage() { + cmd := exec.Command("sudo", "rm", "/usr/local/bin/gcsfuse") + err := cmd.Run() + if err != nil { + log.Printf("Error in removing file:%v", err) + } + } +} + func UnMount() error { fusermount, err := exec.LookPath("fusermount") if err != nil {