Skip to content

Commit

Permalink
add(typedef) add marshal and unmarshal test for full cases schema
Browse files Browse the repository at this point in the history
  • Loading branch information
illia-li committed Jul 7, 2023
1 parent 3e8f096 commit bf6e13c
Show file tree
Hide file tree
Showing 7 changed files with 1,013 additions and 16 deletions.
14 changes: 0 additions & 14 deletions cmd/gemini/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import (
"github.com/scylladb/gemini/pkg/jobs"
"github.com/scylladb/gemini/pkg/replication"
"github.com/scylladb/gemini/pkg/store"
"github.com/scylladb/gemini/pkg/tableopts"
"github.com/scylladb/gemini/pkg/typedef"
"github.com/scylladb/gemini/pkg/utils"

Expand Down Expand Up @@ -392,19 +391,6 @@ func createClusters(
return testCluster, oracleCluster
}

func createTableOptions(tableOptionStrings []string, logger *zap.Logger) []tableopts.Option {
var tableOptions []tableopts.Option
for _, optionString := range tableOptionStrings {
o, err := tableopts.FromCQL(optionString)
if err != nil {
logger.Warn("invalid table option", zap.String("option", optionString), zap.Error(err))
continue
}
tableOptions = append(tableOptions, o)
}
return tableOptions
}

func getReplicationStrategy(rs string, fallback *replication.Replication, logger *zap.Logger) *replication.Replication {
switch rs {
case "network":
Expand Down
3 changes: 2 additions & 1 deletion cmd/gemini/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"strings"

"github.com/scylladb/gemini/pkg/replication"
"github.com/scylladb/gemini/pkg/tableopts"
"github.com/scylladb/gemini/pkg/typedef"

"go.uber.org/zap"
Expand Down Expand Up @@ -67,7 +68,7 @@ func createDefaultSchemaConfig(logger *zap.Logger) typedef.SchemaConfig {
return typedef.SchemaConfig{
ReplicationStrategy: rs,
OracleReplicationStrategy: ors,
TableOptions: createTableOptions(tableOptions, logger),
TableOptions: tableopts.CreateTableOptions(tableOptions, logger),
MaxTables: maxTables,
MaxPartitionKeys: maxPartitionKeys,
MinPartitionKeys: minPartitionKeys,
Expand Down
3 changes: 2 additions & 1 deletion cmd/gemini/strategies_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ func TestGetReplicationStrategy(t *testing.T) {
}
}

func TestReadSchema(t *testing.T) {
// TestReadExampleSchema main task of this test to be sure that schema example (schema.json) is correct and have correct marshal, unmarshal
func TestReadExampleSchema(t *testing.T) {
filePath := "schema.json"

testSchema, err := readSchema(filePath, typedef.SchemaConfig{})
Expand Down
17 changes: 17 additions & 0 deletions pkg/replication/replication.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,20 @@ func NewNetworkTopologyStrategy() *Replication {
"datacenter1": 1,
}
}

func (r *Replication) UnmarshalJSON(data []byte) error {
dataMap := make(map[string]interface{})
if err := json.Unmarshal(data, &dataMap); err != nil {
return err
}
out := Replication{}
for idx := range dataMap {
val := dataMap[idx]
if fVal, ok := val.(float64); ok {
dataMap[idx] = int(fVal)
}
out[idx] = dataMap[idx]
}
*r = out
return nil
}
14 changes: 14 additions & 0 deletions pkg/tableopts/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"strings"

"github.com/pkg/errors"
"go.uber.org/zap"
)

type Option interface {
Expand Down Expand Up @@ -65,3 +66,16 @@ func FromCQL(cql string) (Option, error) {
val: valPart,
}, nil
}

func CreateTableOptions(tableOptionStrings []string, logger *zap.Logger) []Option {
var tableOptions []Option
for _, optionString := range tableOptionStrings {
o, err := FromCQL(optionString)
if err != nil {
logger.Warn("invalid table option", zap.String("option", optionString), zap.Error(err))
continue
}
tableOptions = append(tableOptions, o)
}
return tableOptions
}
Loading

0 comments on commit bf6e13c

Please sign in to comment.