Files
mlsr/lsa/LsaBase_test.go
T
2022-05-05 20:30:22 +08:00

96 lines
2.3 KiB
Go

// Package lsa
// @Author: Wang Feng
// @Description:
// @Version: 0.1.0
// @Date: 2022/3/18 23:28
// @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
//
package lsa
import (
"fmt"
"log"
"minlib/component"
"minlib/encoding"
"testing"
)
//
// TestLsaBase_GetType
// @Description: 测试获取lasbase的type
// @param t
//
func TestLsaBase_GetType(t *testing.T) {
base := new(LsaBase)
fmt.Println(base.GetType())
if base.GetType() != 0 {
log.Fatal("base type error: ", base.GetType())
}
}
//
// TestLsaBase_WireEncode
// @Description: 线速编码
// @param t
//
func TestLsaBase_WireEncode(t *testing.T) {
// 构造结构体
base := new(LsaBase)
base.SetLsaExpirationTime(2000)
base.SetLsaSequenceNumber(1234)
base.LsaOriginRouterIdentifier, _ = component.CreateIdentifierByString("/min/pku")
// 构造编码器
encoder := encoding.Encoder{}
err := encoder.EncoderReset(encoding.MaxPacketSize, 0)
if err != nil {
fmt.Println("encoder reset失败 ", err.Error())
return
}
// 编码并打印
cnt, err := base.WireEncode(&encoder)
if err != nil {
fmt.Println("LsaBase 线速编码失败 ", err.Error())
return
}
res, err := encoder.GetBuffer()
if err != nil {
fmt.Println("获取编码结果失败 ", err.Error())
return
}
fmt.Println(cnt)
for i := 0; i < len(res); i++ {
fmt.Print(res[i], ", ")
}
fmt.Println()
// 34 [241 1 154 30 101 16 100 2 0 47 100 4 0 109 105 110 100 4 0 112 107 117 241 1 165 2 4 210 241 1 164 2 7 208]
}
//
// TestLsaBase_WireDecode
// @Description: 测试线速解码
// @param t
//
func TestLsaBase_WireDecode(t *testing.T) {
// 由数组构建block
var buf = [34]byte{241, 1, 154, 30, 101, 16, 100, 2, 0, 47, 100, 4, 0, 109, 105,
110, 100, 4, 0, 112, 107, 117, 241, 1, 165, 2, 4, 210, 241, 1, 164, 2, 7, 208}
block, err := encoding.CreateBlockByBuffer(buf[:], true)
if err != nil {
fmt.Println("创建block失败 ", err.Error())
return
}
// 由Block构建结构体,并打印变量
base := new(LsaBase)
err = base.WireDecode(block)
if err != nil {
fmt.Println("线性解码失败 ", err.Error())
return
}
fmt.Println(base.LsaExpirationTime.LsaExpirationTime(), " ", base.LsaSequenceNumber.LsaSequenceNumber(),
" ", base.LsaOriginRouterIdentifier.ToUri())
}