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();
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
                }
        }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 9
0
        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"]);
                }
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 12
0
        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));
                }
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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());
            });
        }
Ejemplo n.º 15
0
        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());
                }
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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;
        }
Ejemplo n.º 18
0
        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));
                }
        }
Ejemplo n.º 19
0
        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);
                }
        }
Ejemplo n.º 20
0
        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();
            }
        }
Ejemplo n.º 21
0
 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();
 }
Ejemplo n.º 24
0
 public DatastoreFixture()
 {
     NamespaceId = IdGenerator.FromDateTime(prefix: "test-");
 }
 public ErrorReportingSnippets()
 {
     _testId = IdGenerator.FromDateTime();
 }
Ejemplo n.º 26
0
 private string GenerateStorageBucketName() => IdGenerator.FromDateTime(prefix: "bigquerytests-");
Ejemplo n.º 27
0
 internal string GenerateDatasetId() => IdGenerator.FromDateTime(prefix: DatasetPrefix);
Ejemplo n.º 28
0
 public DiagnosticsTests()
 {
     _testId    = IdGenerator.FromDateTime();
     _startTime = DateTimeOffset.UtcNow;
 }
Ejemplo n.º 29
0
        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
                });
            }
        }