Files
gobngsdk/bngsdk_test.go
T
2026-07-01 14:49:30 +01:00

58 lines
1.2 KiB
Go

package bngsdk
import (
"bytes"
"encoding/binary"
"net"
"testing"
)
func BenchmarkReadData(b *testing.B) {
// Spin up an UDP server
sdk, err := Init("127.0.0.1", 0)
if err != nil {
b.Fatalf("Failed to initialize SDK: %v", err)
}
defer sdk.Close()
// Retrieve the actual assigned UDP address
localAddr := sdk.Conn.LocalAddr().(*net.UDPAddr)
// Start a client to stream data
clientConn, err := net.DialUDP("udp", nil, localAddr)
if err != nil {
b.Fatalf("Failed to dial local UDP socket: %v", err)
}
defer clientConn.Close()
// Pre serialize some data
dummyOutgauge := Outgauge{
Time: 424242,
Car: [4]byte{'P', 'E', 'R', 'F'},
Speed: 45.2,
RPM: 3500.0,
}
var buf bytes.Buffer
if err := binary.Write(&buf, binary.LittleEndian, dummyOutgauge); err != nil {
b.Fatalf("Failed to serialize dummy struct: %v", err)
}
packetBytes := buf.Bytes()
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
// Feed a packet into the network buffer right before reading it
_, err := clientConn.Write(packetBytes)
if err != nil {
b.Fatalf("Failed to write to UDP socket: %v", err)
}
// Execute the target function
err = sdk.ReadData()
if err != nil {
b.Fatalf("ReadData failed at iteration %d: %v", i, err)
}
}
}