This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 82fe051413 NIFI-13996 Improved removal of temporary files after a
build (#9551)
82fe051413 is described below
commit 82fe0514132efe3fa5d1b7388c5a63fa42ab096f
Author: dan-s1 <[email protected]>
AuthorDate: Mon Dec 2 18:39:31 2024 -0500
NIFI-13996 Improved removal of temporary files after a build (#9551)
Signed-off-by: David Handerman <[email protected]>
Co-authored-by: David Handermann <[email protected]>
---
.../TransferDebugOperationHandlerTest.java | 16 ++++++
.../DefaultSyncResourceStrategyTest.java | 17 ++++++
.../apache/nifi/util/db/TestJdbcClobReadable.java | 13 +++--
.../apache/nifi/util/db/TestJdbcHugeStream.java | 20 ++++---
.../org/apache/nifi/util/db/TestJdbcTypesH2.java | 17 ++----
.../groovyx/ExecuteGroovyScriptTest.java | 8 ++-
.../apache/nifi/processors/hadoop/PutHDFSTest.java | 9 ++-
.../nifi/excel/TestExcelHeaderSchemaStrategy.java | 20 +++++++
.../apache/nifi/excel/TestExcelRecordReader.java | 20 +++++++
.../nifi/excel/TestExcelSchemaInference.java | 21 +++++++
.../nifi/processors/excel/TestSplitExcel.java | 19 +++++++
.../nifi/processors/standard/InvokeHTTPTest.java | 18 ++++++
.../nifi/processors/standard/TestPutSQL.java | 64 +++++++++++-----------
.../nifi/processors/standard/TestReplaceText.java | 12 ++--
.../zookeeper/TestZooKeeperStateProvider.java | 17 ++++++
15 files changed, 221 insertions(+), 70 deletions(-)
diff --git
a/c2/c2-client-bundle/c2-client-service/src/test/java/org/apache/nifi/c2/client/service/operation/TransferDebugOperationHandlerTest.java
b/c2/c2-client-bundle/c2-client-service/src/test/java/org/apache/nifi/c2/client/service/operation/TransferDebugOperationHandlerTest.java
index 07d83329f3..201163eb6a 100644
---
a/c2/c2-client-bundle/c2-client-service/src/test/java/org/apache/nifi/c2/client/service/operation/TransferDebugOperationHandlerTest.java
+++
b/c2/c2-client-bundle/c2-client-service/src/test/java/org/apache/nifi/c2/client/service/operation/TransferDebugOperationHandlerTest.java
@@ -18,6 +18,7 @@
package org.apache.nifi.c2.client.service.operation;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static java.nio.file.Files.newDirectoryStream;
import static java.nio.file.Files.write;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
@@ -46,6 +47,7 @@ import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UncheckedIOException;
+import java.nio.file.DirectoryStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
@@ -56,9 +58,11 @@ import java.util.stream.Stream;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
+import org.apache.commons.io.FileUtils;
import org.apache.nifi.c2.client.api.C2Client;
import org.apache.nifi.c2.protocol.api.C2Operation;
import org.apache.nifi.c2.protocol.api.C2OperationAck;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.io.TempDir;
@@ -87,6 +91,18 @@ public class TransferDebugOperationHandlerTest {
@TempDir
private File tempDir;
+ @AfterEach
+ public void cleanUpAfterEach() {
+ // Cleanup all the temporary operationId[0-9]* directories which are
generated by TransferDebugOperationHandler.
+ final Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
+ try (DirectoryStream<Path> directoryStream =
newDirectoryStream(tempDir, "operationId[0-9]*")) {
+ for (Path operationId : directoryStream) {
+ FileUtils.deleteDirectory(operationId.toFile());
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
private static Stream<Arguments> invalidConstructorArguments() {
C2Client mockC2Client = mock(C2Client.class);
return Stream.of(
diff --git
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/c2/command/syncresource/DefaultSyncResourceStrategyTest.java
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/c2/command/syncresource/DefaultSyncResourceStrategyTest.java
index e59eeed402..dd352580dd 100644
---
a/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/c2/command/syncresource/DefaultSyncResourceStrategyTest.java
+++
b/minifi/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-framework-core/src/test/java/org/apache/nifi/minifi/c2/command/syncresource/DefaultSyncResourceStrategyTest.java
@@ -19,6 +19,7 @@ package org.apache.nifi.minifi.c2.command.syncresource;
import static java.lang.Boolean.TRUE;
import static java.nio.file.Files.createTempFile;
+import static java.nio.file.Files.newDirectoryStream;
import static java.util.Optional.empty;
import static java.util.Optional.ofNullable;
import static
org.apache.nifi.c2.protocol.api.C2OperationState.OperationState.FULLY_APPLIED;
@@ -38,17 +39,21 @@ import static org.mockito.Mockito.when;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.List;
import java.util.Optional;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.stream.Stream;
+
import org.apache.nifi.c2.protocol.api.C2OperationState.OperationState;
import org.apache.nifi.c2.protocol.api.ResourceItem;
import org.apache.nifi.c2.protocol.api.ResourceType;
import org.apache.nifi.c2.protocol.api.ResourcesGlobalHash;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -77,6 +82,18 @@ public class DefaultSyncResourceStrategyTest {
private DefaultSyncResourceStrategy testSyncResourceStrategy;
+ @AfterAll
+ public static void cleanUpAfterAll() {
+ // Cleanup all the temporary uuid-<large numbers>.tmp files which are
generated by DefaultSyncResourceStrategy.
+ final Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
+ try (DirectoryStream<Path> directoryStream =
newDirectoryStream(tempDir,
"[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*[0-9]*.tmp")) {
+ for (Path tmpFile : directoryStream) {
+ Files.deleteIfExists(tmpFile);
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
@BeforeEach
public void setup() {
testSyncResourceStrategy = new
DefaultSyncResourceStrategy(mockResourceRepository);
diff --git
a/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcClobReadable.java
b/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcClobReadable.java
index dc13406505..dece413b15 100644
---
a/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcClobReadable.java
+++
b/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcClobReadable.java
@@ -25,13 +25,13 @@ import org.apache.nifi.util.file.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.nio.file.Files;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
@@ -46,10 +46,12 @@ public class TestJdbcClobReadable {
private static final String DERBY_LOG_PROPERTY = "derby.stream.error.file";
+ @TempDir
+ private static File tempDir;
+
@BeforeAll
public static void setDerbyLog() {
- final File derbyLog = new File(System.getProperty("java.io.tmpdir"),
"derby.log");
- derbyLog.deleteOnExit();
+ final File derbyLog = new File(tempDir, "derby.log");
System.setProperty(DERBY_LOG_PROPERTY, derbyLog.getAbsolutePath());
}
@@ -101,9 +103,8 @@ public class TestJdbcClobReadable {
private File folder;
private void validateClob(String someClob) throws SQLException,
ClassNotFoundException, IOException {
- folder =
Files.createTempDirectory(String.valueOf(System.currentTimeMillis()))
- .resolve("db")
- .toFile();
+ File topLevelTempDir = new File(tempDir,
String.valueOf(System.currentTimeMillis()));
+ folder = new File(topLevelTempDir, "db");
final Connection con = createConnection(folder.getAbsolutePath());
final Statement st = con.createStatement();
diff --git
a/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcHugeStream.java
b/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcHugeStream.java
index f20dfb0fd0..cd8f9dcbaa 100644
---
a/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcHugeStream.java
+++
b/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcHugeStream.java
@@ -21,11 +21,11 @@ import org.apache.avro.generic.GenericDatumReader;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.io.DatumReader;
import org.apache.derby.jdbc.EmbeddedDriver;
-import org.apache.nifi.util.file.FileUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
import java.io.File;
import java.io.FileInputStream;
@@ -57,12 +57,15 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
*
*/
public class TestJdbcHugeStream {
+
private static final String DERBY_LOG_PROPERTY = "derby.stream.error.file";
+ @TempDir
+ private static File tempDir;
+
@BeforeAll
public static void setDerbyLog() {
- final File derbyLog = new File(System.getProperty("java.io.tmpdir"),
"derby.log");
- derbyLog.deleteOnExit();
+ final File derbyLog = new File(tempDir, "derby.log");
System.setProperty(DERBY_LOG_PROPERTY, derbyLog.getAbsolutePath());
}
@@ -71,17 +74,16 @@ public class TestJdbcHugeStream {
@BeforeEach
public void setup() throws IOException, SQLException {
DriverManager.registerDriver(new EmbeddedDriver());
- tempFile =
Files.createTempDirectory(String.valueOf(System.currentTimeMillis()))
- .resolve("db")
- .toFile();
+ File topLevelTempDir = new File(tempDir,
String.valueOf(System.currentTimeMillis()));
+ Files.createDirectories(topLevelTempDir.toPath());
+ tempFile = new File(topLevelTempDir, "db");
}
@AfterEach
- public void cleanup() throws IOException {
+ public void cleanup() {
if (tempFile != null && tempFile.exists()) {
final SQLException exception = assertThrows(SQLException.class, ()
-> DriverManager.getConnection("jdbc:derby:;shutdown=true"));
assertEquals("XJ015", exception.getSQLState());
- FileUtils.deleteFile(tempFile, true);
}
}
@@ -137,7 +139,7 @@ public class TestJdbcHugeStream {
static String createProducts = "create table products (id integer, name
varchar(100), code integer)";
static String createRelationships = "create table relationships (id
integer,name varchar(100), code integer)";
- static public void loadTestData2Database(Connection con, int nrOfPersons,
int nrOfProducts, int nrOfRels) throws ClassNotFoundException, SQLException {
+ static public void loadTestData2Database(Connection con, int nrOfPersons,
int nrOfProducts, int nrOfRels) throws SQLException {
final Statement st = con.createStatement();
diff --git
a/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcTypesH2.java
b/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcTypesH2.java
index 0702d07d42..1da2e779ae 100644
---
a/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcTypesH2.java
+++
b/nifi-extension-bundles/nifi-extension-utils/nifi-database-utils/src/test/java/org/apache/nifi/util/db/TestJdbcTypesH2.java
@@ -16,16 +16,14 @@
*/
package org.apache.nifi.util.db;
-import org.apache.nifi.util.file.FileUtils;
-import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
import java.io.ByteArrayOutputStream;
-import java.io.File;
import java.io.IOException;
-import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
@@ -64,19 +62,16 @@ public class TestJdbcTypesH2 {
String dbPath;
+ @TempDir
+ private Path tempDir;
+
@BeforeEach
public void beforeEach() throws IOException {
- dbPath =
Files.createTempDirectory(String.valueOf(System.currentTimeMillis()))
- .resolve("db")
+ dbPath = tempDir.resolve("db")
.toFile()
.getAbsolutePath();
}
- @AfterEach
- public void afterEach() throws IOException {
- FileUtils.deleteFile(new File(dbPath), true);
- }
-
@Test
public void testSQLTypesMapping() throws SQLException, IOException {
final Connection con = createConnection(dbPath);
diff --git
a/nifi-extension-bundles/nifi-groovyx-bundle/nifi-groovyx-processors/src/test/java/org/apache/nifi/processors/groovyx/ExecuteGroovyScriptTest.java
b/nifi-extension-bundles/nifi-groovyx-bundle/nifi-groovyx-processors/src/test/java/org/apache/nifi/processors/groovyx/ExecuteGroovyScriptTest.java
index 56e14c094d..4b308978e8 100644
---
a/nifi-extension-bundles/nifi-groovyx-bundle/nifi-groovyx-processors/src/test/java/org/apache/nifi/processors/groovyx/ExecuteGroovyScriptTest.java
+++
b/nifi-extension-bundles/nifi-groovyx-bundle/nifi-groovyx-processors/src/test/java/org/apache/nifi/processors/groovyx/ExecuteGroovyScriptTest.java
@@ -39,6 +39,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.condition.OS;
+import org.junit.jupiter.api.io.TempDir;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -46,6 +47,7 @@ import java.io.FileInputStream;
import java.io.PrintStream;
import java.net.URL;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -55,6 +57,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.UUID;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -163,11 +166,12 @@ public class ExecuteGroovyScriptTest {
}
@Test
- public void testAdditionalClasspath() throws Exception {
+ public void testAdditionalClasspath(@TempDir File tempDir) throws
Exception {
Set<URL> expectedClasspathURLs = new HashSet<>();
StringBuilder additionalClasspath = new StringBuilder();
for (int i = 0; i < 3; i++) {
- Path p = java.nio.file.Files.createTempFile(getClass().getName(),
".tmp");
+ Path p = new File(tempDir, getClass().getName() +
UUID.randomUUID() + ".tmp").toPath();
+ Files.createFile(p);
expectedClasspathURLs.add(p.toUri().toURL());
additionalClasspath.append(p);
additionalClasspath.append(i == 0 ? ',' : ';'); // create
additional classpath string separated by ; and ,
diff --git
a/nifi-extension-bundles/nifi-hadoop-bundle/nifi-hdfs-processors/src/test/java/org/apache/nifi/processors/hadoop/PutHDFSTest.java
b/nifi-extension-bundles/nifi-hadoop-bundle/nifi-hdfs-processors/src/test/java/org/apache/nifi/processors/hadoop/PutHDFSTest.java
index f9f9f2cad5..b9efab511b 100644
---
a/nifi-extension-bundles/nifi-hadoop-bundle/nifi-hdfs-processors/src/test/java/org/apache/nifi/processors/hadoop/PutHDFSTest.java
+++
b/nifi-extension-bundles/nifi-hadoop-bundle/nifi-hdfs-processors/src/test/java/org/apache/nifi/processors/hadoop/PutHDFSTest.java
@@ -43,13 +43,13 @@ import org.apache.nifi.util.TestRunners;
import org.ietf.jgss.GSSException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
import org.mockito.Mockito;
import javax.security.sasl.SaslException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.Collection;
@@ -710,7 +710,7 @@ public class PutHDFSTest {
}
@Test
- public void testPutFileFromLocalFile() throws Exception {
+ public void testPutFileFromLocalFile(@TempDir java.nio.file.Path tempDir)
throws Exception {
final FileSystem spyFileSystem = Mockito.spy(mockFileSystem);
final PutHDFS proc = new TestablePutHDFS(spyFileSystem);
final TestRunner runner = TestRunners.newTestRunner(proc);
@@ -723,7 +723,6 @@ public class PutHDFSTest {
String serviceId = FileResourceService.class.getSimpleName();
FileResourceService service = new StandardFileResourceService();
- byte[] FILE_DATA = "0123456789".getBytes(StandardCharsets.UTF_8);
byte[] EMPTY_CONTENT = new byte[0];
runner.addControllerService(serviceId, service);
runner.setProperty(service, StandardFileResourceService.FILE_PATH,
String.format("${%s}", attributeName));
@@ -731,8 +730,8 @@ public class PutHDFSTest {
runner.setProperty(ResourceTransferProperties.RESOURCE_TRANSFER_SOURCE,
ResourceTransferSource.FILE_RESOURCE_SERVICE.getValue());
runner.setProperty(ResourceTransferProperties.FILE_RESOURCE_SERVICE,
serviceId);
- java.nio.file.Path tempFilePath =
Files.createTempFile("PutHDFS_testPutFileFromLocalFile_", "");
- Files.write(tempFilePath, FILE_DATA);
+ java.nio.file.Path tempFilePath =
tempDir.resolve("PutHDFS_testPutFileFromLocalFile_" +
System.currentTimeMillis());
+ Files.writeString(tempFilePath, "0123456789");
Map<String, String> attributes = new HashMap<>();
diff --git
a/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelHeaderSchemaStrategy.java
b/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelHeaderSchemaStrategy.java
index 0513f38547..bafc3600ae 100644
---
a/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelHeaderSchemaStrategy.java
+++
b/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelHeaderSchemaStrategy.java
@@ -28,6 +28,7 @@ import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
@@ -37,9 +38,13 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
+import static java.nio.file.Files.newDirectoryStream;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -52,6 +57,21 @@ public class TestExcelHeaderSchemaStrategy {
@Mock
ComponentLog logger;
+ /*
+ * Cleanup the temporary poifiles directory which is created by
org.apache.poi.util.DefaultTempFileCreationStrategy
+ * the strategy org.apache.poi.util.TempFile uses which in turn is used by
com.github.pjfanning.xlsx.impl.StreamingSheetReader.
+ */
+ @AfterAll
+ public static void cleanUpAfterAll() {
+ final Path tempDir =
Path.of(System.getProperty("java.io.tmpdir")).resolve("poifiles");
+ try (DirectoryStream<Path> directoryStream =
newDirectoryStream(tempDir, "tmp-[0-9]*.xlsx")) {
+ for (Path tmpFile : directoryStream) {
+ Files.deleteIfExists(tmpFile);
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
@Test
void testWhereConfiguredStartRowIsEmpty() throws IOException {
Object[][] data = {{}, {1, "Manny"}, {2, "Moe"}, {3, "Jack"}};
diff --git
a/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelRecordReader.java
b/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelRecordReader.java
index 57edb9d381..6136caff61 100644
---
a/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelRecordReader.java
+++
b/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelRecordReader.java
@@ -35,6 +35,7 @@ import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -47,12 +48,16 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import static java.nio.file.Files.newDirectoryStream;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
@@ -76,6 +81,21 @@ public class TestExcelRecordReader {
@Mock
ComponentLog logger;
+ /*
+ * Cleanup the temporary poifiles directory which is created by
org.apache.poi.util.DefaultTempFileCreationStrategy
+ * the strategy org.apache.poi.util.TempFile uses which in turn is used by
com.github.pjfanning.xlsx.impl.StreamingSheetReader.
+ */
+ @AfterAll
+ public static void cleanUpAfterAll() {
+ final Path tempDir =
Path.of(System.getProperty("java.io.tmpdir")).resolve("poifiles");
+ try (DirectoryStream<Path> directoryStream =
newDirectoryStream(tempDir, "tmp-[0-9]*.xlsx")) {
+ for (Path tmpFile : directoryStream) {
+ Files.deleteIfExists(tmpFile);
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
@BeforeAll
static void setUpBeforeAll() throws Exception {
//Generate an Excel file and populate it with data
diff --git
a/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelSchemaInference.java
b/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelSchemaInference.java
index 8565f95986..e9e35fe043 100644
---
a/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelSchemaInference.java
+++
b/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/excel/TestExcelSchemaInference.java
@@ -20,10 +20,14 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.context.PropertyContext;
import org.apache.nifi.logging.ComponentLog;
@@ -39,11 +43,13 @@ import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
+import static java.nio.file.Files.newDirectoryStream;
import static org.junit.jupiter.api.Assertions.assertEquals;
@ExtendWith(MockitoExtension.class)
@@ -61,6 +67,21 @@ public class TestExcelSchemaInference {
@Mock
private TimeValueInference timeValueInference;
+ /*
+ * Cleanup the temporary poifiles directory which is created by
org.apache.poi.util.DefaultTempFileCreationStrategy
+ * the strategy org.apache.poi.util.TempFile uses which in turn is used by
com.github.pjfanning.xlsx.impl.StreamingSheetReader.
+ */
+ @AfterAll
+ public static void cleanUpAfterAll() {
+ final Path tempDir =
Path.of(System.getProperty("java.io.tmpdir")).resolve("poifiles");
+ try (DirectoryStream<Path> directoryStream =
newDirectoryStream(tempDir, "tmp-[0-9]*.xlsx")) {
+ for (Path tmpFile : directoryStream) {
+ Files.deleteIfExists(tmpFile);
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
@Test
public void testInferenceIncludesAllRecords() throws IOException {
final Map<PropertyDescriptor, String> properties = new HashMap<>();
diff --git
a/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/processors/excel/TestSplitExcel.java
b/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/processors/excel/TestSplitExcel.java
index 1f1267c19f..00f0e16414 100644
---
a/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/processors/excel/TestSplitExcel.java
+++
b/nifi-extension-bundles/nifi-poi-bundle/nifi-poi-services/src/test/java/org/apache/nifi/processors/excel/TestSplitExcel.java
@@ -24,16 +24,20 @@ import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.io.IOException;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Objects;
import java.util.stream.Stream;
+import static java.nio.file.Files.newDirectoryStream;
import static
org.apache.nifi.flowfile.attributes.FragmentAttributes.FRAGMENT_COUNT;
import static
org.apache.nifi.flowfile.attributes.FragmentAttributes.FRAGMENT_ID;
import static
org.apache.nifi.flowfile.attributes.FragmentAttributes.FRAGMENT_INDEX;
@@ -45,6 +49,21 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
public class TestSplitExcel {
private TestRunner runner;
+ /*
+ * Cleanup the temporary poifiles directory which is created by
org.apache.poi.util.DefaultTempFileCreationStrategy
+ * the strategy org.apache.poi.util.TempFile uses which in turn is used by
com.github.pjfanning.xlsx.impl.StreamingSheetReader.
+ */
+ @AfterAll
+ public static void cleanUpAfterAll() {
+ final Path tempDir =
Path.of(System.getProperty("java.io.tmpdir")).resolve("poifiles");
+ try (DirectoryStream<Path> directoryStream =
newDirectoryStream(tempDir, "tmp-[0-9]*.xlsx")) {
+ for (Path tmpFile : directoryStream) {
+ Files.deleteIfExists(tmpFile);
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
@BeforeEach
void setUp() {
runner = TestRunners.newTestRunner(SplitExcel.class);
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/InvokeHTTPTest.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/InvokeHTTPTest.java
index 42cd6d3682..d8b40230d1 100644
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/InvokeHTTPTest.java
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/InvokeHTTPTest.java
@@ -20,6 +20,7 @@ import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import okhttp3.mockwebserver.RecordedRequest;
import okio.Buffer;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.nifi.flowfile.attributes.CoreAttributes;
@@ -45,6 +46,7 @@ import org.apache.nifi.util.LogMessage;
import org.apache.nifi.util.MockFlowFile;
import org.apache.nifi.util.TestRunner;
import org.apache.nifi.util.TestRunners;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
@@ -62,6 +64,9 @@ import java.io.IOException;
import java.net.Proxy;
import java.net.URI;
import java.nio.charset.StandardCharsets;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
@@ -85,6 +90,7 @@ import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR;
import static java.net.HttpURLConnection.HTTP_MOVED_TEMP;
import static java.net.HttpURLConnection.HTTP_OK;
import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED;
+import static java.nio.file.Files.newDirectoryStream;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -175,6 +181,18 @@ public class InvokeHTTPTest {
trustManager = new
StandardTrustManagerBuilder().trustStore(keyStore).build();
}
+ @AfterAll
+ public static void cleanUpAfterAll() {
+ // Cleanup all the temporary InvokeHttp[0-9]* directories which are
generated by InvokeHttp.
+ final Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
+ try (DirectoryStream<Path> directoryStream =
newDirectoryStream(tempDir, "InvokeHTTP[0-9]*")) {
+ for (Path operationId : directoryStream) {
+ FileUtils.deleteDirectory(operationId.toFile());
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
@BeforeEach
public void setRunner() {
mockWebServer = new MockWebServer();
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java
index d7de64e631..3737fa43b7 100644
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestPutSQL.java
@@ -16,8 +16,27 @@
*/
package org.apache.nifi.processors.standard;
-import java.io.File;
+import jakarta.xml.bind.DatatypeConverter;
+import org.apache.commons.io.FileUtils;
+import org.apache.nifi.controller.AbstractControllerService;
+import org.apache.nifi.dbcp.DBCPService;
+import org.apache.nifi.processor.FlowFileFilter;
+import org.apache.nifi.processor.Relationship;
+import org.apache.nifi.processor.exception.ProcessException;
+import org.apache.nifi.processor.util.pattern.RollbackOnFailure;
+import org.apache.nifi.provenance.ProvenanceEventRecord;
+import org.apache.nifi.provenance.ProvenanceEventType;
+import org.apache.nifi.reporting.InitializationException;
+import org.apache.nifi.util.MockFlowFile;
+import org.apache.nifi.util.TestRunner;
+import org.apache.nifi.util.TestRunners;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+
import java.nio.ByteBuffer;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -40,23 +59,6 @@ import java.util.Map;
import java.util.Random;
import java.util.UUID;
import java.util.function.Function;
-import jakarta.xml.bind.DatatypeConverter;
-import org.apache.nifi.controller.AbstractControllerService;
-import org.apache.nifi.dbcp.DBCPService;
-import org.apache.nifi.processor.FlowFileFilter;
-import org.apache.nifi.processor.Relationship;
-import org.apache.nifi.processor.exception.ProcessException;
-import org.apache.nifi.processor.util.pattern.RollbackOnFailure;
-import org.apache.nifi.provenance.ProvenanceEventRecord;
-import org.apache.nifi.provenance.ProvenanceEventType;
-import org.apache.nifi.reporting.InitializationException;
-import org.apache.nifi.util.MockFlowFile;
-import org.apache.nifi.util.TestRunner;
-import org.apache.nifi.util.TestRunners;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
import static java.nio.charset.StandardCharsets.US_ASCII;
import static
org.apache.nifi.processor.FlowFileFilter.FlowFileFilterResult.ACCEPT_AND_CONTINUE;
@@ -76,6 +78,9 @@ public class TestPutSQL {
private static final String createPersonsAutoId = "CREATE TABLE PERSONS_AI
(id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1), name
VARCHAR(100), code INTEGER check(code <= 100))";
private static final String DERBY_LOG_PROPERTY = "derby.stream.error.file";
+ private static final Path SYSTEM_TEMP_DIR =
Paths.get(System.getProperty("java.io.tmpdir"));
+ private static final String TEST_DIRECTORY_NAME =
"%s-%s".formatted(TestPutSQL.class.getSimpleName(), UUID.randomUUID());
+ private static final Path DB_DIRECTORY =
SYSTEM_TEMP_DIR.resolve(TEST_DIRECTORY_NAME);
private static final Random random = new Random();
/**
@@ -85,11 +90,9 @@ public class TestPutSQL {
static protected DBCPService service;
@BeforeAll
- public static void setupDerbyLog() throws ProcessException, SQLException {
+ public static void setupBeforeAll() throws ProcessException, SQLException {
System.setProperty(DERBY_LOG_PROPERTY, "target/derby.log");
- final File dbDir = new File(getEmptyDirectory(), "db");
- dbDir.deleteOnExit();
- service = new MockDBCPService(dbDir.getAbsolutePath());
+ service = new
MockDBCPService(DB_DIRECTORY.toAbsolutePath().toString());
try (final Connection conn = service.getConnection()) {
try (final Statement stmt = conn.createStatement()) {
stmt.executeUpdate(createPersons);
@@ -99,8 +102,14 @@ public class TestPutSQL {
}
@AfterAll
- public static void cleanupDerbyLog() {
+ public static void cleanupAfterAll() {
System.clearProperty(DERBY_LOG_PROPERTY);
+
+ try {
+ FileUtils.deleteDirectory(DB_DIRECTORY.toFile());
+ } catch (final Exception ignored) {
+
+ }
}
@Test
@@ -1756,11 +1765,6 @@ public class TestPutSQL {
return runner;
}
- private static File getEmptyDirectory() {
- final String randomDirectory = String.format("%s-%s",
TestPutSQL.class.getSimpleName(), UUID.randomUUID());
- return Paths.get(getSystemTemporaryDirectory(),
randomDirectory).toFile();
- }
-
private static void assertSQLExceptionRelatedAttributes(final TestRunner
runner, Relationship relationship) {
List<MockFlowFile> flowFiles =
runner.getFlowFilesForRelationship(relationship);
flowFiles.forEach(ff -> {
@@ -1803,8 +1807,4 @@ public class TestPutSQL {
&& ff.getAttribute("error.code") != null
&& ff.getAttribute("error.sql.state") != null;
}
-
- private static String getSystemTemporaryDirectory() {
- return System.getProperty("java.io.tmpdir");
- }
}
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestReplaceText.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestReplaceText.java
index 6b4a5ddcfe..86802fc753 100644
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestReplaceText.java
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestReplaceText.java
@@ -20,6 +20,7 @@ import org.apache.nifi.util.MockFlowFile;
import org.apache.nifi.util.TestRunner;
import org.apache.nifi.util.TestRunners;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
import java.io.File;
import java.io.IOException;
@@ -925,19 +926,20 @@ public class TestReplaceText {
@Test
- public void testZeroByteContentFileLineByLine() throws IOException {
+ public void testZeroByteContentFileLineByLine(@TempDir Path tempDir)
throws IOException {
final TestRunner runner = getRunner();
runner.setProperty(ReplaceText.EVALUATION_MODE,
ReplaceText.LINE_BY_LINE);
runner.setProperty(ReplaceText.SEARCH_VALUE, "odo");
runner.setProperty(ReplaceText.REPLACEMENT_VALUE, "ood");
- final File zeroByteFile = File.createTempFile("zeroByte", ".txt");
- runner.enqueue(translateNewLines(zeroByteFile.getPath()));
+ final Path zeroByteFile = tempDir.resolve("zeroByte.txt");
+ Files.createFile(zeroByteFile);
+ runner.enqueue(translateNewLines(zeroByteFile));
runner.run();
runner.assertAllFlowFilesTransferred(ReplaceText.REL_SUCCESS, 1);
- final MockFlowFile out =
runner.getFlowFilesForRelationship(ReplaceText.REL_SUCCESS).get(0);
- out.assertContentEquals(translateNewLines(zeroByteFile.getPath()));
+ final MockFlowFile out =
runner.getFlowFilesForRelationship(ReplaceText.REL_SUCCESS).getFirst();
+ out.assertContentEquals(translateNewLines(zeroByteFile));
}
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/state/providers/zookeeper/TestZooKeeperStateProvider.java
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/state/providers/zookeeper/TestZooKeeperStateProvider.java
index a0a223191b..5a4cc8477f 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/state/providers/zookeeper/TestZooKeeperStateProvider.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/test/java/org/apache/nifi/controller/state/providers/zookeeper/TestZooKeeperStateProvider.java
@@ -27,6 +27,7 @@ import
org.apache.nifi.components.state.exception.StateTooLargeException;
import org.apache.nifi.controller.state.providers.AbstractTestStateProvider;
import org.apache.nifi.logging.ComponentLog;
import org.apache.nifi.util.NiFiProperties;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -34,6 +35,10 @@ import org.junit.jupiter.api.Timeout;
import javax.net.ssl.SSLContext;
import java.io.IOException;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -64,6 +69,18 @@ public class TestZooKeeperStateProvider extends
AbstractTestStateProvider {
defaultProperties.put(ZooKeeperStateProvider.ACCESS_CONTROL,
ZooKeeperStateProvider.OPEN_TO_WORLD.getValue());
}
+ @AfterAll
+ public static void cleanUpAfterAll() {
+ // Cleanup all the temporary zookeeper.configuration property files
which are generated by the underlying Zookeeper API.
+ final Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
+ try (DirectoryStream<Path> directoryStream =
Files.newDirectoryStream(tempDir, "zookeeper.configuration*.properties")) {
+ for (Path zookeeperConfiguration : directoryStream) {
+ Files.deleteIfExists(zookeeperConfiguration);
+ }
+ } catch (Exception ignore) {
+ }
+ }
+
@BeforeEach
public void setup() throws Exception {
zkServer = new TestingServer(true);