File: client.py

package info (click to toggle)
pmix 6.0.0%2Breally5.0.9-2
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 11,756 kB
  • sloc: ansic: 125,921; sh: 4,265; python: 2,530; makefile: 2,109; xml: 1,611; perl: 1,151; lex: 138
file content (74 lines) | stat: -rwxr-xr-x 2,416 bytes parent folder | download | duplicates (5)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env python3

from pmix import *
import time
import threading

termEvent = threading.Event()

def default_evhandler(evhdlr:int, status:int,
                      source:dict, info:list, results:list):
    print("DEFAULT HANDLER")
    return PMIX_EVENT_ACTION_COMPLETE,None

def model_evhandler(evhdlr:int, status:int,
                    source:dict, info:list, results:list):
    global termEvent

    print("MODEL HANDLER")
    termEvent.set()
    return PMIX_EVENT_ACTION_COMPLETE,None

def main():
    global termEvent
    
    foo = PMIxClient()
    print("Testing PMIx ", foo.get_version())
    info = [{'key':PMIX_PROGRAMMING_MODEL, 'value':'TEST', 'val_type':PMIX_STRING},
            {'key':PMIX_MODEL_LIBRARY_NAME, 'value':'PMIX', 'val_type':PMIX_STRING}]
    my_result = foo.init(info)
    print("Init result ", my_result)
    if 0 != my_result[0]:
        print("FAILED TO INIT")
        exit(1)
    # register an event handler
    rc,myevhndlr = foo.register_event_handler(None, None, default_evhandler)
    print("REGISTER DEFAULT", foo.error_string(rc))
    # register the model handler
    rc,mymodelhndlr = foo.register_event_handler([PMIX_MODEL_DECLARED], None, model_evhandler)
    print("REGISTER MODEL", foo.error_string(rc))

    # try putting something
    print("PUT")
    rc = foo.put(PMIX_GLOBAL, "mykey", {'value':1, 'val_type':PMIX_INT32})
    print("Put result ",foo.error_string(rc));
    # commit it
    print("COMMIT")
    rc = foo.commit()
    print ("Commit result ", foo.error_string(rc))
    # execute fence
    print("FENCE")
    procs = []
    info = []
    rc = foo.fence(procs, info)
    print("Fence result ", foo.error_string(rc))
    print("GET")
    info = []
    rc, get_val = foo.get({'nspace':"testnspace", 'rank': 0}, "mykey", info)
    print("Get result: ", foo.error_string(rc))
    print("Get value returned: ", get_val)
    # test a fence that should return not_supported because
    # we pass a required attribute that doesn't exist
    procs = []
    info = [{'key': 'ARBITRARY', 'flags': PMIX_INFO_REQD, 'value':10, 'val_type':PMIX_INT}]
    rc = foo.fence(procs, info)
    print("Fence should be not supported:", foo.error_string(rc))
    # wait for model event
    while not termEvent.is_set():
        time.sleep(0.001)
    # finalize
    info = []
    foo.finalize(info)
    print("Client finalize complete")
if __name__ == '__main__':
    main()