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)