1996fanrui commented on code in PR #23211:
URL: https://github.com/apache/flink/pull/23211#discussion_r1306314912


##########
flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCachePutTest.java:
##########
@@ -582,57 +545,47 @@ public void testPutBufferFailsForJobHa() throws 
IOException {
      */
     private void testPutBufferFails(@Nullable final JobID jobId, 
BlobKey.BlobType blobType)
             throws IOException {
-        assumeTrue(!OperatingSystem.isWindows()); // setWritable doesn't work 
on Windows.
+        // setWritable doesn't work on Windows.
+        assumeThat(OperatingSystem.isWindows()).as("setWritable doesn't work 
on Windows").isFalse();
 
-        final Configuration config = new Configuration();
-        File tempFileDir = null;
-        try (BlobServer server =
-                        new BlobServer(config, temporaryFolder.newFolder(), 
new VoidBlobStore());
-                BlobCacheService cache =
-                        new BlobCacheService(
-                                config,
-                                temporaryFolder.newFolder(),
-                                new VoidBlobStore(),
-                                new InetSocketAddress("localhost", 
server.getPort()))) {
+        Tuple2<BlobServer, BlobCacheService> serverAndCache =
+                TestingBlobUtils.createServerAndCache(tempDir);
 
+        try (BlobServer server = serverAndCache.f0;
+                BlobCacheService cache = serverAndCache.f1) {
             server.start();
 
             // make sure the blob server cannot create any files in its 
storage dir
-            tempFileDir = 
server.createTemporaryFilename().getParentFile().getParentFile();
-            assertTrue(tempFileDir.setExecutable(true, false));
-            assertTrue(tempFileDir.setReadable(true, false));
-            assertTrue(tempFileDir.setWritable(false, false));
+            File tempFileDir = 
server.createTemporaryFilename().getParentFile().getParentFile();
+            assertThat(tempFileDir.setExecutable(true, false)).isTrue();
+            assertThat(tempFileDir.setReadable(true, false)).isTrue();
+            assertThat(tempFileDir.setWritable(false, false)).isTrue();
 
             byte[] data = new byte[2000000];
             rnd.nextBytes(data);
 
-            // upload the file to the server via the cache
-            exception.expect(IOException.class);
-            exception.expectMessage("PUT operation failed: ");
-
-            put(cache, jobId, data, blobType);
-
-        } finally {
-            // set writable again to make sure we can remove the directory
-            if (tempFileDir != null) {
-                //noinspection ResultOfMethodCallIgnored
-                tempFileDir.setWritable(true, false);
+            try {
+                assertThatThrownBy(() -> put(cache, jobId, data, blobType))
+                        .isInstanceOf(IOException.class)
+                        .hasMessageStartingWith("PUT operation failed: ");
+            } finally {
+                assertThat(tempFileDir.setWritable(true, false)).isTrue();
             }
         }

Review Comment:
   Thanks @ferenc-csaky  for the detailed clarification, sounds make sense.
   
   We have used the `assertThatThrownBy` to catch exception, so the inner 
finally can be removed, right? Like this:
   
   ```
      private void testPutBufferFails(@Nullable final JobID jobId, 
BlobKey.BlobType blobType)
               throws IOException {
           assumeThat(OperatingSystem.isWindows()).as("setWritable doesn't work 
on Windows").isFalse();
   
           Tuple2<BlobServer, BlobCacheService> serverAndCache =
                   TestingBlobUtils.createServerAndCache(tempDir);
   
           try (BlobServer server = serverAndCache.f0;
                   BlobCacheService cache = serverAndCache.f1) {
               server.start();
   
               // make sure the blob server cannot create any files in its 
storage dir
               File tempFileDir = 
server.createTemporaryFilename().getParentFile().getParentFile();
               assertThat(tempFileDir.setExecutable(true, false)).isTrue();
               assertThat(tempFileDir.setReadable(true, false)).isTrue();
               assertThat(tempFileDir.setWritable(false, false)).isTrue();
   
               byte[] data = new byte[2000000];
               rnd.nextBytes(data);
   
               assertThatThrownBy(() -> put(cache, jobId, data, blobType))
                       .isInstanceOf(IOException.class)
                       .hasMessageStartingWith("PUT operation failed: ");
               assertThat(tempFileDir.setWritable(true, false)).isTrue();
           }
       }
   ```



##########
flink-runtime/src/test/java/org/apache/flink/runtime/blob/BlobCachePutTest.java:
##########
@@ -582,57 +545,47 @@ public void testPutBufferFailsForJobHa() throws 
IOException {
      */
     private void testPutBufferFails(@Nullable final JobID jobId, 
BlobKey.BlobType blobType)
             throws IOException {
-        assumeTrue(!OperatingSystem.isWindows()); // setWritable doesn't work 
on Windows.
+        // setWritable doesn't work on Windows.
+        assumeThat(OperatingSystem.isWindows()).as("setWritable doesn't work 
on Windows").isFalse();
 
-        final Configuration config = new Configuration();
-        File tempFileDir = null;
-        try (BlobServer server =
-                        new BlobServer(config, temporaryFolder.newFolder(), 
new VoidBlobStore());
-                BlobCacheService cache =
-                        new BlobCacheService(
-                                config,
-                                temporaryFolder.newFolder(),
-                                new VoidBlobStore(),
-                                new InetSocketAddress("localhost", 
server.getPort()))) {
+        Tuple2<BlobServer, BlobCacheService> serverAndCache =
+                TestingBlobUtils.createServerAndCache(tempDir);
 
+        try (BlobServer server = serverAndCache.f0;
+                BlobCacheService cache = serverAndCache.f1) {
             server.start();
 
             // make sure the blob server cannot create any files in its 
storage dir
-            tempFileDir = 
server.createTemporaryFilename().getParentFile().getParentFile();
-            assertTrue(tempFileDir.setExecutable(true, false));
-            assertTrue(tempFileDir.setReadable(true, false));
-            assertTrue(tempFileDir.setWritable(false, false));
+            File tempFileDir = 
server.createTemporaryFilename().getParentFile().getParentFile();
+            assertThat(tempFileDir.setExecutable(true, false)).isTrue();
+            assertThat(tempFileDir.setReadable(true, false)).isTrue();
+            assertThat(tempFileDir.setWritable(false, false)).isTrue();
 
             byte[] data = new byte[2000000];
             rnd.nextBytes(data);
 
-            // upload the file to the server via the cache
-            exception.expect(IOException.class);
-            exception.expectMessage("PUT operation failed: ");
-
-            put(cache, jobId, data, blobType);
-
-        } finally {
-            // set writable again to make sure we can remove the directory
-            if (tempFileDir != null) {
-                //noinspection ResultOfMethodCallIgnored
-                tempFileDir.setWritable(true, false);
+            try {
+                assertThatThrownBy(() -> put(cache, jobId, data, blobType))
+                        .isInstanceOf(IOException.class)
+                        .hasMessageStartingWith("PUT operation failed: ");
+            } finally {
+                assertThat(tempFileDir.setWritable(true, false)).isTrue();
             }
         }

Review Comment:
   Thanks @ferenc-csaky  for the detailed clarification, sounds make sense.
   
   We have used the `assertThatThrownBy` to catch exception, so the inner 
finally can be removed, right? Like this:
   
   ```
      private void testPutBufferFails(@Nullable final JobID jobId, 
BlobKey.BlobType blobType)
               throws IOException {
           assumeThat(OperatingSystem.isWindows()).as("setWritable doesn't work 
on Windows").isFalse();
   
           Tuple2<BlobServer, BlobCacheService> serverAndCache =
                   TestingBlobUtils.createServerAndCache(tempDir);
   
           try (BlobServer server = serverAndCache.f0;
                   BlobCacheService cache = serverAndCache.f1) {
               server.start();
   
               // make sure the blob server cannot create any files in its 
storage dir
               File tempFileDir = 
server.createTemporaryFilename().getParentFile().getParentFile();
               assertThat(tempFileDir.setExecutable(true, false)).isTrue();
               assertThat(tempFileDir.setReadable(true, false)).isTrue();
               assertThat(tempFileDir.setWritable(false, false)).isTrue();
   
               byte[] data = new byte[2000000];
               rnd.nextBytes(data);
   
               assertThatThrownBy(() -> put(cache, jobId, data, blobType))
                       .isInstanceOf(IOException.class)
                       .hasMessageStartingWith("PUT operation failed: ");
               assertThat(tempFileDir.setWritable(true, false)).isTrue();
           }
       }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to