Skip to content

Commit 658c94b

Browse files
authored
test(bigtable): clarify which admin integration tests run, and when (#7518)
1 parent 37fa36b commit 658c94b

9 files changed

Lines changed: 51 additions & 50 deletions

ci/kokoro/macos/builds/bazel.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ if should_run_integration_tests; then
109109
"--test_env=GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_A=${GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_A}"
110110
"--test_env=GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_B=${GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_B}"
111111
"--test_env=GOOGLE_CLOUD_CPP_BIGTABLE_TEST_SERVICE_ACCOUNT=${GOOGLE_CLOUD_CPP_BIGTABLE_TEST_SERVICE_ACCOUNT}"
112-
"--test_env=ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS=${ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS:-no}"
113112

114113
# Storage
115114
"--test_env=GOOGLE_CLOUD_CPP_STORAGE_TEST_BUCKET_NAME=${GOOGLE_CLOUD_CPP_STORAGE_TEST_BUCKET_NAME}"

ci/kokoro/windows/build-bazel.ps1

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,6 @@ if (Integration-Tests-Enabled) {
167167
}
168168
}
169169
${env:GRPC_DEFAULT_SSL_ROOTS_FILE_PATH}="${env:KOKORO_GFILE_DIR}/roots.pem"
170-
$enable_bigtable_admin_integration_tests="no"
171-
if (Test-Path env:ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS) {
172-
$enable_bigtable_admin_integration_tests=${env:ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS}
173-
}
174170

