From 072b27a0e1f0ec459f388f5b62a82cd42c2476db Mon Sep 17 00:00:00 2001
From: Kai Reinhard <K.Reinhard@micromata.de>
Date: Fri, 28 Dec 2018 10:19:14 +0000
Subject: [PATCH] Job queuing...

---
 borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/JobQueueTest.java |   50 ++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/JobQueueTest.java b/borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/JobQueueTest.java
index 63fa15a..230b0c9 100644
--- a/borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/JobQueueTest.java
+++ b/borgbutler-core/src/test/java/de/micromata/borgbutler/jobs/JobQueueTest.java
@@ -12,15 +12,22 @@
 import java.nio.file.Files;
 import java.nio.file.attribute.PosixFilePermissions;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class JobQueueTest {
     private Logger log = LoggerFactory.getLogger(JobQueueTest.class);
     private static String bashScript = "#!/bin/bash\n" +
             "COUNTER=0\n" +
-            "while [  $COUNTER -lt $1 ]; do\n" +
-            "  sleep 0.1\n" +
-            "  echo The counter is $COUNTER\n" +
+            "while [ $COUNTER -lt $1 ]; do\n" +
+            "  if [ $COUNTER -eq $2 ]; then\n" +
+            "    echo Error on counter $COUNTER >&2\n" +
+            "    exit 2\n" +
+            "  fi\n" +
+            "  sleep 0.01\n" +
+            "  echo The counter is $COUNTER >&2\n" +
             "  let COUNTER=COUNTER+1 \n" +
-            "done";
+            "done\n" +
+            "echo $COUNTER\n";
 
     private static File file;
 
@@ -34,7 +41,38 @@
 
     @Test
     void test() {
-        TestJob job = new TestJob(10, file);
-        job.execute();
+        JobQueue queue = new JobQueue();
+        assertEquals(0, queue.getQueueSize());
+        queue.append(new TestJob(10, file));
+        assertEquals(1, queue.getQueueSize());
+        queue.append(new TestJob(5, 2, file));
+        assertEquals(2, queue.getQueueSize());
+        queue.append(new TestJob(10, file));
+        assertEquals(2, queue.getQueueSize());
+        TestJob job1 = (TestJob)queue.getQueuedJob(10);
+        int counter = 100;
+        while (job1.getStatus() != AbstractJob.Status.RUNNING && counter-- > 0) {
+            try {
+                Thread.sleep(10);
+            } catch (InterruptedException ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
+        assertEquals(AbstractJob.Status.RUNNING, job1.getStatus());
+        TestJob job2 = (TestJob)queue.getQueuedJob(5);
+        assertEquals(AbstractJob.Status.QUEUED, job2.getStatus());
+        counter = 100;
+        while (job2.getStatus() != AbstractJob.Status.RUNNING && counter-- > 0) {
+            try {
+                Thread.sleep(10);
+            } catch (InterruptedException ex) {
+                log.error(ex.getMessage(), ex);
+            }
+        }
+        queue.append(new TestJob(10, file));
+        TestJob job3 = (TestJob)queue.getQueuedJob(10);
+        assertEquals(AbstractJob.Status.QUEUED, job3.getStatus());
+        queue.waitForQueue(10);
+        assertEquals(0, queue.getQueueSize());
     }
 }

--
Gitblit v1.10.0