🔧 Update Go version in go.mod and enhance build process with versioning information. Modify Makefile and Taskfile to inject build metadata (version, commit, build time) into the binary. Improve README with instructions for custom version builds and document new build info features. Add benchmarks for message parsing and processing to improve performance testing capabilities.
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
package parser
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user