def _list_groups(client):
    """List Error Groups from the last 60 seconds.

    This class provides a wrapper around making calls to the GAX
    API. It's used by the system tests to find the appropriate error group
    to verify the error was successfully reported.

    :type client: :class:`~google.cloud.error_reporting.client.Client`
    :param client: The client containing a project and credentials.

    :rtype: :class:`~google.gax.ResourceIterator`
    :returns: Iterable of :class:`~.error_stats_service_pb2.ErrorGroupStats`.
    """
    gax_api = error_stats_service_client.ErrorStatsServiceClient(
        credentials=client._credentials)
    project_name = gax_api.project_path(client.project)

    time_range = error_stats_service_pb2.QueryTimeRange()
    time_range.period = error_stats_service_pb2.QueryTimeRange.PERIOD_1_HOUR

    duration = Duration(seconds=60 * 60)

    return gax_api.list_group_stats(project_name,
                                    time_range,
                                    timed_count_duration=duration)
    def test_list_events(self, mock_create_stub):
        # Mock gRPC layer
        grpc_stub = mock.Mock()
        mock_create_stub.return_value = grpc_stub

        client = error_stats_service_client.ErrorStatsServiceClient()

        # Mock request
        project_name = client.project_path('[PROJECT]')
        group_id = 'groupId506361563'

        # Mock response
        next_page_token = ''
        error_events_element = common_pb2.ErrorEvent()
        error_events = [error_events_element]
        expected_response = error_stats_service_pb2.ListEventsResponse(
            next_page_token=next_page_token, error_events=error_events)
        grpc_stub.ListEvents.return_value = expected_response

        paged_list_response = client.list_events(project_name, group_id)
        resources = list(paged_list_response)
        self.assertEqual(1, len(resources))
        self.assertEqual(expected_response.error_events[0], resources[0])

        grpc_stub.ListEvents.assert_called_once()
        args, kwargs = grpc_stub.ListEvents.call_args
        self.assertEqual(len(args), 2)
        self.assertEqual(len(kwargs), 1)
        self.assertIn('metadata', kwargs)
        actual_request = args[0]

        expected_request = error_stats_service_pb2.ListEventsRequest(
            project_name=project_name, group_id=group_id)
        self.assertEqual(expected_request, actual_request)
    def test_delete_events(self, mock_create_stub):
        # Mock gRPC layer
        grpc_stub = mock.Mock()
        mock_create_stub.return_value = grpc_stub

        client = error_stats_service_client.ErrorStatsServiceClient()

        # Mock request
        project_name = client.project_path('[PROJECT]')

        # Mock response
        expected_response = error_stats_service_pb2.DeleteEventsResponse()
        grpc_stub.DeleteEvents.return_value = expected_response

        response = client.delete_events(project_name)
        self.assertEqual(expected_response, response)

        grpc_stub.DeleteEvents.assert_called_once()
        args, kwargs = grpc_stub.DeleteEvents.call_args
        self.assertEqual(len(args), 2)
        self.assertEqual(len(kwargs), 1)
        self.assertIn('metadata', kwargs)
        actual_request = args[0]

        expected_request = error_stats_service_pb2.DeleteEventsRequest(
            project_name=project_name)
        self.assertEqual(expected_request, actual_request)
    def test_delete_events_exception(self, mock_create_stub):
        # Mock gRPC layer
        grpc_stub = mock.Mock()
        mock_create_stub.return_value = grpc_stub

        client = error_stats_service_client.ErrorStatsServiceClient()

        # Mock request
        project_name = client.project_path('[PROJECT]')

        # Mock exception response
        grpc_stub.DeleteEvents.side_effect = CustomException()

        self.assertRaises(errors.GaxError, client.delete_events, project_name)
    def test_list_group_stats_exception(self, mock_create_stub):
        # Mock gRPC layer
        grpc_stub = mock.Mock()
        mock_create_stub.return_value = grpc_stub

        client = error_stats_service_client.ErrorStatsServiceClient()

        # Mock request
        project_name = client.project_path('[PROJECT]')
        time_range = error_stats_service_pb2.QueryTimeRange()

        # Mock exception response
        grpc_stub.ListGroupStats.side_effect = CustomException()

        paged_list_response = client.list_group_stats(project_name, time_range)
        self.assertRaises(errors.GaxError, list, paged_list_response)
    def test_list_events_exception(self, mock_create_stub):
        # Mock gRPC layer
        grpc_stub = mock.Mock()
        mock_create_stub.return_value = grpc_stub

        client = error_stats_service_client.ErrorStatsServiceClient()

        # Mock request
        project_name = client.project_path('[PROJECT]')
        group_id = 'groupId506361563'

        # Mock exception response
        grpc_stub.ListEvents.side_effect = CustomException()

        paged_list_response = client.list_events(project_name, group_id)
        self.assertRaises(errors.GaxError, list, paged_list_response)