1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
package dynamodb
import (
"fmt"
"gopkg.in/check.v1"
)
type TableSuite struct {
TableDescriptionT TableDescriptionT
DynamoDBTest
}
func (s *TableSuite) SetUpSuite(c *check.C) {
setUpAuth(c)
s.DynamoDBTest.TableDescriptionT = s.TableDescriptionT
s.server = New(dynamodb_auth, dynamodb_region)
pk, err := s.TableDescriptionT.BuildPrimaryKey()
if err != nil {
c.Skip(err.Error())
}
s.table = s.server.NewTable(s.TableDescriptionT.TableName, pk)
// Cleanup
s.TearDownSuite(c)
}
var table_suite = &TableSuite{
TableDescriptionT: TableDescriptionT{
TableName: "DynamoDBTestMyTable",
AttributeDefinitions: []AttributeDefinitionT{
AttributeDefinitionT{"TestHashKey", "S"},
AttributeDefinitionT{"TestRangeKey", "N"},
},
KeySchema: []KeySchemaT{
KeySchemaT{"TestHashKey", "HASH"},
KeySchemaT{"TestRangeKey", "RANGE"},
},
ProvisionedThroughput: ProvisionedThroughputT{
ReadCapacityUnits: 1,
WriteCapacityUnits: 1,
},
},
}
var table_suite_gsi = &TableSuite{
TableDescriptionT: TableDescriptionT{
TableName: "DynamoDBTestMyTable2",
AttributeDefinitions: []AttributeDefinitionT{
AttributeDefinitionT{"UserId", "S"},
AttributeDefinitionT{"OSType", "S"},
AttributeDefinitionT{"IMSI", "S"},
},
KeySchema: []KeySchemaT{
KeySchemaT{"UserId", "HASH"},
KeySchemaT{"OSType", "RANGE"},
},
ProvisionedThroughput: ProvisionedThroughputT{
ReadCapacityUnits: 1,
WriteCapacityUnits: 1,
},
GlobalSecondaryIndexes: []GlobalSecondaryIndexT{
GlobalSecondaryIndexT{
IndexName: "IMSIIndex",
KeySchema: []KeySchemaT{
KeySchemaT{"IMSI", "HASH"},
},
Projection: ProjectionT{
ProjectionType: "KEYS_ONLY",
},
ProvisionedThroughput: ProvisionedThroughputT{
ReadCapacityUnits: 1,
WriteCapacityUnits: 1,
},
},
},
},
}
func (s *TableSuite) TestCreateListTableGsi(c *check.C) {
status, err := s.server.CreateTable(s.TableDescriptionT)
if err != nil {
fmt.Printf("err %#v", err)
c.Fatal(err)
}
if status != "ACTIVE" && status != "CREATING" {
c.Error("Expect status to be ACTIVE or CREATING")
}
s.WaitUntilStatus(c, "ACTIVE")
tables, err := s.server.ListTables()
if err != nil {
c.Fatal(err)
}
c.Check(len(tables), check.Not(check.Equals), 0)
c.Check(findTableByName(tables, s.TableDescriptionT.TableName), check.Equals, true)
}
var _ = check.Suite(table_suite)
var _ = check.Suite(table_suite_gsi)
|