~gz/pyjuju/os_scheduler_hints_json_fix

« back to all changes in this revision

Viewing changes to juju/providers/orchestra/tests/test_files.py

  • Committer: Kapil Thangavelu
  • Author(s): Kapil Thangavelu
  • Date: 2013-02-01 18:24:47 UTC
  • mfrom: (611.2.1 drop-orchestra)
  • Revision ID: kapil.foss@gmail.com-20130201182447-a3qsgpgwqyeudikc
Drop orchestra provider support

The orchestra provider is dead upstream, and represents
a significant support burden on the code base. Given
hardware deployments are directed towards MaaS and no
current users, its better to drop this now.

R=
CC=
https://codereview.appspot.com/7225084

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from cStringIO import StringIO
2
 
 
3
 
from twisted.internet.defer import fail, succeed
4
 
from twisted.web.error import Error
5
 
 
6
 
from juju.errors import FileNotFound, ProviderError, ProviderInteractionError
7
 
from juju.lib.testing import TestCase
8
 
from juju.providers.orchestra import MachineProvider
9
 
 
10
 
from .test_digestauth import GetPageAuthTestCase
11
 
 
12
 
 
13
 
class SomeError(Exception):
14
 
    pass
15
 
 
16
 
 
17
 
def get_file_storage(custom_config=None):
18
 
    config = {"orchestra-server": "somewhereel.se",
19
 
              "orchestra-user": "fallback-user",
20
 
              "orchestra-pass": "fallback-pass",
21
 
              "acquired-mgmt-class": "acquired",
22
 
              "available-mgmt-class": "available"}
23
 
    if custom_config is None:
24
 
        config["storage-url"] = "http://somewhe.re"
25
 
        config["storage-user"] = "user"
26
 
        config["storage-pass"] = "pass"
27
 
    else:
28
 
        config.update(custom_config)
29
 
    provider = MachineProvider("blah", config)
30
 
    return provider.get_file_storage()
31
 
 
32
 
 
33
 
class FileStorageGetTest(TestCase):
34
 
 
35
 
    def setUp(self):
36
 
        self.uuid4_m = self.mocker.replace("uuid.uuid4")
37
 
        self.getPage = self.mocker.replace("twisted.web.client.getPage")
38
 
 
39
 
    def test_get_url(self):
40
 
        self.mocker.replay()
41
 
        fs = get_file_storage()
42
 
        self.assertEquals(fs.get_url("angry/birds"),
43
 
                          "http://somewhe.re/angry/birds")
44
 
 
45
 
    def test_get_url_fallback(self):
46
 
        self.mocker.replay()
47
 
        fs = get_file_storage({})
48
 
        self.assertEquals(fs.get_url("angry/birds"),
49
 
                          "http://somewhereel.se/webdav/angry/birds")
50
 
 
51
 
    def test_get(self):
52
 
        self.getPage("http://somewhe.re/rubber/chicken")
53
 
        self.mocker.result(succeed("pulley"))
54
 
        self.mocker.replay()
55
 
 
56
 
        fs = get_file_storage()
57
 
        d = fs.get("rubber/chicken")
58
 
 
59
 
        def verify(result):
60
 
            self.assertEquals(result.read(), "pulley")
61
 
        d.addCallback(verify)
62
 
        return d
63
 
 
64
 
    def check_get_error(self, result, err_type, err_message):
65
 
        self.getPage("http://somewhe.re/rubber/chicken")
66
 
        self.mocker.result(result)
67
 
        self.mocker.replay()
68
 
 
69
 
        fs = get_file_storage()
70
 
        d = fs.get("rubber/chicken")
71
 
        self.assertFailure(d, err_type)
72
 
 
73
 
        def verify(error):
74
 
            self.assertEquals(str(error), err_message)
75
 
        d.addCallback(verify)
76
 
        return d
77
 
 
78
 
    def test_get_error(self):
79
 
        return self.check_get_error(
80
 
            fail(SomeError("pow!")),
81
 
            ProviderInteractionError,
82
 
            "Unexpected SomeError interacting with provider: pow!")
83
 
 
84
 
    def test_get_404(self):
85
 
        return self.check_get_error(
86
 
            fail(Error("404")),
87
 
            FileNotFound,
88
 
            "File was not found: 'http://somewhe.re/rubber/chicken'")
89
 
 
90
 
    def test_get_bad_code(self):
91
 
        return self.check_get_error(
92
 
            fail(Error("999")),
93
 
            ProviderError,
94
 
            "Unexpected HTTP 999 trying to GET "
95
 
            "http://somewhe.re/rubber/chicken")
96
 
 
97
 
 
98
 
