bigtable/api/SnippetsTest/ReadTest.cs (116 lines of code) (raw):

// Copyright (c) 2020 Google LLC. // // 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 System.Linq; using Xunit; using Google.Cloud.Bigtable.Common.V2; using Google.Cloud.Bigtable.V2; using Google.Cloud.Bigtable.Admin.V2; using Snapshooter; using System.Threading.Tasks; namespace Reads_ { public class BigtableClientFixture : IDisposable { public readonly string projectId = Environment.GetEnvironmentVariable("GOOGLE_PROJECT_ID"); public readonly string instanceId = Environment.GetEnvironmentVariable("TEST_BIGTABLE_INSTANCE"); public readonly string tableId = $"mobile-time-series-{Guid.NewGuid().ToString().Substring(0, 8)}"; private readonly BigtableTableAdminClient _bigtableTableAdminClient; public BigtableClientFixture() { BigtableClient bigtableClient = BigtableClient.Create(); _bigtableTableAdminClient = BigtableTableAdminClient.Create(); Table table = new Table { Granularity = Table.Types.TimestampGranularity.Millis }; table.ColumnFamilies.Add("stats_summary", new ColumnFamily()); CreateTableRequest createTableRequest = new CreateTableRequest { ParentAsInstanceName = new InstanceName(projectId, instanceId), Table = table, TableId = tableId, }; _bigtableTableAdminClient.CreateTable(createTableRequest); TableName tableName = new TableName(projectId, instanceId, tableId); BigtableVersion timestamp = new BigtableVersion(new DateTime(2020, 1, 10, 14, 0, 0, DateTimeKind.Utc)); MutateRowsRequest.Types.Entry[] entries = { Mutations.CreateEntry(new BigtableByteString("phone#4c410523#20190501"), Mutations.SetCell("stats_summary", "connected_cell", "1", timestamp), Mutations.SetCell("stats_summary", "connected_wifi", "1", timestamp), Mutations.SetCell("stats_summary", "os_build", "PQ2A.190405.003", timestamp)), Mutations.CreateEntry(new BigtableByteString("phone#4c410523#20190502"), Mutations.SetCell("stats_summary", "connected_cell", "1", timestamp), Mutations.SetCell("stats_summary", "connected_wifi", "1", timestamp), Mutations.SetCell("stats_summary", "os_build", "PQ2A.190405.004", timestamp)), Mutations.CreateEntry(new BigtableByteString("phone#4c410523#20190505"), Mutations.SetCell("stats_summary", "connected_cell", "0", timestamp), Mutations.SetCell("stats_summary", "connected_wifi", "1", timestamp), Mutations.SetCell("stats_summary", "os_build", "PQ2A.190406.000", timestamp)), Mutations.CreateEntry(new BigtableByteString("phone#5c10102#20190501"), Mutations.SetCell("stats_summary", "connected_cell", "1", timestamp), Mutations.SetCell("stats_summary", "connected_wifi", "1", timestamp), Mutations.SetCell("stats_summary", "os_build", "PQ2A.190401.002", timestamp)), Mutations.CreateEntry(new BigtableByteString("phone#5c10102#20190502"), Mutations.SetCell("stats_summary", "connected_cell", "1", timestamp), Mutations.SetCell("stats_summary", "connected_wifi", "0", timestamp), Mutations.SetCell("stats_summary", "os_build", "PQ2A.190406.000", timestamp)) }; bigtableClient.MutateRows(tableName, entries); } public void Dispose() { _bigtableTableAdminClient.DeleteTable(new Google.Cloud.Bigtable.Common.V2.TableName(projectId, instanceId, tableId)); } } public class ReadSnippetsTest : IClassFixture<BigtableClientFixture> { private readonly BigtableClientFixture _fixture; public ReadSnippetsTest(BigtableClientFixture fixture) { _fixture = fixture; } [Fact] public void TestReadRow() { Reads.ReadSnippets readSnippets = new Reads.ReadSnippets(); Snapshooter.Xunit.Snapshot.Match(readSnippets.ReadRow(_fixture.projectId, _fixture.instanceId, _fixture.tableId)); } [Fact] public void TestReadRowPartial() { Reads.ReadSnippets readSnippets = new Reads.ReadSnippets(); Snapshooter.Xunit.Snapshot.Match(readSnippets.ReadRowPartial(_fixture.projectId, _fixture.instanceId, _fixture.tableId)); } [Fact] public async Task TestReadRowsAsync() { Reads.ReadSnippets readSnippets = new Reads.ReadSnippets(); Snapshooter.Xunit.Snapshot.Match(await readSnippets.ReadRows(_fixture.projectId, _fixture.instanceId, _fixture.tableId)); } [Fact] public async Task TestReadRowRangeAsync() { Reads.ReadSnippets readSnippets = new Reads.ReadSnippets(); Snapshooter.Xunit.Snapshot.Match(await readSnippets.ReadRowRange(_fixture.projectId, _fixture.instanceId, _fixture.tableId)); } [Fact] public async Task TestReadRowRangesAsync() { Reads.ReadSnippets readSnippets = new Reads.ReadSnippets(); Snapshooter.Xunit.Snapshot.Match(await readSnippets.ReadRowRanges(_fixture.projectId, _fixture.instanceId, _fixture.tableId)); } [Fact] public async Task TestReadPrefixAsync() { Reads.ReadSnippets readSnippets = new Reads.ReadSnippets(); Snapshooter.Xunit.Snapshot.Match(await readSnippets.ReadPrefix(_fixture.projectId, _fixture.instanceId, _fixture.tableId)); } [Fact] public async Task TestReadFilter() { Reads.ReadSnippets readSnippets = new Reads.ReadSnippets(); Snapshooter.Xunit.Snapshot.Match(await readSnippets.ReadFilter(_fixture.projectId, _fixture.instanceId, _fixture.tableId)); } } }