public async stt::Task WriteLogEntriesResourceNamesAsync() { moq::Mock <LoggingServiceV2.LoggingServiceV2Client> mockGrpcClient = new moq::Mock <LoggingServiceV2.LoggingServiceV2Client>(moq::MockBehavior.Strict); WriteLogEntriesRequest request = new WriteLogEntriesRequest { LogNameAsLogName = LogName.FromProjectLog("[PROJECT]", "[LOG]"), Resource = new ga::MonitoredResource(), Labels = { { "key8a0b6e3c", "value60c16320" }, }, Entries = { new LogEntry(), }, }; WriteLogEntriesResponse expectedResponse = new WriteLogEntriesResponse { }; mockGrpcClient.Setup(x => x.WriteLogEntriesAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <WriteLogEntriesResponse>(stt::Task.FromResult(expectedResponse), null, null, null, null)); LoggingServiceV2Client client = new LoggingServiceV2ClientImpl(mockGrpcClient.Object, null); WriteLogEntriesResponse responseCallSettings = await client.WriteLogEntriesAsync(request.LogNameAsLogName, request.Resource, request.Labels, request.Entries, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None)); xunit::Assert.Same(expectedResponse, responseCallSettings); WriteLogEntriesResponse responseCancellationToken = await client.WriteLogEntriesAsync(request.LogNameAsLogName, request.Resource, request.Labels, request.Entries, st::CancellationToken.None); xunit::Assert.Same(expectedResponse, responseCancellationToken); mockGrpcClient.VerifyAll(); }
public void WriteLogEntriesResourceNames() { moq::Mock <LoggingServiceV2.LoggingServiceV2Client> mockGrpcClient = new moq::Mock <LoggingServiceV2.LoggingServiceV2Client>(moq::MockBehavior.Strict); WriteLogEntriesRequest request = new WriteLogEntriesRequest { LogNameAsLogName = LogName.FromProjectLog("[PROJECT]", "[LOG]"), Resource = new ga::MonitoredResource(), Labels = { { "key8a0b6e3c", "value60c16320" }, }, Entries = { new LogEntry(), }, }; WriteLogEntriesResponse expectedResponse = new WriteLogEntriesResponse { }; mockGrpcClient.Setup(x => x.WriteLogEntries(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse); LoggingServiceV2Client client = new LoggingServiceV2ClientImpl(mockGrpcClient.Object, null); WriteLogEntriesResponse response = client.WriteLogEntries(request.LogNameAsLogName, request.Resource, request.Labels, request.Entries); xunit::Assert.Same(expectedResponse, response); mockGrpcClient.VerifyAll(); }
public static int Main(string[] args) { // Read projectId from args if (args.Length != 1) { Console.WriteLine("Usage: Project ID must be passed as first argument."); Console.WriteLine(); return(1); } string projectId = args[0]; // Create client LoggingServiceV2Client client = LoggingServiceV2Client.Create(); // Initialize request argument(s) LogName logName = LogName.FromProjectLog(projectId, $"test-{Guid.NewGuid()}"); MonitoredResource resource = new MonitoredResource(); IDictionary <string, string> labels = new Dictionary <string, string>(); IEnumerable <LogEntry> entries = new List <LogEntry>(); // Call API method WriteLogEntriesResponse response = client.WriteLogEntries(logName, resource, labels, entries); // Show the result Console.WriteLine(response); // Success Console.WriteLine("Smoke test passed OK"); return(0); }
public void DeleteLog() { moq::Mock <LoggingServiceV2.LoggingServiceV2Client> mockGrpcClient = new moq::Mock <LoggingServiceV2.LoggingServiceV2Client>(moq::MockBehavior.Strict); DeleteLogRequest request = new DeleteLogRequest { LogNameAsLogName = LogName.FromProjectLog("[PROJECT]", "[LOG]"), }; wkt::Empty expectedResponse = new wkt::Empty { }; mockGrpcClient.Setup(x => x.DeleteLog(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(expectedResponse); LoggingServiceV2Client client = new LoggingServiceV2ClientImpl(mockGrpcClient.Object, null); client.DeleteLog(request.LogName); mockGrpcClient.VerifyAll(); }
/// <summary> /// Gets the full log name. /// See: https://cloud.google.com/logging/docs/api/reference/rest/v2/LogEntry. /// </summary> /// <param name="name">The name of the log which will be used with the project or organization /// to create a full log name.</param> public string GetFullLogName(string name) { GaxPreconditions.CheckNotNullOrEmpty(name, nameof(name)); switch (Kind) { case LogTargetKind.Project: return(LogName.FromProjectLog(ProjectId, name).ToString()); case LogTargetKind.Organization: return(LogName.FromOrganizationLog(OrganizationId, name).ToString()); default: Debug.Assert(false, $"Unsupported location {Kind}"); return(null); } }
public async stt::Task DeleteLogAsync() { moq::Mock <LoggingServiceV2.LoggingServiceV2Client> mockGrpcClient = new moq::Mock <LoggingServiceV2.LoggingServiceV2Client>(moq::MockBehavior.Strict); DeleteLogRequest request = new DeleteLogRequest { LogNameAsLogName = LogName.FromProjectLog("[PROJECT]", "[LOG]"), }; wkt::Empty expectedResponse = new wkt::Empty { }; mockGrpcClient.Setup(x => x.DeleteLogAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <wkt::Empty>(stt::Task.FromResult(expectedResponse), null, null, null, null)); LoggingServiceV2Client client = new LoggingServiceV2ClientImpl(mockGrpcClient.Object, null); await client.DeleteLogAsync(request.LogName, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None)); await client.DeleteLogAsync(request.LogName, st::CancellationToken.None); mockGrpcClient.VerifyAll(); }
public void Overview() { DateTime startTime = DateTime.UtcNow; string projectId = _fixture.ProjectId; string logId = _fixture.LogId + $"-{Guid.NewGuid()}"; string fileName = "log4net.xml"; string resourceName = typeof(GoogleStackdriverAppenderSnippets).Namespace + ".log4net-template.xml"; string xml; using (var stream = typeof(GoogleStackdriverAppenderSnippets).GetTypeInfo().Assembly .GetManifestResourceStream(resourceName)) { using (var reader = new StreamReader(stream)) { xml = reader.ReadToEnd(); } } xml = xml.Replace("PROJECT_ID", projectId).Replace("LOG_ID", logId); Assert.False(File.Exists(fileName), "Test would overwrite existing file"); File.WriteAllText(fileName, xml); try { // Resource: log4net-template.xml log4net_template // Sample: Overview // Configure log4net to use Google Stackdriver logging from the XML configuration file. XmlConfigurator.Configure(LogManager.GetRepository(GetType().GetTypeInfo().Assembly), new FileInfo("log4net.xml")); // Retrieve a logger for this context. ILog log = LogManager.GetLogger(typeof(Program)); // Log some information. This log entry will be sent to Google Stackdriver Logging. log.Info("An exciting log entry!"); // Flush buffered log entries before program exit. // This is required because log entries are buffered locally before being sent to StackDriver. // LogManager.Flush() only works in the full .NET framework (not in .NET Core): bool flushCompleted = LogManager.Flush(10_000); // On .NET Core, the specific repository needs to be flushed: bool repositoryFlushCompleted = ((IFlushable)LogManager.GetRepository(GetType().GetTypeInfo().Assembly)).Flush(10_000); // End sample Assert.True(repositoryFlushCompleted); var logClient = LoggingServiceV2Client.Create(); var logName = LogName.FromProjectLog(projectId, logId); string formattedTime = XmlConvert.ToString(startTime.AddMinutes(-3), XmlDateTimeSerializationMode.Utc); string filter = $"timestamp >= \"{formattedTime}\" AND logName=\"{logName}\" AND \"An exciting log entry!\""; // Wait up to 30 seconds for the log entry to appear in StackDriver. for (int i = 0; i < 30; i++) { var logEntry = logClient.ListLogEntries( resourceNames: new[] { ProjectName.FromProject(projectId) }, filter: filter, orderBy: "timestamp desc") .FirstOrDefault(); if (logEntry != null) { Assert.Contains("An exciting log entry!", logEntry.TextPayload); return; } Thread.Sleep(1_000); } Assert.False(true, "Log entry failed to appear in StackDriver."); } finally { File.Delete(fileName); } }