From be98f801ec3550e60e485862ecd42bdf866e7c42 Mon Sep 17 00:00:00 2001 From: Logan Kennedy <163435909+loggk@users.noreply.github.com> Date: Sun, 9 Aug 2026 08:50:28 -0700 Subject: [PATCH] Run model tests against both JSON mappers instead of picking one at random (#2085) Signed-off-by: Logan Kennedy --- CHANGELOG.md | 1 + .../opensearch/model/ModelTestCase.java | 58 +++++++++---------- 2 files changed, 27 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11621f6a7e..391e8b8b23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed - Fix `unitTest` task not running the tests in the `test` source set ([#2074](https://github.com/opensearch-project/opensearch-java/pull/2074)) +- Run model tests against both JSON mappers instead of picking one at random ([#2085](https://github.com/opensearch-project/opensearch-java/pull/2085)) ## [Unreleased 3.x] ### Added diff --git a/java-client/src/test/java/org/opensearch/client/opensearch/model/ModelTestCase.java b/java-client/src/test/java/org/opensearch/client/opensearch/model/ModelTestCase.java index 51babb7001..e9557fe0a4 100644 --- a/java-client/src/test/java/org/opensearch/client/opensearch/model/ModelTestCase.java +++ b/java-client/src/test/java/org/opensearch/client/opensearch/model/ModelTestCase.java @@ -38,51 +38,45 @@ import java.io.StringReader; import java.io.StringWriter; import java.lang.reflect.Method; -import java.util.Random; +import java.util.Arrays; +import java.util.Collection; import org.junit.Assert; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import org.opensearch.client.json.JsonpDeserializer; import org.opensearch.client.json.JsonpMapper; import org.opensearch.client.json.jackson.JacksonJsonpMapper; import org.opensearch.client.json.jsonb.JsonbJsonpMapper; /** - * Base class for tests that encode/decode json + * Base class for tests that encode/decode json. + * Every test is run once per JsonpMapper implementation. */ +@RunWith(Parameterized.class) public abstract class ModelTestCase extends Assert { - // Same value for all tests in a test run - private static final int RAND = new Random().nextInt(100); - - protected final JsonpMapper mapper; - - private JsonpMapper setupMapper(int rand) { - // Randomly choose json-b or jackson - if (rand % 2 == 0) { - System.out.println("Using a JsonB mapper (rand = " + rand + ")."); - return new JsonbJsonpMapper() { - @Override - public boolean ignoreUnknownFields() { - return false; - } - }; - } else { - System.out.println("Using a Jackson mapper (rand = " + rand + ")."); - return new JacksonJsonpMapper() { - @Override - public boolean ignoreUnknownFields() { - return false; - } - }; - } + @Parameterized.Parameters(name = "{0}") + public static Collection mappers() { + JsonpMapper jsonb = new JsonbJsonpMapper() { + @Override + public boolean ignoreUnknownFields() { + return false; + } + }; + JsonpMapper jackson = new JacksonJsonpMapper() { + @Override + public boolean ignoreUnknownFields() { + return false; + } + }; + return Arrays.asList(new Object[] { "json-b", jsonb }, new Object[] { "jackson", jackson }); } - protected ModelTestCase() { - this(RAND); - } + @Parameterized.Parameter(0) + public String mapperName; - protected ModelTestCase(int rand) { - mapper = setupMapper(rand); - } + @Parameterized.Parameter(1) + public JsonpMapper mapper; protected String toJson(T value) { return toJson(value, mapper);