mirror of
https://gitee.com/willfree/mlsr.git
synced 2026-06-15 20:44:48 +08:00
74 lines
2.0 KiB
Go
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.DummyClientLogicFace)
|
|
// 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))
|
|
}
|