1 // Copyright 2014 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
15 func TestWriteHeapDumpNonempty(t
*testing
.T
) {
16 if runtime
.GOOS
== "nacl" {
17 t
.Skip("WriteHeapDump is not available on NaCl.")
19 f
, err
:= ioutil
.TempFile("", "heapdumptest")
21 t
.Fatalf("TempFile failed: %v", err
)
23 defer os
.Remove(f
.Name())
28 t
.Fatalf("Stat failed: %v", err
)
31 if size
:= fi
.Size(); size
< minSize
{
32 t
.Fatalf("Heap dump size %d bytes, expected at least %d bytes", size
, minSize
)
41 //println("finalized", x)
44 func TestWriteHeapDumpFinalizers(t
*testing
.T
) {
45 if runtime
.GOOS
== "nacl" {
46 t
.Skip("WriteHeapDump is not available on NaCl.")
48 f
, err
:= ioutil
.TempFile("", "heapdumptest")
50 t
.Fatalf("TempFile failed: %v", err
)
52 defer os
.Remove(f
.Name())
55 // bug 9172: WriteHeapDump couldn't handle more than one finalizer
56 println("allocating objects")
58 runtime
.SetFinalizer(x
, objfin
)
60 runtime
.SetFinalizer(y
, objfin
)
62 // Trigger collection of x and y, queueing of their finalizers.
63 println("starting gc")
66 // Make sure WriteHeapDump doesn't fail with multiple queued finalizers.
67 println("starting dump")