Newer
Older
fmt.Println("Get node type for UE-APP")
nodeType = m.GetNodeType("ue1-iperf")
if nodeType != "UE-APP" {
t.Fatalf("Invalid node type")
}
fmt.Println("Get node type for EDGE-APP")
nodeType = m.GetNodeType("zone1-edge1-svc")
if nodeType != "EDGE-APP" {
t.Fatalf("Invalid node type")
}
// Node Context
fmt.Println("Get context for invalid node")
ctx := m.GetNodeContext("NOT-A-NODE")
if ctx != nil {
t.Fatalf("Node context should not exist")
fmt.Println("Get Deployment context")
ctx = m.GetNodeContext("demo1")
if ctx == nil {
t.Fatalf("Node context should exist")
}
Kevin Di Lallo
committed
if !validateNodeContext(ctx, "demo1", "", "", "", "") {
t.Fatalf("Invalid Deployment context")
}
fmt.Println("Get Operator context")
ctx = m.GetNodeContext("operator1")
if ctx == nil {
t.Fatalf("Node context should exist")
Kevin Di Lallo
committed
if !validateNodeContext(ctx, "demo1", "operator1", "", "", "") {
t.Fatalf("Invalid Operator context")
}
fmt.Println("Get Zone context")
ctx = m.GetNodeContext("zone1")
if ctx == nil {
t.Fatalf("Node context should exist")
Kevin Di Lallo
committed
if !validateNodeContext(ctx, "demo1", "operator1", "zone1", "", "") {
t.Fatalf("Invalid Operator context")
}
fmt.Println("Get Net Location context")
ctx = m.GetNodeContext("zone1-poa1")
if ctx == nil {
t.Fatalf("Node context should exist")
Kevin Di Lallo
committed
if !validateNodeContext(ctx, "demo1", "operator1", "zone1", "zone1-poa1", "") {
t.Fatalf("Invalid Operator context")
}
fmt.Println("Get Phy Location context")
ctx = m.GetNodeContext("zone1-fog1")
if ctx == nil {
t.Fatalf("Node context should exist")
Kevin Di Lallo
committed
if !validateNodeContext(ctx, "demo1", "operator1", "zone1", "zone1-poa1", "zone1-fog1") {
t.Fatalf("Invalid Operator context")
}
fmt.Println("Get App context")
ctx = m.GetNodeContext("ue1-iperf")
if ctx == nil {
t.Fatalf("Node context should exist")
Kevin Di Lallo
committed
if !validateNodeContext(ctx, "demo1", "operator1", "zone1", "zone1-poa1", "ue1") {
t.Fatalf("Invalid Operator context")
Kevin Di Lallo
committed
// Network Graph
graph := m.GetNetworkGraph()
if len(graph.Verticies) != 29 {
t.Fatalf("Invalid Network Graph")
Kevin Di Lallo
committed
}
}
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
func TestScenarioUpdate(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// Switch to a different table for testing
redisTable = modelRedisTestTable
cfg := ModelCfg{Name: modelName, Namespace: moduleNamespace, Module: "test-mod", DbAddr: modelRedisAddr}
m, err := NewModel(cfg)
if err != nil {
t.Fatalf("Unable to create model")
}
fmt.Println("Set Model")
err = m.SetScenario([]byte(testScenario))
if err != nil {
t.Fatalf("Error setting model")
}
if m.scenario.Name != "demo1" {
t.Fatalf("SetScenario failed")
}
fmt.Println("Invalid Add Requests")
ue_data := dataModel.NodeDataUnion{}
ue_node := dataModel.ScenarioNode{NodeDataUnion: &ue_data, Parent: "zone1-poa1"}
err = m.AddScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_data = dataModel.NodeDataUnion{}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, Parent: "zone1-poa1"}
err = m.AddScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_data = dataModel.NodeDataUnion{}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data}
err = m.AddScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_data = dataModel.NodeDataUnion{}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data, Parent: "zone1-poa1"}
err = m.AddScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_pl := dataModel.PhysicalLocation{Id: "ue-id", Type_: NodeTypeUE}
ue_data = dataModel.NodeDataUnion{PhysicalLocation: &ue_pl}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data, Parent: "zone1-poa1"}
err = m.AddScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_pl = dataModel.PhysicalLocation{Id: "ue-id", Name: "ue"}
ue_data = dataModel.NodeDataUnion{PhysicalLocation: &ue_pl}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data, Parent: "zone1-poa1"}
err = m.AddScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue1_pl := dataModel.PhysicalLocation{Id: "ue1-id", Name: "ue1", Type_: NodeTypeUE}
ue1_data := dataModel.NodeDataUnion{PhysicalLocation: &ue1_pl}
ue1_node := dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue1_data, Parent: "zone1-poa1"}
err = m.AddScenarioNode(&ue1_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
fmt.Println("Invalid Remove Requests")
ue_data = dataModel.NodeDataUnion{}
ue_node = dataModel.ScenarioNode{NodeDataUnion: &ue_data}
err = m.RemoveScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_data = dataModel.NodeDataUnion{}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE}
err = m.RemoveScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_data = dataModel.NodeDataUnion{}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data}
err = m.RemoveScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_pl = dataModel.PhysicalLocation{Id: "ue-id", Type_: NodeTypeUE}
ue_data = dataModel.NodeDataUnion{PhysicalLocation: &ue_pl}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data}
err = m.RemoveScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
ue_pl = dataModel.PhysicalLocation{Id: "ue-id", Name: "ue"}
ue_data = dataModel.NodeDataUnion{PhysicalLocation: &ue_pl}
ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data}
err = m.RemoveScenarioNode(&ue_node, nil)
if err == nil {
t.Fatalf("Action should have failed")
}
fmt.Println("Add ue3")
ue3_nc := dataModel.NetworkCharacteristics{}
ue3_pl := dataModel.PhysicalLocation{Id: "ue3-id", Name: "ue3", Type_: NodeTypeUE, NetChar: &ue3_nc}
ue3_data := dataModel.NodeDataUnion{PhysicalLocation: &ue3_pl}
ue3_node := dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue3_data, Parent: "zone1-poa1"}
err = m.AddScenarioNode(&ue3_node, nil)
Kevin Di Lallo
committed
if err != nil {
}
n := m.nodeMap.FindByName("ue3")
if n == nil || n.name != "ue3" {
t.Fatalf("Failed to add nodes")
}
p := n.parent.(*dataModel.NetworkLocation)
if p == nil || p.Name != "zone1-poa1" {
t.Fatalf("Failed to add nodes")
}
d := n.object.(*dataModel.PhysicalLocation)
if d == nil || d.Name != "ue3" {
t.Fatalf("Failed to add nodes")
}
Kevin Di Lallo
committed
fmt.Println("Add ue4")
ue4_nc := dataModel.NetworkCharacteristics{}
ue4_pl := dataModel.PhysicalLocation{Id: "ue4-id", Name: "ue4", Type_: NodeTypeUE, NetChar: &ue4_nc}
ue4_data := dataModel.NodeDataUnion{PhysicalLocation: &ue4_pl}
ue4_node := dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue4_data, Parent: "zone1-poa1"}
err = m.AddScenarioNode(&ue4_node, nil)
Kevin Di Lallo
committed
if err != nil {
}
n = m.nodeMap.FindByName("ue4")
if n == nil || n.name != "ue4" {
t.Fatalf("Failed to add nodes")
}
p = n.parent.(*dataModel.NetworkLocation)
if p == nil || p.Name != "zone1-poa1" {
t.Fatalf("Failed to add nodes")
}
d = n.object.(*dataModel.PhysicalLocation)
if d == nil || d.Name != "ue4" {
t.Fatalf("Failed to add nodes")
}
fmt.Println("Remove ue4")
ue4_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue4_data}
err = m.RemoveScenarioNode(&ue4_node, nil)
Kevin Di Lallo
committed
if err != nil {
t.Fatalf("Error removing nodes")
}
n = m.nodeMap.FindByName("ue4")
if n != nil {
t.Fatalf("Failed to remove nodes")
}
fmt.Println("Remove ue3 & ue5")
ue3_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue3_data}
err = m.RemoveScenarioNode(&ue3_node, nil)
Kevin Di Lallo
committed
if err != nil {
t.Fatalf("Error removing nodes")
}
n = m.nodeMap.FindByName("ue3")
if n != nil {
t.Fatalf("Failed to remove nodes")
}
}
Kevin Di Lallo
committed
func validateNodeContext(nodeCtx *NodeContext, deployment, domain, zone, netLoc, phyLoc string) bool {
if nodeCtx.Parents[Deployment] != deployment ||
nodeCtx.Parents[Domain] != domain ||
nodeCtx.Parents[Zone] != zone ||
nodeCtx.Parents[NetLoc] != netLoc ||
nodeCtx.Parents[PhyLoc] != phyLoc {
return false
}
return true
func TestValidateScenario(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())

Yann Garcia
committed
ValidatorVersion = semver.Version{Major: 1, Minor: 8, Patch: 2}
Kevin Di Lallo
committed
// Incompatible scenarios
fmt.Println("Validate empty scenario")
validJsonScenario, status, err := ValidateScenario([]byte(""), "")
if validJsonScenario != nil || status != ValidatorStatusError || err == nil {
t.Fatalf("Empty scenario should not be valid")
Kevin Di Lallo
committed
fmt.Println("Validate scenario: scenarioVer[1.0.0] == too old")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_0_0), "")
if validJsonScenario != nil || status != ValidatorStatusError || err == nil {
t.Fatalf("validJsonScenario should not be compatible")
Kevin Di Lallo
committed
// Compatible Scenarios
Kevin Di Lallo
committed
fmt.Println("Validate scenario: scenarioVer[none] == validatorVer[latest]")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario), "")
if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
t.Fatalf("validJsonScenario should not be nil")
Kevin Di Lallo
committed
if string(validJsonScenario) != latestTestScenario {
t.Fatalf("validJsonScenario != latestTestScenario")

Yann Garcia
committed
fmt.Println("Validate scenario: scenarioVer[1.8.2] == validatorVer[latest]")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_8_2), "")
if validJsonScenario == nil || status != ValidatorStatusValid || err != nil {
t.Fatalf("validJsonScenario should not be nil")
Kevin Di Lallo
committed
if string(validJsonScenario) != latestTestScenario {
t.Fatalf("validJsonScenario != latestTestScenario")

Yann Garcia
committed
}
fmt.Println("Validate scenario: scenarioVer[1.6.8] < validatorVer[latest]")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_6_8), "")
if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
t.Fatalf("validJsonScenario should not be nil")
}
if string(validJsonScenario) != latestTestScenario {
t.Fatalf("validJsonScenario != latestTestScenario")
Kevin Di Lallo
committed
}
fmt.Println("Validate scenario: scenarioVer[1.6.6] < validatorVer[latest]")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_6_6), "")
if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
t.Fatalf("validJsonScenario should not be nil")
}
if string(validJsonScenario) != latestTestScenario {
t.Fatalf("validJsonScenario != latestTestScenario")
}
fmt.Println("Validate scenario: scenarioVer[1.5.3] < validatorVer[latest]")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_5_3), "")
if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
t.Fatalf("validJsonScenario should not be nil")
}
if string(validJsonScenario) != latestTestScenario {
t.Fatalf("validJsonScenario != latestTestScenario")
}
Kevin Di Lallo
committed
fmt.Println("Validate scenario: scenarioVer[1.5.0] < validatorVer[latest]")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_5_0), "")
Kevin Di Lallo
committed
if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
t.Fatalf("validJsonScenario should not be nil")
}
if string(validJsonScenario) != latestTestScenario {
t.Fatalf("validJsonScenario != latestTestScenario")
}
Kevin Di Lallo
committed
fmt.Println("Validate scenario: scenarioVer[1.4.0] < validatorVer[latest]")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_4_0), "")
Kevin Di Lallo
committed
if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
t.Fatalf("validJsonScenario should not be nil")
}
Kevin Di Lallo
committed
if string(validJsonScenario) != latestTestScenario {
t.Fatalf("validJsonScenario != latestTestScenario")
Kevin Di Lallo
committed
}
Kevin Di Lallo
committed
fmt.Println("Validate scenario: scenarioVer[1.3.0] < validatorVer[latest]")
validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_3_0), "")
Kevin Di Lallo
committed
if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
t.Fatalf("validJsonScenario should not be nil")
}
Kevin Di Lallo
committed
if string(validJsonScenario) != latestTestScenario {
t.Fatalf("validJsonScenario != latestTestScenario")
Kevin Di Lallo
committed
}