~fwereade/pyjuju/cobbler-zk-connect-error-messages

« back to all changes in this revision

Viewing changes to ensemble/providers/common/tests/test_launch.py

  • Committer: William Reade
  • Date: 2011-08-11 22:04:38 UTC
  • Revision ID: fwereade@gmail.com-20110811220438-b0k414gq6pb0v9ui
base provider should now be thoroughly tested

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import logging
2
2
import tempfile
3
3
 
4
 
from twisted.internet.defer import fail, succeed
 
4
from twisted.internet.defer import fail, inlineCallbacks, succeed
5
5
 
6
6
from ensemble.errors import EnvironmentNotFound, ProviderError
7
7
from ensemble.lib.testing import TestCase
8
 
from ensemble.providers.common.bootstrap import Bootstrap
 
8
from ensemble.providers.common.base import MachineProviderBase
9
9
from ensemble.providers.common.launch import (
10
10
    BOOTSTRAP_PACKAGES, DEFAULT_PACKAGES, DEFAULT_REPOSITORIES, LaunchMachine)
11
11
from ensemble.providers.dummy import DummyMachine, FileStorage
42
42
 
43
43
def get_provider(launch_class=DummyLaunchMachine, config=None, zookeeper=True,
44
44
                 file_storage_class=WorkingFileStorage):
45
 
    class DummyProvider(object):
46
 
        config = {"authorized-keys": "abc"}
47
 
        launch_machine_class = launch_class
 
45
 
 
46
    class DummyProvider(MachineProviderBase):
 
47
 
 
48
        def __init__(self, config):
 
49
            super(DummyProvider, self).__init__(
 
50
                "venus", config, launch_class)
 
51
            self._file_storage = file_storage_class()
48
52
 
49
53
        def get_zookeeper_machines(self):
 
54
            # this is mocked out to avoid insane complexity
50
55
            if isinstance(zookeeper, Exception):
51
56
                return fail(zookeeper)
52
57
            return succeed(
54
59
                             private_dns_name="zookeeper.internal")])
55
60
 
56
61
        def get_file_storage(self):
57
 
            return file_storage_class()
58
 
 
59
 
        def save_state(self, state):
60
 
            self.saved_state = state
61
 
            return succeed(None)
62
 
 
 
62
            return self._file_storage
 
63
 
 
64
    create_config = {"authorized-keys": "abc"}
63
65
    if config is not None:
64
 
        DummyProvider.config.update(config)
65
 
    return DummyProvider()
 
66
        create_config.update(config)
 
67
    return DummyProvider(create_config)
66
68
 
67
69
 
68
70
def get_launch(launch_class=DummyLaunchMachine, config=None,
90
92
        d.addCallback(self._verify_machines)
91
93
        return d
92
94
 
 
95
    @inlineCallbacks
93
96
    def test_bootstrap_run(self):
94
97
        provider = get_provider(config={"admin-secret": "whatever"})
95
98
        launch = DummyLaunchMachine(provider, bootstrap=True)
96
 
        d = launch.run({"machine-id": "machine-32767"})
97
 
 
98
 
        def verify_state_saved(_):
99
 
            self.assertEquals(
100
 
                provider.saved_state,
101
 
                {"zookeeper-instances": ["bootstrapped-instance-id"]})
102
 
        d.addCallback(verify_state_saved)
103
 
        return d
 
99
        yield launch.run({"machine-id": "machine-32767"})
 
100
        saved_state = yield provider.load_state()
 
101
        self.assertEquals(
 
102
            saved_state, {"zookeeper-instances": ["bootstrapped-instance-id"]})
104
103
 
105
104
    def test_get_machine_variables_normal(self):
106
105
        launch = get_launch()
199
198
        class BBQError(Exception):
200
199
            pass
201
200
        provider = get_provider(zookeeper=BBQError())
202
 
        bootstrap = Bootstrap(provider)
203
 
        d = bootstrap.run()
 
201
        d = provider.bootstrap()
204
202
        self.assertFailure(d, BBQError)
205
203
        return d
206
204
 
207
205
    def test_bootstrap_unwritable_storage(self):
208
206
        provider = get_provider(zookeeper=EnvironmentNotFound(),
209
207
                                file_storage_class=UnwritableFileStorage)
210
 
        d = Bootstrap(provider).run()
 
208
        d = provider.bootstrap()
211
209
        self.assertFailure(d, ProviderError)
212
210
        return d
213
211
 
214
212
    def test_bootstrap_no_launch(self):
215
213
        log = self.capture_logging("ensemble.common", level=logging.DEBUG)
216
214
        provider = get_provider()
217
 
        bootstrap = Bootstrap(provider)
218
 
        d = bootstrap.run()
 
215
        d = provider.bootstrap()
219
216
 
220
217
        def verify_machines(machines):
221
218
            (machine,) = machines
232
229
        log = self.capture_logging("ensemble.common", level=logging.DEBUG)
233
230
        provider = get_provider(config={"admin-secret": "SEEKRIT"},
234
231
                                zookeeper=EnvironmentNotFound())
235
 
        bootstrap = Bootstrap(provider)
236
 
        d = bootstrap.run()
 
232
        d = provider.bootstrap()
237
233
 
238
234
        def verify_machines(machines):
239
235
            (machine,) = machines