diff --git a/sdk/cosmos/azure-cosmos-tests/pom.xml b/sdk/cosmos/azure-cosmos-tests/pom.xml
index 18cb8e9cd2d1..4ee203075178 100644
--- a/sdk/cosmos/azure-cosmos-tests/pom.xml
+++ b/sdk/cosmos/azure-cosmos-tests/pom.xml
@@ -776,6 +776,33 @@ Licensed under the MIT License.
+
+
+ consistency-overrides
+
+ consistency-overrides
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+ 3.5.3
+
+
+ src/test/resources/consistency-overrides-testng.xml
+
+
+ true
+ 1
+ 256
+ paranoid
+
+
+
+
+
+
emulator
@@ -848,6 +875,7 @@ Licensed under the MIT License.
true
+ true
1
256
paranoid
diff --git a/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/CosmosConsistencyOverrideValidationTest.java b/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/CosmosConsistencyOverrideValidationTest.java
new file mode 100644
index 000000000000..63b5f2d1cce1
--- /dev/null
+++ b/sdk/cosmos/azure-cosmos-tests/src/test/java/com/azure/cosmos/CosmosConsistencyOverrideValidationTest.java
@@ -0,0 +1,636 @@
+/*
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License.
+ *
+ */
+
+package com.azure.cosmos;
+
+import com.azure.cosmos.implementation.DatabaseAccount;
+import com.azure.cosmos.implementation.DatabaseAccountLocation;
+import com.azure.cosmos.implementation.GlobalEndpointManager;
+import com.azure.cosmos.implementation.HttpConstants;
+import com.azure.cosmos.implementation.RxDocumentClientImpl;
+import com.azure.cosmos.implementation.TestConfigurations;
+import com.azure.cosmos.implementation.directconnectivity.Protocol;
+import com.azure.cosmos.implementation.directconnectivity.ReflectionUtils;
+import com.azure.cosmos.models.CosmosChangeFeedRequestOptions;
+import com.azure.cosmos.models.CosmosItemRequestOptions;
+import com.azure.cosmos.models.CosmosItemResponse;
+import com.azure.cosmos.models.CosmosQueryRequestOptions;
+import com.azure.cosmos.models.FeedRange;
+import com.azure.cosmos.models.FeedResponse;
+import com.azure.cosmos.models.PartitionKey;
+import com.azure.cosmos.models.SqlParameter;
+import com.azure.cosmos.models.SqlQuerySpec;
+import com.azure.cosmos.rx.TestSuiteBase;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.testng.SkipException;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Factory;
+import org.testng.annotations.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class CosmosConsistencyOverrideValidationTest extends TestSuiteBase {
+ private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+ private static final String MULTIPLE_WRITE_REGIONS_PROPERTY =
+ "COSMOS.CONSISTENCY_OVERRIDE_MULTIPLE_WRITE_REGIONS_ENABLED";
+ private static final String EMULATOR_VNEXT_ENABLED_PROPERTY = "COSMOS.EMULATOR_VNEXT_ENABLED";
+ private static final String HTTP2_ENABLED_PROPERTY = "COSMOS.HTTP2_ENABLED";
+ private static final String THINCLIENT_ENABLED_PROPERTY = "COSMOS.THINCLIENT_ENABLED";
+
+ private CosmosClient client;
+ private CosmosContainer container;
+ private final String modeLabel;
+ private final boolean http2Enabled;
+ private final boolean thinClientEnabled;
+ private String previousHttp2Enabled;
+ private String previousThinClientEnabled;
+ private ConsistencyLevel accountDefaultConsistency;
+
+ @Factory(dataProvider = "clientBuildersForConsistencyOverrides")
+ public CosmosConsistencyOverrideValidationTest(
+ CosmosClientBuilder clientBuilder,
+ String modeLabel,
+ boolean http2Enabled,
+ boolean thinClientEnabled) {
+
+ super(clientBuilder);
+ this.modeLabel = modeLabel;
+ this.http2Enabled = http2Enabled;
+ this.thinClientEnabled = thinClientEnabled;
+ }
+
+ @Override
+ public String resolveTestNameSuffix(Object[] row) {
+ return this.modeLabel;
+ }
+
+ @DataProvider
+ public static Object[][] clientBuildersForConsistencyOverrides() {
+ boolean multipleWriteRegionsEnabled = Boolean.parseBoolean(
+ System.getProperty(MULTIPLE_WRITE_REGIONS_PROPERTY, "false"));
+ boolean emulatorVNextRun = isEmulatorVNextRun();
+
+ List