bigtable/api/BigtableTest/Tests.cs (105 lines of code) (raw):

// Copyright(c) 2018 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy of // the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. using System; using Xunit; using Google.Cloud.Bigtable.V2; using Grpc.Core; namespace GoogleCloudSamples.Bigtable { public class QuickStartTests { readonly CommandLineRunner _quickStart = new CommandLineRunner() { Main = QuickStart.Main, Command = "dotnet run" }; [Fact] public void TestRunQuickStart() { var output = _quickStart.Run(); Assert.Equal(0, output.ExitCode); } } public class HelloWorldTests { readonly CommandLineRunner _helloWorld = new CommandLineRunner() { Main = HelloWorld.Main, Command = "dotnet run" }; [Fact] public void TestRunHelloWorld() { var output = _helloWorld.Run(); Assert.Equal(0, output.ExitCode); } } public class BigtableFixture : IDisposable { public void Dispose() { try { // Delete table created from running the tests. CommandLineRunner runner = new CommandLineRunner() { Main = TableAdmin.Main, Command = "TableAdmin" }; runner.Run("deleteTable", TableId); } catch (RpcException ex) when (ex.Status.StatusCode == StatusCode.NotFound) { } } public string ProjectId { get; private set; } = Environment.GetEnvironmentVariable("GOOGLE_PROJECT_ID"); // Allow environment variables to override the default instance and table names. public string InstanceId { get; private set; } = Environment.GetEnvironmentVariable("TEST_BIGTABLE_INSTANCE") ?? "my-instance"; private static readonly string s_randomTableName = "my-table-" + TestUtil.RandomName(); public string TableId = Environment.GetEnvironmentVariable("TEST_BIGTABLE_TABLE") ?? s_randomTableName; public bool s_initializedTestSetup { get; set; } = false; } public class BigtableTests : IClassFixture<BigtableFixture> { readonly BigtableFixture _fixture; readonly CommandLineRunner _tableAdminCmd = new CommandLineRunner() { Main = TableAdmin.Main, Command = "TableAdmin" }; readonly CommandLineRunner _instanceAdminCmd = new CommandLineRunner() { Main = InstanceAdmin.Main, Command = "InstanceAdmin" }; public BigtableTests(BigtableFixture fixture) { _fixture = fixture; lock (this) { if (!_fixture.s_initializedTestSetup) { _fixture.s_initializedTestSetup = true; InitializeTestSetup(); } } } void InitializeTestSetup() { // Create a table _tableAdminCmd.Run("createTable", _fixture.TableId); } [Fact] public void TestListTables() { string expectedOutput = $"Table ID: {_fixture.TableId}"; ConsoleOutput output = _tableAdminCmd.Run("listTables"); Assert.Equal(0, output.ExitCode); Assert.Contains(expectedOutput, output.Stdout); } [Fact] public void TestListInstances() { ConsoleOutput output = _instanceAdminCmd.Run("listInstances"); Assert.Equal(0, output.ExitCode); Assert.Contains(_fixture.InstanceId, output.Stdout); } } }