Ejemplo n.º 1
0
from dynamodb import DynamoDB
from dynamodb_setup import *

dynamodb_resource = DynamoDB.create_connection()

# DynamoDB.create_table(dynamodb_resource, table_name, key_schema, attribute_definitions, provisioned_throughput)

table = DynamoDB.get_table(dynamodb_resource, table_name)

#print(table.creation_date_time)

#DynamoDB.create_new_item(table, new_item)
#item = DynamoDB.get_item(table, search_key2)
#DynamoDB.update_item(table, search_key, update_expression, expression_attribute_values)
#DynamoDB.delete_item(table, search_key)
#DynamoDB.batch_items(table, item_list)
#items = DynamoDB.get_items_query_with_key(table, 'username', 'johndoe')
#items = DynamoDB.get_items_scan_with_attr(table, 'age', 27)
#items2 = DynamoDB.get_items_scan_with_attr(table, 'equals', 'address.state', 'CA')
#items3 = DynamoDB.get_items_scan_with_attr(table, 'begins_with', 'first_name', 'J')
#print(items3)

DynamoDB.delete_table(table)
class TestDynamoDBTestCase(unittest.TestCase):

    """
    Create a tables before you run the tests, and it takes a minute
    """

    def setUp(self):

        self.settings = DB_SETTINGS['dynamodb']
        self.db = DynamoDB(self.settings)
        try:
            self.db.create_table('test', 5, 5)
            self.db.create_table('test_%Y%m%d', 5, 5)
            self.db.create_table('test_%Y%m%d', 5, 5,
                                 transform_time=datetime.datetime.utcnow() - datetime.timedelta(1))
        except DynamoDBError as e:
            print e

    def tearDown(self):
        s = SomeRecord()
        try:
            self.db.delete_data('test', 'k')
        except:
            pass
        try:
            self.db.delete_data('test', 'c')
        except:
            pass
        try:
            self.db.delete_data('test', s.key)
        except:
            pass
        return self

    def test_create_table(self):
        table = self.db.get_table('test')
        self.assertTrue(table.table_name == 'test')

    def test_create_delete_data(self):
        # pickled
        result = self.db.set_data('test', 'k', 'v')
        self.assertEqual(result, True, 'fail to set data')
        data = self.db.get_data('test', 'k')
        self.assertEqual(data, 'v', 'fail to get data')

        # pickled object
        c = SomeRecord()
        self.db.set_data('test', c.key, c)
        new_c = self.db.get_data('test', c.key)
        self.assertTrue(new_c.key == c.key)
        self.assertTrue(new_c.answer == c.answer)
        self.assertTrue(new_c.number == c.number)

        # unpickled
        self.db.set_data('test', 'k2', set(['a', 'b']), pickled=False)
        data = self.db.get_data('test', 'k2', pickled=False)
        self.assertEqual(data, set(['a', 'b']), 'fail getting correct unpickled data')

        self.assertTrue(self.db.delete_data('test', 'k'))
        self.assertTrue(self.db.delete_data('test', 'k2'))
        self.assertTrue(self.db.delete_data('test', c.key))
        self.assertFalse(self.db.get_data('test', 'k'))

    def test_timesliced_table(self):
        yesterday = datetime.datetime.utcnow() - datetime.timedelta(1)
        self.db.set_data("test_%Y%m%d", "ky", "dy", transform_time=yesterday)
        self.assertEqual(self.db.get_data("test_%Y%m%d", "ky"), "dy")
        self.db.delete_data('test_%Y%m%d', 'ky')
        self.assertEqual(self.db.get_data("test_%Y%m%d", "ky"), None)