public CloudTraceTest() { _projectId = TestEnvironment.GetTestProjectId(); _testId = IdGenerator.FromDateTime(); _startTime = Timestamp.FromDateTime(DateTime.UtcNow); // Set up a fake HttpContext to trace with. var response = new HttpResponse(File.CreateText(Path.GetTempFileName())); var request = new HttpRequest("some-file", $"http://some-site.com/{_testId}", ""); HttpContext.Current = new HttpContext(request, response); }
public ErrorReportingTest(LogValidatingFixture fixture) { // The rate limiter instance is static and only set once. If we do not reset it at the // beginning of each test the qps will not change. This is dependent on the tests not // running in parallel, which they don't. RateLimiter.Reset(); _testId = IdGenerator.FromDateTime(); _fixture = fixture; }
public TraceSnippetsTests() { _testId = IdGenerator.FromDateTime(); _server = GetTestServer <TraceTestApplication.Startup>(); _client = _server.CreateClient(); _startTime = Timestamp.FromDateTime(DateTime.UtcNow); // The rate limiter instance is static and only set once. If we do not reset it at the // beginning of each tests the qps will not change. This is dependent on the tests not // running in parallel. RateLimiter.Reset(); }
public async Task UseGoogleDiagnostics_ConfiguresComponents() { var testId = IdGenerator.FromDateTime(); var startTime = DateTime.UtcNow; var hostBuilder = GetHostBuilder(webHostBuilder => webHostBuilder.ConfigureServices(services => services.AddGoogleDiagnosticsForAspNetCore( TestEnvironment.GetTestProjectId(), EntryData.Service, EntryData.Version))); using var server = GetTestServer(hostBuilder); using var client = server.CreateClient(); await TestTrace(testId, startTime, client); await TestLogging(testId, startTime, client); await TestErrorReporting(testId, client); }
public async Task Logging_Scope() { string testId = IdGenerator.FromDateTime(); DateTime startTime = DateTime.UtcNow; var builder = new WebHostBuilder().UseStartup <NoBufferResourceLoggerTestApplication>(); using (var server = new TestServer(builder)) using (var client = server.CreateClient()) { await client.GetAsync($"/Main/Scope/{testId}"); var results = _polling.GetEntries(startTime, testId, 1, LogSeverity.Critical); var message = MainController.GetMessage(nameof(MainController.Scope), testId); Assert.Equal(message, results.Single().JsonPayload.Fields["message"].StringValue); Assert.Contains("Scope => ", results.Single().JsonPayload.Fields["scope"].StringValue); } }
public async Task UseGoogleDiagnostics_ConfiguresServices_Default() { Skip.If((await Platform.InstanceAsync()).Type == PlatformType.Unknown, "Default configuration can only be used when running on GCP."); var testId = IdGenerator.FromDateTime(); var startTime = DateTime.UtcNow; var hostBuilder = GetHostBuilder(webHostBuilder => webHostBuilder.ConfigureServices(services => services.AddGoogleDiagnosticsForAspNetCore())); using var server = GetTestServer(hostBuilder); using var client = server.CreateClient(); await TestTrace(testId, startTime, client); await TestLogging(testId, startTime, client); await TestErrorReporting(testId, client, verifyServiceAndVersion : false); }
public DiagnosticsSnippetsTests() { // Sample: UseGoogleDiagnostics var webHostBuilder = new WebHostBuilder() // Replace ProjectId with your Google Cloud Project ID. // Replace Service with a name or identifier for the service. // Replace Version with a version for the service. .UseGoogleDiagnostics(ProjectId, Service, Version) .UseStartup <Startup>(); // End sample _server = new TestServer(webHostBuilder); _client = _server.CreateClient(); _testId = IdGenerator.FromDateTime(); _startTime = DateTime.UtcNow; }
public DiagnosticsSnippetsTests() { #if NETCOREAPP3_1 var hostBuilder = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup <TestApplication.DiagnosticsStartup>()); hostBuilder.ConfigureWebHost(webBuilder => webBuilder.UseTestServer()); #elif NETCOREAPP2_1 || NET461 var hostBuilder = new WebHostBuilder() .UseStartup <TestApplication.DiagnosticsStartup>(); #else #error unknown target framework #endif _server = GetTestServer(hostBuilder); _client = _server.CreateClient(); _testId = IdGenerator.FromDateTime(); _startTime = DateTimeOffset.UtcNow; }
public async Task Logging_Labels() { string testId = IdGenerator.FromDateTime(); DateTime startTime = DateTime.UtcNow; var builder = new WebHostBuilder().UseStartup <WarningWithLabelsLoggerTestApplication>(); using (var server = new TestServer(builder)) using (var client = server.CreateClient()) { await client.GetAsync($"/Main/Warning/{testId}"); var results = _polling.GetEntries(startTime, testId, 1, LogSeverity.Warning); var entry = results.Single(); Assert.Equal(3, entry.Labels.Count); Assert.Equal("some-value", entry.Labels["some-key"]); Assert.Equal("Hello, World!", entry.Labels["Foo"]); Assert.NotEmpty(entry.Labels["trace_identifier"]); } }
public async Task Logging_Trace() { string traceId = "105445aa7843bc8bf206b12000100f00"; string testId = IdGenerator.FromDateTime(); DateTime startTime = DateTime.UtcNow; var builder = new WebHostBuilder().UseStartup <NoBufferWarningLoggerTestApplication>(); using (var server = new TestServer(builder)) using (var client = server.CreateClient()) { client.DefaultRequestHeaders.Add(TraceHeaderContext.TraceHeader, TraceHeaderContext.Create(traceId, 81237123, null).ToString()); await client.GetAsync($"/Main/Critical/{testId}"); var results = _polling.GetEntries(startTime, testId, 1, LogSeverity.Critical); Assert.Contains(TestEnvironment.GetTestProjectId(), results.Single().Trace); Assert.Contains(traceId, results.Single().Trace); } }
private string CreateRequesterPaysBucket() { string name = IdGenerator.FromDateTime(prefix: "dotnet-requesterpays-"); RequesterPaysClient.CreateBucket(RequesterPaysProjectId, new Bucket { Name = name, Billing = new Bucket.BillingData { RequesterPays = true } }, new CreateBucketOptions { PredefinedAcl = PredefinedBucketAcl.PublicReadWrite, PredefinedDefaultObjectAcl = PredefinedObjectAcl.PublicRead }); SleepAfterBucketCreateDelete(); // TODO: We shouldn't need the project ID here. RequesterPaysClient.UploadObject(name, SmallObject, "text/plain", new MemoryStream(SmallContent), new UploadObjectOptions { UserProject = RequesterPaysProjectId }); return(name); }
public async Task Logging_SizedBufferNoLogs() { string testId = IdGenerator.FromDateTime(); DateTime startTime = DateTime.UtcNow; var builder = new WebHostBuilder().UseStartup <SizedBufferErrorLoggerTestApplication>(); using (TestServer server = new TestServer(builder)) using (var client = server.CreateClient()) { await client.GetAsync($"/Main/Warning/{testId}"); await client.GetAsync($"/Main/Error/{testId}"); await client.GetAsync($"/Main/Critical/{testId}"); // No entries should be found as not enough entries were created to // flush the buffer. Assert.Empty(_polling.GetEntries(startTime, testId, 0, LogSeverity.Default)); } }
public async Task UseGoogleDiagnostics_ValidateDependencyInjection() { var testId = IdGenerator.FromDateTime(); var startTime = DateTime.UtcNow; var hostBuilder = GetHostBuilder(webHostBuilder => webHostBuilder .UseDefaultServiceProvider(options => options.ValidateScopes = true) .ConfigureServices(services => services.AddGoogleDiagnosticsForAspNetCore( TestEnvironment.GetTestProjectId(), EntryData.Service, EntryData.Version, traceOptions: TraceOptions.Create(retryOptions: RetryOptions.NoRetry(ExceptionHandling.Propagate)), loggingOptions: LoggingOptions.Create(retryOptions: RetryOptions.NoRetry(ExceptionHandling.Propagate)), errorReportingOptions: ErrorReportingOptions.CreateInstance(retryOptions: RetryOptions.NoRetry(ExceptionHandling.Propagate))))); using var server = GetTestServer(hostBuilder); using var client = server.CreateClient(); await TestTrace(testId, startTime, client); await TestLogging(testId, startTime, client); await TestErrorReporting(testId, client); }
public async Task Logging_MonitoredResource() { string testId = IdGenerator.FromDateTime(); using (TestServer server = GetTestServer <NoBufferResourceLoggerTestApplication>()) using (var client = server.CreateClient()) { await client.GetAsync($"/Main/Warning/{testId}"); await client.GetAsync($"/Main/Error/{testId}"); await client.GetAsync($"/Main/Critical/{testId}"); } _fixture.AddValidator(testId, results => { Assert.Equal(3, results.Count()); var resourceType = NoBufferResourceLoggerTestApplication.Resource.Type; var buildResources = results.Where(e => e.Resource.Type.Equals(resourceType)); Assert.Equal(3, buildResources.Count()); }); }
public async Task Logging_MonitoredResource() { string testId = IdGenerator.FromDateTime(); DateTime startTime = DateTime.UtcNow; var builder = new WebHostBuilder().UseStartup <NoBufferResourceLoggerTestApplication>(); using (TestServer server = new TestServer(builder)) using (var client = server.CreateClient()) { await client.GetAsync($"/Main/Warning/{testId}"); await client.GetAsync($"/Main/Error/{testId}"); await client.GetAsync($"/Main/Critical/{testId}"); var results = _polling.GetEntries(startTime, testId, 3, LogSeverity.Warning); Assert.Equal(3, results.Count()); var resourceType = NoBufferResourceLoggerTestApplication.Resource.Type; var buildResources = results.Where(e => e.Resource.Type.Equals(resourceType)); Assert.Equal(3, buildResources.Count()); } }
public async Task UseGoogleDiagnostics_ConfiguresComponentsFromHostBuilderContext() { var testId = IdGenerator.FromDateTime(); var startTime = DateTime.UtcNow; var configurationData = new Dictionary <string, string> { { "project_id", TestEnvironment.GetTestProjectId() }, { "module_id", EntryData.Service }, { "version_id", EntryData.Version } }; var hostBuilder = GetHostBuilder(webHostBuilder => webHostBuilder.UseGoogleDiagnostics( ctx => ctx.Configuration["project_id"], ctx => ctx.Configuration["module_id"], ctx => ctx.Configuration["version_id"])) .ConfigureAppConfiguration((hostContext, configBuilder) => configBuilder.AddInMemoryCollection(configurationData)); using var server = GetTestServer(hostBuilder); using var client = server.CreateClient(); await TestTrace(testId, startTime, client); await TestLogging(testId, startTime, client); await TestErrorReporting(testId, client); }
public LoggingSnippetsTests() { _testId = IdGenerator.FromDateTime(); IWebHostBuilder builder; #if NETCOREAPP2_0 // Sample: RegisterGoogleLogger2 builder = new WebHostBuilder() .ConfigureServices(services => { // Replace ProjectId with your Google Cloud Project ID. services.AddSingleton <ILoggerProvider>(sp => GoogleLoggerProvider.Create(sp, ProjectId)); }) .UseStartup <Startup>(); // End sample #else builder = new WebHostBuilder().UseStartup <LoggingTestApplication>(); #endif _server = new TestServer(builder); _client = _server.CreateClient(); _startTime = DateTime.UtcNow; }
public async Task Logging_SizedBuffer() { string testId = IdGenerator.FromDateTime(); DateTime startTime = DateTime.UtcNow; var builder = new WebHostBuilder().UseStartup <SizedBufferErrorLoggerTestApplication>(); using (TestServer server = new TestServer(builder)) using (var client = server.CreateClient()) { for (int i = 0; i < 250; i++) { await client.GetAsync($"/Main/Debug/{testId}"); await client.GetAsync($"/Main/Info/{testId}"); await client.GetAsync($"/Main/Warning/{testId}"); await client.GetAsync($"/Main/Error/{testId}"); await client.GetAsync($"/Main/Critical/{testId}"); await client.GetAsync($"/Main/Exception/{testId}"); } // Just check that a large portion of logs entires were pushed. Not all // will be pushed as some may be in the buffer. var results = _polling.GetEntries(startTime, testId, 500, LogSeverity.Default); Assert.True(results.Count() >= 500); Assert.Null(results.FirstOrDefault(l => l.Severity == LogSeverity.Debug)); Assert.Null(results.FirstOrDefault(l => l.Severity == LogSeverity.Info)); Assert.Null(results.FirstOrDefault(l => l.Severity == LogSeverity.Warning)); Assert.NotNull(results.FirstOrDefault(l => l.Severity == LogSeverity.Error)); Assert.NotNull(results.FirstOrDefault(l => l.Severity == LogSeverity.Critical)); } }
public async Task Logging_FormatParameter() { string testId = IdGenerator.FromDateTime(); DateTime startTime = DateTime.UtcNow; var builder = new WebHostBuilder().UseStartup <NoBufferResourceLoggerTestApplication>(); using (var server = new TestServer(builder)) using (var client = server.CreateClient()) { await client.GetAsync($"/Main/FormatParameters/{testId}"); var results = _polling.GetEntries(startTime, testId, 1, LogSeverity.Critical); var message = MainController.GetMessage(nameof(MainController.FormatParameters), testId); var json = results.Single().JsonPayload.Fields; Assert.Equal(message, json["message"].StringValue); var formatParams = json["format_parameters"]?.StructValue?.Fields; Assert.NotNull(formatParams); Assert.Equal(3, formatParams.Count); Assert.Equal(nameof(MainController.FormatParameters), formatParams["message"].StringValue); Assert.Equal(testId, formatParams["id"].StringValue); Assert.Equal("{message} - {id}", formatParams["{OriginalFormat}"].StringValue); } }
public StorageFixture() { Client = StorageClient.Create(); BucketPrefix = IdGenerator.FromDateTime(prefix: "tests-", suffix: "-"); LargeContent = Encoding.UTF8.GetBytes(string.Join("\n", Enumerable.Repeat("All work and no play makes Jack a dull boy.", 500))); CreateBucket(SingleVersionBucket, false); CreateBucket(MultiVersionBucket, true); CreateAndPopulateReadBucket(); CreateBucket(BucketBeginningWithZ, false); CreateBucket(LabelsTestBucket, false); CreateBucket(InitiallyEmptyBucket, false); RequesterPaysClient = CreateRequesterPaysClient(); if (RequesterPaysClient != null) { RequesterPaysProjectId = Environment.GetEnvironmentVariable(RequesterPaysProjectEnvironmentVariable); if (string.IsNullOrEmpty(RequesterPaysProjectId)) { throw new Exception($"{RequesterPaysCredentialsEnvironmentVariable} set, but not {RequesterPaysProjectEnvironmentVariable}"); } RequesterPaysBucket = CreateRequesterPaysBucket(); } }
public StorageFixture() { Client = StorageClient.Create(); Bucket = IdGenerator.FromDateTime(prefix: "tests-", suffix: "-data-protection"); Client.CreateBucket(ProjectId, Bucket); }
public LoggingSnippetsTests() { _testId = IdGenerator.FromDateTime(); _startTime = DateTime.UtcNow; }
public DatastoreSnippetFixture() { NamespaceId = IdGenerator.FromDateTime(prefix: "test-"); AddSampleBooks(); AddSampleTasks(); }
public DatastoreFixture() { NamespaceId = IdGenerator.FromDateTime(prefix: "test-"); }
public ErrorReportingSnippets() { _testId = IdGenerator.FromDateTime(); }
private string GenerateStorageBucketName() => IdGenerator.FromDateTime(prefix: "bigquerytests-");
internal string GenerateDatasetId() => IdGenerator.FromDateTime(prefix: DatasetPrefix);
public DiagnosticsTests() { _testId = IdGenerator.FromDateTime(); _startTime = DateTimeOffset.UtcNow; }
private string CreateRequesterPaysBucket() { string name = IdGenerator.FromDateTime(prefix: "dotnet-requesterpays-"); CreateBucket(); AddServiceAccountBinding(); CreateObject(); return(name); // Adds the service account associated with the application default credentials as a writer for the bucket. // Note: this assumes the default credentials *are* a service account. If we've got a compute credential, // this will cause a problem - but in reality, our tests always run with a service account. void AddServiceAccountBinding() { var credential = (ServiceAccountCredential)GoogleCredential.GetApplicationDefault().UnderlyingCredential; string serviceAccountEmail = credential.Id; var policy = RequesterPaysClient.GetBucketIamPolicy(name, new GetBucketIamPolicyOptions { UserProject = RequesterPaysProjectId }); // Note: we assume there are no conditions in the policy, as we've only just created the bucket. var writerRole = "roles/storage.objectAdmin"; Policy.BindingsData writerBinding = null; foreach (var binding in policy.Bindings) { if (binding.Role == writerRole) { writerBinding = binding; break; } } if (writerBinding == null) { writerBinding = new Policy.BindingsData { Role = writerRole, Members = new List <string>() }; policy.Bindings.Add(writerBinding); } writerBinding.Members.Add($"serviceAccount:{serviceAccountEmail}"); RequesterPaysClient.SetBucketIamPolicy(name, policy, new SetBucketIamPolicyOptions { UserProject = RequesterPaysProjectId }); } void CreateBucket() { RequesterPaysClient.CreateBucket(RequesterPaysProjectId, new Bucket { Name = name, Billing = new Bucket.BillingData { RequesterPays = true } }); SleepAfterBucketCreateDelete(); } void CreateObject() { RequesterPaysClient.UploadObject(name, SmallObject, "text/plain", new MemoryStream(SmallContent), new UploadObjectOptions { UserProject = RequesterPaysProjectId }); } }