Skip to content

Commit d4b10a8

Browse files
add ns and us for config duration units (#6654)
Co-authored-by: Jack Berg <[email protected]>
1 parent 3e8092d commit d4b10a8

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

sdk-extensions/autoconfigure-spi/src/main/java/io/opentelemetry/sdk/autoconfigure/spi/internal/DefaultConfigProperties.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public Duration getDuration(String name) {
159159
try {
160160
long rawNumber = Long.parseLong(numberString.trim());
161161
TimeUnit unit = getDurationUnit(unitString.trim());
162-
return Duration.ofMillis(TimeUnit.MILLISECONDS.convert(rawNumber, unit));
162+
return Duration.ofNanos(TimeUnit.NANOSECONDS.convert(rawNumber, unit));
163163
} catch (NumberFormatException ex) {
164164
throw new ConfigurationException(
165165
"Invalid duration property "
@@ -256,6 +256,10 @@ private static List<String> filterBlanksAndNulls(String[] values) {
256256
/** Returns the TimeUnit associated with a unit string. Defaults to milliseconds. */
257257
private static TimeUnit getDurationUnit(String unitString) {
258258
switch (unitString) {
259+
case "us":
260+
return TimeUnit.MICROSECONDS;
261+
case "ns":
262+
return TimeUnit.NANOSECONDS;
259263
case "": // Fallthrough expected
260264
case "ms":
261265
return TimeUnit.MILLISECONDS;

sdk-extensions/autoconfigure-spi/src/test/java/io/opentelemetry/sdk/autoconfigure/spi/internal/ConfigPropertiesTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,24 @@ void invalidDuration() {
185185
.hasMessage("Invalid duration property duration=9mm. Invalid duration string, found: mm");
186186
}
187187

188+
@Test
189+
void durationNegativeParsing() {
190+
assertThat(
191+
DefaultConfigProperties.createFromMap(Collections.singletonMap("duration", "-41"))
192+
.getDuration("duration"))
193+
.isEqualTo(Duration.ofMillis(-41));
194+
}
195+
188196
@Test
189197
void durationUnitParsing() {
198+
assertThat(
199+
DefaultConfigProperties.createFromMap(Collections.singletonMap("duration", "3ns"))
200+
.getDuration("duration"))
201+
.isEqualTo(Duration.ofNanos(3));
202+
assertThat(
203+
DefaultConfigProperties.createFromMap(Collections.singletonMap("duration", "2us"))
204+
.getDuration("duration"))
205+
.isEqualTo(Duration.ofNanos(2000));
190206
assertThat(
191207
DefaultConfigProperties.createFromMap(Collections.singletonMap("duration", "1"))
192208
.getDuration("duration"))

0 commit comments

Comments
 (0)