18 #include "google/cloud/internal/getenv.h" 19 #include "google/cloud/testing_util/assert_ok.h" 23 namespace spanner_testing {
26 google::cloud::spanner::Database* DatabaseEnvironment::db_;
27 google::cloud::internal::DefaultPRNG* DatabaseEnvironment::generator_;
29 void DatabaseEnvironment::SetUp() {
31 google::cloud::internal::GetEnv(
"GOOGLE_CLOUD_PROJECT").value_or(
"");
32 ASSERT_FALSE(project_id.empty());
34 google::cloud::internal::GetEnv(
"GOOGLE_CLOUD_CPP_SPANNER_INSTANCE")
36 ASSERT_FALSE(instance_id.empty());
38 generator_ =
new google::cloud::internal::DefaultPRNG(
39 google::cloud::internal::MakeDefaultPRNG());
42 db_ =
new spanner::Database(project_id, instance_id, database_id);
44 std::cout <<
"Creating database and table " << std::flush;
45 spanner::DatabaseAdminClient admin_client;
46 auto database_future =
47 admin_client.CreateDatabase(*db_, {R
"""(CREATE TABLE Singers ( 48 SingerId INT64 NOT NULL, 49 FirstName STRING(1024), 51 ) PRIMARY KEY (SingerId))"""}); 53 int const timeout = 120;
54 while (++i < timeout) {
55 auto status = database_future.wait_for(std::chrono::seconds(1));
56 if (status == std::future_status::ready)
break;
57 std::cout <<
'.' << std::flush;
60 std::cout <<
"TIMEOUT\n";
63 auto database = database_future.get();
64 ASSERT_STATUS_OK(database);
65 std::cout <<
"DONE\n";
68 void DatabaseEnvironment::TearDown() {
69 spanner::DatabaseAdminClient admin_client;
70 auto drop_status = admin_client.DropDatabase(*db_);
71 EXPECT_STATUS_OK(drop_status);
std::string RandomDatabaseName(google::cloud::internal::DefaultPRNG &generator)
Create a random database name given a PRNG generator.
#define SPANNER_CLIENT_NS