testing.B.Loop() standardization and StackAsync.Debug improvement (#156)

* testing.B.Loop() standardization and StackAsync.Debug heap debugging improvement

* apply @MDr164 fixes

* @MDr164 great suggestions to prevent panic and print correct mallocs
This commit is contained in:
Pat Whittingslow
2026-07-17 11:59:27 -03:00
committed by GitHub
parent 766e03e90e
commit 157a8537a2
10 changed files with 64 additions and 45 deletions
+4 -10
View File
@@ -842,24 +842,18 @@ func addr4(addr [4]byte, ok bool) netip.Addr {
return netip.AddrFrom4(addr)
}
// Debug prints debugging information. Very useful for users when coupled with
// the debugheaplog build tag. See [internal.LogAttrs] debugheaplog version.
//
// go build -tags=debugheaplog ./yourprogram
// Debug prints debugging and heap information.
func (s *StackAsync) Debug(msg string) {
internal.LogAttrs(slog.Default(), slog.LevelDebug, "stackasync",
internal.LogAttrsAndAllocs(msg, slog.Default(), slog.LevelDebug, "stackasync",
slog.String("umsg", msg),
slog.Uint64("sent", s.stats.TotalSent),
slog.Uint64("recv", s.stats.TotalReceived),
)
}
// DebugErr prints debugging and error info. Very useful for users when coupled with
// the debugheaplog build tag. See [internal.LogAttrs] debugheaplog version.
//
// go build -tags=debugheaplog ./yourprogram
// DebugErr prints debugging and heap information.
func (s *StackAsync) DebugErr(msg, err string) {
internal.LogAttrs(slog.Default(), slog.LevelError, "stackasync",
internal.LogAttrsAndAllocs(msg, slog.Default(), slog.LevelError, "stackasync",
slog.String("umsg", msg),
slog.String("err", err),
slog.Uint64("sent", s.stats.TotalSent),
+2 -2
View File
@@ -41,7 +41,7 @@ func BenchmarkARPExchange(b *testing.B) {
var buf [frameSize]byte
b.ResetTimer()
for i := 0; i < b.N; i++ {
for b.Loop() {
err = c1.StartResolveHardwareAddress6(queryAddr)
if err != nil {
b.Fatal(err)
@@ -130,7 +130,7 @@ func BenchmarkTCPHandshake(b *testing.B) {
var pktbuf [frameSize]byte
b.ResetTimer()
for i := 0; i < b.N; i++ {
for b.Loop() {
// Setup connections.
err = sv.ListenTCP4(svconn, svPort)
if err != nil {
+8 -1
View File
@@ -2,7 +2,11 @@
package xnet
import "os"
import (
"os"
"github.com/soypat/lneto/internal"
)
var _pcap CapturePrinter
@@ -14,4 +18,7 @@ func init() {
func debugPacket(msg string, b []byte) {
_pcap.PrintEthernet(msg, b)
if internal.HeapAllocDebugging {
internal.LogAllocs(msg)
}
}
+3
View File
@@ -13,6 +13,9 @@ import (
)
func TestTinyGoTest(t *testing.T) {
if testing.Short() {
t.Skip("`tinygo test` skipped on short test")
}
if exec.Command("tinygo", "version").Run() != nil {
t.Skip("tinygo not installed")
}