From bff5cbf6b588feb7fd218d4cee5657c8effe885d Mon Sep 17 00:00:00 2001
From: Muxi Yan <mxyan@google.com>
Date: Tue, 19 Jul 2016 11:22:20 -0700
Subject: [PATCH] Collapse fixture into CoreCronetEnd2EndTests.m so that
 individual test cases can be run, instead of only allow running the entire
 fixture

---
 .../CoreCronetEnd2EndTests.m                  | 349 +++++++++++++++++-
 .../tests/CoreCronetEnd2EndTests/fixture.h    |  35 --
 .../fixture_h2_ssl_cronet.m                   | 206 -----------
 .../tests/Tests.xcodeproj/project.pbxproj     |   6 -
 4 files changed, 336 insertions(+), 260 deletions(-)
 delete mode 100644 src/objective-c/tests/CoreCronetEnd2EndTests/fixture.h
 delete mode 100644 src/objective-c/tests/CoreCronetEnd2EndTests/fixture_h2_ssl_cronet.m

diff --git a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m
index b0e58fe2ed..ec1d222fbd 100644
--- a/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m
+++ b/src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m
@@ -32,7 +32,140 @@
  */
 
 #import <XCTest/XCTest.h>
-#import "src/objective-c/tests/CoreCronetEnd2EndTests/fixture.h"
+#include "test/core/end2end/end2end_tests.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/host_port.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/support/env.h"
+#include "src/core/lib/support/string.h"
+#include "src/core/lib/support/tmpfile.h"
+#include "test/core/end2end/data/ssl_test_data.h"
+#include "test/core/util/port.h"
+#include "test/core/util/test_config.h"
+
+#include <grpc/grpc_cronet.h>
+#import <Cronet/Cronet.h>
+
+typedef struct fullstack_secure_fixture_data {
+  char *localaddr;
+} fullstack_secure_fixture_data;
+
+static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack(
+                                                                        grpc_channel_args *client_args, grpc_channel_args *server_args) {
+  grpc_end2end_test_fixture f;
+  int port = grpc_pick_unused_port_or_die();
+  fullstack_secure_fixture_data *ffd =
+  gpr_malloc(sizeof(fullstack_secure_fixture_data));
+  memset(&f, 0, sizeof(f));
+  
+  gpr_join_host_port(&ffd->localaddr, "localhost", port);
+  
+  f.fixture_data = ffd;
+  f.cq = grpc_completion_queue_create(NULL);
+  
+  return f;
+}
+
+static void process_auth_failure(void *state, grpc_auth_context *ctx,
+                                 const grpc_metadata *md, size_t md_count,
+                                 grpc_process_auth_metadata_done_cb cb,
+                                 void *user_data) {
+  GPR_ASSERT(state == NULL);
+  cb(user_data, NULL, 0, NULL, 0, GRPC_STATUS_UNAUTHENTICATED, NULL);
+}
+
+static void cronet_init_client_secure_fullstack(
+                                                grpc_end2end_test_fixture *f, grpc_channel_args *client_args,
+                                                cronet_engine *cronetEngine) {
+  fullstack_secure_fixture_data *ffd = f->fixture_data;
+  f->client =
+  grpc_cronet_secure_channel_create(cronetEngine, ffd->localaddr, client_args, NULL);
+  GPR_ASSERT(f->client != NULL);
+}
+
+static void chttp2_init_server_secure_fullstack(
+                                                grpc_end2end_test_fixture *f, grpc_channel_args *server_args,
+                                                grpc_server_credentials *server_creds) {
+  fullstack_secure_fixture_data *ffd = f->fixture_data;
+  if (f->server) {
+    grpc_server_destroy(f->server);
+  }
+  f->server = grpc_server_create(server_args, NULL);
+  grpc_server_register_completion_queue(f->server, f->cq, NULL);
+  GPR_ASSERT(grpc_server_add_secure_http2_port(f->server, ffd->localaddr,
+                                               server_creds));
+  grpc_server_credentials_release(server_creds);
+  grpc_server_start(f->server);
+}
+
+static void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f) {
+  fullstack_secure_fixture_data *ffd = f->fixture_data;
+  gpr_free(ffd->localaddr);
+  gpr_free(ffd);
+}
+
+static void cronet_init_client_simple_ssl_secure_fullstack(
+                                                           grpc_end2end_test_fixture *f, grpc_channel_args *client_args) {
+  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
+    GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
+    {"foo.test.google.fr"}};
+  
+  grpc_channel_args *new_client_args =
+  grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
+  [Cronet setHttp2Enabled:YES];
+  [Cronet start];
+  cronet_engine *cronetEngine = [Cronet getGlobalEngine];
+  
+  cronet_init_client_secure_fullstack(f, new_client_args, cronetEngine);
+  grpc_channel_args_destroy(new_client_args);
+}
+
+static int fail_server_auth_check(grpc_channel_args *server_args) {
+  size_t i;
+  if (server_args == NULL) return 0;
+  for (i = 0; i < server_args->num_args; i++) {
+    if (strcmp(server_args->args[i].key, FAIL_AUTH_CHECK_SERVER_ARG_NAME) ==
+        0) {
+      return 1;
+    }
+  }
+  return 0;
+}
+
+static void chttp2_init_server_simple_ssl_secure_fullstack(
+                                                           grpc_end2end_test_fixture *f, grpc_channel_args *server_args) {
+  grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key,
+    test_server1_cert};
+  grpc_server_credentials *ssl_creds =
+  grpc_ssl_server_credentials_create(NULL, &pem_cert_key_pair, 1, 0, NULL);
+  if (fail_server_auth_check(server_args)) {
+    grpc_auth_metadata_processor processor = {process_auth_failure, NULL, NULL};
+    grpc_server_credentials_set_auth_metadata_processor(ssl_creds, processor);
+  }
+  chttp2_init_server_secure_fullstack(f, server_args, ssl_creds);
+}
+
+/* All test configurations */
+
+static grpc_end2end_test_config configs[] = {
+  {"chttp2/simple_ssl_fullstack",
+    FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION |
+    FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS,
+    chttp2_create_fixture_secure_fullstack,
+    cronet_init_client_simple_ssl_secure_fullstack,
+    chttp2_init_server_simple_ssl_secure_fullstack,
+    chttp2_tear_down_secure_fullstack},
+};
+
+
+
 
 @interface CoreCronetEnd2EndTests : XCTestCase
 
