Skip to content
model_test.go 70.6 KiB
Newer Older
	if err == nil {
		t.Fatalf("Action should have failed")
	}
	ue_data = dataModel.NodeDataUnion{}
	ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, Parent: "zone1-poa1"}
	if err == nil {
		t.Fatalf("Action should have failed")
	}
	ue_data = dataModel.NodeDataUnion{}
	ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data}
	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"}
	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"}
	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"}
	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"}
	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}
	if err == nil {
		t.Fatalf("Action should have failed")
	}
	ue_data = dataModel.NodeDataUnion{}
	ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE}
	if err == nil {
		t.Fatalf("Action should have failed")
	}
	ue_data = dataModel.NodeDataUnion{}
	ue_node = dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue_data}
	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}
	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}
	if err == nil {
		t.Fatalf("Action should have failed")
	}

	fmt.Println("Add ue3")
	ue3_pl := dataModel.PhysicalLocation{Id: "ue3-id", Name: "ue3", Type_: NodeTypeUE}
	ue3_data := dataModel.NodeDataUnion{PhysicalLocation: &ue3_pl}
	ue3_node := dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue3_data, Parent: "zone1-poa1"}
		t.Fatalf("Error adding nodes")
	}
	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")
	}

	ue4_pl := dataModel.PhysicalLocation{Id: "ue4-id", Name: "ue4", Type_: NodeTypeUE}
	ue4_data := dataModel.NodeDataUnion{PhysicalLocation: &ue4_pl}
	ue4_node := dataModel.ScenarioNode{Type_: NodeTypeUE, NodeDataUnion: &ue4_data, Parent: "zone1-poa1"}
		t.Fatalf("Error adding nodes")
	}
	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)
	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)
	if err != nil {
		t.Fatalf("Error removing nodes")
	}
	n = m.nodeMap.FindByName("ue3")
	if n != nil {
		t.Fatalf("Failed to remove nodes")
	}
}

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
Michel Roy's avatar
Michel Roy committed
}

func TestValidateScenario(t *testing.T) {
	fmt.Println("--- ", t.Name())
	log.MeepTextLogInit(t.Name())

	ValidatorVersion = semver.Version{Major: 1, Minor: 5, Patch: 3}
	// Incompatible scenarios
	fmt.Println("Validate empty scenario")
Simon Pastor's avatar
Simon Pastor committed
	validJsonScenario, status, err := ValidateScenario([]byte(""), "")
	if validJsonScenario != nil || status != ValidatorStatusError || err == nil {
		t.Fatalf("Empty scenario should not be valid")
	fmt.Println("Validate scenario: scenarioVer[1.0.0] == too old")
Simon Pastor's avatar
Simon Pastor committed
	validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_0_0), "")
	if validJsonScenario != nil || status != ValidatorStatusError || err == nil {
		t.Fatalf("validJsonScenario should not be compatible")
	fmt.Println("Validate scenario: scenarioVer[none] == validatorVer[latest]")
Simon Pastor's avatar
Simon Pastor committed
	validJsonScenario, status, err = ValidateScenario([]byte(testScenario), "")
	if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
		t.Fatalf("validJsonScenario should not be nil")
	fmt.Println(string(validJsonScenario))
	if string(validJsonScenario) != latestTestScenario {
		t.Fatalf("validJsonScenario != latestTestScenario")
	fmt.Println("Validate scenario: scenarioVer[1.5.3] == validatorVer[latest]")
Simon Pastor's avatar
Simon Pastor committed
	validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_5_3), "")
	if validJsonScenario == nil || status != ValidatorStatusValid || err != nil {
		t.Fatalf("validJsonScenario should not be nil")
	if string(validJsonScenario) != latestTestScenario {
		t.Fatalf("validJsonScenario != latestTestScenario")
	}

	fmt.Println("Validate scenario: scenarioVer[1.5.0] < validatorVer[latest]")
Simon Pastor's avatar
Simon Pastor committed
	validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_5_0), "")
	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.4.0] < validatorVer[latest]")
Simon Pastor's avatar
Simon Pastor committed
	validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_4_0), "")
	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.3.0] < validatorVer[latest]")
Simon Pastor's avatar
Simon Pastor committed
	validJsonScenario, status, err = ValidateScenario([]byte(testScenario_v1_3_0), "")
	if validJsonScenario == nil || status != ValidatorStatusUpdated || err != nil {
		t.Fatalf("validJsonScenario should not be nil")
	}
	if string(validJsonScenario) != latestTestScenario {
		t.Fatalf("validJsonScenario != latestTestScenario")