175171
$integration_flags=@(
176172
# Common configuration
@@ -188,7 +184,6 @@ if (Integration-Tests-Enabled) {
188184
"--test_env=GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_A=${env:GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_A}",
189185
"--test_env=GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_B=${env:GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_B}",
190186
"--test_env=GOOGLE_CLOUD_CPP_BIGTABLE_TEST_SERVICE_ACCOUNT=${env:GOOGLE_CLOUD_CPP_BIGTABLE_TEST_SERVICE_ACCOUNT}",
191-
"--test_env=ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS=${enable_bigtable_admin_integration_tests}",
192187

193188
# Storage
194189
"--test_env=GOOGLE_CLOUD_CPP_STORAGE_TEST_BUCKET_NAME=${env:GOOGLE_CLOUD_CPP_STORAGE_TEST_BUCKET_NAME}",

google/cloud/bigtable/ci/run_integration_tests_emulator_cmake.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ ctest_args=("$@")
3636
export CBT_INSTANCE_ADMIN_EMULATOR_CMD="${BINARY_DIR}/google/cloud/bigtable/tests/instance_admin_emulator"
3737
source module /google/cloud/bigtable/tools/run_emulator_utils.sh
3838

39-
export ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS="yes"
40-
4139
cd "${BINARY_DIR}"
4240
start_emulators 8480 8490
4341

google/cloud/bigtable/testing/table_integration_test.cc

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ namespace cloud {
2626
namespace bigtable {
2727
namespace testing {
2828

29+
using ::google::cloud::internal::GetEnv;
2930
using ::testing::ContainerEq;
3031
using ::testing::IsEmpty;
3132

@@ -36,19 +37,15 @@ std::string TableTestEnvironment::zone_b_;
3637
google::cloud::internal::DefaultPRNG TableTestEnvironment::generator_;
3738
std::string TableTestEnvironment::table_id_;
3839
bool TableTestEnvironment::using_cloud_bigtable_emulator_;
40+
bool TableAdminTestEnvironment::skip_test_;
3941

4042
TableTestEnvironment::TableTestEnvironment() {
41-
project_id_ =
42-
google::cloud::internal::GetEnv("GOOGLE_CLOUD_PROJECT").value_or("");
43-
instance_id_ = google::cloud::internal::GetEnv(
44-
"GOOGLE_CLOUD_CPP_BIGTABLE_TEST_INSTANCE_ID")
45-
.value_or("");
46-
zone_a_ =
47-
google::cloud::internal::GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_A")
48-
.value_or("");
49-
zone_b_ =
50-
google::cloud::internal::GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_B")
51-
.value_or("");
43+
project_id_ = GetEnv("GOOGLE_CLOUD_PROJECT").value_or("");
44+
instance_id_ =
45+
GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_INSTANCE_ID").value_or("");
46+
zone_a_ = GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_A").value_or("");
47+
zone_b_ = GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_B").value_or("");
48+
using_cloud_bigtable_emulator_ = GetEnv("BIGTABLE_EMULATOR_HOST").has_value();
5249
}
5350

5451
void TableTestEnvironment::SetUp() {
@@ -57,9 +54,6 @@ void TableTestEnvironment::SetUp() {
5754
ASSERT_FALSE(zone_a_.empty());
5855
ASSERT_FALSE(zone_b_.empty());
5956

60-
using_cloud_bigtable_emulator_ =
61-
google::cloud::internal::GetEnv("BIGTABLE_EMULATOR_HOST").has_value();
62-
6357
generator_ = google::cloud::internal::MakeDefaultPRNG();
6458

6559
auto admin_client =
@@ -107,6 +101,20 @@ std::string TableTestEnvironment::RandomInstanceId() {
107101
return google::cloud::bigtable::testing::RandomInstanceId(generator_);
108102
}
109103

104+
void TableAdminTestEnvironment::SetUp() {
105+
skip_test_ =
106+
GetEnv("ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS").value_or("") != "yes" &&
107+
!TableTestEnvironment::UsingCloudBigtableEmulator();
108+
109+
if (skip_test_) GTEST_SKIP();
110+
TableTestEnvironment::SetUp();
111+
}
112+
113+
void TableAdminTestEnvironment::TearDown() {
114+
if (skip_test_) GTEST_SKIP();
115+
TableTestEnvironment::TearDown();
116+
}
117+
110118
void TableIntegrationTest::SetUp() {
111119
admin_client_ = bigtable::MakeAdminClient(TableTestEnvironment::project_id());
112120
table_admin_ = absl::make_unique<bigtable::TableAdmin>(

google/cloud/bigtable/testing/table_integration_test.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,19 @@ class TableTestEnvironment : public ::testing::Environment {
7272
static bool using_cloud_bigtable_emulator_;
7373
};
7474

75+
/// Environment specific to TableAdmin integration tests
76+
class TableAdminTestEnvironment : public TableTestEnvironment {
77+
public:
78+
TableAdminTestEnvironment() = default;
79+
80+
void SetUp() override;
81+
void TearDown() override;
82+
83+
// Skip tests that run only against production, unless explicitly enabled by
84+
// setting the `ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS` environment variable.
85+
static bool skip_test_;
86+
};
87+
7588
/**
7689
* Fixture for integration tests that need to create tables and check their
7790
* contents.

google/cloud/bigtable/tests/admin_backup_integration_test.cc

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,6 @@ class AdminBackupIntegrationTest
4545
std::unique_ptr<bigtable::InstanceAdmin> instance_admin_;
4646

4747
void SetUp() override {
48-
if (google::cloud::internal::GetEnv(
49-
"ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS")
50-
.value_or("") != "yes") {
51-
GTEST_SKIP();
52-
}
53-
5448
TableIntegrationTest::SetUp();
5549

5650
std::shared_ptr<bigtable::AdminClient> admin_client =
@@ -170,6 +164,6 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
170164
int main(int argc, char* argv[]) {
171165
::testing::InitGoogleMock(&argc, argv);
172166
(void)::testing::AddGlobalTestEnvironment(
173-
new google::cloud::bigtable::testing::TableTestEnvironment);
167+
new google::cloud::bigtable::testing::TableAdminTestEnvironment);
174168
return RUN_ALL_TESTS();
175169
}

google/cloud/bigtable/tests/admin_iam_policy_integration_test.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ class AdminIAMPolicyIntegrationTest
3636
std::string service_account_;
3737

3838
void SetUp() override {
39+
TableIntegrationTest::SetUp();
40+
3941
service_account_ = google::cloud::internal::GetEnv(
4042
"GOOGLE_CLOUD_CPP_BIGTABLE_TEST_SERVICE_ACCOUNT")
4143
.value_or("");
4244
ASSERT_FALSE(service_account_.empty());
4345

44-
TableIntegrationTest::SetUp();
4546
admin_client_ =
4647
MakeAdminClient(testing::TableTestEnvironment::project_id());
4748
table_admin_ = absl::make_unique<TableAdmin>(

google/cloud/bigtable/tests/admin_integration_test.cc

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,6 @@ class AdminIntegrationTest : public bigtable::testing::TableIntegrationTest {
4343
std::unique_ptr<bigtable::TableAdmin> table_admin_;
4444

4545
void SetUp() override {
46-
if (google::cloud::internal::GetEnv(
47-
"ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS")
48-
.value_or("") != "yes") {
49-
GTEST_SKIP();
50-
}
5146
TableIntegrationTest::SetUp();
5247

5348
std::shared_ptr<bigtable::AdminClient> admin_client =
@@ -396,6 +391,6 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
396391
int main(int argc, char* argv[]) {
397392
::testing::InitGoogleMock(&argc, argv);
398393
(void)::testing::AddGlobalTestEnvironment(
399-
new google::cloud::bigtable::testing::TableTestEnvironment);
394+
new google::cloud::bigtable::testing::TableAdminTestEnvironment);
400395
return RUN_ALL_TESTS();
401396
}

google/cloud/bigtable/tests/instance_admin_integration_test.cc

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ namespace bigtable {
3434
GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_BEGIN
3535
namespace {
3636

37+
using ::google::cloud::internal::GetEnv;
3738
using ::google::cloud::testing_util::ContainsOnce;
3839
using ::testing::Contains;
3940
using ::testing::EndsWith;
@@ -45,25 +46,22 @@ class InstanceAdminIntegrationTest
4546
: public ::google::cloud::testing_util::IntegrationTest {
4647
protected:
4748
void SetUp() override {
48-
if (google::cloud::internal::GetEnv(
49-
"ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS")
50-
.value_or("") != "yes") {
49+
auto emulator_present =
50+
GetEnv("BIGTABLE_INSTANCE_ADMIN_EMULATOR_HOST").has_value();
51+
auto run_prod_tests =
52+
GetEnv("ENABLE_BIGTABLE_ADMIN_INTEGRATION_TESTS").value_or("") == "yes";
53+
if (!emulator_present && !run_prod_tests) {
5154
GTEST_SKIP();
5255
}
53-
project_id_ =
54-
google::cloud::internal::GetEnv("GOOGLE_CLOUD_PROJECT").value_or("");
56+
57+
project_id_ = GetEnv("GOOGLE_CLOUD_PROJECT").value_or("");
5558
ASSERT_FALSE(project_id_.empty());
56-
zone_a_ =
57-
google::cloud::internal::GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_A")
58-
.value_or("");
59+
zone_a_ = GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_A").value_or("");
5960
ASSERT_FALSE(zone_a_.empty());
60-
zone_b_ =
61-
google::cloud::internal::GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_B")
62-
.value_or("");
61+
zone_b_ = GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_ZONE_B").value_or("");
6362
ASSERT_FALSE(zone_b_.empty());
64-
service_account_ = google::cloud::internal::GetEnv(
65-
"GOOGLE_CLOUD_CPP_BIGTABLE_TEST_SERVICE_ACCOUNT")
66-
.value_or("");
63+
service_account_ =
64+
GetEnv("GOOGLE_CLOUD_CPP_BIGTABLE_TEST_SERVICE_ACCOUNT").value_or("");
6765
ASSERT_FALSE(service_account_.empty());
6866

6967
auto instance_admin_client = bigtable::MakeInstanceAdminClient(project_id_);

0 commit comments

Comments
 (0)