@@ -40,18 +173,208 @@
 
 @implementation CoreCronetEnd2EndTests
 
-- (void)testCoreCronetEnd2End {
-  char *argv[] = {"h2_ssl"};
-
-  // This main() function is not the entry point of this test case; it
-  // refers to that in h2_ssl_cronet.m. We can use it because XCode
-  // builder does not use main() as the entry point for a test.
-  // Since h2_ssl_cronet.m is derived from h2_ssl.c in the core end2end
-  // test fixture, we preserves the fixture structure (in particular
-  // the main() function here) so that another fixture can easily
-  // replace the fixture h2_ssl_cronet, in case we need more tests in
-  // the future
-  main(1, argv);
+char *roots_filename;
+
+// The setUp() function is run before the test cases run and only run once
++ (void)setUp {
+  [super setUp];
+
+  FILE *roots_file;
+  size_t roots_size = strlen(test_root_cert);
+  
+  char *argv[] = {"CoreCronetEnd2EndTests"};
+  grpc_test_init(1, argv);
+  grpc_end2end_tests_pre_init();
+  
+  /* Set the SSL roots env var. */
+  roots_file = gpr_tmpfile("chttp2_simple_ssl_fullstack_test", &roots_filename);
+  GPR_ASSERT(roots_filename != NULL);
+  GPR_ASSERT(roots_file != NULL);
+  GPR_ASSERT(fwrite(test_root_cert, 1, roots_size, roots_file) == roots_size);
+  fclose(roots_file);
+  gpr_setenv(GRPC_DEFAULT_SSL_ROOTS_FILE_PATH_ENV_VAR, roots_filename);
+  
+  grpc_init();
+  
+}
+
+// The tearDown() function is run after all test cases finish running
++ (void)tearDown {
+  grpc_shutdown();
+  
+  /* Cleanup. */
+  remove(roots_filename);
+  gpr_free(roots_filename);
+  
+  [super tearDown];
+}
+
+- (void)testIndividualCase:(char*)test_case {
+  char *argv[] = {"h2_ssl", test_case};
+  
+  for (int i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
+    grpc_end2end_tests(sizeof(argv) / sizeof(argv[0]), argv, configs[i]);
+  }
+}
+
+- (void)testBadHostname {
+  [self testIndividualCase:"bad_hostname"];
+}
+
+- (void)testBinaryMetadata {
+  [self testIndividualCase:"binary_metadata"];
+}
+
+- (void)testCallCreds {
+  [self testIndividualCase:"call_creds"];
+}
+
+- (void)testCancelAfterAccept {
+  [self testIndividualCase:"cancel_after_accept"];
+}
+
+- (void)testCancelAfterClientDone {
+  [self testIndividualCase:"cancel_after_client_done"];
+}
+
+- (void)testCancelAfterInvoke {
+  [self testIndividualCase:"cancel_after_invoke"];
+}
+
+- (void)testCancelBeforeInvoke {
+  [self testIndividualCase:"cancel_before_invoke"];
+}
+
+- (void)testCancelInAVacuum {
+  [self testIndividualCase:"cancel_in_a_vacuum"];
+}
+
+- (void)testCancelWithStatus {
+  [self testIndividualCase:"cancel_with_status"];
+}
+
+- (void)testCompressedPayload {
+  [self testIndividualCase:"compressed_payload"];
+}
+
+- (void)testConnectivity {
+  [self testIndividualCase:"connectivity"];
+}
+
+- (void)testDefaultHost {
+  [self testIndividualCase:"default_host"];
+}
+
+- (void)testDisappearingServer {
+  [self testIndividualCase:"disappearing_server"];
+}
+
+- (void)testEmptyBatch {
+  [self testIndividualCase:"empty_batch"];
+}
+
+- (void)testFilterCausesClose {
+  [self testIndividualCase:"filter_causes_close"];
+}
+
+- (void)testGracefulServerShutdown {
+  [self testIndividualCase:"graceful_server_shutdown"];
+}
+
+- (void)testHighInitialSeqno {
+  [self testIndividualCase:"high_initial_seqno"];
+}
+
+- (void)testHpackSize {
+  [self testIndividualCase:"hpack_size"];
+}
+
+- (void)testIdempotentRequest {
+  [self testIndividualCase:"idempotent_request"];
+}
+
+- (void)testInvokeLargeRequest {
+  [self testIndividualCase:"invoke_large_request"];
+}
+
+- (void)testLargeMetadata {
+  [self testIndividualCase:"large_metadata"];
+}
+
+- (void)testMaxConcurrentStreams {
+  [self testIndividualCase:"max_concurrent_streams"];
+}
+
+- (void)testMaxMessageLength {
+  [self testIndividualCase:"max_message_length"];
+}
+
+- (void)testNegativeDeadline {
+  [self testIndividualCase:"negative_deadline"];
+}
+
+- (void)testNetworkStatusChange {
+  [self testIndividualCase:"network_status_change"];
+}
+
+- (void)testNoOp {
+  [self testIndividualCase:"no_op"];
+}
+
+- (void)testPayload {
+  [self testIndividualCase:"payload"];
+}
+
+- (void)testPing {
+  [self testIndividualCase:"ping"];
+}
+
+- (void)testPingPongStreaming {
+  [self testIndividualCase:"ping_pong_streaming"];
+}
+
+- (void)testRegisteredCall {
+  [self testIndividualCase:"registered_call"];
+}
+
+- (void)testRequestWithFlags {
+  [self testIndividualCase:"request_with_flags"];
+}
+
+- (void)testRequestWithPayload {
+  [self testIndividualCase:"request_with_payload"];
+}
+
+- (void)testServerFinishesRequest {
+  [self testIndividualCase:"server_finishes_request"];
+}
+
+- (void)testShutdownFinishesCalls {
+  [self testIndividualCase:"shutdown_finishes_calls"];
+}
+
+- (void)testShutdownFinishesTags {
+  [self testIndividualCase:"shutdown_finishes_tags"];
+}
+
+- (void)testSimpleDelayedRequest {
+  [self testIndividualCase:"simple_delayed_request"];
+}
+
+- (void)testSimpleMetadata {
+  [self testIndividualCase:"simple_metadata"];
+}
+
+- (void)testSimpleRequest {
+  [self testIndividualCase:"simple_request"];
+}
+
+- (void)testStreamingErrorResponse {
+  [self testIndividualCase:"streaming_error_response"];
+}
+
+- (void)testTrailingMetadata {
+  [self testIndividualCase:"trailing_metadata"];
 }
 
 @end
diff --git a/src/objective-c/tests/CoreCronetEnd2EndTests/fixture.h b/src/objective-c/tests/CoreCronetEnd2EndTests/fixture.h
deleted file mode 100644
index 45fbfc4bc8..0000000000
--- a/src/objective-c/tests/CoreCronetEnd2EndTests/fixture.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-int main(int argc, char **argv);
-
diff --git a/src/objective-c/tests/CoreCronetEnd2EndTests/fixture_h2_ssl_cronet.m b/src/objective-c/tests/CoreCronetEnd2EndTests/fixture_h2_ssl_cronet.m
deleted file mode 100644
index 37d98b793c..0000000000
--- a/src/objective-c/tests/CoreCronetEnd2EndTests/fixture_h2_ssl_cronet.m
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-/* 
- * This fixture derives from h2_ssl.c fixture in core end2end test
- * (test/core/end2end/fixture/h2_ssl.c)
- *
- * This fixture creates a server full stack using chttp2 and a client
- * full stack using Cronet. End-to-end tests are run against this fixture
- * setting.
- *
- */
-
-#include "test/core/end2end/end2end_tests.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include <grpc/support/alloc.h>
-#include <grpc/support/host_port.h>
-#include <grpc/support/log.h>
-
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/security/credentials/credentials.h"
-#include "src/core/lib/support/env.h"
-#include "src/core/lib/support/string.h"
-#include "src/core/lib/support/tmpfile.h"
-#include "test/core/end2end/data/ssl_test_data.h"
-#include "test/core/util/port.h"
-#include "test/core/util/test_config.h"
-
-#include <grpc/grpc_cronet.h>
-#import <Cronet/Cronet.h>
-
-typedef struct fullstack_secure_fixture_data {
-  char *localaddr;
-} fullstack_secure_fixture_data;
-
-static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack(
-    grpc_channel_args *client_args, grpc_channel_args *server_args) {
-  grpc_end2end_test_fixture f;
-  int port = grpc_pick_unused_port_or_die();
-  fullstack_secure_fixture_data *ffd =
-      gpr_malloc(sizeof(fullstack_secure_fixture_data));
-  memset(&f, 0, sizeof(f));
-
-  gpr_join_host_port(&ffd->localaddr, "localhost", port);
-
-  f.fixture_data = ffd;
-  f.cq = grpc_completion_queue_create(NULL);
-
-  return f;
-}
-
-static void process_auth_failure(void *state, grpc_auth_context *ctx,
-                                 const grpc_metadata *md, size_t md_count,
-                                 grpc_process_auth_metadata_done_cb cb,
-                                 void *user_data) {
-  GPR_ASSERT(state == NULL);
-  cb(user_data, NULL, 0, NULL, 0, GRPC_STATUS_UNAUTHENTICATED, NULL);
-}
-
-static void cronet_init_client_secure_fullstack(
-    grpc_end2end_test_fixture *f, grpc_channel_args *client_args,
-    cronet_engine *cronetEngine) {
-  fullstack_secure_fixture_data *ffd = f->fixture_data;
-  f->client =
-      grpc_cronet_secure_channel_create(cronetEngine, ffd->localaddr, client_args, NULL);
-  GPR_ASSERT(f->client != NULL);
-}
-
-static void chttp2_init_server_secure_fullstack(
-    grpc_end2end_test_fixture *f, grpc_channel_args *server_args,
-    grpc_server_credentials *server_creds) {
-  fullstack_secure_fixture_data *ffd = f->fixture_data;
-  if (f->server) {
-    grpc_server_destroy(f->server);
-  }
-  f->server = grpc_server_create(server_args, NULL);
-  grpc_server_register_completion_queue(f->server, f->cq, NULL);
-  GPR_ASSERT(grpc_server_add_secure_http2_port(f->server, ffd->localaddr,
-                                               server_creds));
-  grpc_server_credentials_release(server_creds);
-  grpc_server_start(f->server);
-}
-
-static void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f) {
-  fullstack_secure_fixture_data *ffd = f->fixture_data;
-  gpr_free(ffd->localaddr);
-  gpr_free(ffd);
-}
-
-static void cronet_init_client_simple_ssl_secure_fullstack(
-    grpc_end2end_test_fixture *f, grpc_channel_args *client_args) {
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
-  
-  grpc_channel_args *new_client_args =
-      grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
-  [Cronet setHttp2Enabled:YES];
-  [Cronet start];
-  cronet_engine *cronetEngine = [Cronet getGlobalEngine];
-  
-  cronet_init_client_secure_fullstack(f, new_client_args, cronetEngine);
-  grpc_channel_args_destroy(new_client_args);
-}
-
-static int fail_server_auth_check(grpc_channel_args *server_args) {
-  size_t i;
-  if (server_args == NULL) return 0;
-  for (i = 0; i < server_args->num_args; i++) {
-    if (strcmp(server_args->args[i].key, FAIL_AUTH_CHECK_SERVER_ARG_NAME) ==
-        0) {
-      return 1;
-    }
-  }
-  return 0;
-}
-
-static void chttp2_init_server_simple_ssl_secure_fullstack(
-    grpc_end2end_test_fixture *f, grpc_channel_args *server_args) {
-  grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key,
-                                                  test_server1_cert};
-  grpc_server_credentials *ssl_creds =
-      grpc_ssl_server_credentials_create(NULL, &pem_cert_key_pair, 1, 0, NULL);
-  if (fail_server_auth_check(server_args)) {
-    grpc_auth_metadata_processor processor = {process_auth_failure, NULL, NULL};
-    grpc_server_credentials_set_auth_metadata_processor(ssl_creds, processor);
-  }
-  chttp2_init_server_secure_fullstack(f, server_args, ssl_creds);
-}
-
-/* All test configurations */
-
-static grpc_end2end_test_config configs[] = {
-    {"chttp2/simple_ssl_fullstack",
-     FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION |
-         FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS,
-     chttp2_create_fixture_secure_fullstack,
-     cronet_init_client_simple_ssl_secure_fullstack,
-     chttp2_init_server_simple_ssl_secure_fullstack,
-     chttp2_tear_down_secure_fullstack},
-};
-
-int main(int argc, char **argv) {
-  size_t i;
-  FILE *roots_file;
-  size_t roots_size = strlen(test_root_cert);
-  char *roots_filename;
-
-  grpc_test_init(argc, argv);
-  grpc_end2end_tests_pre_init();
-
-  /* Set the SSL roots env var. */
-  roots_file = gpr_tmpfile("chttp2_simple_ssl_fullstack_test", &roots_filename);
-  GPR_ASSERT(roots_filename != NULL);
-  GPR_ASSERT(roots_file != NULL);
-  GPR_ASSERT(fwrite(test_root_cert, 1, roots_size, roots_file) == roots_size);
-  fclose(roots_file);
-  gpr_setenv(GRPC_DEFAULT_SSL_ROOTS_FILE_PATH_ENV_VAR, roots_filename);
-
-  grpc_init();
-
-  for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
-    grpc_end2end_tests(argc, argv, configs[i]);
-  }
-
-  grpc_shutdown();
-
-  /* Cleanup. */
-  remove(roots_filename);
-  gpr_free(roots_filename);
-
-  return 0;
-}
diff --git a/src/objective-c/tests/Tests.xcodeproj/project.pbxproj b/src/objective-c/tests/Tests.xcodeproj/project.pbxproj
index 8de0fdcb8e..2c80b08d03 100644
--- a/src/objective-c/tests/Tests.xcodeproj/project.pbxproj
+++ b/src/objective-c/tests/Tests.xcodeproj/project.pbxproj
@@ -12,7 +12,6 @@
 		20DFDF829DD993A4A00D5662 /* libPods-RxLibraryUnitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A58BE6DF1C62D1739EBB2C78 /* libPods-RxLibraryUnitTests.a */; };
 		333E8FC01C8285B7C547D799 /* libPods-InteropTestsLocalCleartext.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FD346DB2C23F676C4842F3FF /* libPods-InteropTestsLocalCleartext.a */; };
 		3D7C85F6AA68C4A205E3BA16 /* libPods-Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20DFF2F3C97EF098FE5A3171 /* libPods-Tests.a */; };
