File: vine_python_tag.py

package info (click to toggle)
cctools 1%3A7.14.5-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 36,956 kB
  • sloc: ansic: 114,614; python: 29,532; cpp: 20,313; sh: 13,675; perl: 4,056; xml: 3,688; makefile: 1,436
file content (44 lines) | stat: -rwxr-xr-x 1,213 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#! /usr/bin/env python

# taskvine python binding tests
# tests for missing/recursive inputs/outputs.

import sys
import ndcctools.taskvine as vine

port_file = None
try:
    port_file = sys.argv[1]
except IndexError:
    sys.stderr.write("Usage: {} PORTFILE\n".format(sys.argv[0]))
    raise

desired_tag_order = "7 5 9 6 3 8 2 1".split()
alpha_order = sorted(desired_tag_order)
done_order = []

q = vine.Manager(port=0)
with open(port_file, "w") as f:
    print("Writing port {port} to file {file}".format(port=q.port, file=port_file))
    f.write(str(q.port))
print(vine.__file__)

for tag in alpha_order:
    t = vine.Task("/bin/echo hello tag {}".format(tag))
    t.set_tag(tag)
    q.submit(t)

for tag in desired_tag_order:
    while not q.empty():
        t = q.wait_for_tag(tag, 10)
        if t:
            done_order.append(t.tag)
            break

print("desired order: {}".format(desired_tag_order))
print("returned order: {}".format(done_order))

correct_order = all(map(lambda pair: pair[0] == pair[1], zip(desired_tag_order, done_order)))
if not correct_order or (len(done_order) != len(desired_tag_order)):
    raise Exception("Incorrect order")
# vim: set sts=4 sw=4 ts=4 expandtab ft=python: