[FLINK-7988][s3] fix HadoopS3FileSystemITCase leaving test directories behind 
in S3

This closes #4950.


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/51b5b53c
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/51b5b53c
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/51b5b53c

Branch: refs/heads/master
Commit: 51b5b53c7cd7781959011ba48559c5361ac93ff9
Parents: cf8504d
Author: Nico Kruber <n...@data-artisans.com>
Authored: Thu Nov 2 19:38:48 2017 +0100
Committer: Till Rohrmann <trohrm...@apache.org>
Committed: Sat Nov 18 10:58:08 2017 +0100

----------------------------------------------------------------------
 .../fs/s3hadoop/HadoopS3FileSystemITCase.java   | 50 +++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/51b5b53c/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HadoopS3FileSystemITCase.java
----------------------------------------------------------------------
diff --git 
a/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HadoopS3FileSystemITCase.java
 
b/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HadoopS3FileSystemITCase.java
index 88f13ed..8c646f0 100644
--- 
a/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HadoopS3FileSystemITCase.java
+++ 
b/flink-filesystems/flink-s3-fs-hadoop/src/test/java/org/apache/flink/fs/s3hadoop/HadoopS3FileSystemITCase.java
@@ -27,6 +27,7 @@ import org.apache.flink.core.fs.FileSystem.WriteMode;
 import org.apache.flink.core.fs.Path;
 import org.apache.flink.util.TestLogger;
 
+import org.junit.AfterClass;
 import org.junit.Assume;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -57,11 +58,58 @@ public class HadoopS3FileSystemITCase extends TestLogger {
        private static final String ACCESS_KEY = 
System.getenv("ARTIFACTS_AWS_ACCESS_KEY");
        private static final String SECRET_KEY = 
System.getenv("ARTIFACTS_AWS_SECRET_KEY");
 
+       /**
+        * Will be updated by {@link #checkCredentialsAndSetup()} if the test 
is not skipped.
+        */
+       private static boolean skipTest = true;
+
        @BeforeClass
-       public static void checkIfCredentialsArePresent() {
+       public static void checkCredentialsAndSetup() throws IOException {
+               // check whether credentials exist
                Assume.assumeTrue("AWS S3 bucket not configured, skipping 
test...", BUCKET != null);
                Assume.assumeTrue("AWS S3 access key not configured, skipping 
test...", ACCESS_KEY != null);
                Assume.assumeTrue("AWS S3 secret key not configured, skipping 
test...", SECRET_KEY != null);
+
+               // initialize configuration with valid credentials
+               final Configuration conf = new Configuration();
+               conf.setString("s3.access.key", ACCESS_KEY);
+               conf.setString("s3.secret.key", SECRET_KEY);
+               FileSystem.initialize(conf);
+
+               // check for uniqueness of the test directory
+               final Path directory = new Path("s3://" + BUCKET + '/' + 
TEST_DATA_DIR);
+               final FileSystem fs = directory.getFileSystem();
+
+               // directory must not yet exist
+               assertFalse(fs.exists(directory));
+
+               // reset configuration
+               FileSystem.initialize(new Configuration());
+
+               skipTest = false;
+       }
+
+       @AfterClass
+       public static void cleanUp() throws IOException {
+               if (!skipTest) {
+                       // initialize configuration with valid credentials
+                       final Configuration conf = new Configuration();
+                       conf.setString("s3.access.key", ACCESS_KEY);
+                       conf.setString("s3.secret.key", SECRET_KEY);
+                       FileSystem.initialize(conf);
+
+                       final Path directory = new Path("s3://" + BUCKET + '/' 
+ TEST_DATA_DIR);
+                       final FileSystem fs = directory.getFileSystem();
+
+                       // clean up
+                       fs.delete(directory, true);
+
+                       // now directory must be gone
+                       assertFalse(fs.exists(directory));
+
+                       // reset configuration
+                       FileSystem.initialize(new Configuration());
+               }
        }
 
        @Test

Reply via email to