Beispiel #1
0
    def test_munsubscribe(self):
        controller.subscribe('DEFAULT.PV', SubscriptionMode.Monitor(delta=0.01))
        controller.subscribe('FOO.PV', SubscriptionMode.Monitor(delta=0.123))
        controller.subscribe('BAR.PV', SubscriptionMode.Scan(period=123.1) )
        
        pvs = dict(controller.list_subscribed())
        self.assertEqual( sorted(pvs), ['BAR.PV', 'DEFAULT.PV', 'FOO.PV'])

        futures = controller.munsubscribe(pvs)
        [ fut.wait() for fut in futures]
        
        pvs = dict(controller.list_subscribed())
        self.assertEqual(pvs, {})

        # munsubscribe providing the wrong type or argument (not a sequence)
        self.assertRaises(TypeError, controller.munsubscribe, 'foobar')
Beispiel #2
0
    def test_load_config(self):
        pvnames = ('DEFAULT.PV', 'FOO.PV', 'BAR.PV')
        
        futures = []
        futures.append(controller.subscribe('DEFAULT.PV', SubscriptionMode.Monitor(delta=0.01)))
        futures.append(controller.subscribe('FOO.PV',  SubscriptionMode.Monitor(0.123)))
        futures.append(controller.subscribe('BAR.PV', SubscriptionMode.Scan(123.1)))

        [ fut.wait() for fut in futures ]

        cfg = controller.save_config()

        futures = controller.munsubscribe([pvname for pvname, _ in controller.list_subscribed()])
        [ fut.wait() for fut in futures ]

        logger.info("Trying to load:\n%s", cfg)

        futures = controller.load_config(cfg)
        results = [ fut.get() for fut in futures ]

        pvnames = [pvname for pvname, _ in controller.list_subscribed()]

        self.assertIn('DEFAULT.PV', pvnames)
        self.assertIn('FOO.PV', pvnames)
        self.assertIn('BAR.PV', pvnames)

        av = controller.get_apv('DEFAULT.PV')
        self.assertEqual( av.name, 'DEFAULT.PV' )
        self.assertEqual( av.mode.name, SubscriptionMode.Monitor.name )
        self.assertEqual( av.mode.delta, 0.01 )

        av = controller.get_apv('FOO.PV')
        self.assertEqual( av.name, 'FOO.PV' )
        self.assertEqual( av.mode.name, SubscriptionMode.Monitor.name )
        self.assertEqual( av.mode.delta, 0.123 )

        av = controller.get_apv('BAR.PV')
        self.assertEqual( av.name, 'BAR.PV' )
        self.assertEqual( av.mode.name, SubscriptionMode.Scan.name )
        self.assertEqual( av.mode.period, 123.1 )
Beispiel #3
0
 def delete(self):
     # unsubscribe from all
     pvs = [pvname for pvname, _ in controller.list_subscribed()]
     futures = controller.munsubscribe(pvs)
     results = dict((pvname, f.get(TIMEOUT)) for pvname, f in zip(pvs, futures))
     self.win(results)