...

Source file src/cdr.dev/slog/sloggers/slogstackdriver/slogstackdriver_test.go

Documentation: cdr.dev/slog/sloggers/slogstackdriver

     1  package slogstackdriver_test
     2  
     3  import (
     4  	"bytes"
     5  	"context"
     6  	"fmt"
     7  	"runtime"
     8  	"testing"
     9  
    10  	"cloud.google.com/go/compute/metadata"
    11  	"go.opencensus.io/trace"
    12  	logpbtype "google.golang.org/genproto/googleapis/logging/type"
    13  
    14  	"cdr.dev/slog"
    15  	"cdr.dev/slog/internal/assert"
    16  	"cdr.dev/slog/internal/entryjson"
    17  	"cdr.dev/slog/sloggers/slogstackdriver"
    18  )
    19  
    20  var bg = context.Background()
    21  var _, slogstackdriverTestFile, _, _ = runtime.Caller(0)
    22  
    23  func TestStackdriver(t *testing.T) {
    24  	t.Parallel()
    25  
    26  	ctx, s := trace.StartSpan(bg, "meow")
    27  	b := &bytes.Buffer{}
    28  	l := slog.Make(slogstackdriver.Sink(b))
    29  	l = l.Named("meow")
    30  	l.Error(ctx, "line1\n\nline2", slog.F("wowow", "me\nyou"))
    31  
    32  	projectID, _ := metadata.ProjectID()
    33  
    34  	j := entryjson.Filter(b.String(), "timestampSeconds")
    35  	j = entryjson.Filter(j, "timestampNanos")
    36  	exp := fmt.Sprintf(`{"logging.googleapis.com/severity":"ERROR","message":"line1\n\nline2","logging.googleapis.com/sourceLocation":{"file":"%v","line":30,"function":"cdr.dev/slog/sloggers/slogstackdriver_test.TestStackdriver"},"logging.googleapis.com/operation":{"producer":"meow"},"logging.googleapis.com/trace":"projects/%v/traces/%v","logging.googleapis.com/spanId":"%v","logging.googleapis.com/trace_sampled":false,"wowow":"me\nyou"}
    37  `, slogstackdriverTestFile, projectID, s.SpanContext().TraceID, s.SpanContext().SpanID)
    38  	assert.Equal(t, "entry", exp, j)
    39  }
    40  
    41  func TestSevMapping(t *testing.T) {
    42  	t.Parallel()
    43  
    44  	assert.Equal(t, "level", logpbtype.LogSeverity_DEBUG, slogstackdriver.Sev(slog.LevelDebug))
    45  	assert.Equal(t, "level", logpbtype.LogSeverity_INFO, slogstackdriver.Sev(slog.LevelInfo))
    46  	assert.Equal(t, "level", logpbtype.LogSeverity_WARNING, slogstackdriver.Sev(slog.LevelWarn))
    47  	assert.Equal(t, "level", logpbtype.LogSeverity_ERROR, slogstackdriver.Sev(slog.LevelError))
    48  	assert.Equal(t, "level", logpbtype.LogSeverity_CRITICAL, slogstackdriver.Sev(slog.LevelCritical))
    49  }
    50  

View as plain text