Skip to content

Commit add77c1

Browse files
authored
Merge pull request #24 from bchew/add-basic-tests
Add basic tests using dynalite
2 parents f97053c + 80ebda3 commit add77c1

File tree

4 files changed

+95
-2
lines changed

4 files changed

+95
-2
lines changed

.travis.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,15 @@ python:
44
install:
55
- pip install -r requirements.txt
66
- pip install flake8
7+
- nvm install 4
8+
- nvm use 4
9+
- npm install dynalite
710
script:
8-
- flake8 --ignore=E501 .
9-
11+
- flake8 --ignore=E501 --exclude=node_modules
12+
- dynalite --port 4567 &
13+
- mkdir dump && cp -a test/testTable dump
14+
- python dynamodump.py -m restore -r local -s testTable -d testRestoredTable --host localhost --port 4567 --accessKey a --secretKey a
15+
- python dynamodump.py -m backup -r local -s testRestoredTable --host localhost --port 4567 --accessKey a --secretKey a
16+
- python test/test.py
1017
matrix:
1118
fast_finish: true

test/test.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env python
2+
import json
3+
import unittest
4+
5+
TEST_DATA_PATH = "test/testTable"
6+
DUMP_DATA_PATH = "dump/testRestoredTable"
7+
SCHEMA_FILE = "schema.json"
8+
DATA_FILE = "0001.json"
9+
10+
11+
class TestDynamoDump(unittest.TestCase):
12+
13+
def setUp(self):
14+
self.test_table_schema = json.load(open(TEST_DATA_PATH + "/" + SCHEMA_FILE))
15+
self.restored_test_table_schema = json.load(open(DUMP_DATA_PATH + "/" + SCHEMA_FILE))
16+
self.test_table_data = json.load(open(TEST_DATA_PATH + "/data/" + DATA_FILE))
17+
self.restored_test_table_data = json.load(open(DUMP_DATA_PATH + "/data/" + DATA_FILE))
18+
19+
def test_schema(self):
20+
self.assertEqual(self.test_table_schema["Table"]["AttributeDefinitions"],
21+
self.restored_test_table_schema["Table"]["AttributeDefinitions"])
22+
self.assertEqual(self.test_table_schema["Table"]["ProvisionedThroughput"]["WriteCapacityUnits"],
23+
self.restored_test_table_schema["Table"]["ProvisionedThroughput"]["WriteCapacityUnits"])
24+
self.assertEqual(self.test_table_schema["Table"]["ProvisionedThroughput"]["ReadCapacityUnits"],
25+
self.restored_test_table_schema["Table"]["ProvisionedThroughput"]["ReadCapacityUnits"])
26+
self.assertEqual(self.test_table_schema["Table"]["KeySchema"],
27+
self.restored_test_table_schema["Table"]["KeySchema"])
28+
self.assertEqual(self.test_table_schema["Table"]["TableSizeBytes"],
29+
self.restored_test_table_schema["Table"]["TableSizeBytes"])
30+
self.assertEqual("testRestoredTable",
31+
self.restored_test_table_schema["Table"]["TableName"])
32+
self.assertEqual(self.test_table_schema["Table"]["TableStatus"],
33+
self.restored_test_table_schema["Table"]["TableStatus"])
34+
self.assertEqual(self.test_table_schema["Table"]["ItemCount"],
35+
self.restored_test_table_schema["Table"]["ItemCount"])
36+
37+
def test_data(self):
38+
self.assertEqual(self.test_table_data, self.restored_test_table_data)
39+
40+
if __name__ == '__main__':
41+
unittest.main()

test/testTable/data/0001.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"Count": 1,
3+
"Items": [
4+
{
5+
"lastName": {
6+
"S": "Doe"
7+
},
8+
"id": {
9+
"N": "1"
10+
},
11+
"firstName": {
12+
"S": "John"
13+
}
14+
}
15+
],
16+
"ScannedCount": 1
17+
}

test/testTable/schema.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"Table": {
3+
"TableArn": "arn:aws:dynamodb:us-east-1:000000000000:table/testTable",
4+
"AttributeDefinitions": [
5+
{
6+
"AttributeName": "id",
7+
"AttributeType": "N"
8+
}
9+
],
10+
"ProvisionedThroughput": {
11+
"WriteCapacityUnits": 25,
12+
"NumberOfDecreasesToday": 1,
13+
"ReadCapacityUnits": 1,
14+
"LastDecreaseDateTime": 1471785062.495
15+
},
16+
"TableSizeBytes": 0,
17+
"TableName": "testTable",
18+
"TableStatus": "ACTIVE",
19+
"KeySchema": [
20+
{
21+
"KeyType": "HASH",
22+
"AttributeName": "id"
23+
}
24+
],
25+
"ItemCount": 0,
26+
"CreationDateTime": 1471785060.962
27+
}
28+
}

0 commit comments

Comments
 (0)