class FileStoragePutTest(GetPageAuthTestCase):
99
 
 
100
 
    def setup_mock(self):
101
 
        self.uuid4_m = self.mocker.replace("uuid.uuid4")
102
 
 
103
 
    def get_file_storage(self, with_user=True):
104
 
        storage_url = self.get_base_url()
105
 
        custom_config = {"storage-url": storage_url}
106
 
        if with_user:
107
 
            custom_config["storage-user"] = "user"
108
 
            custom_config["storage-pass"] = "pass"
109
 
        return get_file_storage(custom_config)
110
 
 
111
 
    def test_no_auth_error(self):
112
 
        self.add_plain("peregrine", "PUT", "", "croissant", 999)
113
 
        fs = self.get_file_storage()
114
 
        d = fs.put("peregrine", StringIO("croissant"))
115
 
        self.assertFailure(d, ProviderError)
116
 
 
117
 
        def verify(error):
118
 
            self.assertIn("Unexpected HTTP 999 trying to PUT ", str(error))
119
 
        d.addCallback(verify)
120
 
        return d
121
 
 
122
 
    def test_no_auth_201(self):
123
 
        self.add_plain("peregrine", "PUT", "", "croissant", 201)
124
 
        fs = self.get_file_storage()
125
 
        d = fs.put("peregrine", StringIO("croissant"))
126
 
        d.addCallback(self.assertEquals, True)
127
 
        return d
128
 
 
129
 
    def test_no_auth_204(self):
130
 
        self.add_plain("peregrine", "PUT", "", "croissant", 204)
131
 
        fs = self.get_file_storage()
132
 
        d = fs.put("peregrine", StringIO("croissant"))
133
 
        d.addCallback(self.assertEquals, True)
134
 
        return d
135
 
 
136
 
    def auth_common(self, username, status, with_user=True):
137
 
        self.setup_mock()
138
 
        self.uuid4_m()
139
 
        self.mocker.result("dinner")
140
 
        self.mocker.replay()
141
 
 
142
 
        url = self.get_url("possum")
143
 
 
144
 
        def check(response):
145
 
            self.assertTrue(response.startswith(
146
 
                'Digest username="%s", realm="sparta", nonce="meh", uri="%s"'
147
 
                % (username, url)))
148
 
            self.assertIn(
149
 
                'qop="auth", nc="00000001", cnonce="dinner"', response)
150
 
        self.add_auth(
151
 
            "possum", "PUT", "", "Digest realm=sparta, nonce=meh, qop=auth",
152
 
            check, expect_content="canabalt", status=status)
153
 
 
154
 
        fs = self.get_file_storage(with_user)
155
 
        return fs.put("possum", StringIO("canabalt"))
156
 
 
157
 
    def test_auth_error(self):
158
 
        d = self.auth_common("user", 808)
159
 
        self.assertFailure(d, ProviderError)
160
 
 
161
 
        def verify(error):
162
 
            self.assertIn("Unexpected HTTP 808 trying to PUT", str(error))
163
 
        d.addCallback(verify)
164
 
        return d
165
 
 
166
 
    def test_auth_bad_credentials(self):
167
 
        d = self.auth_common("user", 401)
168
 
        self.assertFailure(d, ProviderError)
169
 
 
170
 
        def verify(error):
171
 
            self.assertEquals(
172
 
                str(error),
173
 
                "The supplied storage credentials were not accepted by the "
174
 
                "server")
175
 
        d.addCallback(verify)
176
 
        return d
177
 
 
178
 
    def test_auth_201(self):
179
 
        d = self.auth_common("user", 201)
180
 
        d.addCallback(self.assertEquals, True)
181
 
        return d
182
 
 
183
 
    def test_auth_204(self):
184
 
        d = self.auth_common("user", 204)
185
 
        d.addCallback(self.assertEquals, True)
186
 
        return d
187
 
 
188
 
    def test_auth_fallback_error(self):
189
 
        d = self.auth_common("fallback-user", 747, False)
190
 
        self.assertFailure(d, ProviderError)
191
 
 
192
 
        def verify(error):
193
 
            self.assertIn("Unexpected HTTP 747 trying to PUT", str(error))
194
 
        d.addCallback(verify)
195
 
        return d
196
 
 
197
 
    def test_auth_fallback_201(self):
198
 
        d = self.auth_common("fallback-user", 201, False)
199
 
        d.addCallback(self.assertEquals, True)
200
 
        return d
201
 
 
202
 
    def test_auth_fallback_204(self):
203
 
        d = self.auth_common("fallback-user", 204, False)
204
 
        d.addCallback(self.assertEquals, True)
205
 
        return d