/// <summary> /// Gets error events that contain the passed in testId in the message. Will poll /// and wait for the entries to appear. /// </summary> /// <param name="startTime">The earliest error event time that will be looked at.</param> /// <param name="testId">The test id to filter error events on.</param> /// <param name="minEntries">The minimum number of error events that should be waited for. /// If minEntries is zero this method will wait the full timeout before checking for the /// entries.</param> private IEnumerable <ErrorEvent> GetEvents(DateTime startTime, string testId, int minEntries) { TimeSpan totalSleepTime = TimeSpan.Zero; while (totalSleepTime < _timeout) { TimeSpan sleepTime = minEntries > 0 ? _sleepInterval : _timeout; totalSleepTime += sleepTime; Thread.Sleep(sleepTime); List <ErrorEvent> errorEvents = new List <ErrorEvent>(); var groups = _client.ListGroupStats(_projectName, s_oneHour); foreach (var group in groups) { ListEventsRequest request = new ListEventsRequest { ProjectName = _projectName.ToString(), GroupId = group.Group.GroupId, TimeRange = s_oneHour }; var events = _client.ListEvents(request); errorEvents.AddRange(events.Where(e => e.Message.Contains(testId))); } if (minEntries == 0 || errorEvents.Count() >= minEntries) { return(errorEvents); } } return(new List <ErrorEvent>()); }
public void ListGroupStats() { // Snippet: ListGroupStats(string,QueryTimeRange,string,int?,CallSettings) // Create client ErrorStatsServiceClient errorStatsServiceClient = ErrorStatsServiceClient.Create(); // Initialize request argument(s) string formattedProjectName = ErrorStatsServiceClient.FormatProjectName("[PROJECT]"); QueryTimeRange timeRange = new QueryTimeRange(); // Make the request IPagedEnumerable <ListGroupStatsResponse, ErrorGroupStats> response = errorStatsServiceClient.ListGroupStats(formattedProjectName, timeRange); // Iterate over all response items, lazily performing RPCs as required foreach (ErrorGroupStats item in response) { // Do something with each item Console.WriteLine(item); } // Or iterate over fixed-sized pages, lazily performing RPCs as required int pageSize = 10; foreach (FixedSizePage <ErrorGroupStats> page in response.AsPages().WithFixedSize(pageSize)) { // Do something with each page of items Console.WriteLine("A page of results:"); foreach (ErrorGroupStats item in page) { Console.WriteLine(item); } } // End snippet }
/// <summary>Snippet for ListGroupStats</summary> public void ListGroupStats_RequestObject() { // Snippet: ListGroupStats(ListGroupStatsRequest, CallSettings) // Create client ErrorStatsServiceClient errorStatsServiceClient = ErrorStatsServiceClient.Create(); // Initialize request argument(s) ListGroupStatsRequest request = new ListGroupStatsRequest { ProjectNameAsProjectName = new ProjectName("[PROJECT]"), GroupId = { "", }, ServiceFilter = new ServiceContextFilter(), TimeRange = new QueryTimeRange(), TimedCountDuration = new Duration(), Alignment = TimedCountAlignment.ErrorCountAlignmentUnspecified, AlignmentTime = new Timestamp(), Order = ErrorGroupOrder.GroupOrderUnspecified, }; // Make the request PagedEnumerable <ListGroupStatsResponse, ErrorGroupStats> response = errorStatsServiceClient.ListGroupStats(request); // Iterate over all response items, lazily performing RPCs as required foreach (ErrorGroupStats item in response) { // Do something with each item Console.WriteLine(item); } // Or iterate over pages (of server-defined size), performing one RPC per page foreach (ListGroupStatsResponse page in response.AsRawResponses()) { // Do something with each page of items Console.WriteLine("A page of results:"); foreach (ErrorGroupStats item in page) { // Do something with each item Console.WriteLine(item); } } // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required int pageSize = 10; Page <ErrorGroupStats> singlePage = response.ReadPage(pageSize); // Do something with the page of items Console.WriteLine($"A page of {pageSize} results (unless it's the final page):"); foreach (ErrorGroupStats item in singlePage) { // Do something with each item Console.WriteLine(item); } // Store the pageToken, for when the next page is required. string nextPageToken = singlePage.NextPageToken; // End snippet }
/// <summary>Snippet for ListGroupStats</summary> public void ListGroupStats_ResourceNames() { // Snippet: ListGroupStats(ProjectName, QueryTimeRange, string, int?, CallSettings) // Create client ErrorStatsServiceClient errorStatsServiceClient = ErrorStatsServiceClient.Create(); // Initialize request argument(s) ProjectName projectName = new ProjectName("[PROJECT]"); QueryTimeRange timeRange = new QueryTimeRange(); // Make the request PagedEnumerable <ListGroupStatsResponse, ErrorGroupStats> response = errorStatsServiceClient.ListGroupStats(projectName, timeRange); // Iterate over all response items, lazily performing RPCs as required foreach (ErrorGroupStats item in response) { // Do something with each item Console.WriteLine(item); } // Or iterate over pages (of server-defined size), performing one RPC per page foreach (ListGroupStatsResponse page in response.AsRawResponses()) { // Do something with each page of items Console.WriteLine("A page of results:"); foreach (ErrorGroupStats item in page) { // Do something with each item Console.WriteLine(item); } } // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required int pageSize = 10; Page <ErrorGroupStats> singlePage = response.ReadPage(pageSize); // Do something with the page of items Console.WriteLine($"A page of {pageSize} results (unless it's the final page):"); foreach (ErrorGroupStats item in singlePage) { // Do something with each item Console.WriteLine(item); } // Store the pageToken, for when the next page is required. string nextPageToken = singlePage.NextPageToken; // End snippet }
public void ListGroupStats() { string projectId = _fixture.ProjectId; // Snippet: ListGroupStats ErrorStatsServiceClient client = ErrorStatsServiceClient.Create(); string projectName = ErrorStatsServiceClient.FormatProjectName(projectId); IPagedEnumerable <ListGroupStatsResponse, ErrorGroupStats> groupStats = client.ListGroupStats( projectName, new QueryTimeRange { Period = Period._30Days }); foreach (ErrorGroupStats item in groupStats) { // Sample output: Group: 8002882452986879952; Count: 6; Services: SampleApp/1.0.0 IEnumerable <string> services = item.AffectedServices.Select(s => $"{s.Service}/{s.Version}"); Console.WriteLine($"Group: {item.Group.GroupId}; Count: {item.Count}; Services: {string.Join(", ", services)}"); } // End snippet }
/// <summary> /// Gets error events that contain the passed in testId in the message. Will poll /// and wait for the entries to appear. /// </summary> /// <param name="startTime">The earliest error event time that will be looked at.</param> /// <param name="testId">The test id to filter error events on.</param> /// <param name="minEntries">The minimum number of error events that should be waited for. /// If minEntries is zero this method will wait the full timeout before checking for the /// entries.</param> public IEnumerable <ErrorEvent> GetEvents(DateTime startTime, string testId, int minEntries) { return(GetEntries(minEntries, () => { List <ErrorEvent> errorEvents = new List <ErrorEvent>(); var groups = _client.ListGroupStats(_projectName, s_oneHour); foreach (var group in groups) { ListEventsRequest request = new ListEventsRequest { ProjectName = _projectName.ToString(), GroupId = group.Group.GroupId, TimeRange = s_oneHour }; var events = _client.ListEvents(request); errorEvents.AddRange(events.Where(e => e.Message.Contains(testId))); } return errorEvents; })); }