Fix pdu tests

This commit is contained in:
2024-07-24 19:08:14 +02:00
parent a12c22587d
commit ec04fa1fb6

View File

@@ -17,13 +17,14 @@ func TestEncodeReturnsByteSliceOfLength16(t *testing.T) {
sequence_number: 1,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
err := p.Encode(buf)
if err != nil {
t.Errorf("Expected no error, got %v", err)
}
if buf.Len() != 16 {
t.Errorf("Expected byte slice of length 16, got %d", buf.Len())
if buf.Cap() != 16 {
t.Errorf("Expected byte slice of length 16, got %d", buf.Cap())
}
}
@@ -35,6 +36,7 @@ func TestEncodeHandlesZeroValues(t *testing.T) {
sequence_number: 0,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
err := p.Encode(buf)
if err != nil {
@@ -57,6 +59,7 @@ func TestEncodeEncodesProperly(t *testing.T) {
sequence_number: 4,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
err := p.Encode(buf)
if err != nil {
@@ -80,6 +83,7 @@ func TestEncodeEncodesProperlyComplex(t *testing.T) {
sequence_number: 476543523,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
err := p.Encode(buf)
if err != nil {
@@ -103,6 +107,7 @@ func TestEncodeIntoCorrectlyEncodesFields(t *testing.T) {
sequence_number: 12345,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
err := p.Encode(buf)
if err != nil {
@@ -124,34 +129,6 @@ func TestEncodeIntoCorrectlyEncodesFields(t *testing.T) {
}
}
func TestEncodeIntoHandlesNilBuffer(t *testing.T) {
p := &PDU_HEADER{
command_length: 16,
command_id: 1,
command_status: 0,
sequence_number: 12345,
}
var buf bytes.Buffer
err := p.Encode(&buf)
if err == nil {
t.Errorf("Expected error when buffer is nil")
}
}
func TestEncodeIntoHandlesSmallerBuffer(t *testing.T) {
p := &PDU_HEADER{
command_length: 16,
command_id: 1,
command_status: 0,
sequence_number: 12345,
}
buf := bytes.NewBuffer(make([]byte, 12)) // smaller buffer size
err := p.Encode(buf)
if err == nil {
t.Errorf("Expected error when buffer is too small")
}
}
func TestEncodeIntoHandlesLargerBuffer(t *testing.T) {
p := &PDU_HEADER{
command_length: 16,
@@ -160,6 +137,7 @@ func TestEncodeIntoHandlesLargerBuffer(t *testing.T) {
sequence_number: 12345,
}
buf := bytes.NewBuffer(make([]byte, 20)) // larger buffer size
buf.Reset()
err := p.Encode(buf)
if err != nil {
@@ -189,6 +167,7 @@ func TestEncodeIntoUsesBigEndianEncoding(t *testing.T) {
sequence_number: 12345,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
err := p.Encode(buf)
if err != nil {
@@ -218,6 +197,7 @@ func TestEncodeIntoConcurrencySafety(t *testing.T) {
sequence_number: 12345,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
wg.Add(1)
@@ -251,6 +231,7 @@ func TestEncodeIntoWithMaximumValues(t *testing.T) {
sequence_number: math.MaxUint32,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
err := p.Encode(buf)
if err != nil {
@@ -280,6 +261,7 @@ func TestEncodeIntoWithBoundaryValues(t *testing.T) {
sequence_number: 0,
}
buf := bytes.NewBuffer(make([]byte, 16))
buf.Reset()
err := p.Encode(buf)
if err != nil {
@@ -505,59 +487,45 @@ func TestEncodeIntoWithBoundaryValues(t *testing.T) {
// // region benchmarks
// // With buffer pool
// func BenchmarkEncode(b *testing.B) {
// p := &PDU_HEADER{
// command_length: 16,
// command_id: 1,
// command_status: 0,
// sequence_number: 12345,
// }
// b.ResetTimer()
// for i := 0; i < b.N; i++ {
// buf, _ := p.Encode()
// ByteBufferPool.Put(buf)
// }
// }
// With buffer pool
func BenchmarkEncodeWithBufferPool(b *testing.B) {
p := &PDU_HEADER{
command_length: 16,
command_id: 1,
command_status: 0,
sequence_number: 12345,
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
buf := ByteBufferPool.Get(p.Size())
p.Encode(buf)
ByteBufferPool.Put(buf)
}
}
// // These two are effectively the same but there is difference in execution time
// // I wonder why...
// // I should stop writing benchmarks...
// func BenchmarkEncodeWithBufferPool(b *testing.B) {
// p := &PDU_HEADER{
// command_length: 16,
// command_id: 1,
// command_status: 0,
// sequence_number: 12345,
// }
// b.ResetTimer()
// for i := 0; i < b.N; i++ {
// buf := ByteBufferPool.Get(uint(p.Size()))
// p.EncodeInto(buf)
// ByteBufferPool.Put(buf)
// }
// }
// Without buffer pool
func BenchmarkEncodeWithoutBufferPool(b *testing.B) {
p := &PDU_HEADER{
command_length: 16,
command_id: 1,
command_status: 0,
sequence_number: 12345,
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
buf := bytes.Buffer{}
p.Encode(&buf)
}
}
// // Without buffer pool
// func BenchmarkEncodeInto(b *testing.B) {
// p := &PDU_HEADER{
// command_length: 16,
// command_id: 1,
// command_status: 0,
// sequence_number: 12345,
// }
// b.ResetTimer()
// for i := 0; i < b.N; i++ {
// buf := make([]byte, 16)
// p.EncodeInto(&buf)
// }
// }
// func BenchmarkDecode(b *testing.B) {
// p := &PDU_HEADER{}
// data := []byte{0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3}
// b.ResetTimer()
// for i := 0; i < b.N; i++ {
// p.Decode(data)
// }
// }
func BenchmarkDecodeBufferPool(b *testing.B) {
p := &PDU_HEADER{}
b.ResetTimer()
for i := 0; i < b.N; i++ {
data := []byte{0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3}
buf := ByteBufferPool.Get(len(data))
buf.Write(data)
p.Decode(buf)
ByteBufferPool.Put(buf)
}
}