Search in sources :

Example 1 with TaskQueueScannerQueueInfo

use of com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueScannerQueueInfo in project appengine-java-standard by GoogleCloudPlatform.

the class QueueStatistics method fetchForQueuesAsync.

/**
 * See {@link Queue#fetchStatistics()}.
 */
static Future<List<QueueStatistics>> fetchForQueuesAsync(final List<Queue> queues, QueueApiHelper helper, double deadlineInSeconds) {
    TaskQueueFetchQueueStatsRequest.Builder statsRequest = TaskQueueFetchQueueStatsRequest.newBuilder();
    for (Queue queue : queues) {
        statsRequest.addQueueName(ByteString.copyFromUtf8(queue.getQueueName()));
    }
    statsRequest.setMaxNumTasks(0);
    ApiConfig apiConfig = new ApiConfig();
    apiConfig.setDeadlineInSeconds(deadlineInSeconds);
    Future<TaskQueueFetchQueueStatsResponse> responseFuture = helper.makeAsyncCall("FetchQueueStats", statsRequest.build(), TaskQueueFetchQueueStatsResponse.getDefaultInstance(), apiConfig);
    return new FutureAdapter<TaskQueueFetchQueueStatsResponse, List<QueueStatistics>>(responseFuture) {

        @Override
        protected List<QueueStatistics> wrap(TaskQueueFetchQueueStatsResponse statsResponse) {
            if (statsResponse.getQueueStatsCount() != queues.size()) {
                throw new QueueFailureException("Unable to obtain queue statistics");
            }
            List<QueueStatistics> resultList = new ArrayList<QueueStatistics>();
            for (int i = 0; i < statsResponse.getQueueStatsCount(); ++i) {
                TaskQueueFetchQueueStatsResponse.QueueStats stats = statsResponse.getQueueStats(i);
                if (!stats.hasScannerInfo()) {
                    throw new TransientFailureException("Queue statistics temporarily unavailable");
                }
                TaskQueueScannerQueueInfo scannerInfo = stats.getScannerInfo();
                if (!scannerInfo.hasRequestsInFlight()) {
                    throw new TransientFailureException("Queue statistics temporarily unavailable");
                }
                if (!scannerInfo.hasEnforcedRate()) {
                    throw new TransientFailureException("Queue statistics temporarily unavailable");
                }
                resultList.add(new QueueStatistics(queues.get(i).getQueueName(), stats));
            }
            return resultList;
        }
    };
}
Also used : ArrayList(java.util.ArrayList) ApiConfig(com.google.apphosting.api.ApiProxy.ApiConfig) TaskQueueScannerQueueInfo(com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueScannerQueueInfo) TaskQueueFetchQueueStatsResponse(com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueFetchQueueStatsResponse) TaskQueueFetchQueueStatsRequest(com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueFetchQueueStatsRequest)

Example 2 with TaskQueueScannerQueueInfo

use of com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueScannerQueueInfo in project appengine-java-standard by GoogleCloudPlatform.

the class LocalTaskQueueTest method testFetchQueueStats.

@Test
public void testFetchQueueStats() throws Exception {
    TaskQueueFetchQueueStatsRequest request = TaskQueueFetchQueueStatsRequest.newBuilder().addQueueName(ByteString.copyFromUtf8("default")).build();
    TaskQueueFetchQueueStatsResponse response = localService.fetchQueueStats(new Status(), request);
    assertThat(response.getQueueStatsCount()).isEqualTo(1);
    TaskQueueFetchQueueStatsResponse.QueueStats stats = response.getQueueStats(0);
    assertThat(stats.hasScannerInfo()).isTrue();
    TaskQueueScannerQueueInfo scannerInfo = stats.getScannerInfo();
    assertThat(scannerInfo.hasRequestsInFlight()).isTrue();
    assertThat(scannerInfo.hasEnforcedRate()).isTrue();
    assertThat((0 == stats.getNumTasks() && -1 == stats.getOldestEtaUsec()) || (0 < stats.getNumTasks() && 0 <= stats.getOldestEtaUsec())).isTrue();
    assertThat(scannerInfo.getEnforcedRate()).isAtLeast(0);
    assertThat(scannerInfo.getExecutedLastMinute()).isAtLeast(0);
    assertThat(scannerInfo.getRequestsInFlight()).isAtLeast(0);
}
Also used : Status(com.google.appengine.tools.development.LocalRpcService.Status) TaskQueueFetchQueueStatsResponse(com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueFetchQueueStatsResponse) TaskQueueScannerQueueInfo(com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueScannerQueueInfo) TaskQueueFetchQueueStatsRequest(com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueFetchQueueStatsRequest) Test(org.junit.Test)

Aggregations

TaskQueueFetchQueueStatsRequest (com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueFetchQueueStatsRequest)2 TaskQueueFetchQueueStatsResponse (com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueFetchQueueStatsResponse)2 TaskQueueScannerQueueInfo (com.google.appengine.api.taskqueue.TaskQueuePb.TaskQueueScannerQueueInfo)2 Status (com.google.appengine.tools.development.LocalRpcService.Status)1 ApiConfig (com.google.apphosting.api.ApiProxy.ApiConfig)1 ArrayList (java.util.ArrayList)1 Test (org.junit.Test)1