-		5E1BD3B51D3D74EC00A47325 /* fixture_h2_ssl_cronet.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E1BD3B41D3D74EC00A47325 /* fixture_h2_ssl_cronet.m */; };
 		5E8A5DA71D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m */; };
 		5E8A5DA91D3840B4000F8BC4 /* libTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 635697C71B14FC11007A7283 /* libTests.a */; };
 		60D2A57ED559F34428C2EEC5 /* libPods-CoreCronetEnd2EndTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD98AC417B9882D32B19F28 /* libPods-CoreCronetEnd2EndTests.a */; };
@@ -110,8 +109,6 @@
 		51A275E86C141416ED63FF76 /* Pods-InteropTestsLocalCleartext.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-InteropTestsLocalCleartext.release.xcconfig"; path = "Pods/Target Support Files/Pods-InteropTestsLocalCleartext/Pods-InteropTestsLocalCleartext.release.xcconfig"; sourceTree = "<group>"; };
 		553BBBED24E4162D1F769D65 /* Pods-InteropTestsLocalSSL.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-InteropTestsLocalSSL.debug.xcconfig"; path = "Pods/Target Support Files/Pods-InteropTestsLocalSSL/Pods-InteropTestsLocalSSL.debug.xcconfig"; sourceTree = "<group>"; };
 		5761E98978DDDF136A58CB7E /* Pods-AllTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AllTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-AllTests/Pods-AllTests.release.xcconfig"; sourceTree = "<group>"; };
-		5E1BD3B31D3D736C00A47325 /* fixture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fixture.h; sourceTree = "<group>"; };
-		5E1BD3B41D3D74EC00A47325 /* fixture_h2_ssl_cronet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = fixture_h2_ssl_cronet.m; sourceTree = "<group>"; };
 		5E8A5DA41D3840B4000F8BC4 /* CoreCronetEnd2EndTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreCronetEnd2EndTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CoreCronetEnd2EndTests.m; sourceTree = "<group>"; };
 		6312AE4D1B1BF49B00341DEE /* GRPCClientTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GRPCClientTests.m; sourceTree = "<group>"; };
@@ -252,8 +249,6 @@
 		5E8A5DA51D3840B4000F8BC4 /* CoreCronetEnd2EndTests */ = {
 			isa = PBXGroup;
 			children = (
-				5E1BD3B41D3D74EC00A47325 /* fixture_h2_ssl_cronet.m */,
-				5E1BD3B31D3D736C00A47325 /* fixture.h */,
 				5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m */,
 			);
 			path = CoreCronetEnd2EndTests;
@@ -868,7 +863,6 @@
 			buildActionMask = 2147483647;
 			files = (
 				5E8A5DA71D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m in Sources */,
-				5E1BD3B51D3D74EC00A47325 /* fixture_h2_ssl_cronet.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-- 
GitLab