diff --git a/server/mqtt_test.go b/server/mqtt_test.go index dd3c55aca7f..b54f31b0812 100644 --- a/server/mqtt_test.go +++ b/server/mqtt_test.go @@ -30,7 +30,6 @@ import ( "reflect" "runtime" "runtime/pprof" - "strconv" "strings" "sync" "testing" @@ -3070,7 +3069,7 @@ func captureHeapProfile(filename string) { func printHeapUsage(label string) runtime.MemStats { var memStats runtime.MemStats runtime.ReadMemStats(&memStats) - fmt.Printf("%s Heap: allocs=%v, objects=%v\n", label, memStats.HeapAlloc, memStats.HeapObjects) + fmt.Printf("%s Heap: inuse=%v, objects=%v\n", label, memStats.HeapInuse, memStats.HeapObjects) return memStats } func TestMQTTClusterConnectDisconnectClean(t *testing.T) { @@ -3100,20 +3099,21 @@ func TestMQTTClusterConnectSubDisconnectClean(t *testing.T) { runtime.GC() // Force garbage collection to get a clear picture memStats := printHeapUsage("BEFORE") - baseHeapAlloc := memStats.HeapAlloc + baseHeapInuse := memStats.HeapInuse baseHeapObjects := memStats.HeapObjects - for i := 0; i < 10; i++ { + N := 1000000 + for i := 0; i < N; i++ { clientID := nuid.Next() testMQTTConnectSubDisconnect(t, cl.opts[0], clientID, true, false, true, 2) runtime.GC() // Force garbage collection to get a clear picture memStats = printHeapUsage(fmt.Sprintf("AFTER %d", i)) - if memStats.HeapAlloc > 2*baseHeapAlloc || memStats.HeapObjects > 2*baseHeapObjects { + if memStats.HeapInuse > 100*baseHeapInuse || memStats.HeapObjects > 100*baseHeapObjects { captureHeapProfile("AFTERLEAK.pprof") t.Fatalf("after %d iterations heap alloc has grown from %v to %v (%v%%), objects from %v to %v (%v%%)", i, - sizeKB(baseHeapAlloc), sizeKB(memStats.HeapAlloc), memStats.HeapAlloc*100/baseHeapAlloc, + baseHeapInuse, memStats.HeapInuse, memStats.HeapInuse*100/baseHeapInuse, baseHeapObjects, memStats.HeapObjects, memStats.HeapObjects*100/baseHeapObjects) } }