diff --git a/jaxrs-tck-docs/TCK-Exclude-List.txt b/jaxrs-tck-docs/TCK-Exclude-List.txt
index 718fe44..c1c1b05 100644
--- a/jaxrs-tck-docs/TCK-Exclude-List.txt
+++ b/jaxrs-tck-docs/TCK-Exclude-List.txt
@@ -82,3 +82,73 @@
 
 # https://github.com/jakartaee/rest/issues/1106
 ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java#replaceQueryTest4
+
+# https://github.com/jakartaee/rest/issues/1123
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#headTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#headTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithEntityTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithStringClassWithEntityTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithResponseClassWithEntityTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeStringWithEntityTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeResponseWithEntityTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithGenericTypeResponseTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithStringClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithResponseClassTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithGenericTypeStringTest
+ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithGenericTypeResponseTest
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
index 3c97fd0..96f7091 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -41,6 +41,7 @@
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -106,6 +107,7 @@
    * 
    */
   @Test
+  @Disabled
   public void deleteWithStringClassTest() throws Fault {
     super.deleteWithStringClassTest();
   }
@@ -119,6 +121,7 @@
    * 
    */
   @Test
+  @Disabled
   public void deleteWithResponseClassTest() throws Fault {
     super.deleteWithResponseClassTest();
   }
@@ -131,6 +134,7 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
+  @Disabled
   public void deleteWithGenericTypeStringTest() throws Fault {
     super.deleteWithGenericTypeStringTest();
   }
@@ -143,6 +147,7 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
+  @Disabled
   public void deleteWithGenericTypeResponseTest() throws Fault {
     super.deleteWithGenericTypeResponseTest();
   }
@@ -159,6 +164,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getTest() throws Fault {
     super.getTest();
   }
@@ -171,6 +177,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getWithStringClassTest() throws Fault {
     super.getWithStringClassTest();
   }
@@ -183,6 +190,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getWithResponseClassTest() throws Fault {
     super.getWithResponseClassTest();
   }
@@ -195,6 +203,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getWithGenericTypeStringTest() throws Fault {
     super.getWithGenericTypeStringTest();
   }
@@ -207,6 +216,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getWithGenericTypeResponseTest() throws Fault {
     super.getWithGenericTypeResponseTest();
   }
@@ -223,6 +233,7 @@
    * @test_Strategy: Invoke HTTP HEAD method for the current request
    */
   @Test
+  @Disabled
   public void headTest() throws Fault {
     super.headTest();
   }
@@ -251,6 +262,7 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
+  @Disabled
   public void optionsWithStringClassTest() throws Fault {
     super.optionsWithStringClassTest();
   }
@@ -263,6 +275,7 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
+  @Disabled
   public void optionsWithResponseClassTest() throws Fault {
     super.optionsWithResponseClassTest();
   }
@@ -275,6 +288,7 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
+  @Disabled
   public void optionsWithGenericTypeStringTest() throws Fault {
     super.optionsWithGenericTypeStringTest();
   }
@@ -287,6 +301,7 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
+  @Disabled
   public void optionsWithGenericTypeResponseTest() throws Fault {
     super.optionsWithGenericTypeResponseTest();
   }
@@ -303,6 +318,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postTest() throws Fault {
     super.postTest();
   }
@@ -315,6 +331,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postWithStringClassTest() throws Fault {
     super.postWithStringClassTest();
   }
@@ -327,6 +344,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postWithResponseClassTest() throws Fault {
     super.postWithResponseClassTest();
   }
@@ -339,6 +357,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postWithGenericTypeStringTest() throws Fault {
     super.postWithGenericTypeStringTest();
   }
@@ -351,6 +370,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postWithGenericTypeResponseTest() throws Fault {
     super.postWithGenericTypeResponseTest();
   }
@@ -367,6 +387,7 @@
    * @test_Strategy: Invoke HTTP PUT method for the current request
    */
   @Test
+  @Disabled
   public void putTest() throws Fault {
     super.putTest();
   }
@@ -379,6 +400,7 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
+  @Disabled
   public void putWithStringClassTest() throws Fault {
     super.putWithStringClassTest();
   }
@@ -391,6 +413,7 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
+  @Disabled
   public void putWithResponseClassTest() throws Fault {
     super.putWithResponseClassTest();
   }
@@ -403,6 +426,7 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
+  @Disabled
   public void putWithGenericTypeStringTest() throws Fault {
     super.putWithGenericTypeStringTest();
   }
@@ -415,6 +439,7 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
+  @Disabled
   public void putWithGenericTypeResponseTest() throws Fault {
     super.putWithGenericTypeResponseTest();
   }
@@ -431,6 +456,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceTest() throws Fault {
     super.traceTest();
   }
