1
0
mirror of https://gitee.com/willfree/mlsr.git synced 2026-06-15 20:44:48 +08:00
Files
mlsr/route/RoutingTableCalculator_test.go
T

74 lines
2.0 KiB
Go

// Package route
// @Author: Wang Feng
// @Description:
// @Version: 0.1.0
// @Date: 2022/5/26 12:10
// @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
//
package route
import (
"fmt"
common2 "minlib/common"
"minlib/logicface"
"mlsr/common"
"mlsr/lsa"
"mlsr/lsdb"
"testing"
)
func TestRoutingTableCalculator_Init(t *testing.T) {
// 构造路由计算器
rtc := new(RoutingTableCalculator)
// 1. 根据LSDB构造邻接矩阵
// 1.1 构造LSDB
// 配置文件初始化
mlsrConfig, err := common.ParseConfig(testConfigPath)
if err != nil {
fmt.Println("配置文件解析错误")
}
// 调度器初始化
sche := new(lsdb.MlsrScheduler)
sche.Init()
// LogicFace初始化(假设初始化,暂时用不到)
face := new(logicface.LogicFace)
// LSDB初始化
mlsdb := new(lsdb.Lsdb)
mlsdb.Init(mlsrConfig, sche, face)
// 安装本机adjlsa
mlsdb.BuildAndInstallOwnAdjLsa()
// todo 传入一些其它虚拟lsa,这些lsa与本机lsa共同形成一个小型路由拓扑
// 1.2 构造RouterMap
lsas, err := mlsdb.GetLSAsByType(lsa.LsaADJACENCYType)
if err != nil {
common2.LogError("Get Lsa in calculateLsRoutingTable error, ", err)
}
common2.LogInfo("邻接lsa数目: ", len(lsas))
rMap := new(RouterMap)
rMap.Init()
err = rMap.CreateFromAdjLsdb(lsas)
// 打印rm
common2.LogInfo(rMap.ToString())
// 1.3 根据RouterMap,和lsdb中的adjlsa,构造邻接矩阵
// 设置路由器数目
rtc.SetRouterNum(rMap.GetMapSize())
// 分配矩阵空间
rtc.allocateAdjMatrix()
// 初始化矩阵值
rtc.initMatrix()
// 构造矩阵
err = rtc.makeAdjMatrix(mlsdb, rMap)
if err != nil {
common2.LogError("邻接矩阵构造失败")
}
// 2. 打印输出路由表计算器
fmt.Println(rtc.ToString())
fmt.Println("源路由器的邻接数目:", rtc.getNumOfLinkfromAdjMatrix(0))
fmt.Println("另一个路由器的邻接数目:", rtc.getNumOfLinkfromAdjMatrix(1))
}