1 /* 2 * Copyright 2019 Google LLC 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.google.cloud.tasks.v2.it; 17 18 import static org.junit.Assert.assertEquals; 19 20 import com.google.cloud.ServiceOptions; 21 import com.google.cloud.tasks.v2.CloudTasksClient; 22 import com.google.cloud.tasks.v2.CreateQueueRequest; 23 import com.google.cloud.tasks.v2.CreateTaskRequest; 24 import com.google.cloud.tasks.v2.DeleteQueueRequest; 25 import com.google.cloud.tasks.v2.DeleteTaskRequest; 26 import com.google.cloud.tasks.v2.GetQueueRequest; 27 import com.google.cloud.tasks.v2.GetTaskRequest; 28 import com.google.cloud.tasks.v2.HttpMethod; 29 import com.google.cloud.tasks.v2.HttpRequest; 30 import com.google.cloud.tasks.v2.ListQueuesRequest; 31 import com.google.cloud.tasks.v2.ListTasksRequest; 32 import com.google.cloud.tasks.v2.LocationName; 33 import com.google.cloud.tasks.v2.PauseQueueRequest; 34 import com.google.cloud.tasks.v2.Queue; 35 import com.google.cloud.tasks.v2.QueueName; 36 import com.google.cloud.tasks.v2.ResumeQueueRequest; 37 import com.google.cloud.tasks.v2.Task; 38 import com.google.cloud.tasks.v2.TaskName; 39 import com.google.protobuf.ByteString; 40 import java.io.IOException; 41 import java.nio.charset.Charset; 42 import java.util.UUID; 43 import org.junit.AfterClass; 44 import org.junit.BeforeClass; 45 import org.junit.Test; 46 47 public class ITSystemTest { 48 49 private static final String PROJECT_ID = ServiceOptions.getDefaultProjectId(); 50 private static final String LOCATION = "us-central1"; 51 private static final String LOCATION_NAME = LocationName.of(PROJECT_ID, LOCATION).toString(); 52 private static final String ID = UUID.randomUUID().toString().substring(0, 8); 53 private static final String QUEUE_ID = "test-queue-" + ID; 54 private static final String QUEUE_NAME = QueueName.of(PROJECT_ID, LOCATION, QUEUE_ID).toString(); 55 private static final String TASK_ID = "test-task-" + ID; 56 private static final String TASK_NAME = 57 TaskName.of(PROJECT_ID, LOCATION, QUEUE_ID, TASK_ID).toString(); 58 private static final String URL = "https://example.com/taskhandler"; 59 private static final String PAYLOAD = "Hello, World!"; 60 private static Queue queue; 61 private static Task task; 62 private static CloudTasksClient client; 63 64 @BeforeClass setUp()65 public static void setUp() throws IOException { 66 67 client = CloudTasksClient.create(); 68 69 /* create queue */ 70 Queue createQueue = 71 Queue.newBuilder().setName(QUEUE_NAME).setState(Queue.State.RUNNING).build(); 72 CreateQueueRequest queueRequest = 73 CreateQueueRequest.newBuilder().setParent(LOCATION_NAME).setQueue(createQueue).build(); 74 queue = client.createQueue(queueRequest); 75 76 /* create task */ 77 Task createTask = 78 Task.newBuilder() 79 .setName(TASK_NAME) 80 .setHttpRequest( 81 HttpRequest.newBuilder() 82 .setBody(ByteString.copyFrom(PAYLOAD, Charset.defaultCharset())) 83 .setUrl(URL) 84 .setHttpMethod(HttpMethod.POST) 85 .build()) 86 .build(); 87 CreateTaskRequest taskRequest = 88 CreateTaskRequest.newBuilder().setParent(QUEUE_NAME).setTask(createTask).build(); 89 task = client.createTask(taskRequest); 90 } 91 92 @AfterClass tearDown()93 public static void tearDown() { 94 95 /* delete task */ 96 DeleteTaskRequest taskRequest = DeleteTaskRequest.newBuilder().setName(TASK_NAME).build(); 97 client.deleteTask(taskRequest); 98 99 /* delete queue */ 100 DeleteQueueRequest queueRequest = DeleteQueueRequest.newBuilder().setName(QUEUE_NAME).build(); 101 client.deleteQueue(queueRequest); 102 client.close(); 103 } 104 105 @Test listQueuesTest()106 public void listQueuesTest() { 107 ListQueuesRequest request = ListQueuesRequest.newBuilder().setParent(LOCATION_NAME).build(); 108 for (Queue actual : client.listQueues(request).iterateAll()) { 109 if (queue.getName().equals(actual.getName())) { 110 assertQueue(queue, actual); 111 } 112 } 113 } 114 115 @Test getQueueTest()116 public void getQueueTest() { 117 GetQueueRequest request = GetQueueRequest.newBuilder().setName(QUEUE_NAME).build(); 118 assertQueue(queue, client.getQueue(request)); 119 } 120 121 @Test listTasksTest()122 public void listTasksTest() { 123 ListTasksRequest request = ListTasksRequest.newBuilder().setParent(QUEUE_NAME).build(); 124 for (Task actual : client.listTasks(request).iterateAll()) { 125 if (task.getName().equals(actual.getName())) { 126 assertTask(task, actual); 127 } 128 } 129 } 130 131 @Test pauseQueueTest()132 public void pauseQueueTest() { 133 PauseQueueRequest request = PauseQueueRequest.newBuilder().setName(QUEUE_NAME).build(); 134 Queue actual = client.pauseQueue(request); 135 assertEquals(Queue.State.PAUSED, actual.getState()); 136 } 137 138 @Test resumeQueueTest()139 public void resumeQueueTest() { 140 ResumeQueueRequest request = ResumeQueueRequest.newBuilder().setName(QUEUE_NAME).build(); 141 Queue actual = client.resumeQueue(request); 142 assertEquals(Queue.State.RUNNING, actual.getState()); 143 } 144 145 @Test getTaskTest()146 public void getTaskTest() { 147 GetTaskRequest request = GetTaskRequest.newBuilder().setName(TASK_NAME).build(); 148 assertTask(task, client.getTask(request)); 149 } 150 assertQueue(Queue expected, Queue actual)151 private void assertQueue(Queue expected, Queue actual) { 152 assertEquals(expected.getName(), actual.getName()); 153 assertEquals(expected.getRateLimits(), actual.getRateLimits()); 154 assertEquals(expected.getRetryConfig(), actual.getRetryConfig()); 155 assertEquals(expected.getState(), actual.getState()); 156 } 157 assertTask(Task expected, Task actual)158 private void assertTask(Task expected, Task actual) { 159 assertEquals(expected.getName(), actual.getName()); 160 assertEquals(expected.getHttpRequest(), actual.getHttpRequest()); 161 assertEquals(expected.getCreateTime(), actual.getCreateTime()); 162 assertEquals(expected.getDispatchDeadline(), actual.getDispatchDeadline()); 163 assertEquals(expected.getView(), actual.getView()); 164 } 165 } 166