Files
go-caatsm/internal/adapter/parser/aviation/aviation_parser_bench_test.go
T
2025-12-24 17:23:41 +08:00

137 lines
2.8 KiB
Go

package aviation
import (
"testing"
)
// Sample messages for benchmarking
var (
benchARRMessage = `ZCZC TMQ2526 141605
FF ZBTJZPZX
141604 ZBACZQZX
(ARR-JAE7433/A0132-RKSI-ZBTJ1604)
NNNN`
benchDEPMessage = `ZCZC DEP5678 120915
DD KLAXZPZX
120914 KSFOZQZX
(DEP-ABC5678-A1234-ZBTJ1440-ZGGG)
NNNN`
benchCNLMessage = `ZCZC CNL9012 150631
FF ZBTJZPZX
(CNL-CCA9012-ZBTJ-ZGGG)
NNNN`
benchDLAMessage = `ZCZC DLA3456 150631
FF ZBTJZPZX
(DLA-CCA3456-A1234-ZBTJ1600-ZGGG0200)
NNNN`
benchFPLMessage = `ZCZC TMQ2617 142150
GG ZBTJZPZX
150551 ZBTJUOBK
(FPL-OKA2861-IS
-MA60/M-SHID/C
-ZBTJ0030
-K0420S0450 CG J1 FZ
-ZSYT0100 ZSQD ZYTL
-REG/B3710 SEL/ RMK/TCAS )
NNNN`
benchComplexFPLMessage = `ZCZC FPL7890 150631
FF ZBTJZPZX
(FPL-JAE7433-IS
-B744/H-SXIRPZJWY/S
-ZBTJ1755
-K0926S0920 CG A326 VYK W80 HUR B339 GM A575 MANSA/K0919S0980
-EDDF0948 EDDK
-EET/ZMUB0100 UNKL0236
REG/B2422 SEL/JLAD
NAV/RNAV1 RNAV5 RNP4
RMK/AGCS EQUIPPED)
NNNN`
)
// BenchmarkParseARR benchmarks parsing ARR messages
func BenchmarkParseARR(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = Parse(benchARRMessage)
}
}
// BenchmarkParseDEP benchmarks parsing DEP messages
func BenchmarkParseDEP(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = Parse(benchDEPMessage)
}
}
// BenchmarkParseCNL benchmarks parsing CNL messages
func BenchmarkParseCNL(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = Parse(benchCNLMessage)
}
}
// BenchmarkParseDLA benchmarks parsing DLA messages
func BenchmarkParseDLA(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = Parse(benchDLAMessage)
}
}
// BenchmarkParseFPL benchmarks parsing simple FPL messages
func BenchmarkParseFPL(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = Parse(benchFPLMessage)
}
}
// BenchmarkParseComplexFPL benchmarks parsing complex FPL messages with extensive route and metadata
func BenchmarkParseComplexFPL(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = Parse(benchComplexFPLMessage)
}
}
// BenchmarkParseHeader benchmarks header parsing only
func BenchmarkParseHeader(b *testing.B) {
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _ = ParseHeader(benchARRMessage)
}
}
// BenchmarkParseBody benchmarks body parsing only (ARR)
func BenchmarkParseBody(b *testing.B) {
body := `(ARR-JAE7433/A0132-RKSI-ZBTJ1604)`
parser := NewBodyParser(body)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, _, _ = parser.Parse()
}
}
// BenchmarkParseMixed benchmarks parsing a mix of message types
func BenchmarkParseMixed(b *testing.B) {
messages := []string{
benchARRMessage,
benchDEPMessage,
benchCNLMessage,
benchDLAMessage,
benchFPLMessage,
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
msg := messages[i%len(messages)]
_, _ = Parse(msg)
}
}