mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 21:15:39 +00:00
41 lines
930 B
Go
41 lines
930 B
Go
|
// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package logheap
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"compress/gzip"
|
||
|
"encoding/json"
|
||
|
"io/ioutil"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestLogHeap(t *testing.T) {
|
||
|
var buf bytes.Buffer
|
||
|
if err := logHeap(&buf); err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
t.Logf("Got line: %s", buf.Bytes())
|
||
|
|
||
|
var ll logLine
|
||
|
if err := json.Unmarshal(buf.Bytes(), &ll); err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
zr, err := gzip.NewReader(bytes.NewReader(ll.Pprof.Heap))
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
rawProto, err := ioutil.ReadAll(zr)
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
// Just sanity check it. Too lazy to properly decode the protobuf. But see that
|
||
|
// it contains an expected sample name.
|
||
|
if !bytes.Contains(rawProto, []byte("alloc_objects")) {
|
||
|
t.Errorf("raw proto didn't contain `alloc_objects`: %q", rawProto)
|
||
|
}
|
||
|
}
|