aboutsummaryrefslogtreecommitdiffstats
path: root/tests/wqueue.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/wqueue.py')
-rwxr-xr-xtests/wqueue.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/wqueue.py b/tests/wqueue.py
new file mode 100755
index 0000000..837fb26
--- /dev/null
+++ b/tests/wqueue.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python3
+
+import fcntl
+import time
+import subprocess
+import os
+
+QUEUE_FILE = 'queue.txt'
+COMMAND = './command.sh'
+
+def do_job(command=None, arg=None):
+ assert(command)
+ assert(arg)
+ print('arg:', arg)
+ print('doing operation with arg')
+ ret = subprocess.check_call([command, arg])
+ print('ret:', ret)
+ return ret == 0
+
+def read_next_job_arg():
+ with open(QUEUE_FILE, 'r') as f:
+ line = f.readline()
+ return line.strip()
+
+def pop_job_arg():
+ queue = QUEUE_FILE
+ queue_tmp = queue + '.tmp'
+ linecount = 0
+ with open(queue, 'r') as fi, open(queue_tmp, 'w') as fo:
+ for line in fi:
+ linecount += 1
+ if linecount == 1:
+ continue
+ fo.write(line)
+ os.rename(queue_tmp, queue)
+
+#with open('queue.txt', 'w') as f:
+# fcntl.lockf(f, fcntl.LOCK_EX)
+# time.sleep(9999)
+
+while True:
+ job_arg = read_next_job_arg()
+ if do_job(command=COMMAND, arg=job_arg):
+ pop_job_arg()