def __init__(self, receiver=None, spawnArgs=None): """ Initializes base service. The default service name is taken from the service declaration, a different service name can be provided in the spawnargs using the 'servicename' attribute. The service name, in its qualified form prefixed by the system name is the public name of the service inbound queue that is shared among all service processes with the same name """ BaseProcess.__init__(self, receiver, spawnArgs) # Determine public service messaging name either from spawn args or # use default name from service declaration #default_svcname = self.declare['name'] + '_' + self.declare['version'] default_svcname = self.declare['name'] self.svc_name = self.spawn_args.get('servicename', default_svcname) assert self.svc_name, "Service must have a declare with a valid name" # Scope (prefix) the service name with the system name msgName = self.get_scoped_name('system', self.svc_name) # Create a receiver (inbound queue consumer) for service name svcReceiver = Receiver(self.svc_name+'.'+self.receiver.label, msgName) if hasattr(self.receiver, 'group'): svcReceiver.group = self.receiver.group self.svc_receiver = svcReceiver self.svc_receiver.handle(self.receive) self.add_receiver(self.svc_receiver)
def setUp(self): yield self._start_container() bproc = BaseProcess() # the 'test' work queue: self.queue_name_work = bproc.get_scoped_name("system", "test_cei_sensors_work") # for the sensor events queue: self.queue_name_events = bproc.get_scoped_name("system", "test_cei_sensors_events") self.total_messages = 5 topic = { self.queue_name_work: {"name_type": "worker", "args": {"scope": "global"}}, self.queue_name_events: {"name_type": "fanout", "args": {"scope": "global"}}, } yield self._declare_messaging(topic) # create a test SA: self.test_sa = TestSensorAggregator(self.queue_name_events) # now spawn it: sa_id = yield spawn(self.test_sa.receiver) yield self.test_sa.plc_init() services = [ { "name": "rabbitmq_sensor", "module": "ion.services.cei.sensors.rabbitmq_sensor", "spawnargs": {"queue_name_work": self.queue_name_work, "queue_name_events": self.queue_name_events}, } ] self.sup = yield self._spawn_processes(services) self.rabbitmq_sensor = self.sup.get_child_id("rabbitmq_sensor") for i in range(self.total_messages): yield self.sup.send(self.queue_name_work, "data", "test_message" + str(i))
def __init__(self, receiver=None, spawnArgs=None): """ Initializes base service. The default service name is taken from the service declaration, a different service name can be provided in the spawnargs using the 'servicename' attribute. The service name, in its qualified form prefixed by the system name is the public name of the service inbound queue that is shared among all service processes with the same name """ BaseProcess.__init__(self, receiver, spawnArgs) # Determine public service messaging name either from spawn args or # use default name from service declaration #default_svcname = self.declare['name'] + '_' + self.declare['version'] default_svcname = self.declare['name'] self.svc_name = self.spawn_args.get('servicename', default_svcname) assert self.svc_name, "Service must have a declare with a valid name" # Scope (prefix) the service name with the system name msgName = self.get_scoped_name('system', self.svc_name) # Create a receiver (inbound queue consumer) for service name svcReceiver = Receiver(self.svc_name + '.' + self.receiver.label, msgName) if hasattr(self.receiver, 'group'): svcReceiver.group = self.receiver.group self.svc_receiver = svcReceiver self.svc_receiver.handle(self.receive) self.add_receiver(self.svc_receiver)
def test_child_processes(self): p1 = BaseProcess() pid1 = yield p1.spawn() child = ProcessDesc(name='echo', module='ion.core.test.test_baseprocess') pid2 = yield p1.spawn_child(child) (cont,hdrs,msg) = yield p1.rpc_send(pid2,'echo','content123') self.assertEquals(cont['value'], 'content123') yield p1.shutdown()
def __init__(self, receiver=None, spawnArgs=None): """ Initializes base service. The service name is taken from the service declaration """ BaseProcess.__init__(self, receiver, spawnArgs) # Determine service known messging name either from spawn args or # if not given from service declaration self.svc_name = self.spawnArgs.get('servicename', self.declare['name']) assert self.svc_name, "Service must have a declare with a valid name" msgName = self.get_scoped_name('system', self.svc_name) svcReceiver = Receiver(self.svc_name+'.'+self.receiver.label, msgName) if hasattr(self.receiver, 'group'): svcReceiver.group = self.receiver.group self.svc_receiver = svcReceiver self.svc_receiver.handle(self.receive) self.add_receiver(self.svc_receiver)
def test_process_basics(self): p1 = BaseProcess() self.assertEquals(p1.id, None) self.assertTrue(p1.receiver) self.assertEquals(p1.receiver.spawned, None) self.assertEquals(p1.proc_state, "NEW") pid1 = yield p1.spawn() self.assertEquals(pid1, p1.receiver.spawned.id) # Note: this tests init without actually sending a message. self.assertEquals(p1.proc_state, "ACTIVE") yield p1.op_init(None, None, None) self.assertEquals(p1.proc_state, "ERROR") rec = Receiver("myname") p2 = BaseProcess(rec) args = {'arg1':'value1','arg2':{}} p3 = BaseProcess(None, args) self.assertEquals(p3.spawn_args, args)
def test_child_processes(self): p1 = BaseProcess() pid1 = yield p1.spawn() child = ProcessDesc(name='echo', module='ion.core.test.test_baseprocess') pid2 = yield p1.spawn_child(child) (cont, hdrs, msg) = yield p1.rpc_send(pid2, 'echo', 'content123') self.assertEquals(cont['value'], 'content123') yield p1.shutdown()
def test_process_basics(self): p1 = BaseProcess() self.assertEquals(p1.id, None) self.assertTrue(p1.receiver) self.assertEquals(p1.receiver.spawned, None) self.assertEquals(p1.proc_state, "NEW") pid1 = yield p1.spawn() self.assertEquals(pid1, p1.receiver.spawned.id) # Note: this tests init without actually sending a message. self.assertEquals(p1.proc_state, "ACTIVE") yield p1.op_init(None, None, None) self.assertEquals(p1.proc_state, "ERROR") rec = Receiver("myname") p2 = BaseProcess(rec) args = {'arg1': 'value1', 'arg2': {}} p3 = BaseProcess(None, args) self.assertEquals(p3.spawn_args, args)
def __init__(self, *args, **kwargs): BaseProcess.__init__(self, *args, **kwargs) self.inbox = defer.DeferredQueue()
def __init__(self, queue_name_events, *args): BaseProcess.__init__(self, *args) self.queue_name_events = queue_name_events self.message_count = 0
def __init__(self, *args): BaseProcess.__init__(self, *args) self.workresult = {} self.worker = {}