mirror of
https://gitee.com/willfree/mlsr.git
synced 2026-10-04 19:42:02 +08:00
96 lines
2.3 KiB
Go
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())
|
|
}
|