• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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