@@ -443,6 +469,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceWithStringClassTest() throws Fault {
     super.traceWithStringClassTest();
   }
@@ -455,6 +482,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceWithResponseClassTest() throws Fault {
     super.traceWithResponseClassTest();
   }
@@ -467,6 +495,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceWithGenericTypeStringTest() throws Fault {
     super.traceWithGenericTypeStringTest();
   }
@@ -479,6 +508,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceWithGenericTypeResponseTest() throws Fault {
     super.traceWithGenericTypeResponseTest();
   }
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
index ab28b09..f0483e5 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -52,6 +52,7 @@
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -150,6 +151,7 @@
    * 
    */
   @Test
+  @Disabled
   public void deleteWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     Future<String> future = rx.delete(String.class).toCompletableFuture();
@@ -165,6 +167,7 @@
    * 
    */
   @Test
+  @Disabled
   public void deleteWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     Future<Response> future = rx.delete(Response.class).toCompletableFuture();
@@ -229,6 +232,7 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
+  @Disabled
   public void deleteWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     GenericType<String> generic = createGeneric(String.class);
@@ -244,6 +248,7 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
+  @Disabled
   public void deleteWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -319,6 +324,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<Response> future = rx.get().toCompletableFuture();
@@ -350,6 +356,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<String> future = rx.get(String.class).toCompletableFuture();
@@ -364,6 +371,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<Response> future = rx.get(Response.class).toCompletableFuture();
@@ -428,6 +436,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     GenericType<String> generic = createGeneric(String.class);
@@ -443,6 +452,7 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
+  @Disabled
   public void getWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -516,6 +526,7 @@
    * @test_Strategy: Invoke HTTP HEAD method for the current request
    */
   @Test
+  @Disabled
   public void headTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("head");
     Future<Response> future = rx.head().toCompletableFuture();
@@ -551,6 +562,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodTest() throws Fault {
     Future<Response> future = null;
     for (String method : METHODS) {
@@ -590,6 +602,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithStringClassTest() throws Fault {
     Future<String> future = null;
     for (String method : METHODS) {
@@ -608,6 +621,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithResponseClassTest() throws Fault {
     Future<Response> future = null;
     for (String method : METHODS) {
@@ -688,6 +702,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Future<String> future = null;
@@ -707,6 +722,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Future<Response> future = null;
@@ -794,6 +810,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithEntityTest() throws Fault {
     Future<Response> future = null;
     for (String method : ENTITY_METHODS) {
@@ -835,6 +852,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithStringClassWithEntityTest() throws Fault {
     Future<String> future = null;
     for (String method : ENTITY_METHODS) {
@@ -854,6 +872,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithResponseClassWithEntityTest() throws Fault {
     Future<Response> future = null;
     for (String method : ENTITY_METHODS) {
@@ -941,6 +960,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithGenericTypeStringWithEntityTest()
       throws Fault {
     Future<String> future = null;
@@ -962,6 +982,7 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
+  @Disabled
   public void methodWithGenericTypeResponseWithEntityTest()
       throws Fault {
     Future<Response> future = null;
@@ -1089,6 +1110,7 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
+  @Disabled
   public void optionsWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     Future<String> future = rx.options(String.class).toCompletableFuture();
@@ -1103,6 +1125,7 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
+  @Disabled
   public void optionsWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     Future<Response> future = rx.options(Response.class).toCompletableFuture();
@@ -1167,6 +1190,7 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
+  @Disabled
   public void optionsWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     GenericType<String> generic = createGeneric(String.class);
@@ -1182,6 +1206,7 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
+  @Disabled
   public void optionsWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -1257,6 +1282,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1290,6 +1316,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postWithStringClassTest() throws Fault {
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
@@ -1305,6 +1332,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postWithResponseClassTest() throws Fault {
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
@@ -1375,6 +1403,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1391,6 +1420,7 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
+  @Disabled
   public void postWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1469,6 +1499,7 @@
    * @test_Strategy: Invoke HTTP PUT method for the current request
    */
   @Test
+  @Disabled
   public void putTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1502,6 +1533,7 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
+  @Disabled
   public void putWithStringClassTest() throws Fault {
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
@@ -1517,6 +1549,7 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
+  @Disabled
   public void putWithResponseClassTest() throws Fault {
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
@@ -1587,6 +1620,7 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
+  @Disabled
   public void putWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1603,6 +1637,7 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
+  @Disabled
   public void putWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1680,6 +1715,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<Response> future = rx.trace().toCompletableFuture();
@@ -1711,6 +1747,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<String> future = rx.trace(String.class).toCompletableFuture();
@@ -1725,6 +1762,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<Response> future = rx.trace(Response.class).toCompletableFuture();
@@ -1789,6 +1827,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
@@ -1804,6 +1843,7 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
+  @Disabled
   public void traceWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
