diff --git a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java index 7601eb7629d1c..730e0e6136c4c 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java @@ -1202,6 +1202,7 @@ public static String randomAlphaOfLength(int codeUnits) { /** * Generate a random string containing only alphanumeric characters. + * The locale for the string is {@link Locale#ROOT}. * @param length the length of the string to generate * @return the generated string */ diff --git a/x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceCrudIT.java b/x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceCrudIT.java index f94b9dd2b867f..2e280f644add5 100644 --- a/x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceCrudIT.java +++ b/x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceCrudIT.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -317,7 +318,7 @@ public void testSupportedStream() throws Exception { var events = streamInferOnMockService(modelId, TaskType.COMPLETION, input); var expectedResponses = Stream.concat( - input.stream().map(String::toUpperCase).map(str -> "{\"completion\":[{\"delta\":\"" + str + "\"}]}"), + input.stream().map(s -> s.toUpperCase(Locale.ROOT)).map(str -> "{\"completion\":[{\"delta\":\"" + str + "\"}]}"), Stream.of("[DONE]") ).iterator(); assertThat(events.size(), equalTo((input.size() + 1) * 2)); @@ -356,7 +357,9 @@ public void testUnifiedCompletionInference() throws Exception { } private static Iterator expectedResultsIterator(List input) { - return Stream.concat(input.stream().map(String::toUpperCase).map(InferenceCrudIT::expectedResult), Stream.of("[DONE]")).iterator(); + // The Locale needs to be ROOT to match what the test service is going to respond with + return Stream.concat(input.stream().map(s -> s.toUpperCase(Locale.ROOT)).map(InferenceCrudIT::expectedResult), Stream.of("[DONE]")) + .iterator(); } private static String expectedResult(String input) { diff --git a/x-pack/plugin/inference/qa/test-service-plugin/src/main/java/org/elasticsearch/xpack/inference/mock/TestStreamingCompletionServiceExtension.java b/x-pack/plugin/inference/qa/test-service-plugin/src/main/java/org/elasticsearch/xpack/inference/mock/TestStreamingCompletionServiceExtension.java index 8325017f8e390..a39be00d9e7fa 100644 --- a/x-pack/plugin/inference/qa/test-service-plugin/src/main/java/org/elasticsearch/xpack/inference/mock/TestStreamingCompletionServiceExtension.java +++ b/x-pack/plugin/inference/qa/test-service-plugin/src/main/java/org/elasticsearch/xpack/inference/mock/TestStreamingCompletionServiceExtension.java @@ -43,6 +43,7 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.concurrent.Flow; @@ -142,7 +143,7 @@ public void unifiedCompletionInfer( } private StreamingChatCompletionResults makeResults(List input) { - var responseIter = input.stream().map(String::toUpperCase).iterator(); + var responseIter = input.stream().map(s -> s.toUpperCase(Locale.ROOT)).iterator(); return new StreamingChatCompletionResults(subscriber -> { subscriber.onSubscribe(new Flow.Subscription() { @Override @@ -173,7 +174,7 @@ private ChunkedToXContent completionChunk(String delta) { } private StreamingUnifiedChatCompletionResults makeUnifiedResults(UnifiedCompletionRequest request) { - var responseIter = request.messages().stream().map(message -> message.content().toString().toUpperCase()).iterator(); + var responseIter = request.messages().stream().map(message -> message.content().toString().toUpperCase(Locale.ROOT)).iterator(); return new StreamingUnifiedChatCompletionResults(subscriber -> { subscriber.onSubscribe(new Flow.Subscription() { @Override