mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-18 02:48:40 +00:00
![Denton Gentry](/assets/img/avatar_default.png)
Start an HTTP server to accept POST requests, and upload some logs to it. Check that uploaded logs were received. Code in logtail:drainPending was not being reliably exercised by other tests. This shows up in code coverage reports, as lines of code in drainPending are alternately added and subtracted from code coverage. This test will reliably exercise and verify this code. Signed-off-by: Denton Gentry <dgentry@tailscale.com>
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
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 logtail
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestFastShutdown(t *testing.T) {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
cancel()
|
|
|
|
l := NewLogger(Config{
|
|
BaseURL: "http://localhost:1234",
|
|
}, t.Logf)
|
|
l.Shutdown(ctx)
|
|
}
|
|
|
|
func TestUploadMessages(t *testing.T) {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
uploads := 0
|
|
testServ := httptest.NewServer(http.HandlerFunc(
|
|
func(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json; charset=utf-8")
|
|
uploads += 1
|
|
}))
|
|
|
|
l := NewLogger(Config{BaseURL: testServ.URL}, t.Logf)
|
|
for i := 1; i < 10; i++ {
|
|
l.Write([]byte("log line"))
|
|
}
|
|
|
|
l.Shutdown(ctx)
|
|
cancel()
|
|
if uploads == 0 {
|
|
t.Error("no log uploads")
|
|
}
|
|
}
|
|
|
|
var sink []byte
|
|
|
|
func TestLoggerEncodeTextAllocs(t *testing.T) {
|
|
lg := &Logger{timeNow: time.Now}
|
|
inBuf := []byte("some text to encode")
|
|
n := testing.AllocsPerRun(1000, func() {
|
|
sink = lg.encodeText(inBuf, false)
|
|
})
|
|
if int(n) != 1 {
|
|
t.Logf("allocs = %d; want 1", int(n))
|
|
}
|
|
}
|
|
|
|
func TestLoggerWriteLength(t *testing.T) {
|
|
lg := &Logger{
|
|
timeNow: time.Now,
|
|
buffer: NewMemoryBuffer(1024),
|
|
}
|
|
inBuf := []byte("some text to encode")
|
|
n, err := lg.Write(inBuf)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if n != len(inBuf) {
|
|
t.Errorf("logger.Write wrote %d bytes, expected %d", n, len(inBuf))
|
|
}
|
|
}
|