mirror of
https://github.com/internetarchive/heritrix3.git
synced 2026-07-13 19:17:18 +00:00
Merge pull request #328 from morokosi/fix-matchesregexdeciderule
Fix match result is always false in MatchesListRegexDecideRule
This commit is contained in:
+1
-2
@@ -20,7 +20,6 @@ package org.archive.modules.deciderules;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ForkJoinPool;
|
||||
import java.util.concurrent.FutureTask;
|
||||
@@ -118,7 +117,7 @@ public class MatchesListRegexDecideRule extends PredicatedDecideRule {
|
||||
FutureTask<Boolean> matchesFuture = new FutureTask<>(() -> p.matcher(interruptible).matches());
|
||||
ForkJoinPool.commonPool().submit(matchesFuture);
|
||||
try {
|
||||
matchesFuture.get(getTimeoutPerRegexSeconds(), TimeUnit.SECONDS);
|
||||
matches = matchesFuture.get(getTimeoutPerRegexSeconds(), TimeUnit.SECONDS);
|
||||
} catch (TimeoutException e) {
|
||||
matchesFuture.cancel(true);
|
||||
logger.warning("Timed out after " + getTimeoutPerRegexSeconds() + " seconds waiting for '" + p + "' to match.");
|
||||
|
||||
+17
-1
@@ -1,6 +1,5 @@
|
||||
package org.archive.modules.deciderules;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.commons.httpclient.URIException;
|
||||
import org.archive.modules.CrawlURI;
|
||||
@@ -32,4 +31,21 @@ public class MatchesListRegexDecideRuleTest extends TestCase {
|
||||
final DecideResult decideResult = rule.decisionFor(curi);
|
||||
assertEquals("Expected NONE not " + decideResult , DecideResult.NONE, decideResult);
|
||||
}
|
||||
|
||||
public void testEvaluateInTime() throws URIException {
|
||||
final String regex = "http://www\\.netarkivet\\.dk/x+";
|
||||
String seed = "http://www.netarkivet.dk/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
|
||||
MatchesListRegexDecideRule rule = new MatchesListRegexDecideRule();
|
||||
List<Pattern> patternList = new ArrayList<>();
|
||||
patternList.add(Pattern.compile(regex));
|
||||
rule.setRegexList(patternList);
|
||||
rule.setEnabled(true);
|
||||
rule.setListLogicalOr(true);
|
||||
rule.setDecision(DecideResult.REJECT);
|
||||
rule.setTimeoutPerRegexSeconds(2);
|
||||
final CrawlURI curi = new CrawlURI(UURIFactory.getInstance(seed));
|
||||
final DecideResult decideResult = rule.decisionFor(curi);
|
||||
assertEquals("Expected REJECT not " + decideResult , DecideResult.REJECT, decideResult);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user