This is an automated email from the ASF dual-hosted git repository.
jgresock 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 1d1cf92b16 NIFI-13686 Make TestListFile.testFilterAge more resilient
to work with time delays during execution
1d1cf92b16 is described below
commit 1d1cf92b167b70814e2bbb3b4bb860d04f00c9ae
Author: Jim Steinebrey <[email protected]>
AuthorDate: Tue Aug 27 18:37:25 2024 -0400
NIFI-13686 Make TestListFile.testFilterAge more resilient to work with time
delays during execution
Signed-off-by: Joe Gresock <[email protected]>
This closes #9204.
---
.../nifi/processors/standard/TestListFile.java | 64 +++++++++++-----------
1 file changed, 31 insertions(+), 33 deletions(-)
diff --git
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
index ff473160ca..b874e9a041 100644
---
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
+++
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
@@ -81,8 +81,7 @@ public class TestListFile {
// age#filter are filter label strings for the filter properties
private Long syncTime = getTestModifiedTime();
private Long time0millis, time1millis, time2millis, time3millis,
time4millis, time5millis;
- private Long age0millis, age1millis, age2millis, age3millis, age4millis,
age5millis;
- private String age0, age1, age2, age3, age4, age5;
+ private String age0, age2, age4, age5;
@RegisterExtension
private final ListProcessorTestWatcher dumpState = new
ListProcessorTestWatcher(
@@ -259,27 +258,26 @@ public class TestListFile {
@Test
public void testFilterAge() throws Exception {
-
- final File file1 = new File(TESTDIR + "/age1.txt");
- assertTrue(file1.createNewFile());
+ final File file0 = new File(TESTDIR + "/age0.txt");
+ assertTrue(file0.createNewFile());
final File file2 = new File(TESTDIR + "/age2.txt");
assertTrue(file2.createNewFile());
- final File file3 = new File(TESTDIR + "/age3.txt");
- assertTrue(file3.createNewFile());
+ final File file4 = new File(TESTDIR + "/age4.txt");
+ assertTrue(file4.createNewFile());
final Function<Boolean, Object> runNext = resetAges -> {
if (resetAges) {
resetAges();
- assertTrue(file1.setLastModified(time0millis));
+ assertTrue(file0.setLastModified(time0millis));
assertTrue(file2.setLastModified(time2millis));
- assertTrue(file3.setLastModified(time4millis));
+ assertTrue(file4.setLastModified(time4millis));
}
- assertTrue(file1.lastModified() > time3millis &&
file1.lastModified() <= time0millis);
+ assertTrue(file0.lastModified() > time3millis &&
file0.lastModified() <= time0millis);
assertTrue(file2.lastModified() > time3millis &&
file2.lastModified() < time1millis);
- assertTrue(file3.lastModified() < time3millis);
+ assertTrue(file4.lastModified() < time3millis);
try {
runNext();
@@ -293,6 +291,11 @@ public class TestListFile {
runner.setProperty(ListFile.DIRECTORY, testDir.getAbsolutePath());
runNext.apply(true);
runner.assertTransferCount(ListFile.REL_SUCCESS, 3);
+ final List<MockFlowFile> successFiles1 =
runner.getFlowFilesForRelationship(ListFile.REL_SUCCESS);
+ assertEquals(3, successFiles1.size());
+ assertEquals(file4.getName(),
successFiles1.get(0).getAttribute("filename"));
+ assertEquals(file2.getName(),
successFiles1.get(1).getAttribute("filename"));
+ assertEquals(file0.getName(),
successFiles1.get(2).getAttribute("filename"));
assertVerificationOutcome(Outcome.SUCCESSFUL, "Successfully listed .*
Found 3 objects. Of those, 3 match the filter.");
// processor updates internal state, it shouldn't pick the same ones.
@@ -301,28 +304,33 @@ public class TestListFile {
// exclude oldest
runner.setProperty(ListFile.MIN_AGE, age0);
- runner.setProperty(ListFile.MAX_AGE, age3);
+ runner.setProperty(ListFile.MAX_AGE, age4);
runNext.apply(true);
runner.assertAllFlowFilesTransferred(ListFile.REL_SUCCESS);
final List<MockFlowFile> successFiles2 =
runner.getFlowFilesForRelationship(ListFile.REL_SUCCESS);
assertEquals(2, successFiles2.size());
+ assertEquals(file2.getName(),
successFiles2.get(0).getAttribute("filename"));
+ assertEquals(file0.getName(),
successFiles2.get(1).getAttribute("filename"));
assertVerificationOutcome(Outcome.SUCCESSFUL, "Successfully listed .*
Found 3 objects. Of those, 2 match the filter.");
// exclude newest
- runner.setProperty(ListFile.MIN_AGE, age1);
+ runner.setProperty(ListFile.MIN_AGE, age2);
runner.setProperty(ListFile.MAX_AGE, age5);
runNext.apply(true);
runner.assertAllFlowFilesTransferred(ListFile.REL_SUCCESS);
+ final List<MockFlowFile> successFiles3 =
runner.getFlowFilesForRelationship(ListFile.REL_SUCCESS);
+ assertEquals(2, successFiles3.size());
+ assertEquals(file4.getName(),
successFiles3.get(0).getAttribute("filename"));
+ assertEquals(file2.getName(),
successFiles3.get(1).getAttribute("filename"));
// exclude oldest and newest
- runner.setProperty(ListFile.MIN_AGE, age1);
- runner.setProperty(ListFile.MAX_AGE, age3);
+ runner.setProperty(ListFile.MIN_AGE, age2);
+ runner.setProperty(ListFile.MAX_AGE, age4);
runNext.apply(true);
runner.assertAllFlowFilesTransferred(ListFile.REL_SUCCESS);
final List<MockFlowFile> successFiles4 =
runner.getFlowFilesForRelationship(ListFile.REL_SUCCESS);
assertEquals(1, successFiles4.size());
- assertVerificationOutcome(Outcome.SUCCESSFUL, "Successfully listed .*
Found 3 objects. Of those, 1 matches the filter.");
-
+ assertEquals(file2.getName(),
successFiles4.get(0).getAttribute("filename"));
}
@Test
@@ -876,20 +884,12 @@ public class TestListFile {
private void resetAges() {
syncTime = getTestModifiedTime();
- age0millis = 0L;
- age1millis = 5000L;
- age2millis = 10000L;
- age3millis = 15000L;
- age4millis = 20000L;
- age5millis = 100000L;
-
- // Allow for bigger gaps since the lag is 2s w/o milliseconds.
- if (!isMillisecondSupported) {
- age1millis *= 2;
- age2millis *= 2;
- age3millis *= 2;
- age4millis *= 2;
- }
+ final long age0millis = 0L;
+ final long age1millis = 20000L;
+ final long age2millis = 40000L;
+ final long age3millis = 60000L;
+ final long age4millis = 80000L;
+ final long age5millis = 200000L;
time0millis = syncTime - age0millis;
time1millis = syncTime - age1millis;
@@ -899,9 +899,7 @@ public class TestListFile {
time5millis = syncTime - age5millis;
age0 = Long.toString(age0millis) + " millis";
- age1 = Long.toString(age1millis) + " millis";
age2 = Long.toString(age2millis) + " millis";
- age3 = Long.toString(age3millis) + " millis";
age4 = Long.toString(age4millis) + " millis";
age5 = Long.toString(age5millis) + " millis";
}