Test for libroutes in engine

This commit is contained in:
porosnicuadrian
2021-01-15 12:42:58 +02:00
committed by Dan Christian Bogos
parent 5523c04d70
commit d1803f85eb

View File

@@ -19,6 +19,7 @@ package engine
import (
"reflect"
"sort"
"strconv"
"testing"
@@ -861,5 +862,222 @@ func BenchmarkRouteSortCost(b *testing.B) {
for n := 0; n < b.N; n++ {
sSpls.SortLeastCost()
}
}
func TestRouteIDsGetIDs(t *testing.T) {
sSpls := &SortedRoutes{
SortedRoutes: []*SortedRoute{
{
RouteID: "route1",
SortingData: map[string]interface{}{
utils.Cost: 0.1,
utils.Weight: 10.0,
},
RouteParameters: "param1",
},
{
RouteID: "route2",
SortingData: map[string]interface{}{
utils.Cost: 0.1,
utils.Weight: 10.0,
},
RouteParameters: "param2",
},
{
RouteID: "route3",
SortingData: map[string]interface{}{
utils.Cost: 0.1,
utils.Weight: 10.0,
},
RouteParameters: "param3",
},
},
}
expected := []string{"route1", "route2", "route3"}
sort.Strings(expected)
rcv := sSpls.RouteIDs()
sort.Strings(rcv)
if !reflect.DeepEqual(expected, rcv) {
t.Errorf("Expected %+v, received %+v", expected, rcv)
}
}
func TestSortHighestCost(t *testing.T) {
sSpls := &SortedRoutes{
SortedRoutes: []*SortedRoute{
{
RouteID: "route1",
SortingData: map[string]interface{}{
utils.Cost: 0.1,
utils.Weight: 11.0,
},
},
{
RouteID: "route2",
SortingData: map[string]interface{}{
utils.Cost: 0.1,
utils.Weight: 10.0,
},
},
},
}
sSpls.SortHighestCost()
ex := sSpls
if !reflect.DeepEqual(ex, sSpls) {
t.Errorf("Expected %+v, received %+v", ex, sSpls)
}
}
func TestSortResourceAscendentDescendent(t *testing.T) {
sSpls := &SortedRoutes{
SortedRoutes: []*SortedRoute{
{
RouteID: "route2",
SortingData: map[string]interface{}{
utils.ResourceUsage: 10.0,
utils.Weight: 10.0,
},
},
{
RouteID: "route1",
SortingData: map[string]interface{}{
utils.ResourceUsage: 10.0,
utils.Weight: 11.0,
},
},
},
}
//SortingResourceAscendent/Descendent while ResourceUsages are equal
expSRts := sSpls
sSpls.SortResourceAscendent()
if !reflect.DeepEqual(expSRts, sSpls) {
t.Errorf("Expected %+v, received %+v", expSRts, sSpls)
}
sSpls.SortResourceDescendent()
if !reflect.DeepEqual(expSRts, sSpls) {
t.Errorf("Expected %+v, received %+v", expSRts, sSpls)
}
//SortingResourceAscendent/Descendent while ResourceUsages are not equal
sSpls.SortedRoutes[0].SortingData[utils.ResourceUsage] = 11.0
expSRts = sSpls
sSpls.SortResourceAscendent()
if !reflect.DeepEqual(expSRts, sSpls) {
t.Errorf("Expected %+v, received %+v", expSRts, sSpls)
}
sSpls.SortResourceDescendent()
if !reflect.DeepEqual(expSRts, sSpls) {
t.Errorf("Expected %+v, received %+v", expSRts, sSpls)
}
}
func TestSortLoadDistribution(t *testing.T) {
sSpls := &SortedRoutes{
SortedRoutes: []*SortedRoute{
{
RouteID: "ROUTE1",
SortingData: map[string]interface{}{
utils.Ratio: 6.0,
utils.Load: 10.0,
utils.Weight: 15.5,
},
},
{
RouteID: "ROUTE2",
SortingData: map[string]interface{}{
utils.Ratio: 6.0,
utils.Load: 10.0,
utils.Weight: 14.5,
},
},
},
}
sSpls.SortLoadDistribution()
expSSPls := sSpls
if !reflect.DeepEqual(sSpls, expSSPls) {
t.Errorf("Expected %+v, received %+v", utils.ToJSON(expSSPls), utils.ToJSON(sSpls))
}
}
func TestSortedRouteAsNavigableMap(t *testing.T) {
sSpls := &SortedRoute{
RouteID: "ROUTE1",
RouteParameters: "SORTING_PARAMETER",
SortingData: map[string]interface{}{
utils.Ratio: 6.0,
utils.Load: 10.0,
utils.Weight: 15.5,
},
}
expNavMap := utils.NavigableMap2{
utils.RouteID: utils.NewNMData("ROUTE1"),
utils.RouteParameters: utils.NewNMData("SORTING_PARAMETER"),
utils.SortingData: utils.NavigableMap2{
utils.Ratio: utils.NewNMData(6.0),
utils.Load: utils.NewNMData(10.0),
utils.Weight: utils.NewNMData(15.5),
},
}
if rcv := sSpls.AsNavigableMap(); !reflect.DeepEqual(rcv, expNavMap) {
t.Errorf("Expected %+v, received %+v", utils.ToJSON(expNavMap), utils.ToJSON(rcv))
}
}
func TestSortedRoutesAsNavigableMap(t *testing.T) {
sSpls := &SortedRoutes{
ProfileID: "TEST_ID1",
Sorting: utils.MetaWeight,
Count: 100,
SortedRoutes: []*SortedRoute{
{
RouteID: "ROUTE1",
RouteParameters: "SORTING_PARAMETER",
SortingData: map[string]interface{}{
utils.Ratio: 6.0,
utils.Load: 10.0,
utils.Weight: 15.5,
},
},
{
RouteID: "ROUTE2",
RouteParameters: "SORTING_PARAMETER_SECOND",
SortingData: map[string]interface{}{
utils.Ratio: 7.0,
utils.Load: 10.0,
},
},
},
}
expNavMap := utils.NavigableMap2{
utils.ProfileID: utils.NewNMData("TEST_ID1"),
utils.Sorting: utils.NewNMData(utils.MetaWeight),
utils.Count: utils.NewNMData(100),
utils.SortedRoutes: &utils.NMSlice{
utils.NavigableMap2{
utils.RouteID: utils.NewNMData("ROUTE1"),
utils.RouteParameters: utils.NewNMData("SORTING_PARAMETER"),
utils.SortingData: utils.NavigableMap2{
utils.Ratio: utils.NewNMData(6.0),
utils.Load: utils.NewNMData(10.0),
utils.Weight: utils.NewNMData(15.5),
},
},
utils.NavigableMap2{
utils.RouteID: utils.NewNMData("ROUTE2"),
utils.RouteParameters: utils.NewNMData("SORTING_PARAMETER_SECOND"),
utils.SortingData: utils.NavigableMap2{
utils.Ratio: utils.NewNMData(7.0),
utils.Load: utils.NewNMData(10.0),
},
},
},
}
if rcv := sSpls.AsNavigableMap(); !reflect.DeepEqual(rcv, expNavMap) {
t.Errorf("Expected %+v, received %+v", utils.ToJSON(expNavMap), utils.ToJSON(rcv))
}
}