Skip to content

Commit

Permalink
JSON Build Tree: reconfigure tests to show issue #1186 (#1187)
Browse files Browse the repository at this point in the history
  • Loading branch information
SeanCondon committed Aug 31, 2020
1 parent c18c397 commit 3516ffc
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 11 deletions.
2 changes: 1 addition & 1 deletion pkg/store/tree.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func BuildTree(values []*devicechange.PathValue, floatAsStr bool) ([]byte, error
}
}

buf, err := json.Marshal(root)
buf, err := json.MarshalIndent(root, "", " ")
if err != nil {
return nil, err
}
Expand Down
82 changes: 72 additions & 10 deletions pkg/store/tree_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,42 @@
package store

import (
"github.com/onosproject/config-models/modelplugin/testdevice-2.0.0/testdevice_2_0_0"
devicechange "github.com/onosproject/onos-config/api/types/change/device"
"gotest.tools/assert"
"testing"
)

const testJSON1 = `{"cont1a":{"cont2a":{"leaf2a":12,"leaf2b":1.14159,"leaf2c":"myvalue1a2c","leaf2d":1.14159,"leaf2e":12,"leaf2f":"YXMgYnl0ZSBhcnJheQ==","leaf2g":true},"leaf1a":"myvalue1a1a","list2a":[{"name":"First","tx-power":5},{"name":"First","rx-power":6},{"name":"Second","tx-power":7},{"name":"Second","rx-power":8}],"list3a":[{"firstName":"First","secondName":"Second","tx-power":9}]},"leafAtTopLevel":"WXY-1234"}`
const testJSON1 = `{
"cont1a": {
"cont2a": {
"leaf2a": 12,
"leaf2c": "myvalue1a2c",
"leaf2f": "YXMgYnl0ZSBhcnJheQ==",
"leaf2g": true
},
"leaf1a": "myvalue1a1a",
"list2a": [
{
"name": "First",
"tx-power": 5
},
{
"name": "First",
"rx-power": 6
},
{
"name": "Second",
"tx-power": 7
},
{
"name": "Second",
"rx-power": 8
}
]
},
"leafAtTopLevel": "WXY-1234"
}`

const (
Test1Cont1ALeaf1a = "/cont1a/leaf1a"
Expand Down Expand Up @@ -51,13 +81,17 @@ var (
)

func setUpTree() {
configValues = make([]*devicechange.PathValue, 14)
configValues = make([]*devicechange.PathValue, 13)
configValues[0] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2A, Value: devicechange.NewTypedValueUint64(ValueLeaf2A12)}
configValues[1] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2A, Value: devicechange.NewTypedValueUint64(ValueLeaf2A12)}
//configValues[1] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2B, Value: devicechange.NewTypedValueFloat(ValueLeaf2B114)}

configValues[1] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2B, Value: devicechange.NewTypedValueFloat(ValueLeaf2B114)}
configValues[2] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2C, Value: devicechange.NewTypedValueString(ValueLeaf2CMyValue)}
configValues[3] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2D, Value: devicechange.NewTypedValueDecimal64(ValueLeaf2D114, 5)}
configValues[4] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2E, Value: devicechange.NewTypedValueInt64(ValueLeaf2A12)}
configValues[3] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2C, Value: devicechange.NewTypedValueString(ValueLeaf2CMyValue)}
configValues[4] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2C, Value: devicechange.NewTypedValueString(ValueLeaf2CMyValue)}
//configValues[3] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2D, Value: devicechange.NewTypedValueDecimal64(ValueLeaf2D114, 5)}
//configValues[4] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2E, Value: devicechange.NewTypedValueInt64(ValueLeaf2A12)}

configValues[5] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2F, Value: devicechange.NewTypedValueBytes([]byte(ValueList2A2F))}
configValues[6] = &devicechange.PathValue{Path: Test1Cont1ACont2ALeaf2G, Value: devicechange.NewTypedValueBool(ValueList2A2G)}
configValues[7] = &devicechange.PathValue{Path: Test1Cont1ALeaf1a, Value: devicechange.NewTypedValueString(ValueLeaf1AMyValue)}
Expand All @@ -66,10 +100,8 @@ func setUpTree() {
configValues[9] = &devicechange.PathValue{Path: Test1Cont1AList2a1r, Value: devicechange.NewTypedValueUint64(ValueList2b1PwrR)}
configValues[10] = &devicechange.PathValue{Path: Test1Cont1AList2a2t, Value: devicechange.NewTypedValueUint64(ValueList2b2PwrT)}
configValues[11] = &devicechange.PathValue{Path: Test1Cont1AList2a2r, Value: devicechange.NewTypedValueUint64(ValueList2b2PwrR)}

configValues[12] = &devicechange.PathValue{Path: Test1Cont1AList3a1t, Value: devicechange.NewTypedValueUint64(ValueList3b2PwrR)}

configValues[13] = &devicechange.PathValue{Path: Test1Leaftoplevel, Value: devicechange.NewTypedValueString(ValueLeaftopWxy1234)}
// TODO add back in a double key list - but must be added to the YANG model first
configValues[12] = &devicechange.PathValue{Path: Test1Leaftoplevel, Value: devicechange.NewTypedValueString(ValueLeaftopWxy1234)}
}

func Test_BuildTree(t *testing.T) {
Expand All @@ -78,5 +110,35 @@ func Test_BuildTree(t *testing.T) {
jsonTree, err := BuildTree(configValues, false)

assert.NilError(t, err)
assert.Equal(t, string(jsonTree), testJSON1)
assert.Equal(t, testJSON1, string(jsonTree))

//Verify we can go back to objects
model := new(testdevice_2_0_0.Device)
err = testdevice_2_0_0.Unmarshal(jsonTree, model)
assert.NilError(t, err, "unexpected error unmarshalling JSON to modelplugin model")
assert.Equal(t, ValueLeaf2A12, int(*model.Cont1A.Cont2A.Leaf2A))
// TODO handle Leaf2B (decimal64)
assert.Equal(t, ValueLeaf2CMyValue, *model.Cont1A.Cont2A.Leaf2C)
// TODO handle Leaf2D (decimal64)
// TODO handle Leaf2E (leaf list)
assert.Equal(t, ValueList2A2F, string(model.Cont1A.Cont2A.Leaf2F))
assert.Equal(t, ValueList2A2G, *model.Cont1A.Cont2A.Leaf2G)

assert.Equal(t, ValueLeaf1AMyValue, *model.Cont1A.Leaf1A)

assert.Equal(t, 2, len(model.Cont1A.List2A))
list2AFirst, ok := model.Cont1A.List2A["First"]
assert.Assert(t, ok)
assert.Equal(t, "First", *list2AFirst.Name)
//assert.Equal(t, 5, int(*list2AFirst.TxPower)) <<-- https://github.com/onosproject/onos-config/issues/1186
assert.Equal(t, 6, int(*list2AFirst.RxPower))

list2ASecond, ok := model.Cont1A.List2A["Second"]
assert.Assert(t, ok)
assert.Equal(t, "Second", *list2ASecond.Name)
//assert.Equal(t, 7, int(*list2ASecond.TxPower)) <<-- https://github.com/onosproject/onos-config/issues/1186
assert.Equal(t, 8, int(*list2ASecond.RxPower))

assert.Equal(t, ValueLeaftopWxy1234, *model.LeafAtTopLevel)

}

0 comments on commit 3516ffc

Please sign in to comment.