Esempio n. 1
0
 def from_config(cls):
     """
     Create a Notifier instance with global configuration, typically environment variables.
     """
     kwargs = dict(deployment_stage=Config.deployment_stage(),
                   delays=Config.notification_delays(),
                   num_workers=Config.notification_workers(),
                   timeout=Config.notification_timeout())
     return cls(**{k: v for k, v in kwargs.items() if v is not None})
Esempio n. 2
0
    def test_notifier_from_config(self):
        with mock.patch.dict(os.environ,
                             DSS_NOTIFY_DELAYS="",
                             DSS_NOTIFY_WORKERS="",
                             DSS_NOTIFY_ATTEMPTS=""):
            self.assertFalse(Config.notification_is_async())
            self.assertEqual(Config.notification_attempts(), 0)
            self.assertEqual(Config.notification_delays(), [])
            with mock.patch.dict(os.environ, DSS_NOTIFY_DELAYS="0"):
                self.assertTrue(Config.notification_is_async())
                self.assertEqual(Config.notification_attempts(), 1)
                self.assertEqual(Config.notification_delays(), [0])
                with mock.patch.dict(os.environ, DSS_NOTIFY_ATTEMPTS="0"):
                    self.assertEqual(Config.notification_attempts(), 0)
                    self.assertFalse(Config.notification_is_async())

        with mock.patch.dict(os.environ,
                             DSS_NOTIFY_DELAYS="3 2 1 .5",
                             DSS_NOTIFY_WORKERS="7"):
            notifier = Notifier.from_config()
            self.assertEqual([3.0, 2.0, 1.0, .5], notifier._delays)
            self.assertEqual(7, notifier._num_workers)
            self.assertTrue(Config.notification_is_async())
            self.assertEqual(Config.notification_attempts(), 4)