From 13f679013aaa93198d30df8dada4aba5614790ea Mon Sep 17 00:00:00 2001 From: Stanislav Kozlovski Date: Tue, 15 Jan 2019 06:49:24 +0200 Subject: [PATCH] MINOR: Update Trogdor StringExpander regex to handle an epilogue (#6123) Update the Trogdor StringExpander regex to handle an epilogue. Previously the regex would use a lazy quantifier at the end, which meant it would not catch anything after the range expression. Add a unit test. Reviewed-by: Colin P. McCabe --- .../kafka/trogdor/common/StringExpander.java | 2 +- .../kafka/trogdor/common/StringExpanderTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/tools/src/main/java/org/apache/kafka/trogdor/common/StringExpander.java b/tools/src/main/java/org/apache/kafka/trogdor/common/StringExpander.java index 82f5003fbb6..3082a171a7f 100644 --- a/tools/src/main/java/org/apache/kafka/trogdor/common/StringExpander.java +++ b/tools/src/main/java/org/apache/kafka/trogdor/common/StringExpander.java @@ -29,7 +29,7 @@ import java.util.regex.Pattern; */ public class StringExpander { private final static Pattern NUMERIC_RANGE_PATTERN = - Pattern.compile("(.*?)\\[([0-9]*)\\-([0-9]*)\\](.*?)"); + Pattern.compile("(.*)\\[([0-9]*)\\-([0-9]*)\\](.*)"); public static HashSet expand(String val) { HashSet set = new HashSet<>(); diff --git a/tools/src/test/java/org/apache/kafka/trogdor/common/StringExpanderTest.java b/tools/src/test/java/org/apache/kafka/trogdor/common/StringExpanderTest.java index 72e1c202bd8..6fbb3473a10 100644 --- a/tools/src/test/java/org/apache/kafka/trogdor/common/StringExpanderTest.java +++ b/tools/src/test/java/org/apache/kafka/trogdor/common/StringExpanderTest.java @@ -58,5 +58,20 @@ public class StringExpanderTest { "[[ wow52 ]]" )); assertEquals(expected3, StringExpander.expand("[[ wow[50-52] ]]")); + + HashSet expected4 = new HashSet<>(Arrays.asList( + "foo1bar", + "foo2bar", + "foo3bar" + )); + assertEquals(expected4, StringExpander.expand("foo[1-3]bar")); + + // should expand latest range first + HashSet expected5 = new HashSet<>(Arrays.asList( + "start[1-3]middle1epilogue", + "start[1-3]middle2epilogue", + "start[1-3]middle3epilogue" + )); + assertEquals(expected5, StringExpander.expand("start[1-3]middle[1-3]epilogue")); } }