Commit 673a08d2 authored by Madhura Bhave's avatar Madhura Bhave

Support microseconds in Duration conversions

Closes gh-13624
parent 06a8c419
...@@ -1263,6 +1263,7 @@ read timeout of 500ms can be specified in any of the following form: `500`, `PT0 ...@@ -1263,6 +1263,7 @@ read timeout of 500ms can be specified in any of the following form: `500`, `PT0
You can also use any of the supported unit. These are: You can also use any of the supported unit. These are:
* `ns` for nanoseconds * `ns` for nanoseconds
* `us` for microseconds
* `ms` for milliseconds * `ms` for milliseconds
* `s` for seconds * `s` for seconds
* `m` for minutes * `m` for minutes
......
...@@ -180,6 +180,11 @@ public enum DurationStyle { ...@@ -180,6 +180,11 @@ public enum DurationStyle {
*/ */
NANOS(ChronoUnit.NANOS, "ns", Duration::toNanos), NANOS(ChronoUnit.NANOS, "ns", Duration::toNanos),
/**
* Microseconds.
*/
MICROS(ChronoUnit.MICROS, "us", (duration) -> duration.toMillis() * 1000L),
/** /**
* Milliseconds. * Milliseconds.
*/ */
......
...@@ -71,6 +71,18 @@ public class DurationStyleTests { ...@@ -71,6 +71,18 @@ public class DurationStyleTests {
.isEqualTo(Duration.ofNanos(-10)); .isEqualTo(Duration.ofNanos(-10));
} }
@Test
public void detectAndParseWhenSimpleMicrosShouldReturnDuration() {
assertThat(DurationStyle.detectAndParse("10us"))
.isEqualTo(Duration.ofNanos(10000));
assertThat(DurationStyle.detectAndParse("10US"))
.isEqualTo(Duration.ofNanos(10000));
assertThat(DurationStyle.detectAndParse("+10us"))
.isEqualTo(Duration.ofNanos(10000));
assertThat(DurationStyle.detectAndParse("-10us"))
.isEqualTo(Duration.ofNanos(-10000));
}
@Test @Test
public void detectAndParseWhenSimpleMillisShouldReturnDuration() { public void detectAndParseWhenSimpleMillisShouldReturnDuration() {
assertThat(DurationStyle.detectAndParse("10ms")).isEqualTo(Duration.ofMillis(10)); assertThat(DurationStyle.detectAndParse("10ms")).isEqualTo(Duration.ofMillis(10));
......
...@@ -70,6 +70,14 @@ public class StringToDurationConverterTests { ...@@ -70,6 +70,14 @@ public class StringToDurationConverterTests {
assertThat(convert("-10ns")).isEqualTo(Duration.ofNanos(-10)); assertThat(convert("-10ns")).isEqualTo(Duration.ofNanos(-10));
} }
@Test
public void convertWhenSimpleMicrosShouldReturnDuration() {
assertThat(convert("10us")).isEqualTo(Duration.ofNanos(10000));
assertThat(convert("10US")).isEqualTo(Duration.ofNanos(10000));
assertThat(convert("+10us")).isEqualTo(Duration.ofNanos(10000));
assertThat(convert("-10us")).isEqualTo(Duration.ofNanos(-10000));
}
@Test @Test
public void convertWhenSimpleMillisShouldReturnDuration() { public void convertWhenSimpleMillisShouldReturnDuration() {
assertThat(convert("10ms")).isEqualTo(Duration.ofMillis(10)); assertThat(convert("10ms")).isEqualTo(Duration.ofMillis(10));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment