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;
}
};
}
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);
}
Aggregations