Skip to content

Commit

Permalink
feat(storageinsights): Adds samples for storage insights (GoogleCloud…
Browse files Browse the repository at this point in the history
  • Loading branch information
JesseLovelace authored May 9, 2024
1 parent 61e8c78 commit c392a20
Show file tree
Hide file tree
Showing 15 changed files with 720 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Copyright 2024 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
//
// https://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 Google.Cloud.StorageInsights.V1;
using GoogleCloudSamples;
using System;
using Xunit;

namespace StorageInsights.Samples.Tests
{
[Collection(nameof(StorageFixture))]
public class CreateInventoryReportConfigTest : IDisposable
{
private readonly StorageFixture _fixture;
private string _reportConfigName;

public CreateInventoryReportConfigTest(StorageFixture fixture) => _fixture = fixture;

[Fact]
public void TestCreateInventoryReportConfigSample()
{
// The permissions the service account needs sometimes needs a few minutes to propagate, so retry permission issues
RetryRobot robot = new RetryRobot() { ShouldRetry = (e) => e.Message.Contains("PermissionDenied") };
robot.Eventually(() =>
{
CreateInventoryReportConfigSample sample = new CreateInventoryReportConfigSample();
var reportConfig = sample.CreateInventoryReportConfig(_fixture.ProjectId, _fixture.BucketLocation,
_fixture.BucketNameSource,
_fixture.BucketNameSink);
Assert.NotNull(reportConfig.DisplayName);
_reportConfigName = reportConfig.Name;
}
);
}

public void Dispose()
{
try
{
_fixture.StorageInsights.DeleteReportConfig(_reportConfigName);
}
catch (Exception)
{
// Do nothing, we delete on a best effort basis.
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
// Copyright 2024 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
//
// https://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 Google.Api.Gax;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.StorageInsights.V1;
using GoogleCloudSamples;
using Xunit;

namespace StorageInsights.Samples.Tests;

[Collection(nameof(StorageFixture))]
public class DeleteInventoryReportConfigTest
{
private readonly StorageFixture _fixture;

public DeleteInventoryReportConfigTest(StorageFixture fixture) => _fixture = fixture;

[Fact]
public void TestDeleteInventoryReportConfig()
{
// The permissions the service account needs sometimes needs a few minutes to propagate, so retry permission issues
RetryRobot robot = new RetryRobot() { ShouldRetry = (e) => e.Message.Contains("PermissionDenied") };
ReportConfig reportConfig = null;
robot.Eventually(() =>
{
reportConfig = new CreateInventoryReportConfigSample().CreateInventoryReportConfig(_fixture.ProjectId,
_fixture.BucketLocation, _fixture.BucketNameSource,
_fixture.BucketNameSink);
});

DeleteInventoryReportConfigSample sample = new DeleteInventoryReportConfigSample();
sample.DeleteInventoryReportConfig(_fixture.ProjectId, _fixture.BucketLocation,
reportConfig.ReportConfigName.ReportConfigId);

PagedEnumerable<ListReportConfigsResponse, ReportConfig> reportConfigs = _fixture.StorageInsights.ListReportConfigs(
LocationName.Format(_fixture.ProjectId, _fixture.BucketLocation));

Assert.DoesNotContain(reportConfigs, config => config.Name.Equals(reportConfig.Name));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Copyright 2024 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
//
// https://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 Google.Cloud.StorageInsights.V1;
using GoogleCloudSamples;
using System;
using Xunit;

namespace StorageInsights.Samples.Tests;

[Collection(nameof(StorageFixture))]
public class EditInventoryReportConfigTest : IDisposable
{
private readonly StorageFixture _fixture;
private string _reportConfigName;

public EditInventoryReportConfigTest(StorageFixture fixture) => _fixture = fixture;

[Fact]
public void TestEditInventoryReportConfig()
{
ReportConfig reportConfig = null;
// The permissions the service account needs sometimes needs a few minutes to propagate, so retry permission issues
RetryRobot robot = new RetryRobot() { ShouldRetry = (e) => e.Message.Contains("PermissionDenied") };
robot.Eventually(() =>
{
reportConfig = new CreateInventoryReportConfigSample().CreateInventoryReportConfig(_fixture.ProjectId,
_fixture.BucketLocation, _fixture.BucketNameSource,
_fixture.BucketNameSink);
_reportConfigName = reportConfig.Name;
});
EditInventoryReportConfigSample sample = new EditInventoryReportConfigSample();
var updatedConfig = sample.EditInventoryReportConfig(_fixture.ProjectId, _fixture.BucketLocation,
reportConfig.ReportConfigName.ReportConfigId);

Assert.NotEqual(reportConfig.DisplayName, updatedConfig.DisplayName);
}

public void Dispose()
{
try
{
_fixture.StorageInsights.DeleteReportConfig(_reportConfigName);
}
catch (Exception)
{
// Do nothing, we delete on a best effort basis.
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Copyright 2024 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
//
// https://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 Google.Cloud.StorageInsights.V1;
using GoogleCloudSamples;
using System;
using Xunit;

namespace StorageInsights.Samples.Tests;

[Collection(nameof(StorageFixture))]
public class GetInventoryReportNamesTest : IDisposable
{
private readonly StorageFixture _fixture;
private string _reportConfigName;

public GetInventoryReportNamesTest(StorageFixture fixture) => _fixture = fixture;

[Fact]
public void TestGetInventoryReportNames()
{
ReportConfig reportConfig = null;
// The permissions the service account needs sometimes needs a few minutes to propagate, so retry permission issues
RetryRobot robot = new RetryRobot() { ShouldRetry = (e) => e.Message.Contains("PermissionDenied") };
robot.Eventually(() =>
{
reportConfig = new CreateInventoryReportConfigSample().CreateInventoryReportConfig(_fixture.ProjectId,
_fixture.BucketLocation, _fixture.BucketNameSource,
_fixture.BucketNameSink);
_reportConfigName = reportConfig.Name;
});
GetInventoryReportNamesSample sample = new GetInventoryReportNamesSample();
sample.GetInventoryReportNames(_fixture.ProjectId, _fixture.BucketLocation,
reportConfig.ReportConfigName.ReportConfigId);
/* We can't actually test for a report config name showing up here, because we create
* the bucket and inventory configs for this test, and it takes 24 hours for an
* inventory report to actually get written to the bucket.
* We could set up a hard-coded bucket, but that would probably introduce flakes.
* The best we can do is make sure the test runs without throwing an error
*/
}

public void Dispose()
{
try
{
_fixture.StorageInsights.DeleteReportConfig(_reportConfigName);
}
catch (Exception)
{
// Do nothing, we delete on a best effort basis.
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Copyright 2024 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
//
// https://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 Google.Cloud.StorageInsights.V1;
using GoogleCloudSamples;
using System;
using System.Linq;
using Xunit;

namespace StorageInsights.Samples.Tests;

[Collection(nameof(StorageFixture))]
public class ListInventoryReportConfigsTest : IDisposable
{
private readonly StorageFixture _fixture;
private string _reportConfigName;

public ListInventoryReportConfigsTest(StorageFixture fixture) => _fixture = fixture;

[Fact]
public void TestListInventoryReportConfigs()
{
// The permissions the service account needs sometimes needs a few minutes to propagate, so retry permission issues
RetryRobot robot = new RetryRobot() { ShouldRetry = (e) => e.Message.Contains("PermissionDenied") };
ReportConfig reportConfig = null;
robot.Eventually(() =>
{
reportConfig = new CreateInventoryReportConfigSample().CreateInventoryReportConfig(_fixture.ProjectId,
_fixture.BucketLocation, _fixture.BucketNameSource,
_fixture.BucketNameSink);
_reportConfigName = reportConfig.Name;
});

ListInventoryReportConfigsSample sample = new ListInventoryReportConfigsSample();
var reportConfigs = sample.ListInventoryReportConfigs(_fixture.ProjectId, _fixture.BucketLocation);
Assert.Contains(reportConfigs, config => config.Name.Contains(reportConfig.ReportConfigName.ReportConfigId));
}

public void Dispose()
{
try
{
_fixture.StorageInsights.DeleteReportConfig(_reportConfigName);
}
catch (Exception)
{
// Do nothing, we delete on a best effort basis.
}
}
}
Loading

0 comments on commit c392a20

Please sign in to comment.