Source code for sesf.objtransfer.test_node
# sesf module: objtransfer.test_node
import Pyro4, argparse, time, importlib
from sesf.util.pyro import (start_pyrodaemon)
from threading import Thread
[docs]@Pyro4.expose
class TestNode():
def __init__(self, myid, use):
self.myid = myid
self.use = use
self.pyrodaemon = None
self.ot_node = None
self.pyrodaemon_thread = Thread(
target=start_pyrodaemon,
args=(self, "ot_test_node_"+str(myid)))
self.pyrodaemon_thread.start()
def start_testnode(self):
tp = Pyro4.Proxy("PYRONAME:objtransfer_tester")
print("got testerproxy", tp, flush=True)
imp_nodemodule = importlib.import_module(self.use[0])
print("creating node from module", imp_nodemodule)
self.ot_node = imp_nodemodule.Node(self.use, tp)
return
def acq(self):
return self.ot_node.acq()
def rel(self, oval):
return self.ot_node.rel(oval)
def recvreq(self):
return self.ot_node.recvreq()
def end(self):
self.ot_node.end()
@Pyro4.oneway
def end_pyrodaemon(self):
self.pyrodaemon.shutdown()
# def get_testerproxy(self):
# print('getting testerproxy', flush=True)
# self.ot_node.testerproxy = Pyro4.Proxy("PYRONAME:objtransfer_tester")
########### END class ObjtransferTestwrap ############################
if __name__ == '__main__':
# eg: python test_node.py --use otnodemodule n myid init_owner args
# --use mtnodemodule n myid args
parser = argparse.ArgumentParser()
parser.add_argument("n", type=int,
help="number of nodes: at least 2")
parser.add_argument("myid", type=int,
help="id of this user system: in 0..n-1")
parser.add_argument("--use", nargs=argparse.REMAINDER,
help="one or more '--use node_argv'")
args = parser.parse_args()
print("args", args)
testnode = TestNode(args.myid, args.use)
testnode.pyrodaemon_thread.join()
time.sleep(10)