Ejemplo n.º 1
0
    def test_singleton(self):
        # because we have two releases, we expect this to be the latter.
        # e.g. MyNextOpenStackCharm
        s = self.target.singleton
        self.assertEqual(s.__class__.release, 'mitaka')
        self.assertTrue(isinstance(s, MyOpenStackCharm))
        # should also be the second one, as it's the latest
        self.assertTrue(isinstance(s, MyNextOpenStackCharm))
        self.assertTrue(
            isinstance(MyOpenStackCharm.singleton, MyOpenStackCharm))
        self.assertTrue(
            isinstance(chm.OpenStackCharm.singleton, MyOpenStackCharm))
        self.assertEqual(s, chm.OpenStackCharm.singleton)
        # Note that get_charm_instance() returns NEW instance each time.
        self.assertNotEqual(s, chm.get_charm_instance())
        # now clear out the singleton and make sure we get the first one using
        # a release function
        rsf_save = chm._release_selector_function
        chm._release_selector_function = None

        @chm.register_os_release_selector
        def selector():
            return 'icehouse'

        # This should choose the icehouse version instead of the mitaka version
        chm._singleton = None
        s = self.target.singleton
        self.assertEqual(s.release, 'icehouse')
        self.assertEqual(s.__class__.release, 'icehouse')
        self.assertFalse(isinstance(s, MyNextOpenStackCharm))
        chm._release_selector_function = rsf_save
    def test_singleton(self):
        # because we have two releases, we expect this to be the latter.
        # e.g. MyNextOpenStackCharm
        s = self.target.singleton
        self.assertEqual(s.__class__.release, 'mitaka')
        self.assertTrue(isinstance(s, MyOpenStackCharm))
        # should also be the second one, as it's the latest
        self.assertTrue(isinstance(s, MyNextOpenStackCharm))
        self.assertTrue(isinstance(MyOpenStackCharm.singleton,
                                   MyOpenStackCharm))
        self.assertTrue(isinstance(chm.OpenStackCharm.singleton,
                                   MyOpenStackCharm))
        self.assertEqual(s, chm.OpenStackCharm.singleton)
        # Note that get_charm_instance() returns NEW instance each time.
        self.assertNotEqual(s, chm.get_charm_instance())
        # now clear out the singleton and make sure we get the first one using
        # a release function
        rsf_save = chm._release_selector_function
        chm._release_selector_function = None

        @chm.register_os_release_selector
        def selector():
            return 'icehouse'

        # This should choose the icehouse version instead of the mitaka version
        chm._singleton = None
        s = self.target.singleton
        self.assertEqual(s.release, 'icehouse')
        self.assertEqual(s.__class__.release, 'icehouse')
        self.assertFalse(isinstance(s, MyNextOpenStackCharm))
        chm._release_selector_function = rsf_save
Ejemplo n.º 3
0
 def test_get_default_release(self):
     # TODO this may be the wrong logic.  Assume latest release if no
     # release is passed?
     self.assertTrue(isinstance(chm.get_charm_instance(), self.C3))
Ejemplo n.º 4
0
 def test_fail_too_early_series(self):
     with self.assertRaises(RuntimeError):
         chm.get_charm_instance(release='havana')
Ejemplo n.º 5
0
 def test_get_inbetween(self):
     self.assertTrue(
         isinstance(chm.get_charm_instance(release='juno'), self.C1))
Ejemplo n.º 6
0
 def test_get_exact(self):
     self.assertTrue(
         isinstance(chm.get_charm_instance(release='icehouse'), self.C1))
     self.assertTrue(
         isinstance(chm.get_charm_instance(release='mitaka'), self.C3))
 def test_get_default_release(self):
     # TODO this may be the wrong logic.  Assume latest release if no
     # release is passed?
     self.assertTrue(isinstance(chm.get_charm_instance(), self.C3))
 def test_fail_too_early_series(self):
     with self.assertRaises(RuntimeError):
         chm.get_charm_instance(release='havana')
 def test_get_inbetween(self):
     self.assertTrue(
         isinstance(chm.get_charm_instance(release='juno'), self.C1))
 def test_get_exact(self):
     self.assertTrue(
         isinstance(chm.get_charm_instance(release='icehouse'), self.C1))
     self.assertTrue(
         isinstance(chm.get_charm_instance(release='mitaka'), self.C3))