mirror of https://github.com/celery/kombu.git
Add boto3 default region before hardcoded default (#951)
* Add boto3 default region before hardcoded default * Add unit tests for SQS region default behavior * Import boto3 only inside the test The library may not be available
This commit is contained in:
parent
71c0d0a34b
commit
4a06fc6bb8
|
@ -467,7 +467,9 @@ class Channel(virtual.Channel):
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def region(self):
|
def region(self):
|
||||||
return self.transport_options.get('region') or self.default_region
|
return (self.transport_options.get('region') or
|
||||||
|
boto3.Session().region_name or
|
||||||
|
self.default_region)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def regioninfo(self):
|
def regioninfo(self):
|
||||||
|
|
|
@ -7,6 +7,7 @@ slightly.
|
||||||
|
|
||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
|
@ -173,6 +174,37 @@ class test_Channel:
|
||||||
"""kombu.SQS.Channel instantiates correctly with mocked queues"""
|
"""kombu.SQS.Channel instantiates correctly with mocked queues"""
|
||||||
assert self.queue_name in self.channel._queue_cache
|
assert self.queue_name in self.channel._queue_cache
|
||||||
|
|
||||||
|
def test_region(self):
|
||||||
|
import boto3
|
||||||
|
_environ = dict(os.environ)
|
||||||
|
|
||||||
|
# when the region is unspecified
|
||||||
|
connection = Connection(transport=SQS.Transport)
|
||||||
|
channel = connection.channel()
|
||||||
|
assert channel.transport_options.get('region') is None
|
||||||
|
# the default region is us-east-1
|
||||||
|
assert channel.region == 'us-east-1'
|
||||||
|
|
||||||
|
# when boto3 picks a region
|
||||||
|
os.environ['AWS_DEFAULT_REGION'] = 'us-east-2'
|
||||||
|
assert boto3.Session().region_name == 'us-east-2'
|
||||||
|
# the default region should match
|
||||||
|
connection = Connection(transport=SQS.Transport)
|
||||||
|
channel = connection.channel()
|
||||||
|
assert channel.region == 'us-east-2'
|
||||||
|
|
||||||
|
# when transport_options are provided
|
||||||
|
connection = Connection(transport=SQS.Transport, transport_options={
|
||||||
|
'region': 'us-west-2'
|
||||||
|
})
|
||||||
|
channel = connection.channel()
|
||||||
|
assert channel.transport_options.get('region') == 'us-west-2'
|
||||||
|
# the specified region should be used
|
||||||
|
assert connection.channel().region == 'us-west-2'
|
||||||
|
|
||||||
|
os.environ.clear()
|
||||||
|
os.environ.update(_environ)
|
||||||
|
|
||||||
def test_endpoint_url(self):
|
def test_endpoint_url(self):
|
||||||
url = 'sqs://@localhost:5493'
|
url = 'sqs://@localhost:5493'
|
||||||
self.connection = Connection(hostname=url, transport=SQS.Transport)
|
self.connection = Connection(hostname=url, transport=SQS.Transport)
|
||||||
|
|
Loading…
Reference in New Issue