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