~hudson-openstack/burrow/trunk

« back to all changes in this revision

Viewing changes to burrow/backend/http.py

  • Committer: Tarmac
  • Author(s): Eric Day
  • Date: 2011-08-10 05:48:15 UTC
  • mfrom: (16.3.23 backend-unittests)
  • Revision ID: tarmac-20110810054815-xzg9slms24xpdnrp
Added HTTP backend unit tests that work against a running server (auto started/killed with test).

Show diffs side-by-side

added added

removed removed

Lines of Context:
67
67
        url = self._add_parameters(url, filters=filters)
68
68
        return self._request('GET', url)
69
69
 
70
 
    def update_messages(self, account, queue, attributes={}, filters={}):
 
70
    def update_messages(self, account, queue, attributes, filters={}):
71
71
        url = '/%s/%s' % (account, queue)
72
72
        url = self._add_parameters(url, attributes, filters)
73
73
        return self._request('POST', url)
75
75
    def create_message(self, account, queue, message, body, attributes={}):
76
76
        url = '/%s/%s/%s' % (account, queue, message)
77
77
        url = self._add_parameters(url, attributes)
78
 
        return self._request('PUT', url, body=body)
79
 
 
80
 
    def delete_message(self, account, queue, message):
81
 
        url = '/%s/%s/%s' % (account, queue, message)
82
 
        return self._request('DELETE', url)
83
 
 
84
 
    def get_message(self, account, queue, message):
85
 
        url = '/%s/%s/%s' % (account, queue, message)
86
 
        return self._request('GET', url)
87
 
 
88
 
    def update_message(self, account, queue, message, attributes={}):
89
 
        url = '/%s/%s/%s' % (account, queue, message)
90
 
        url = self._add_parameters(url, attributes)
91
 
        return self._request('POST', url)
 
78
        try:
 
79
            return self._request('PUT', url, body=body).next()
 
80
        except StopIteration:
 
81
            return False
 
82
 
 
83
    def delete_message(self, account, queue, message, filters={}):
 
84
        url = '/%s/%s/%s' % (account, queue, message)
 
85
        url = self._add_parameters(url, filters=filters)
 
86
        try:
 
87
            return self._request('DELETE', url).next()
 
88
        except StopIteration:
 
89
            return None
 
90
 
 
91
    def get_message(self, account, queue, message, filters={}):
 
92
        url = '/%s/%s/%s' % (account, queue, message)
 
93
        url = self._add_parameters(url, filters=filters)
 
94
        try:
 
95
            return self._request('GET', url).next()
 
96
        except StopIteration:
 
97
            return None
 
98
 
 
99
    def update_message(self, account, queue, message, attributes, filters={}):
 
100
        url = '/%s/%s/%s' % (account, queue, message)
 
101
        url = self._add_parameters(url, attributes, filters)
 
102
        try:
 
103
            return self._request('POST', url).next()
 
104
        except StopIteration:
 
105
            return None
92
106
 
93
107
    def clean(self):
94
108
        pass
111
125
        connection = httplib.HTTPConnection(*self.server)
112
126
        connection.request(method, '/v1.0' + url, *args, **kwargs)
113
127
        response = connection.getresponse()
114
 
        if response.status == 200:
115
 
            return json.loads(response.read())
116
 
        if response.status >= 400:
117
 
            raise Exception(response.reason)
 
128
        if response.status >= 200 and response.status < 300:
 
129
            if int(response.getheader('content-length')) == 0:
 
130
                if response.status == 201:
 
131
                    yield True
 
132
                return
 
133
            body = response.read()
 
134
            if response.getheader('content-type')[:16] == 'application/json':
 
135
                body = json.loads(body)
 
136
                if isinstance(body, list):
 
137
                    for item in body:
 
138
                        yield item
 
139
                    return
 
140
            yield body
 
141
        if response.status == 400:
 
142
            raise burrow.backend.InvalidArguments()
 
143
        if response.status == 404:
 
144
            raise burrow.backend.NotFound()
 
145
        raise Exception(response.reason)