def test_alarm_propagation(self): device_name = '%s/sub1/1' % self.DOMAIN_NAME members_template = ['%s/capability/sub1cap1', '%s/capability/sub1cap2'] members = [member % self.DOMAIN_NAME for member in members_template] self.add_members(device_name, 'tiles', members) dp = DeviceProxy(device_name) self.assertNotEqual(dp.state(), AttrQuality.ATTR_ALARM) member_dp = DeviceProxy(members[0]) alarm_data = json.dumps({ 'name': 'an_attr', 'min_alarm': '20', 'max_alarm': '50' }) member_dp.command_inout('set_attribute_alarm', alarm_data) member_dp.an_attr = 10 attr = AttributeProxy(members[0] + '/an_attr') self.assertEqual(attr.read().quality, AttrQuality.ATTR_ALARM) self.assertEqual(member_dp.state(), PyTango._PyTango.DevState.ALARM) i = 0 while (dp.state() != PyTango._PyTango.DevState.ALARM) and i < 3: sleep(1) i += 1 self.assertEqual(dp.state(), PyTango._PyTango.DevState.ALARM)
def power_on(self): motors = [] motors = motors + self.get_pool_motors('hfm_y') motors = motors + self.get_pool_motors('vfm_x1') motors = motors + self.get_pool_motors('vfm_x2') attrs = [] all_on = True for mot in motors: try: power_attr = AttributeProxy(mot.name + '/PowerOn') attrs.append(power_attr) if power_attr.read().value == False: power_attr.write(True) all_on = False except PyTango.DevFailed as e: self._log.warning( "Motor {} doesn't have a PowerOn attribute".format( mot.name)) starttime = time.time() while all_on == False: if time.time() - starttime > 2: raise PyTango.DevFailed( "Timeout while waiting for motors to power on") all_on = True time.sleep(0.1) for attr in attrs: if attr.read().value == False: all_on = False
class EventsTest(Device): """ Switches beetwen valid and invalid attribute`s values. """ __metaclass__ = DeviceMeta # PROTECTED REGION ID(EventsTest.class_variable) ENABLED START # # PROTECTED REGION END # // EventsTest.class_variable # ----------------- # Device Properties # ----------------- DeviceName = device_property(dtype='str', ) # ---------- # Attributes # ---------- Max = attribute(dtype='double', ) # --------------- # General methods # --------------- def init_device(self): Device.init_device(self) # PROTECTED REGION ID(EventsTest.init_device) ENABLED START # self.set_state(DevState.ON) self.proxy = AttributeProxy(self.DeviceName) # PROTECTED REGION END # // EventsTest.init_device def always_executed_hook(self): # PROTECTED REGION ID(EventsTest.always_executed_hook) ENABLED START # pass # PROTECTED REGION END # // EventsTest.always_executed_hook def delete_device(self): # PROTECTED REGION ID(EventsTest.delete_device) ENABLED START # pass # PROTECTED REGION END # // EventsTest.delete_device # ------------------ # Attributes methods # ------------------ def read_Max(self): # PROTECTED REGION ID(EventsTest.Attribute1_read) ENABLED START # value = self.proxy.read().value maximums = [] for row in value: maximums.append(max(row)) value = max(maximums) attr_quality = AttrQuality.ATTR_ALARM self.push_change_event("Max", float(value), time(), attr_quality) self.push_archive_event("Max", float(value), time(), attr_quality) return float(value), time(), attr_quality