|
@@ -15,18 +15,19 @@
|
|
|
* limitations under the License.
|
|
|
*/
|
|
|
|
|
|
-package queue;
|
|
|
+package org.apache.dolphinscheduler.service.queue;
|
|
|
|
|
|
-import org.apache.dolphinscheduler.service.queue.TaskPriority;
|
|
|
+import org.apache.dolphinscheduler.common.enums.Priority;
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
import org.junit.Assert;
|
|
|
import org.junit.Test;
|
|
|
|
|
|
-public class TaskPriorityTest {
|
|
|
+public class TaskPriorityQueueImplTest {
|
|
|
|
|
|
@Test
|
|
|
public void testSort() {
|
|
@@ -36,8 +37,8 @@ public class TaskPriorityTest {
|
|
|
List<TaskPriority> taskPrioritys = Arrays.asList(priorityOne, priorityThree, priorityTwo);
|
|
|
Collections.sort(taskPrioritys);
|
|
|
Assert.assertEquals(
|
|
|
- Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
- taskPrioritys
|
|
|
+ Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
+ taskPrioritys
|
|
|
);
|
|
|
|
|
|
priorityOne = new TaskPriority(0, 1, 0, 0, "default");
|
|
@@ -46,8 +47,8 @@ public class TaskPriorityTest {
|
|
|
taskPrioritys = Arrays.asList(priorityOne, priorityThree, priorityTwo);
|
|
|
Collections.sort(taskPrioritys);
|
|
|
Assert.assertEquals(
|
|
|
- Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
- taskPrioritys
|
|
|
+ Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
+ taskPrioritys
|
|
|
);
|
|
|
|
|
|
priorityOne = new TaskPriority(0, 0, 1, 0, "default");
|
|
@@ -56,8 +57,8 @@ public class TaskPriorityTest {
|
|
|
taskPrioritys = Arrays.asList(priorityOne, priorityThree, priorityTwo);
|
|
|
Collections.sort(taskPrioritys);
|
|
|
Assert.assertEquals(
|
|
|
- Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
- taskPrioritys
|
|
|
+ Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
+ taskPrioritys
|
|
|
);
|
|
|
|
|
|
priorityOne = new TaskPriority(0, 0, 0, 1, "default");
|
|
@@ -66,8 +67,8 @@ public class TaskPriorityTest {
|
|
|
taskPrioritys = Arrays.asList(priorityOne, priorityThree, priorityTwo);
|
|
|
Collections.sort(taskPrioritys);
|
|
|
Assert.assertEquals(
|
|
|
- Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
- taskPrioritys
|
|
|
+ Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
+ taskPrioritys
|
|
|
);
|
|
|
|
|
|
priorityOne = new TaskPriority(0, 0, 0, 0, "default_1");
|
|
@@ -76,8 +77,66 @@ public class TaskPriorityTest {
|
|
|
taskPrioritys = Arrays.asList(priorityOne, priorityThree, priorityTwo);
|
|
|
Collections.sort(taskPrioritys);
|
|
|
Assert.assertEquals(
|
|
|
- Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
- taskPrioritys
|
|
|
+ Arrays.asList(priorityOne, priorityTwo, priorityThree),
|
|
|
+ taskPrioritys
|
|
|
);
|
|
|
}
|
|
|
-}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void put() throws Exception {
|
|
|
+ TaskPriorityQueue queue = getPriorityQueue();
|
|
|
+ Assert.assertEquals(2, queue.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void take() throws Exception {
|
|
|
+ TaskPriorityQueue queue = getPriorityQueue();
|
|
|
+ int peekBeforeLength = queue.size();
|
|
|
+ queue.take();
|
|
|
+ Assert.assertTrue(queue.size() < peekBeforeLength);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void poll() throws Exception {
|
|
|
+ TaskPriorityQueue queue = getPriorityQueue();
|
|
|
+ int peekBeforeLength = queue.size();
|
|
|
+ queue.poll(1000, TimeUnit.MILLISECONDS);
|
|
|
+ queue.poll(1000, TimeUnit.MILLISECONDS);
|
|
|
+ Assert.assertTrue(queue.size() == 0);
|
|
|
+ System.out.println(System.currentTimeMillis());
|
|
|
+ queue.poll(1000, TimeUnit.MILLISECONDS);
|
|
|
+ System.out.println(System.currentTimeMillis());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void size() throws Exception {
|
|
|
+ Assert.assertTrue(getPriorityQueue().size() == 2);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * get queue
|
|
|
+ *
|
|
|
+ * @return queue
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ private TaskPriorityQueue getPriorityQueue() throws Exception {
|
|
|
+ TaskPriorityQueue queue = new TaskPriorityQueueImpl();
|
|
|
+ TaskPriority taskInstanceHigPriority = createTaskPriority(Priority.HIGH.getCode(), 1);
|
|
|
+ TaskPriority taskInstanceMediumPriority = createTaskPriority(Priority.MEDIUM.getCode(), 2);
|
|
|
+ queue.put(taskInstanceHigPriority);
|
|
|
+ queue.put(taskInstanceMediumPriority);
|
|
|
+ return queue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * create task priority
|
|
|
+ *
|
|
|
+ * @param priority
|
|
|
+ * @param processInstanceId
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private TaskPriority createTaskPriority(Integer priority, Integer processInstanceId) {
|
|
|
+ TaskPriority priorityOne = new TaskPriority(priority, processInstanceId, 0, 0, "default");
|
|
|
+ return priorityOne;
|
|
|
+ }
|
|
|
+}
|