from tests import unittest, random_chars
from nose.plugins.attrib import attr
import botocore.session
from botocore.exceptions import WaiterError
@attr('slow')
class TestWaiterForDynamoDB(unittest.TestCase):
def setUp(self):
self.session = botocore.session.get_session()
self.client = self.session.create_client('dynamodb', 'us-west-2')
def test_create_table_and_wait(self):
table_name = 'botocoretest-%s' % random_chars(10)
self.client.create_table(
TableName=table_name,
ProvisionedThroughput={"ReadCapacityUnits": 5,
"WriteCapacityUnits": 5},
KeySchema=[{"AttributeName": "foo", "KeyType": "HASH"}],
AttributeDefinitions=[{"AttributeName": "foo",
"AttributeType": "S"}])
self.addCleanup(self.client.delete_table, TableName=table_name)
waiter = self.client.get_waiter('table_exists')
waiter.wait(TableName=table_name)
parsed = self.client.describe_table(TableName=table_name)
self.assertEqual(parsed['Table']['TableStatus'], 'ACTIVE')
class TestCanGetWaitersThroughClientInterface(unittest.TestCase):
def test_get_ses_waiter(self):
session = botocore.session.get_session()
client = session.create_client('ses', 'us-east-1')
self.assertTrue(len(client.waiter_names) > 0)
class TestMatchersWithErrors(unittest.TestCase):
def setUp(self):
self.session = botocore.session.get_session()
self.client = self.session.create_client(
'ec2', region_name='us-west-2')
def test_dont_search_on_error_responses(self):
waiter = self.client.get_waiter('instance_exists')
waiter.config.max_attempts = 1
with self.assertRaises(WaiterError):
waiter.wait(InstanceIds=['i-12345'])