def setUp(self): self.p = Process('process1', SyncFactory('threading')) # create a child ManagerController block params = ManagerController.MethodMeta. \ prepare_input_map(mri='childBlock', configDir="/tmp") self.c_child = ManagerController(self.p, [], params) self.b_child = self.c_child.block self.sm = self.c_child.stateMachine params = Part.MethodMeta.prepare_input_map(name='part1') part1 = Part(self.p, params) params = {'name': 'part2', 'mri': 'childBlock'} params = ChildPart.MethodMeta.prepare_input_map(**params) part2 = ChildPart(self.p, params) # create a root block for the ManagerController block to reside in parts = [part1, part2] params = ManagerController.MethodMeta.prepare_input_map( mri='mainBlock', configDir="/tmp") self.c = ManagerController(self.p, parts, params) self.b = self.c.block # check that do_initial_reset works asynchronously self.p.start() # wait until block is Ready task = Task("block_ready_task", self.p) task.when_matches(self.b["state"], self.sm.READY, timeout=1) self.checkState(self.sm.READY)
def PandABox(process, params): # Connect to the Control port control = PandABoxControl(process, params.hostname, params.port) control.start() # Create a block updater poller = PandABoxPoller(process, control) # Get some information about what is available in this PandABox blocks_data = control.get_blocks_data() parts = OrderedDict() ret = [] for block_name, block_data in blocks_data.items(): block_names = [] if block_data.number == 1: block_names.append(block_name) else: for i in range(block_data.number): block_names.append("%s%d" % (block_name, i+1)) for bn in block_names: malcolm_name = "%s:%s" % (params.name, bn) ret.append(poller.make_panda_block(malcolm_name, bn, block_data)) part_params = LayoutPart.MethodMeta.prepare_input_map( dict(name=bn, child=malcolm_name)) parts[bn] = LayoutPart(process, part_params) # Make a controller controller = ManagerController(params.name, process, parts) ret.append(controller.block) # Start polling poller.start() return ret
def setUp(self): self.c = ManagerController('block', MagicMock()) self.b = self.c.block