Merge "Consolidate constants to a module"
This commit is contained in:
commit
0b0a95d967
@ -17,6 +17,7 @@ from zaqar.api.v2 import request as schema_validator
|
|||||||
|
|
||||||
from zaqar.common.api import request
|
from zaqar.common.api import request
|
||||||
from zaqar.common.api import response
|
from zaqar.common.api import response
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.common import errors
|
from zaqar.common import errors
|
||||||
from zaqar.common import urls
|
from zaqar.common import urls
|
||||||
|
|
||||||
@ -28,12 +29,12 @@ class Handler(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_actions_mapping = {
|
_actions_mapping = {
|
||||||
'message_list': 'GET',
|
consts.MESSAGE_LIST: 'GET',
|
||||||
'message_get': 'GET',
|
consts.MESSAGE_GET: 'GET',
|
||||||
'message_get_many': 'GET',
|
consts.MESSAGE_GET_MANY: 'GET',
|
||||||
'message_post': 'POST',
|
consts.MESSAGE_POST: 'POST',
|
||||||
'message_delete': 'DELETE',
|
consts.MESSAGE_DELETE: 'DELETE',
|
||||||
'message_delete_many': 'DELETE'
|
consts.MESSAGE_DELETE_MANY: 'DELETE'
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, storage, control, validate, defaults):
|
def __init__(self, storage, control, validate, defaults):
|
||||||
@ -54,7 +55,7 @@ class Handler(object):
|
|||||||
|
|
||||||
def process_request(self, req, protocol):
|
def process_request(self, req, protocol):
|
||||||
# FIXME(vkmc): Control API version
|
# FIXME(vkmc): Control API version
|
||||||
if req._action == 'subscription_create':
|
if req._action == consts.SUBSCRIPTION_CREATE:
|
||||||
subscriber = req._body.get('subscriber')
|
subscriber = req._body.get('subscriber')
|
||||||
if not subscriber:
|
if not subscriber:
|
||||||
# Default to the connected websocket as subscriber
|
# Default to the connected websocket as subscriber
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from zaqar.common.api import api
|
from zaqar.common.api import api
|
||||||
|
from zaqar.common import consts
|
||||||
|
|
||||||
|
|
||||||
class RequestSchema(api.Api):
|
class RequestSchema(api.Api):
|
||||||
@ -78,9 +79,9 @@ class RequestSchema(api.Api):
|
|||||||
},
|
},
|
||||||
|
|
||||||
# Queues
|
# Queues
|
||||||
'queue_list': {
|
consts.QUEUE_LIST: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['queue_list']},
|
'action': {'enum': [consts.QUEUE_LIST]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -98,9 +99,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers']
|
'required': ['action', 'headers']
|
||||||
},
|
},
|
||||||
|
|
||||||
'queue_create': {
|
consts.QUEUE_CREATE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['queue_create']},
|
'action': {'enum': [consts.QUEUE_CREATE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -116,9 +117,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'queue_delete': {
|
consts.QUEUE_DELETE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['queue_delete']},
|
'action': {'enum': [consts.QUEUE_DELETE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -135,9 +136,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'queue_get': {
|
consts.QUEUE_GET: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['queue_get']},
|
'action': {'enum': [consts.QUEUE_GET]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -154,9 +155,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'queue_get_stats': {
|
consts.QUEUE_GET_STATS: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['queue_get_stats']},
|
'action': {'enum': [consts.QUEUE_GET_STATS]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -175,9 +176,9 @@ class RequestSchema(api.Api):
|
|||||||
},
|
},
|
||||||
|
|
||||||
# Messages
|
# Messages
|
||||||
'message_list': {
|
consts.MESSAGE_LIST: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['message_list']},
|
'action': {'enum': [consts.MESSAGE_LIST]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -198,9 +199,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'message_get': {
|
consts.MESSAGE_GET: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['message_get']},
|
'action': {'enum': [consts.MESSAGE_GET]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -218,9 +219,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'message_get_many': {
|
consts.MESSAGE_GET_MANY: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['message_get_many']},
|
'action': {'enum': [consts.MESSAGE_GET_MANY]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -238,9 +239,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'message_post': {
|
consts.MESSAGE_POST: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['message_post']},
|
'action': {'enum': [consts.MESSAGE_POST]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -258,9 +259,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'message_delete': {
|
consts.MESSAGE_DELETE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['message_delete']},
|
'action': {'enum': [consts.MESSAGE_DELETE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -279,9 +280,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'message_delete_many': {
|
consts.MESSAGE_DELETE_MANY: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['message_delete_many']},
|
'action': {'enum': [consts.MESSAGE_DELETE_MANY]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -301,9 +302,9 @@ class RequestSchema(api.Api):
|
|||||||
},
|
},
|
||||||
|
|
||||||
# Claims
|
# Claims
|
||||||
'claim_create': {
|
consts.CLAIM_CREATE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['claim_create']},
|
'action': {'enum': [consts.CLAIM_CREATE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -323,9 +324,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_get': {
|
consts.CLAIM_GET: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['claim_get']},
|
'action': {'enum': [consts.CLAIM_GET]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -343,9 +344,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_update': {
|
consts.CLAIM_UPDATE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['claim_update']},
|
'action': {'enum': [consts.CLAIM_UPDATE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -364,9 +365,9 @@ class RequestSchema(api.Api):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_delete': {
|
consts.CLAIM_DELETE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['claim_delete']},
|
'action': {'enum': [consts.CLAIM_DELETE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from zaqar.common.api import api
|
from zaqar.common.api import api
|
||||||
|
from zaqar.common import consts
|
||||||
|
|
||||||
|
|
||||||
class ResponseSchema(api.Api):
|
class ResponseSchema(api.Api):
|
||||||
@ -59,7 +60,7 @@ class ResponseSchema(api.Api):
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.schema = {
|
self.schema = {
|
||||||
'queue_list': {
|
consts.QUEUE_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -110,7 +111,7 @@ class ResponseSchema(api.Api):
|
|||||||
'required': ['links', 'queues'],
|
'required': ['links', 'queues'],
|
||||||
'additionalProperties': False,
|
'additionalProperties': False,
|
||||||
},
|
},
|
||||||
'queue_stats': {
|
consts.QUEUE_GET_STATS: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'messages': {
|
'messages': {
|
||||||
@ -144,7 +145,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'pool_list': {
|
consts.POOL_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -198,7 +199,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'message_list': {
|
consts.MESSAGE_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -227,14 +228,14 @@ class ResponseSchema(api.Api):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'message_get_many': {
|
consts.MESSAGE_GET_MANY: {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": message,
|
"items": message,
|
||||||
"minItems": 1,
|
"minItems": 1,
|
||||||
"maxItems": self.limits.max_messages_per_page
|
"maxItems": self.limits.max_messages_per_page
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_create': {
|
consts.CLAIM_CREATE: {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
@ -257,7 +258,7 @@ class ResponseSchema(api.Api):
|
|||||||
"maxItems": self.limits.max_messages_per_page
|
"maxItems": self.limits.max_messages_per_page
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_get': {
|
consts.CLAIM_GET: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'age': age,
|
'age': age,
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from zaqar.api.v1 import request as v1
|
from zaqar.api.v1 import request as v1
|
||||||
|
from zaqar.common import consts
|
||||||
|
|
||||||
|
|
||||||
class RequestSchema(v1.RequestSchema):
|
class RequestSchema(v1.RequestSchema):
|
||||||
@ -24,9 +25,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
schema.update({
|
schema.update({
|
||||||
|
|
||||||
# Pools
|
# Pools
|
||||||
'pool_list': {
|
consts.POOL_LIST: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['pool_list']},
|
'action': {'enum': [consts.POOL_LIST]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -46,9 +47,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
'admin': True,
|
'admin': True,
|
||||||
},
|
},
|
||||||
|
|
||||||
'pool_create': {
|
consts.POOL_CREATE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['pool_create']},
|
'action': {'enum': [consts.POOL_CREATE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -69,9 +70,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
'admin': True,
|
'admin': True,
|
||||||
},
|
},
|
||||||
|
|
||||||
'pool_update': {
|
consts.POOL_UPDATE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['pool_update']},
|
'action': {'enum': [consts.POOL_UPDATE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -92,9 +93,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
'admin': True,
|
'admin': True,
|
||||||
},
|
},
|
||||||
|
|
||||||
'pool_get': {
|
consts.POOL_GET: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['pool_get']},
|
'action': {'enum': [consts.POOL_GET]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -113,9 +114,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
'admin': True,
|
'admin': True,
|
||||||
},
|
},
|
||||||
|
|
||||||
'pool_delete': {
|
consts.POOL_DELETE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['pool_delete']},
|
'action': {'enum': [consts.POOL_DELETE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -134,9 +135,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
},
|
},
|
||||||
|
|
||||||
# Flavors
|
# Flavors
|
||||||
'flavor_list': {
|
consts.FLAVOR_LIST: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['flavor_list']},
|
'action': {'enum': [consts.FLAVOR_LIST]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -156,9 +157,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
'admin': True,
|
'admin': True,
|
||||||
},
|
},
|
||||||
|
|
||||||
'flavor_create': {
|
consts.FLAVOR_CREATE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['flavor_create']},
|
'action': {'enum': [consts.FLAVOR_CREATE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -178,9 +179,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
'admin': True,
|
'admin': True,
|
||||||
},
|
},
|
||||||
|
|
||||||
'flavor_update': {
|
consts.FLAVOR_UPDATE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['flavor_update']},
|
'action': {'enum': [consts.FLAVOR_UPDATE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -200,9 +201,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
'admin': True,
|
'admin': True,
|
||||||
},
|
},
|
||||||
|
|
||||||
'flavor_get': {
|
consts.FLAVOR_GET: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['flavor_get']},
|
'action': {'enum': [consts.FLAVOR_GET]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -221,9 +222,9 @@ class RequestSchema(v1.RequestSchema):
|
|||||||
'admin': True,
|
'admin': True,
|
||||||
},
|
},
|
||||||
|
|
||||||
'flavor_delete': {
|
consts.FLAVOR_DELETE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['flavor_delete']},
|
'action': {'enum': [consts.FLAVOR_DELETE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from zaqar.common.api import api
|
from zaqar.common.api import api
|
||||||
|
from zaqar.common import consts
|
||||||
|
|
||||||
|
|
||||||
class ResponseSchema(api.Api):
|
class ResponseSchema(api.Api):
|
||||||
@ -84,7 +85,7 @@ class ResponseSchema(api.Api):
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.schema = {
|
self.schema = {
|
||||||
'message_get_many': {
|
consts.MESSAGE_GET_MANY: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'messages': {
|
'messages': {
|
||||||
@ -98,7 +99,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False,
|
'additionalProperties': False,
|
||||||
},
|
},
|
||||||
|
|
||||||
'queue_list': {
|
consts.QUEUE_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -151,7 +152,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False,
|
'additionalProperties': False,
|
||||||
},
|
},
|
||||||
|
|
||||||
'queue_stats': {
|
consts.QUEUE_GET_STATS: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'messages': {
|
'messages': {
|
||||||
@ -185,7 +186,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'pool_list': {
|
consts.POOL_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -242,7 +243,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'message_list': {
|
consts.MESSAGE_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -271,7 +272,7 @@ class ResponseSchema(api.Api):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'pool_detail': {
|
consts.POOL_GET_DETAIL: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'name': {
|
'name': {
|
||||||
@ -301,7 +302,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_create': {
|
consts.CLAIM_CREATE: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'messages': {
|
'messages': {
|
||||||
@ -334,7 +335,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_get': {
|
consts.CLAIM_GET: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'age': age,
|
'age': age,
|
||||||
@ -378,7 +379,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'flavor_list': {
|
consts.FLAVOR_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from zaqar.api.v1_1 import request as v1_1
|
from zaqar.api.v1_1 import request as v1_1
|
||||||
|
from zaqar.common import consts
|
||||||
|
|
||||||
|
|
||||||
class RequestSchema(v1_1.RequestSchema):
|
class RequestSchema(v1_1.RequestSchema):
|
||||||
@ -24,9 +25,9 @@ class RequestSchema(v1_1.RequestSchema):
|
|||||||
schema.update({
|
schema.update({
|
||||||
|
|
||||||
# Subscriptions
|
# Subscriptions
|
||||||
'subscription_list': {
|
consts.SUBSCRIPTION_LIST: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['subscription_list']},
|
'action': {'enum': [consts.SUBSCRIPTION_LIST]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -43,9 +44,9 @@ class RequestSchema(v1_1.RequestSchema):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'subscription_create': {
|
consts.SUBSCRIPTION_CREATE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['subscription_create']},
|
'action': {'enum': [consts.SUBSCRIPTION_CREATE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -64,9 +65,9 @@ class RequestSchema(v1_1.RequestSchema):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'subscription_delete': {
|
consts.SUBSCRIPTION_DELETE: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['subscription_delete']},
|
'action': {'enum': [consts.SUBSCRIPTION_DELETE]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
@ -84,9 +85,9 @@ class RequestSchema(v1_1.RequestSchema):
|
|||||||
'required': ['action', 'headers', 'body']
|
'required': ['action', 'headers', 'body']
|
||||||
},
|
},
|
||||||
|
|
||||||
'subscription_get': {
|
consts.SUBSCRIPTION_GET: {
|
||||||
'properties': {
|
'properties': {
|
||||||
'action': {'enum': ['subscription_get']},
|
'action': {'enum': [consts.SUBSCRIPTION_GET]},
|
||||||
'headers': {
|
'headers': {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': headers,
|
'properties': headers,
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from zaqar.common.api import api
|
from zaqar.common.api import api
|
||||||
|
from zaqar.common import consts
|
||||||
|
|
||||||
|
|
||||||
class ResponseSchema(api.Api):
|
class ResponseSchema(api.Api):
|
||||||
@ -84,7 +85,7 @@ class ResponseSchema(api.Api):
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.schema = {
|
self.schema = {
|
||||||
'message_get_many': {
|
consts.MESSAGE_GET_MANY: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'messages': {
|
'messages': {
|
||||||
@ -98,7 +99,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False,
|
'additionalProperties': False,
|
||||||
},
|
},
|
||||||
|
|
||||||
'queue_list': {
|
consts.QUEUE_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -151,7 +152,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False,
|
'additionalProperties': False,
|
||||||
},
|
},
|
||||||
|
|
||||||
'queue_stats': {
|
consts.QUEUE_GET_STATS: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'messages': {
|
'messages': {
|
||||||
@ -185,7 +186,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'pool_list': {
|
consts.POOL_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -242,7 +243,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'message_list': {
|
consts.MESSAGE_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
@ -271,7 +272,7 @@ class ResponseSchema(api.Api):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'pool_detail': {
|
consts.POOL_GET_DETAIL: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'name': {
|
'name': {
|
||||||
@ -301,7 +302,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_create': {
|
consts.CLAIM_CREATE: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'messages': {
|
'messages': {
|
||||||
@ -334,7 +335,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'claim_get': {
|
consts.CLAIM_GET: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'age': age,
|
'age': age,
|
||||||
@ -378,7 +379,7 @@ class ResponseSchema(api.Api):
|
|||||||
'additionalProperties': False
|
'additionalProperties': False
|
||||||
},
|
},
|
||||||
|
|
||||||
'flavor_list': {
|
consts.FLAVOR_LIST: {
|
||||||
'type': 'object',
|
'type': 'object',
|
||||||
'properties': {
|
'properties': {
|
||||||
'links': {
|
'links': {
|
||||||
|
@ -19,6 +19,7 @@ from stevedore import driver
|
|||||||
from zaqar.api import handler
|
from zaqar.api import handler
|
||||||
from zaqar.common import cache as oslo_cache
|
from zaqar.common import cache as oslo_cache
|
||||||
from zaqar.common import configs
|
from zaqar.common import configs
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.common import decorators
|
from zaqar.common import decorators
|
||||||
from zaqar.common import errors
|
from zaqar.common import errors
|
||||||
from zaqar.storage import pipeline
|
from zaqar.storage import pipeline
|
||||||
@ -90,8 +91,7 @@ class Bootstrap(object):
|
|||||||
transport_name = self.driver_conf.transport
|
transport_name = self.driver_conf.transport
|
||||||
LOG.debug(u'Loading transport driver: %s', transport_name)
|
LOG.debug(u'Loading transport driver: %s', transport_name)
|
||||||
|
|
||||||
# FIXME(vkmc): Find a better way to init args
|
if transport_name == consts.TRANSPORT_WEBSOCKET:
|
||||||
if transport_name == 'websocket':
|
|
||||||
args = [self.conf, self.api, self.cache]
|
args = [self.conf, self.api, self.cache]
|
||||||
else:
|
else:
|
||||||
args = [
|
args = [
|
||||||
|
115
zaqar/common/consts.py
Normal file
115
zaqar/common/consts.py
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
# implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
|
TRANSPORT_DRIVERS = (
|
||||||
|
TRANSPORT_WSGI, TRANSPORT_WEBSOCKET,
|
||||||
|
) = (
|
||||||
|
'wsgi', 'websocket',
|
||||||
|
)
|
||||||
|
|
||||||
|
MESSAGE_STORE = (
|
||||||
|
MSG_STORE_MONGODB,
|
||||||
|
) = (
|
||||||
|
'mongodb',
|
||||||
|
)
|
||||||
|
|
||||||
|
MANAGEMENT_STORE = (
|
||||||
|
MGMT_STORE_MONGODB,
|
||||||
|
) = (
|
||||||
|
'mongodb',
|
||||||
|
)
|
||||||
|
|
||||||
|
SUBSCRIPTION_OPS = (
|
||||||
|
SUBSCRIPTION_CREATE,
|
||||||
|
SUBSCRIPTION_LIST,
|
||||||
|
SUBSCRIPTION_GET,
|
||||||
|
SUBSCRIPTION_DELETE,
|
||||||
|
) = (
|
||||||
|
'subscription_create',
|
||||||
|
'subscription_list',
|
||||||
|
'subscription_get',
|
||||||
|
'subscription_delete',
|
||||||
|
)
|
||||||
|
|
||||||
|
MESSAGE_OPS = (
|
||||||
|
MESSAGE_POST,
|
||||||
|
MESSAGE_LIST,
|
||||||
|
MESSAGE_GET,
|
||||||
|
MESSAGE_GET_MANY,
|
||||||
|
MESSAGE_DELETE,
|
||||||
|
MESSAGE_DELETE_MANY,
|
||||||
|
) = (
|
||||||
|
'message_post',
|
||||||
|
'message_list',
|
||||||
|
'message_get',
|
||||||
|
'message_get_many',
|
||||||
|
'message_delete',
|
||||||
|
'message_delete_many',
|
||||||
|
)
|
||||||
|
|
||||||
|
QUEUE_OPS = (
|
||||||
|
QUEUE_CREATE,
|
||||||
|
QUEUE_LIST,
|
||||||
|
QUEUE_GET,
|
||||||
|
QUEUE_DELETE,
|
||||||
|
QUEUE_GET_STATS,
|
||||||
|
) = (
|
||||||
|
'queue_create',
|
||||||
|
'queue_list',
|
||||||
|
'queue_get',
|
||||||
|
'queue_delete',
|
||||||
|
'queue_get_stats',
|
||||||
|
)
|
||||||
|
|
||||||
|
CLAIM_OPS = (
|
||||||
|
CLAIM_CREATE,
|
||||||
|
CLAIM_GET,
|
||||||
|
CLAIM_UPDATE,
|
||||||
|
CLAIM_DELETE,
|
||||||
|
) = (
|
||||||
|
'claim_create',
|
||||||
|
'claim_get',
|
||||||
|
'claim_update',
|
||||||
|
'claim_delete',
|
||||||
|
)
|
||||||
|
|
||||||
|
POOL_OPS = (
|
||||||
|
POOL_CREATE,
|
||||||
|
POOL_LIST,
|
||||||
|
POOL_GET,
|
||||||
|
POOL_GET_DETAIL,
|
||||||
|
POOL_UPDATE,
|
||||||
|
POOL_DELETE,
|
||||||
|
) = (
|
||||||
|
'pool_create',
|
||||||
|
'pool_list',
|
||||||
|
'pool_get',
|
||||||
|
'pool_get_detail',
|
||||||
|
'pool_update',
|
||||||
|
'pool_delete',
|
||||||
|
)
|
||||||
|
|
||||||
|
FLAVOR_OPS = (
|
||||||
|
FLAVOR_CREATE,
|
||||||
|
FLAVOR_LIST,
|
||||||
|
FLAVOR_GET,
|
||||||
|
FLAVOR_UPDATE,
|
||||||
|
FLAVOR_DELETE,
|
||||||
|
) = (
|
||||||
|
'flavor_create',
|
||||||
|
'flavor_list',
|
||||||
|
'flavor_get',
|
||||||
|
'flavor_update',
|
||||||
|
'flavor_delete',
|
||||||
|
)
|
@ -20,6 +20,7 @@ import uuid
|
|||||||
|
|
||||||
import ddt
|
import ddt
|
||||||
|
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.tests.functional import base
|
from zaqar.tests.functional import base
|
||||||
from zaqar.tests.functional import helpers
|
from zaqar.tests.functional import helpers
|
||||||
|
|
||||||
@ -126,7 +127,7 @@ class TestMessages(base.V1_1FunctionalTestBase):
|
|||||||
self.assertEqual(200, result.status_code)
|
self.assertEqual(200, result.status_code)
|
||||||
|
|
||||||
# Verify that the response json schema matches the expected schema
|
# Verify that the response json schema matches the expected schema
|
||||||
self.assertSchema(result.json(), 'message_get_many')
|
self.assertSchema(result.json(), consts.MESSAGE_GET_MANY)
|
||||||
|
|
||||||
self.skipTest('Bug #1273335 - Get set of messages returns wrong hrefs '
|
self.skipTest('Bug #1273335 - Get set of messages returns wrong hrefs '
|
||||||
'(happens randomly)')
|
'(happens randomly)')
|
||||||
|
@ -84,7 +84,7 @@ class TestPools(base.V1_1FunctionalTestBase):
|
|||||||
# Test existence
|
# Test existence
|
||||||
result = self.client.get('/'+pool_name+'?detailed=true')
|
result = self.client.get('/'+pool_name+'?detailed=true')
|
||||||
self.assertEqual(200, result.status_code)
|
self.assertEqual(200, result.status_code)
|
||||||
self.assertSchema(result.json(), 'pool_detail')
|
self.assertSchema(result.json(), 'pool_get_detail')
|
||||||
|
|
||||||
@ddt.data(
|
@ddt.data(
|
||||||
{
|
{
|
||||||
|
@ -16,16 +16,17 @@
|
|||||||
|
|
||||||
|
|
||||||
from zaqar.common.api import request
|
from zaqar.common.api import request
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.tests import base
|
from zaqar.tests import base
|
||||||
|
|
||||||
|
|
||||||
class TestRequest(base.TestBase):
|
class TestRequest(base.TestBase):
|
||||||
|
|
||||||
def test_request(self):
|
def test_request(self):
|
||||||
action = 'message_post'
|
action = consts.MESSAGE_POST
|
||||||
data = 'body'
|
data = 'body'
|
||||||
env = {'foo': 'bar'}
|
env = {'foo': 'bar'}
|
||||||
req = request.Request(action=action, body=data, env=env)
|
req = request.Request(action=action, body=data, env=env)
|
||||||
self.assertEqual({'foo': 'bar'}, req._env)
|
self.assertEqual({'foo': 'bar'}, req._env)
|
||||||
self.assertEqual('body', req._body)
|
self.assertEqual('body', req._body)
|
||||||
self.assertEqual('message_post', req._action)
|
self.assertEqual(consts.MESSAGE_POST, req._action)
|
||||||
|
@ -20,6 +20,7 @@ import ddt
|
|||||||
from keystonemiddleware import auth_token
|
from keystonemiddleware import auth_token
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.common import urls
|
from zaqar.common import urls
|
||||||
from zaqar.tests.unit.transport.websocket import base
|
from zaqar.tests.unit.transport.websocket import base
|
||||||
from zaqar.tests.unit.transport.websocket import utils as test_utils
|
from zaqar.tests.unit.transport.websocket import utils as test_utils
|
||||||
@ -68,7 +69,7 @@ class AuthTest(base.V2Base):
|
|||||||
self.assertEqual('200 OK', responses[0])
|
self.assertEqual('200 OK', responses[0])
|
||||||
|
|
||||||
# Check that the env is available to future requests
|
# Check that the env is available to future requests
|
||||||
req = json.dumps({'action': 'message_list',
|
req = json.dumps({'action': consts.MESSAGE_LIST,
|
||||||
'body': {'queue_name': 'myqueue'},
|
'body': {'queue_name': 'myqueue'},
|
||||||
'headers': self.headers})
|
'headers': self.headers})
|
||||||
process_request = mock.patch.object(self.protocol._handler,
|
process_request = mock.patch.object(self.protocol._handler,
|
||||||
@ -89,7 +90,7 @@ class AuthTest(base.V2Base):
|
|||||||
msg_mock = msg_mock.start()
|
msg_mock = msg_mock.start()
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
req = test_utils.create_request("queue_list", {}, self.headers)
|
req = test_utils.create_request(consts.QUEUE_LIST, {}, self.headers)
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
self.assertEqual(1, msg_mock.call_count)
|
self.assertEqual(1, msg_mock.call_count)
|
||||||
@ -198,7 +199,7 @@ class AuthTest(base.V2Base):
|
|||||||
'URL-Methods': ['GET'],
|
'URL-Methods': ['GET'],
|
||||||
'URL-Paths': ['/v2/queues/myqueue/messages']
|
'URL-Paths': ['/v2/queues/myqueue/messages']
|
||||||
})
|
})
|
||||||
req = json.dumps({'action': 'message_list',
|
req = json.dumps({'action': consts.MESSAGE_LIST,
|
||||||
'body': {'queue_name': 'myqueue'},
|
'body': {'queue_name': 'myqueue'},
|
||||||
'headers': headers})
|
'headers': headers})
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -222,7 +223,7 @@ class AuthTest(base.V2Base):
|
|||||||
'URL-Methods': ['GET'],
|
'URL-Methods': ['GET'],
|
||||||
'URL-Paths': ['/v2/queues/otherqueue/messages']
|
'URL-Paths': ['/v2/queues/otherqueue/messages']
|
||||||
})
|
})
|
||||||
req = json.dumps({'action': 'message_list',
|
req = json.dumps({'action': consts.MESSAGE_LIST,
|
||||||
'body': {'queue_name': 'otherqueue'},
|
'body': {'queue_name': 'otherqueue'},
|
||||||
'headers': headers})
|
'headers': headers})
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -246,7 +247,7 @@ class AuthTest(base.V2Base):
|
|||||||
'URL-Methods': ['GET'],
|
'URL-Methods': ['GET'],
|
||||||
'URL-Paths': ['/v2/queues/myqueue/messages']
|
'URL-Paths': ['/v2/queues/myqueue/messages']
|
||||||
})
|
})
|
||||||
req = json.dumps({'action': 'message_delete',
|
req = json.dumps({'action': consts.MESSAGE_DELETE,
|
||||||
'body': {'queue_name': 'myqueue',
|
'body': {'queue_name': 'myqueue',
|
||||||
'message_id': '123'},
|
'message_id': '123'},
|
||||||
'headers': headers})
|
'headers': headers})
|
||||||
|
@ -19,6 +19,7 @@ import ddt
|
|||||||
import mock
|
import mock
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
|
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.tests.unit.transport.websocket import base
|
from zaqar.tests.unit.transport.websocket import base
|
||||||
from zaqar.tests.unit.transport.websocket import utils as test_utils
|
from zaqar.tests.unit.transport.websocket import utils as test_utils
|
||||||
|
|
||||||
@ -39,7 +40,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
'X-Project-ID': self.project_id
|
'X-Project-ID': self.project_id
|
||||||
}
|
}
|
||||||
|
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": "skittle"}
|
body = {"queue_name": "skittle"}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
|
|
||||||
@ -48,7 +49,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
resp = json.loads(msg_mock.call_args[0][0])
|
resp = json.loads(msg_mock.call_args[0][0])
|
||||||
self.assertEqual(201, resp['headers']['status'])
|
self.assertEqual(201, resp['headers']['status'])
|
||||||
|
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"messages": [
|
"messages": [
|
||||||
{'body': 239, 'ttl': 300},
|
{'body': 239, 'ttl': 300},
|
||||||
@ -74,7 +75,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(ClaimsBaseTest, self).tearDown()
|
super(ClaimsBaseTest, self).tearDown()
|
||||||
action = 'queue_delete'
|
action = consts.QUEUE_DELETE
|
||||||
body = {'queue_name': 'skittle'}
|
body = {'queue_name': 'skittle'}
|
||||||
|
|
||||||
send_mock = mock.Mock()
|
send_mock = mock.Mock()
|
||||||
@ -88,7 +89,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
|
|
||||||
@ddt.data('[', '[]', '.', '"fail"')
|
@ddt.data('[', '[]', '.', '"fail"')
|
||||||
def test_bad_claim(self, doc):
|
def test_bad_claim(self, doc):
|
||||||
action = "claim_create"
|
action = consts.CLAIM_CREATE
|
||||||
body = doc
|
body = doc
|
||||||
|
|
||||||
send_mock = mock.Mock()
|
send_mock = mock.Mock()
|
||||||
@ -99,7 +100,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
resp = json.loads(send_mock.call_args[0][0])
|
resp = json.loads(send_mock.call_args[0][0])
|
||||||
self.assertEqual(400, resp['headers']['status'])
|
self.assertEqual(400, resp['headers']['status'])
|
||||||
|
|
||||||
action = "claim_update"
|
action = consts.CLAIM_UPDATE
|
||||||
body = doc
|
body = doc
|
||||||
|
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -108,7 +109,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(400, resp['headers']['status'])
|
self.assertEqual(400, resp['headers']['status'])
|
||||||
|
|
||||||
def test_exceeded_claim(self):
|
def test_exceeded_claim(self):
|
||||||
action = "claim_create"
|
action = consts.CLAIM_CREATE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"ttl": 100,
|
"ttl": 100,
|
||||||
"grace": 60,
|
"grace": 60,
|
||||||
@ -125,7 +126,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
@ddt.data((-1, -1), (59, 60), (60, 59), (60, 43201), (43201, 60))
|
@ddt.data((-1, -1), (59, 60), (60, 59), (60, 43201), (43201, 60))
|
||||||
def test_unacceptable_ttl_or_grace(self, ttl_grace):
|
def test_unacceptable_ttl_or_grace(self, ttl_grace):
|
||||||
ttl, grace = ttl_grace
|
ttl, grace = ttl_grace
|
||||||
action = "claim_create"
|
action = consts.CLAIM_CREATE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"ttl": ttl,
|
"ttl": ttl,
|
||||||
"grace": grace}
|
"grace": grace}
|
||||||
@ -142,7 +143,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
def test_unacceptable_new_ttl(self, ttl):
|
def test_unacceptable_new_ttl(self, ttl):
|
||||||
claim = self._get_a_claim()
|
claim = self._get_a_claim()
|
||||||
|
|
||||||
action = "claim_update"
|
action = consts.CLAIM_UPDATE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"claim_id": claim['body']['claim_id'],
|
"claim_id": claim['body']['claim_id'],
|
||||||
"ttl": ttl}
|
"ttl": ttl}
|
||||||
@ -156,7 +157,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(400, resp['headers']['status'])
|
self.assertEqual(400, resp['headers']['status'])
|
||||||
|
|
||||||
def test_default_ttl_and_grace(self):
|
def test_default_ttl_and_grace(self):
|
||||||
action = "claim_create"
|
action = consts.CLAIM_CREATE
|
||||||
body = {"queue_name": "skittle"}
|
body = {"queue_name": "skittle"}
|
||||||
|
|
||||||
send_mock = mock.Mock()
|
send_mock = mock.Mock()
|
||||||
@ -167,7 +168,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
resp = json.loads(send_mock.call_args[0][0])
|
resp = json.loads(send_mock.call_args[0][0])
|
||||||
self.assertEqual(201, resp['headers']['status'])
|
self.assertEqual(201, resp['headers']['status'])
|
||||||
|
|
||||||
action = "claim_get"
|
action = consts.CLAIM_GET
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"claim_id": resp['body']['claim_id']}
|
"claim_id": resp['body']['claim_id']}
|
||||||
|
|
||||||
@ -180,7 +181,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
|
|
||||||
def test_lifecycle(self):
|
def test_lifecycle(self):
|
||||||
# First, claim some messages
|
# First, claim some messages
|
||||||
action = "claim_create"
|
action = consts.CLAIM_CREATE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"ttl": 100,
|
"ttl": 100,
|
||||||
"grace": 60}
|
"grace": 60}
|
||||||
@ -206,7 +207,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
# Listing messages, by default, won't include claimed, will echo
|
# Listing messages, by default, won't include claimed, will echo
|
||||||
action = "message_list"
|
action = consts.MESSAGE_LIST
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"echo": True}
|
"echo": True}
|
||||||
|
|
||||||
@ -271,7 +272,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
message_id_2 = resp['body']['messages'][1]['id']
|
message_id_2 = resp['body']['messages'][1]['id']
|
||||||
|
|
||||||
# Try to delete the message without submitting a claim_id
|
# Try to delete the message without submitting a claim_id
|
||||||
action = "message_delete"
|
action = consts.MESSAGE_DELETE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"message_id": message_id_1}
|
"message_id": message_id_1}
|
||||||
|
|
||||||
@ -296,7 +297,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
'X-Project-ID': 'someproject'
|
'X-Project-ID': 'someproject'
|
||||||
}
|
}
|
||||||
|
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"message_id": message_id_2}
|
"message_id": message_id_2}
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
@ -305,7 +306,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(404, resp['headers']['status'])
|
self.assertEqual(404, resp['headers']['status'])
|
||||||
|
|
||||||
# Get the message
|
# Get the message
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"message_id": message_id_2}
|
"message_id": message_id_2}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -315,7 +316,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
|
|
||||||
# Update the claim
|
# Update the claim
|
||||||
creation = timeutils.utcnow()
|
creation = timeutils.utcnow()
|
||||||
action = "claim_update"
|
action = consts.CLAIM_UPDATE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"ttl": 60,
|
"ttl": 60,
|
||||||
"grace": 60,
|
"grace": 60,
|
||||||
@ -326,7 +327,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
# Get the claimed messages (again)
|
# Get the claimed messages (again)
|
||||||
action = "claim_get"
|
action = consts.CLAIM_GET
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"claim_id": claim_id}
|
"claim_id": claim_id}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -342,7 +343,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertTrue(estimated_age > resp['body']['age'])
|
self.assertTrue(estimated_age > resp['body']['age'])
|
||||||
|
|
||||||
# Delete the claim
|
# Delete the claim
|
||||||
action = "claim_delete"
|
action = consts.CLAIM_DELETE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"claim_id": claim_id}
|
"claim_id": claim_id}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -351,7 +352,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
# Try to delete a message with an invalid claim ID
|
# Try to delete a message with an invalid claim ID
|
||||||
action = "message_delete"
|
action = consts.MESSAGE_DELETE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"message_id": message_id_3,
|
"message_id": message_id_3,
|
||||||
"claim_id": claim_id}
|
"claim_id": claim_id}
|
||||||
@ -362,7 +363,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(400, resp['headers']['status'])
|
self.assertEqual(400, resp['headers']['status'])
|
||||||
|
|
||||||
# Make sure it wasn't deleted!
|
# Make sure it wasn't deleted!
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"message_id": message_id_2}
|
"message_id": message_id_2}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -371,7 +372,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(200, resp['headers']['status'])
|
self.assertEqual(200, resp['headers']['status'])
|
||||||
|
|
||||||
# Try to get a claim that doesn't exist
|
# Try to get a claim that doesn't exist
|
||||||
action = "claim_get"
|
action = consts.CLAIM_GET
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"claim_id": claim_id}
|
"claim_id": claim_id}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -380,7 +381,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(404, resp['headers']['status'])
|
self.assertEqual(404, resp['headers']['status'])
|
||||||
|
|
||||||
# Try to update a claim that doesn't exist
|
# Try to update a claim that doesn't exist
|
||||||
action = "claim_update"
|
action = consts.CLAIM_UPDATE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"ttl": 60,
|
"ttl": 60,
|
||||||
"grace": 60,
|
"grace": 60,
|
||||||
@ -391,7 +392,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(404, resp['headers']['status'])
|
self.assertEqual(404, resp['headers']['status'])
|
||||||
|
|
||||||
def test_post_claim_nonexistent_queue(self):
|
def test_post_claim_nonexistent_queue(self):
|
||||||
action = "claim_create"
|
action = consts.CLAIM_CREATE
|
||||||
body = {"queue_name": "nonexistent",
|
body = {"queue_name": "nonexistent",
|
||||||
"ttl": 100,
|
"ttl": 100,
|
||||||
"grace": 60}
|
"grace": 60}
|
||||||
@ -405,7 +406,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
def test_get_claim_nonexistent_queue(self):
|
def test_get_claim_nonexistent_queue(self):
|
||||||
action = "claim_get"
|
action = consts.CLAIM_GET
|
||||||
body = {"queue_name": "nonexistent",
|
body = {"queue_name": "nonexistent",
|
||||||
"claim_id": "aaabbbba"}
|
"claim_id": "aaabbbba"}
|
||||||
|
|
||||||
@ -418,7 +419,7 @@ class ClaimsBaseTest(base.V1_1Base):
|
|||||||
self.assertEqual(404, resp['headers']['status'])
|
self.assertEqual(404, resp['headers']['status'])
|
||||||
|
|
||||||
def _get_a_claim(self):
|
def _get_a_claim(self):
|
||||||
action = "claim_create"
|
action = consts.CLAIM_CREATE
|
||||||
body = {"queue_name": "skittle",
|
body = {"queue_name": "skittle",
|
||||||
"ttl": 100,
|
"ttl": 100,
|
||||||
"grace": 60}
|
"grace": 60}
|
||||||
|
@ -23,6 +23,7 @@ from oslo_utils import timeutils
|
|||||||
import six
|
import six
|
||||||
from testtools import matchers
|
from testtools import matchers
|
||||||
|
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.tests.unit.transport.websocket import base
|
from zaqar.tests.unit.transport.websocket import base
|
||||||
from zaqar.tests.unit.transport.websocket import utils as test_utils
|
from zaqar.tests.unit.transport.websocket import utils as test_utils
|
||||||
from zaqar.transport import validation
|
from zaqar.transport import validation
|
||||||
@ -45,9 +46,9 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
'X-Project-ID': self.project_id
|
'X-Project-ID': self.project_id
|
||||||
}
|
}
|
||||||
|
|
||||||
action = "queue_create"
|
|
||||||
body = {"queue_name": "kitkat"}
|
body = {"queue_name": "kitkat"}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(consts.QUEUE_CREATE,
|
||||||
|
body, self.headers)
|
||||||
|
|
||||||
with mock.patch.object(self.protocol, 'sendMessage') as msg_mock:
|
with mock.patch.object(self.protocol, 'sendMessage') as msg_mock:
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -56,13 +57,13 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(MessagesBaseTest, self).tearDown()
|
super(MessagesBaseTest, self).tearDown()
|
||||||
action = "queue_delete"
|
|
||||||
body = {"queue_name": "kitkat"}
|
body = {"queue_name": "kitkat"}
|
||||||
|
|
||||||
send_mock = mock.Mock()
|
send_mock = mock.Mock()
|
||||||
self.protocol.sendMessage = send_mock
|
self.protocol.sendMessage = send_mock
|
||||||
|
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(consts.QUEUE_DELETE,
|
||||||
|
body, self.headers)
|
||||||
|
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
@ -70,7 +71,6 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
def _test_post(self, sample_messages, in_binary=False):
|
def _test_post(self, sample_messages, in_binary=False):
|
||||||
action = "message_post"
|
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"messages": sample_messages}
|
"messages": sample_messages}
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
|
|
||||||
dumps, loads, create_req = test_utils.get_pack_tools(binary=in_binary)
|
dumps, loads, create_req = test_utils.get_pack_tools(binary=in_binary)
|
||||||
|
|
||||||
req = create_req(action, body, self.headers)
|
req = create_req(consts.MESSAGE_POST, body, self.headers)
|
||||||
|
|
||||||
self.protocol.onMessage(req, in_binary)
|
self.protocol.onMessage(req, in_binary)
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
headers = self.headers.copy()
|
headers = self.headers.copy()
|
||||||
headers['X-Project-ID'] = '777777'
|
headers['X-Project-ID'] = '777777'
|
||||||
# Wrong project ID
|
# Wrong project ID
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"message_id": msg_id}
|
"message_id": msg_id}
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
matchers.GreaterThan(-1))
|
matchers.GreaterThan(-1))
|
||||||
|
|
||||||
# Test bulk GET
|
# Test bulk GET
|
||||||
action = "message_get_many"
|
action = consts.MESSAGE_GET_MANY
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"message_ids": self.msg_ids}
|
"message_ids": self.msg_ids}
|
||||||
req = create_req(action, body, self.headers)
|
req = create_req(action, body, self.headers)
|
||||||
@ -153,7 +153,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
|
|
||||||
# Bulk GET restriction
|
# Bulk GET restriction
|
||||||
get_msg_ids = msg_id * 21
|
get_msg_ids = msg_id * 21
|
||||||
action = "message_get_many"
|
action = consts.MESSAGE_GET_MANY
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"message_ids": get_msg_ids}
|
"message_ids": get_msg_ids}
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
|
|
||||||
# Bulk deletion restriction
|
# Bulk deletion restriction
|
||||||
del_msg_ids = msg_id * 22
|
del_msg_ids = msg_id * 22
|
||||||
action = "message_get_many"
|
action = consts.MESSAGE_GET_MANY
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"message_ids": del_msg_ids}
|
"message_ids": del_msg_ids}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -205,7 +205,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
messages = [{'body': 239},
|
messages = [{'body': 239},
|
||||||
{'body': {'key': 'value'}, 'ttl': 200}]
|
{'body': {'key': 'value'}, 'ttl': 200}]
|
||||||
|
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"messages": messages}
|
"messages": messages}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -219,7 +219,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(201, resp['headers']['status'])
|
self.assertEqual(201, resp['headers']['status'])
|
||||||
msg_id = resp['body']['message_ids'][0]
|
msg_id = resp['body']['message_ids'][0]
|
||||||
|
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
body = {"queue_name": "kitkat", "message_id": msg_id}
|
body = {"queue_name": "kitkat", "message_id": msg_id}
|
||||||
|
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -264,7 +264,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
{'body': {'key': 'value'}, 'ttl': '200'},
|
{'body': {'key': 'value'}, 'ttl': '200'},
|
||||||
]
|
]
|
||||||
|
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"messages": sample_messages}
|
"messages": sample_messages}
|
||||||
|
|
||||||
@ -285,7 +285,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
{'ttl': 200},
|
{'ttl': 200},
|
||||||
]
|
]
|
||||||
|
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"messages": sample_messages}
|
"messages": sample_messages}
|
||||||
|
|
||||||
@ -301,7 +301,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
'Bad request. Missing "body" field.', resp['body']['exception'])
|
'Bad request. Missing "body" field.', resp['body']['exception'])
|
||||||
|
|
||||||
def test_get_from_missing_queue(self):
|
def test_get_from_missing_queue(self):
|
||||||
action = "message_list"
|
action = consts.MESSAGE_LIST
|
||||||
body = {"queue_name": "anothernonexistent"}
|
body = {"queue_name": "anothernonexistent"}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
|
|
||||||
@ -316,7 +316,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
|
|
||||||
@ddt.data('', '0xdeadbeef', '550893e0-2b6e-11e3-835a-5cf9dd72369')
|
@ddt.data('', '0xdeadbeef', '550893e0-2b6e-11e3-835a-5cf9dd72369')
|
||||||
def test_bad_client_id(self, text_id):
|
def test_bad_client_id(self, text_id):
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {
|
body = {
|
||||||
"queue_name": "kinder",
|
"queue_name": "kinder",
|
||||||
"messages": [{"ttl": 60,
|
"messages": [{"ttl": 60,
|
||||||
@ -337,7 +337,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
resp = json.loads(send_mock.call_args[0][0])
|
resp = json.loads(send_mock.call_args[0][0])
|
||||||
self.assertEqual(400, resp['headers']['status'])
|
self.assertEqual(400, resp['headers']['status'])
|
||||||
|
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
body = {
|
body = {
|
||||||
"queue_name": "kinder",
|
"queue_name": "kinder",
|
||||||
"limit": 3,
|
"limit": 3,
|
||||||
@ -352,7 +352,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
|
|
||||||
@ddt.data(None, '[', '[]', '{}', '.')
|
@ddt.data(None, '[', '[]', '{}', '.')
|
||||||
def test_post_bad_message(self, document):
|
def test_post_bad_message(self, document):
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {
|
body = {
|
||||||
"queue_name": "kinder",
|
"queue_name": "kinder",
|
||||||
"messages": document
|
"messages": document
|
||||||
@ -370,7 +370,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
|
|
||||||
@ddt.data(-1, 59, 1209601)
|
@ddt.data(-1, 59, 1209601)
|
||||||
def test_unacceptable_ttl(self, ttl):
|
def test_unacceptable_ttl(self, ttl):
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {"queue_name": "kinder",
|
body = {"queue_name": "kinder",
|
||||||
"messages": [{"ttl": ttl, "body": ""}]}
|
"messages": [{"ttl": ttl, "body": ""}]}
|
||||||
|
|
||||||
@ -387,7 +387,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
def test_exceeded_message_posting(self):
|
def test_exceeded_message_posting(self):
|
||||||
# Total (raw request) size
|
# Total (raw request) size
|
||||||
document = [{'body': "some body", 'ttl': 100}] * 8000
|
document = [{'body': "some body", 'ttl': 100}] * 8000
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {
|
body = {
|
||||||
"queue_name": "kinder",
|
"queue_name": "kinder",
|
||||||
"messages": document
|
"messages": document
|
||||||
@ -406,7 +406,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
@ddt.data('{"overflow": 9223372036854775808}',
|
@ddt.data('{"overflow": 9223372036854775808}',
|
||||||
'{"underflow": -9223372036854775809}')
|
'{"underflow": -9223372036854775809}')
|
||||||
def test_unsupported_json(self, document):
|
def test_unsupported_json(self, document):
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {
|
body = {
|
||||||
"queue_name": "fizz",
|
"queue_name": "fizz",
|
||||||
"messages": document
|
"messages": document
|
||||||
@ -426,7 +426,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
resp = self._post_messages("tofi")
|
resp = self._post_messages("tofi")
|
||||||
msg_id = resp['body']['message_ids'][0]
|
msg_id = resp['body']['message_ids'][0]
|
||||||
|
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
body = {"queue_name": "tofi",
|
body = {"queue_name": "tofi",
|
||||||
"message_id": msg_id}
|
"message_id": msg_id}
|
||||||
|
|
||||||
@ -441,7 +441,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(200, resp['headers']['status'])
|
self.assertEqual(200, resp['headers']['status'])
|
||||||
|
|
||||||
# Delete queue
|
# Delete queue
|
||||||
action = "message_delete"
|
action = consts.MESSAGE_DELETE
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
|
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -450,7 +450,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
# Get non existent queue
|
# Get non existent queue
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
|
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -458,7 +458,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(404, resp['headers']['status'])
|
self.assertEqual(404, resp['headers']['status'])
|
||||||
|
|
||||||
# Safe to delete non-existing ones
|
# Safe to delete non-existing ones
|
||||||
action = "message_delete"
|
action = consts.MESSAGE_DELETE
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
|
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -469,7 +469,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
resp = self._post_messages("nerds", repeat=5)
|
resp = self._post_messages("nerds", repeat=5)
|
||||||
msg_ids = resp['body']['message_ids']
|
msg_ids = resp['body']['message_ids']
|
||||||
|
|
||||||
action = "message_delete_many"
|
action = consts.MESSAGE_DELETE_MANY
|
||||||
body = {"queue_name": "nerds",
|
body = {"queue_name": "nerds",
|
||||||
"message_ids": msg_ids}
|
"message_ids": msg_ids}
|
||||||
|
|
||||||
@ -483,7 +483,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
resp = json.loads(send_mock.call_args[0][0])
|
resp = json.loads(send_mock.call_args[0][0])
|
||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
|
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -492,7 +492,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(400, resp['headers']['status'])
|
self.assertEqual(400, resp['headers']['status'])
|
||||||
|
|
||||||
# Safe to delete non-existing ones
|
# Safe to delete non-existing ones
|
||||||
action = "message_delete_many"
|
action = consts.MESSAGE_DELETE_MANY
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
|
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -501,7 +501,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
# Even after the queue is gone
|
# Even after the queue is gone
|
||||||
action = "queue_delete"
|
action = consts.QUEUE_DELETE
|
||||||
body = {"queue_name": "nerds"}
|
body = {"queue_name": "nerds"}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
@ -509,7 +509,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
resp = json.loads(send_mock.call_args[0][0])
|
resp = json.loads(send_mock.call_args[0][0])
|
||||||
self.assertEqual(204, resp['headers']['status'])
|
self.assertEqual(204, resp['headers']['status'])
|
||||||
|
|
||||||
action = "message_delete_many"
|
action = consts.MESSAGE_DELETE_MANY
|
||||||
body = {"queue_name": "nerds",
|
body = {"queue_name": "nerds",
|
||||||
"message_ids": msg_ids}
|
"message_ids": msg_ids}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -521,7 +521,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
def test_pop_delete(self):
|
def test_pop_delete(self):
|
||||||
self._post_messages("kitkat", repeat=5)
|
self._post_messages("kitkat", repeat=5)
|
||||||
|
|
||||||
action = "message_delete_many"
|
action = consts.MESSAGE_DELETE_MANY
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"pop_limit": 2}
|
"pop_limit": 2}
|
||||||
|
|
||||||
@ -539,7 +539,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(239, resp['body']['messages'][1]['body'])
|
self.assertEqual(239, resp['body']['messages'][1]['body'])
|
||||||
|
|
||||||
def test_get_nonexistent_message_404s(self):
|
def test_get_nonexistent_message_404s(self):
|
||||||
action = "message_get"
|
action = consts.MESSAGE_GET
|
||||||
body = {"queue_name": "notthere",
|
body = {"queue_name": "notthere",
|
||||||
"message_id": "a"}
|
"message_id": "a"}
|
||||||
|
|
||||||
@ -553,7 +553,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(404, resp['headers']['status'])
|
self.assertEqual(404, resp['headers']['status'])
|
||||||
|
|
||||||
def test_get_multiple_invalid_messages_404s(self):
|
def test_get_multiple_invalid_messages_404s(self):
|
||||||
action = "message_get_many"
|
action = consts.MESSAGE_GET_MANY
|
||||||
body = {"queue_name": "notnotthere",
|
body = {"queue_name": "notnotthere",
|
||||||
"message_ids": ["a", "b", "c"]}
|
"message_ids": ["a", "b", "c"]}
|
||||||
|
|
||||||
@ -567,7 +567,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
self.assertEqual(200, resp['headers']['status'])
|
self.assertEqual(200, resp['headers']['status'])
|
||||||
|
|
||||||
def test_delete_multiple_invalid_messages_204s(self):
|
def test_delete_multiple_invalid_messages_204s(self):
|
||||||
action = "message_delete"
|
action = consts.MESSAGE_DELETE
|
||||||
body = {"queue_name": "yetanothernotthere",
|
body = {"queue_name": "yetanothernotthere",
|
||||||
"message_ids": ["a", "b", "c"]}
|
"message_ids": ["a", "b", "c"]}
|
||||||
|
|
||||||
@ -584,7 +584,7 @@ class MessagesBaseTest(base.V2Base):
|
|||||||
def _post_messages(self, queue_name, repeat=1):
|
def _post_messages(self, queue_name, repeat=1):
|
||||||
messages = [{'body': 239, 'ttl': 300}] * repeat
|
messages = [{'body': 239, 'ttl': 300}] * repeat
|
||||||
|
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {"queue_name": queue_name,
|
body = {"queue_name": queue_name,
|
||||||
"messages": messages}
|
"messages": messages}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import uuid
|
|||||||
import ddt
|
import ddt
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.storage import errors as storage_errors
|
from zaqar.storage import errors as storage_errors
|
||||||
from zaqar import tests as testing
|
from zaqar import tests as testing
|
||||||
from zaqar.tests.unit.transport.websocket import base
|
from zaqar.tests.unit.transport.websocket import base
|
||||||
@ -34,7 +35,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol = self.transport.factory()
|
self.protocol = self.transport.factory()
|
||||||
|
|
||||||
def test_empty_project_id(self):
|
def test_empty_project_id(self):
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"key": {
|
"key": {
|
||||||
@ -56,7 +57,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
@ddt.data('480924', 'foo')
|
@ddt.data('480924', 'foo')
|
||||||
def test_basics_thoroughly(self, project_id):
|
def test_basics_thoroughly(self, project_id):
|
||||||
# Stats are empty - queue not created yet
|
# Stats are empty - queue not created yet
|
||||||
action = "queue_get_stats"
|
action = consts.QUEUE_GET_STATS
|
||||||
body = {"queue_name": "gummybears"}
|
body = {"queue_name": "gummybears"}
|
||||||
headers = {
|
headers = {
|
||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
@ -77,7 +78,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# Create
|
# Create
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": "gummybears",
|
body = {"queue_name": "gummybears",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"key": {
|
"key": {
|
||||||
@ -96,7 +97,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# Fetch metadata
|
# Fetch metadata
|
||||||
action = "queue_get"
|
action = consts.QUEUE_GET
|
||||||
body = {"queue_name": "gummybears"}
|
body = {"queue_name": "gummybears"}
|
||||||
meta = {"messages": {"ttl": 600},
|
meta = {"messages": {"ttl": 600},
|
||||||
"key": {
|
"key": {
|
||||||
@ -114,7 +115,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# Stats empty queue
|
# Stats empty queue
|
||||||
action = "queue_get_stats"
|
action = consts.QUEUE_GET_STATS
|
||||||
body = {"queue_name": "gummybears"}
|
body = {"queue_name": "gummybears"}
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
|
|
||||||
@ -126,7 +127,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# Delete
|
# Delete
|
||||||
action = "queue_delete"
|
action = consts.QUEUE_DELETE
|
||||||
body = {"queue_name": "gummybears"}
|
body = {"queue_name": "gummybears"}
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
|
|
||||||
@ -138,7 +139,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# Get non-existent stats
|
# Get non-existent stats
|
||||||
action = "queue_get_stats"
|
action = consts.QUEUE_GET_STATS
|
||||||
body = {"queue_name": "gummybears"}
|
body = {"queue_name": "gummybears"}
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
|
|
||||||
@ -154,7 +155,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project'
|
'X-Project-ID': 'test-project'
|
||||||
}
|
}
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": 'marsbar',
|
body = {"queue_name": 'marsbar',
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"key": {
|
"key": {
|
||||||
@ -196,7 +197,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project' * 30
|
'X-Project-ID': 'test-project' * 30
|
||||||
}
|
}
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": 'poptart'}
|
body = {"queue_name": 'poptart'}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -230,7 +231,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project' * 30
|
'X-Project-ID': 'test-project' * 30
|
||||||
}
|
}
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": test_params[0]}
|
body = {"queue_name": test_params[0]}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -256,7 +257,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project'
|
'X-Project-ID': 'test-project'
|
||||||
}
|
}
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": "fizbat"}
|
body = {"queue_name": "fizbat"}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -285,7 +286,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project' * 30
|
'X-Project-ID': 'test-project' * 30
|
||||||
}
|
}
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": "fizbat",
|
body = {"queue_name": "fizbat",
|
||||||
"metadata": meta}
|
"metadata": meta}
|
||||||
|
|
||||||
@ -307,7 +308,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project'
|
'X-Project-ID': 'test-project'
|
||||||
}
|
}
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": "buttertoffee",
|
body = {"queue_name": "buttertoffee",
|
||||||
"metadata": {"messages": {"ttl": 600},
|
"metadata": {"messages": {"ttl": 600},
|
||||||
"padding": "x"}
|
"padding": "x"}
|
||||||
@ -334,7 +335,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project'
|
'X-Project-ID': 'test-project'
|
||||||
}
|
}
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": "peppermint",
|
body = {"queue_name": "peppermint",
|
||||||
"metadata": {"messages": {"ttl": 600},
|
"metadata": {"messages": {"ttl": 600},
|
||||||
"padding": "x"}
|
"padding": "x"}
|
||||||
@ -362,7 +363,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project'
|
'X-Project-ID': 'test-project'
|
||||||
}
|
}
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
body = {"queue_name": "bonobon"}
|
body = {"queue_name": "bonobon"}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -393,7 +394,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# Get
|
# Get
|
||||||
action = "queue_get"
|
action = consts.QUEUE_GET
|
||||||
body = {"queue_name": "bonobon"}
|
body = {"queue_name": "bonobon"}
|
||||||
|
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
@ -407,7 +408,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# Update
|
# Update
|
||||||
action = "queue_create"
|
action = consts.QUEUE_CREATE
|
||||||
meta2 = {"messages": {"ttl": 100}, "padding": "y"}
|
meta2 = {"messages": {"ttl": 100}, "padding": "y"}
|
||||||
body["metadata"] = meta2
|
body["metadata"] = meta2
|
||||||
|
|
||||||
@ -421,7 +422,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# Get again
|
# Get again
|
||||||
action = "queue_get"
|
action = consts.QUEUE_GET
|
||||||
body = {"queue_name": "bonobon"}
|
body = {"queue_name": "bonobon"}
|
||||||
|
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
@ -454,7 +455,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
alt_project_id = str(arbitrary_number + 1)
|
alt_project_id = str(arbitrary_number + 1)
|
||||||
|
|
||||||
# List empty
|
# List empty
|
||||||
action = "queue_list"
|
action = consts.QUEUE_LIST
|
||||||
body = {}
|
body = {}
|
||||||
|
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
@ -483,7 +484,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
altheaders = {'Client-ID': client_id}
|
altheaders = {'Client-ID': client_id}
|
||||||
if project_id is not None:
|
if project_id is not None:
|
||||||
altheaders['X-Project-ID'] = project_id
|
altheaders['X-Project-ID'] = project_id
|
||||||
action = 'queue_create'
|
action = consts.QUEUE_CREATE
|
||||||
body['queue_name'] = queue_name
|
body['queue_name'] = queue_name
|
||||||
body['metadata'] = metadata
|
body['metadata'] = metadata
|
||||||
|
|
||||||
@ -537,7 +538,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
sender.side_effect = validator
|
sender.side_effect = validator
|
||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
action = "queue_get"
|
action = consts.QUEUE_GET
|
||||||
body = {"queue_name": "q1"}
|
body = {"queue_name": "q1"}
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
|
|
||||||
@ -550,7 +551,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
# List tail
|
# List tail
|
||||||
action = "queue_list"
|
action = consts.QUEUE_LIST
|
||||||
body = {}
|
body = {}
|
||||||
req = test_utils.create_request(action, body, headers)
|
req = test_utils.create_request(action, body, headers)
|
||||||
|
|
||||||
@ -571,7 +572,7 @@ class QueueLifecycleBaseTest(base.V2Base):
|
|||||||
'Client-ID': str(uuid.uuid4()),
|
'Client-ID': str(uuid.uuid4()),
|
||||||
'X-Project-ID': 'test-project'
|
'X-Project-ID': 'test-project'
|
||||||
}
|
}
|
||||||
action = "queue_list"
|
action = consts.QUEUE_LIST
|
||||||
body = {}
|
body = {}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
|
@ -21,6 +21,7 @@ import mock
|
|||||||
import msgpack
|
import msgpack
|
||||||
|
|
||||||
from zaqar.common import auth
|
from zaqar.common import auth
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.storage import errors as storage_errors
|
from zaqar.storage import errors as storage_errors
|
||||||
from zaqar.tests.unit.transport.websocket import base
|
from zaqar.tests.unit.transport.websocket import base
|
||||||
from zaqar.tests.unit.transport.websocket import utils as test_utils
|
from zaqar.tests.unit.transport.websocket import utils as test_utils
|
||||||
@ -41,9 +42,9 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
'X-Project-ID': self.project_id
|
'X-Project-ID': self.project_id
|
||||||
}
|
}
|
||||||
|
|
||||||
action = 'queue_create'
|
|
||||||
body = {'queue_name': 'kitkat'}
|
body = {'queue_name': 'kitkat'}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(consts.QUEUE_CREATE,
|
||||||
|
body, self.headers)
|
||||||
|
|
||||||
def validator(resp, isBinary):
|
def validator(resp, isBinary):
|
||||||
resp = json.loads(resp)
|
resp = json.loads(resp)
|
||||||
@ -55,14 +56,14 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(SubscriptionTest, self).tearDown()
|
super(SubscriptionTest, self).tearDown()
|
||||||
action = 'queue_delete'
|
|
||||||
body = {'queue_name': 'kitkat'}
|
body = {'queue_name': 'kitkat'}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
self.addCleanup(send_mock.stop)
|
self.addCleanup(send_mock.stop)
|
||||||
sender = send_mock.start()
|
sender = send_mock.start()
|
||||||
|
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(consts.QUEUE_DELETE,
|
||||||
|
body, self.headers)
|
||||||
|
|
||||||
def validator(resp, isBinary):
|
def validator(resp, isBinary):
|
||||||
resp = json.loads(resp)
|
resp = json.loads(resp)
|
||||||
@ -72,7 +73,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
self.protocol.onMessage(req, False)
|
self.protocol.onMessage(req, False)
|
||||||
|
|
||||||
def test_subscription_create(self):
|
def test_subscription_create(self):
|
||||||
action = 'subscription_create'
|
action = consts.SUBSCRIPTION_CREATE
|
||||||
body = {'queue_name': 'kitkat', 'ttl': 600}
|
body = {'queue_name': 'kitkat', 'ttl': 600}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -104,7 +105,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
'body': {'message': 'Subscription kitkat created.',
|
'body': {'message': 'Subscription kitkat created.',
|
||||||
'subscription_id': subscriber['id']},
|
'subscription_id': subscriber['id']},
|
||||||
'headers': {'status': 201},
|
'headers': {'status': 201},
|
||||||
'request': {'action': 'subscription_create',
|
'request': {'action': consts.SUBSCRIPTION_CREATE,
|
||||||
'body': {'queue_name': 'kitkat', 'ttl': 600},
|
'body': {'queue_name': 'kitkat', 'ttl': 600},
|
||||||
'api': 'v2', 'headers': self.headers}}
|
'api': 'v2', 'headers': self.headers}}
|
||||||
|
|
||||||
@ -122,7 +123,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
@mock.patch.object(auth, 'create_trust_id')
|
@mock.patch.object(auth, 'create_trust_id')
|
||||||
def test_subscription_create_trust(self, create_trust):
|
def test_subscription_create_trust(self, create_trust):
|
||||||
create_trust.return_value = 'trust_id'
|
create_trust.return_value = 'trust_id'
|
||||||
action = 'subscription_create'
|
action = consts.SUBSCRIPTION_CREATE
|
||||||
body = {'queue_name': 'kitkat', 'ttl': 600,
|
body = {'queue_name': 'kitkat', 'ttl': 600,
|
||||||
'subscriber': 'trust+http://example.com'}
|
'subscriber': 'trust+http://example.com'}
|
||||||
self.protocol._auth_env = {}
|
self.protocol._auth_env = {}
|
||||||
@ -156,7 +157,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
self.addCleanup(
|
self.addCleanup(
|
||||||
self.boot.storage.subscription_controller.delete, 'kitkat', sub,
|
self.boot.storage.subscription_controller.delete, 'kitkat', sub,
|
||||||
project=self.project_id)
|
project=self.project_id)
|
||||||
action = 'subscription_delete'
|
action = consts.SUBSCRIPTION_DELETE
|
||||||
body = {'queue_name': 'kitkat', 'subscription_id': str(sub)}
|
body = {'queue_name': 'kitkat', 'subscription_id': str(sub)}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -174,7 +175,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
response = {
|
response = {
|
||||||
'body': 'Subscription %s removed.' % str(sub),
|
'body': 'Subscription %s removed.' % str(sub),
|
||||||
'headers': {'status': 204},
|
'headers': {'status': 204},
|
||||||
'request': {'action': 'subscription_delete',
|
'request': {'action': consts.SUBSCRIPTION_DELETE,
|
||||||
'body': {'queue_name': 'kitkat',
|
'body': {'queue_name': 'kitkat',
|
||||||
'subscription_id': str(sub)},
|
'subscription_id': str(sub)},
|
||||||
'api': 'v2', 'headers': self.headers}}
|
'api': 'v2', 'headers': self.headers}}
|
||||||
@ -182,7 +183,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
self.assertEqual(response, json.loads(sender.call_args[0][0]))
|
self.assertEqual(response, json.loads(sender.call_args[0][0]))
|
||||||
|
|
||||||
def test_subscription_create_no_queue(self):
|
def test_subscription_create_no_queue(self):
|
||||||
action = 'subscription_create'
|
action = consts.SUBSCRIPTION_CREATE
|
||||||
body = {'queue_name': 'shuffle', 'ttl': 600}
|
body = {'queue_name': 'shuffle', 'ttl': 600}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -208,7 +209,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
'body': {'message': 'Subscription shuffle created.',
|
'body': {'message': 'Subscription shuffle created.',
|
||||||
'subscription_id': subscriber['id']},
|
'subscription_id': subscriber['id']},
|
||||||
'headers': {'status': 201},
|
'headers': {'status': 201},
|
||||||
'request': {'action': 'subscription_create',
|
'request': {'action': consts.SUBSCRIPTION_CREATE,
|
||||||
'body': {'queue_name': 'shuffle', 'ttl': 600},
|
'body': {'queue_name': 'shuffle', 'ttl': 600},
|
||||||
'api': 'v2', 'headers': self.headers}}
|
'api': 'v2', 'headers': self.headers}}
|
||||||
|
|
||||||
@ -221,7 +222,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
self.addCleanup(
|
self.addCleanup(
|
||||||
self.boot.storage.subscription_controller.delete, 'kitkat', sub,
|
self.boot.storage.subscription_controller.delete, 'kitkat', sub,
|
||||||
project=self.project_id)
|
project=self.project_id)
|
||||||
action = 'subscription_get'
|
action = consts.SUBSCRIPTION_GET
|
||||||
body = {'queue_name': 'kitkat', 'subscription_id': str(sub)}
|
body = {'queue_name': 'kitkat', 'subscription_id': str(sub)}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -239,7 +240,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
'ttl': 600,
|
'ttl': 600,
|
||||||
'confirmed': False},
|
'confirmed': False},
|
||||||
'headers': {'status': 200},
|
'headers': {'status': 200},
|
||||||
'request': {'action': 'subscription_get',
|
'request': {'action': consts.SUBSCRIPTION_GET,
|
||||||
'body': {'queue_name': 'kitkat',
|
'body': {'queue_name': 'kitkat',
|
||||||
'subscription_id': str(sub)},
|
'subscription_id': str(sub)},
|
||||||
'api': 'v2', 'headers': self.headers}}
|
'api': 'v2', 'headers': self.headers}}
|
||||||
@ -257,7 +258,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
self.addCleanup(
|
self.addCleanup(
|
||||||
self.boot.storage.subscription_controller.delete, 'kitkat', sub,
|
self.boot.storage.subscription_controller.delete, 'kitkat', sub,
|
||||||
project=self.project_id)
|
project=self.project_id)
|
||||||
action = 'subscription_list'
|
action = consts.SUBSCRIPTION_LIST
|
||||||
body = {'queue_name': 'kitkat'}
|
body = {'queue_name': 'kitkat'}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -277,7 +278,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
'ttl': 600,
|
'ttl': 600,
|
||||||
'confirmed': False}]},
|
'confirmed': False}]},
|
||||||
'headers': {'status': 200},
|
'headers': {'status': 200},
|
||||||
'request': {'action': 'subscription_list',
|
'request': {'action': consts.SUBSCRIPTION_LIST,
|
||||||
'body': {'queue_name': 'kitkat'},
|
'body': {'queue_name': 'kitkat'},
|
||||||
'api': 'v2', 'headers': self.headers}}
|
'api': 'v2', 'headers': self.headers}}
|
||||||
self.assertEqual(1, sender.call_count)
|
self.assertEqual(1, sender.call_count)
|
||||||
@ -295,7 +296,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
# if the client suddenly starts sending requests in another format.
|
# if the client suddenly starts sending requests in another format.
|
||||||
|
|
||||||
# Create a subscription in binary format
|
# Create a subscription in binary format
|
||||||
action = 'subscription_create'
|
action = consts.SUBSCRIPTION_CREATE
|
||||||
body = {'queue_name': 'kitkat', 'ttl': 600}
|
body = {'queue_name': 'kitkat', 'ttl': 600}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
@ -324,7 +325,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
self.addCleanup(webhook_notification_send_mock.stop)
|
self.addCleanup(webhook_notification_send_mock.stop)
|
||||||
webhook_notification_sender = webhook_notification_send_mock.start()
|
webhook_notification_sender = webhook_notification_send_mock.start()
|
||||||
|
|
||||||
action = "message_post"
|
action = consts.MESSAGE_POST
|
||||||
body = {"queue_name": "kitkat",
|
body = {"queue_name": "kitkat",
|
||||||
"messages": [{'body': {'status': 'disco queen'}, 'ttl': 60}]}
|
"messages": [{'body': {'status': 'disco queen'}, 'ttl': 60}]}
|
||||||
req = test_utils.create_request(action, body, self.headers)
|
req = test_utils.create_request(action, body, self.headers)
|
||||||
@ -357,7 +358,7 @@ class SubscriptionTest(base.V1_1Base):
|
|||||||
self.addCleanup(
|
self.addCleanup(
|
||||||
self.boot.storage.subscription_controller.delete, 'kitkat', sub,
|
self.boot.storage.subscription_controller.delete, 'kitkat', sub,
|
||||||
project=self.project_id)
|
project=self.project_id)
|
||||||
action = 'subscription_list'
|
action = consts.SUBSCRIPTION_LIST
|
||||||
body = {'queue_name': 'kitkat'}
|
body = {'queue_name': 'kitkat'}
|
||||||
|
|
||||||
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
send_mock = mock.patch.object(self.protocol, 'sendMessage')
|
||||||
|
@ -37,6 +37,7 @@ except ImportError:
|
|||||||
from email.mime import message
|
from email.mime import message
|
||||||
Message = message.MIMEMessage
|
Message = message.MIMEMessage
|
||||||
|
|
||||||
|
from zaqar.common import consts
|
||||||
from zaqar.i18n import _LI
|
from zaqar.i18n import _LI
|
||||||
|
|
||||||
|
|
||||||
@ -127,7 +128,7 @@ class MessagingProtocol(websocket.WebSocketServerProtocol):
|
|||||||
return self._authenticate(payload, isBinary)
|
return self._authenticate(payload, isBinary)
|
||||||
else:
|
else:
|
||||||
resp = self._handler.process_request(req, self)
|
resp = self._handler.process_request(req, self)
|
||||||
if payload.get('action') == 'subscription_create':
|
if payload.get('action') == consts.SUBSCRIPTION_CREATE:
|
||||||
# NOTE(Eva-i): this will make further websocket
|
# NOTE(Eva-i): this will make further websocket
|
||||||
# notifications encoded in the same format as the last
|
# notifications encoded in the same format as the last
|
||||||
# successful websocket subscription create request.
|
# successful websocket subscription create request.
|
||||||
|
Loading…
Reference in New Issue
Block a user