Skip to content

Commit 7b02592

Browse files
committed
test: upgrade string boundary checks to property-based fuzz tests
1 parent 568f3e7 commit 7b02592

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

api/all/src/test/java/io/opentelemetry/api/logs/ValueTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
import org.junit.jupiter.params.ParameterizedTest;
2626
import org.junit.jupiter.params.provider.Arguments;
2727
import org.junit.jupiter.params.provider.MethodSource;
28+
import edu.berkeley.cs.jqf.fuzz.Fuzz;
29+
import edu.berkeley.cs.jqf.fuzz.JQF;
30+
import edu.berkeley.cs.jqf.fuzz.junit.GuidedFuzzing;
31+
import edu.berkeley.cs.jqf.fuzz.random.NoGuidance;
32+
import org.junit.runner.Result;
33+
import org.junit.runner.RunWith;
2834

2935
class ValueTest {
3036

@@ -224,4 +230,23 @@ void valueByteAsString() {
224230
byte[] decodedSpecial = Base64.getDecoder().decode(specialBase64);
225231
assertThat(new String(decodedSpecial, StandardCharsets.UTF_8)).isEqualTo(specialStr);
226232
}
233+
234+
@RunWith(JQF.class)
235+
public static class FuzzTestCases {
236+
@Fuzz
237+
public void valueByteAsStringFuzz(String randomString) {
238+
String base64Encoded = Value.of(randomString.getBytes(StandardCharsets.UTF_8)).asString();
239+
byte[] decodedBytes = Base64.getDecoder().decode(base64Encoded);
240+
assertThat(new String(decodedBytes, StandardCharsets.UTF_8)).isEqualTo(randomString);
241+
}
242+
}
243+
244+
@SuppressWarnings("SystemOut")
245+
@Test
246+
void valueByteAsStringFuzzing() {
247+
Result result = GuidedFuzzing.run(
248+
FuzzTestCases.class, "valueByteAsStringFuzz", new NoGuidance(10000, System.out), System.out);
249+
assertThat(result.wasSuccessful()).isTrue();
250+
}
227251
}
252+

0 commit comments

Comments
 (0)