diff --git a/flink-core/src/main/java/org/apache/flink/configuration/ConfigurationUtils.java b/flink-core/src/main/java/org/apache/flink/configuration/ConfigurationUtils.java index 0e66f58eb2703..4d92785326199 100755 --- a/flink-core/src/main/java/org/apache/flink/configuration/ConfigurationUtils.java +++ b/flink-core/src/main/java/org/apache/flink/configuration/ConfigurationUtils.java @@ -389,7 +389,7 @@ static String convertToString(Object o) { return (String) o; } else if (o.getClass() == Duration.class) { Duration duration = (Duration) o; - return String.format("%d ns", duration.toNanos()); + return TimeUtils.formatWithHighestUnit(duration); } else if (o instanceof List) { return ((List) o) .stream() diff --git a/flink-core/src/test/java/org/apache/flink/configuration/ConfigurationTest.java b/flink-core/src/test/java/org/apache/flink/configuration/ConfigurationTest.java index 173d35e64fe12..14795f5d904a5 100644 --- a/flink-core/src/test/java/org/apache/flink/configuration/ConfigurationTest.java +++ b/flink-core/src/test/java/org/apache/flink/configuration/ConfigurationTest.java @@ -340,8 +340,7 @@ public void testToMap() { assertEquals(listValues, configuration.toMap().get(listConfigOption.key())); assertEquals(mapValues, configuration.toMap().get(mapConfigOption.key())); - assertEquals( - duration.toNanos() + " ns", configuration.toMap().get(durationConfigOption.key())); + assertEquals("3 s", configuration.toMap().get(durationConfigOption.key())); } enum TestEnum { diff --git a/flink-core/src/test/java/org/apache/flink/configuration/ConfigurationUtilsTest.java b/flink-core/src/test/java/org/apache/flink/configuration/ConfigurationUtilsTest.java index df2723d3381e6..deb89a9e0fc4a 100644 --- a/flink-core/src/test/java/org/apache/flink/configuration/ConfigurationUtilsTest.java +++ b/flink-core/src/test/java/org/apache/flink/configuration/ConfigurationUtilsTest.java @@ -22,13 +22,17 @@ import org.junit.Test; +import java.time.Duration; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Properties; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; /** Tests for the {@link ConfigurationUtils}. */ @@ -92,4 +96,29 @@ public void testGetPrefixedKeyValuePairs() { assertThat(resultKeyValuePairs, is(equalTo(expectedKeyValuePairs))); } + + @Test + public void testConvertToString() { + // String + assertEquals("Simple String", ConfigurationUtils.convertToString("Simple String")); + + // Duration + assertEquals("0 ms", ConfigurationUtils.convertToString(Duration.ZERO)); + assertEquals("123 ms", ConfigurationUtils.convertToString(Duration.ofMillis(123L))); + assertEquals("1234 s", ConfigurationUtils.convertToString(Duration.ofMillis(1_234_000L))); + assertEquals("25 h", ConfigurationUtils.convertToString(Duration.ofHours(25L))); + + // List + final List listElements = new ArrayList<>(); + listElements.add("Test;String"); + listElements.add(Duration.ZERO); + listElements.add(42); + assertEquals("'Test;String';0 ms;42", ConfigurationUtils.convertToString(listElements)); + + // Map + final Map mapElements = new HashMap<>(); + mapElements.put("A:,B", "C:,D"); + mapElements.put(10, 20); + assertEquals("'''A:,B'':''C:,D''',10:20", ConfigurationUtils.convertToString(mapElements)); + } } diff --git a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/config/YamlConfigUtilsTest.java b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/config/YamlConfigUtilsTest.java index d5ef6f9469c9d..74ff9206bef9a 100644 --- a/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/config/YamlConfigUtilsTest.java +++ b/flink-table/flink-sql-client/src/test/java/org/apache/flink/table/client/config/YamlConfigUtilsTest.java @@ -112,8 +112,8 @@ public void testExecutionEntryToConfigOption() throws Exception { "parallelism.default=1", "pipeline.auto-watermark-interval=99", "pipeline.max-parallelism=16", - "restart-strategy.failure-rate.delay=1000000000 ns", - "restart-strategy.failure-rate.failure-rate-interval=99000000000 ns", + "restart-strategy.failure-rate.delay=1 s", + "restart-strategy.failure-rate.failure-rate-interval=99 s", "restart-strategy.failure-rate.max-failures-per-interval=10", "restart-strategy.fixed-delay.delay=1000", "restart-strategy=failure-rate",