~sseman/juju-ci-tools/model-change-watcher-py3-2

« back to all changes in this revision

Viewing changes to tests/test_jujupy.py

  • Committer: Martin Packman
  • Date: 2016-02-11 15:22:35 UTC
  • mto: This revision was merged to the branch mainline in revision 1264.
  • Revision ID: martin.packman@canonical.com-20160211152235-wyktd2amfyoxbb0e
Refactor how juju feature flags are handled with new enable_feature method

Show diffs side-by-side

added added

removed removed

Lines of Context:
419
419
                   return_value=fake_popen) as po_mock:
420
420
            with self.assertRaises(JESByDefault):
421
421
                client.enable_jes()
422
 
        self.assertFalse(client._use_jes)
 
422
        self.assertNotIn('jes', client.feature_flags)
423
423
        assert_juju_call(
424
424
            self, po_mock, client, ('juju', '--show-log', 'help', 'commands'))
425
425
 
431
431
                   return_value=FakePopen('', '', 0)) as po_mock:
432
432
            with self.assertRaises(JESNotSupported):
433
433
                client.enable_jes()
434
 
        self.assertFalse(client._use_jes)
 
434
        self.assertNotIn('jes', client.feature_flags)
435
435
        assert_juju_call(
436
436
            self, po_mock, client, ('juju', '--show-log', 'help', 'commands'),
437
437
            0)
449
449
                FakePopen('', '', 0),
450
450
                FakePopen(SYSTEM, '', 0)]) as po_mock:
451
451
            client.enable_jes()
452
 
        self.assertTrue(client._use_jes)
 
452
        self.assertIn('jes', client.feature_flags)
453
453
        assert_juju_call(
454
454
            self, po_mock, client, ('juju', '--show-log', 'help', 'commands'),
455
455
            0)
463
463
        client = self.client_class(
464
464
            SimpleEnvironment('baz', {}),
465
465
            '1.25-foobar', 'path')
466
 
        client._use_jes = True
 
466
        client.feature_flags.add('jes')
467
467
        client.disable_jes()
468
 
        self.assertIs(False, client._use_jes)
 
468
        self.assertNotIn('jes', client.feature_flags)
469
469
 
470
470
    def test__shell_environ_jes(self):
471
471
        client = self.client_class(
472
472
            SimpleEnvironment('baz', {}),
473
473
            '1.25-foobar', 'path')
474
 
        client._use_jes = True
 
474
        client.feature_flags.add('jes')
475
475
        env = client._shell_environ()
476
476
        self.assertIn('jes', env[JUJU_DEV_FEATURE_FLAGS].split(","))
477
477
 
479
479
        client = self.client_class(
480
480
            SimpleEnvironment('baz', {'type': 'cloudsigma'}),
481
481
            '1.25-foobar', 'path')
482
 
        client._use_jes = True
 
482
        client.feature_flags.add('jes')
483
483
        env = client._shell_environ()
484
484
        flags = env[JUJU_DEV_FEATURE_FLAGS].split(",")
485
485
        self.assertItemsEqual(['cloudsigma', 'jes'], flags)
513
513
        client2 = client1.clone()
514
514
        self.assertIsNot(client1, client2)
515
515
        self.assertIs(self.client_class, type(client2))
516
 
        self.assertIs(False, client2._use_jes)
517
 
        self.assertIs(False, client2._use_container_address_allocation)
 
516
        self.assertEqual(set(), client2.feature_flags)
518
517
 
519
518
    def test_clone_enabled(self):
520
519
        client1 = self.client_class(
521
520
            SimpleEnvironment('foo'), '1.27', 'full/path', debug=True)
522
 
        client1._use_jes = True
523
 
        client1._use_container_address_allocation = True
524
 
        client2 = client1.clone()
525
 
        self.assertIsNot(client1, client2)
526
 
        self.assertIs(self.client_class, type(client2))
527
 
        self.assertIs(True, client2._use_jes)
528
 
        self.assertIs(True, client2._use_container_address_allocation)
 
521
        client1.enable_feature('jes')
 
522
        client1.enable_feature('address-allocation')
 
523
        client2 = client1.clone()
 
524
        self.assertIsNot(client1, client2)
 
525
        self.assertIs(self.client_class, type(client2))
 
526
        self.assertEqual(
 
527
            set(['jes', 'address-allocation']),
 
528
            client2.feature_flags)
 
529
 
 
530
    def test_clone_old_feature(self):
 
531
        client1 = self.client_class(
 
532
            SimpleEnvironment('foo'), '1.27', 'full/path', debug=True)
 
533
        client1.enable_feature('actions')
 
534
        client1.enable_feature('address-allocation')
 
535
        client2 = client1.clone()
 
536
        self.assertIsNot(client1, client2)
 
537
        self.assertIs(self.client_class, type(client2))
 
538
        self.assertEqual(set(['address-allocation']), client2.feature_flags)
529
539
 
530
540
 
531
541
class TestEnvJujuClient25(TestEnvJujuClient26):
804
814
        self.assertEqual(client1.version, client2.version)
805
815
        self.assertEqual(client1.full_path, client2.full_path)
806
816
        self.assertIs(client1.debug, client2.debug)
 
817
        self.assertEqual(client1.feature_flags, client2.feature_flags)
807
818
 
808
819
    def test_clone_changed(self):
809
820
        client1 = EnvJujuClient(SimpleEnvironment('foo'), '1.27', 'full/path',
816
827
        self.assertEqual('1.28', client2.version)
817
828
        self.assertEqual('other/path', client2.full_path)
818
829
        self.assertIs(False, client2.debug)
 
830
        self.assertEqual(client1.feature_flags, client2.feature_flags)
819
831
 
820
832
    def test_get_cache_path(self):
821
833
        client = EnvJujuClient(SimpleEnvironment('foo', juju_home='/foo/'),
2170
2182
            client.upgrade_mongo()
2171
2183
        juju_mock.assert_called_once_with('upgrade-mongo', ())
2172
2184
 
 
2185
    def test_enable_feature(self):
 
2186
        client = EnvJujuClient(SimpleEnvironment('bar', {}), None, '/foo')
 
2187
        self.assertEqual(set(), client.feature_flags)
 
2188
        client.enable_feature('actions')
 
2189
        self.assertEqual(set(['actions']), client.feature_flags)
 
2190
 
 
2191
    def test_enable_feature_invalid(self):
 
2192
        client = EnvJujuClient(SimpleEnvironment('bar', {}), None, '/foo')
 
2193
        self.assertEqual(set(), client.feature_flags)
 
2194
        with self.assertRaises(ValueError) as ctx:
 
2195
            client.enable_feature('nomongo')
 
2196
        self.assertEqual(str(ctx.exception), "Unknown feature flag: 'nomongo'")
 
2197
 
2173
2198
 
2174
2199
class TestEnvJujuClient2A2(TestCase):
2175
2200