mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-18 14:47:03 +00:00
nettrace: Add a new tracing library
This commit introduces a new tracing library, that replaces golang.org/x/net/trace, and supports (amongts other thing) nested traces. This is a minimal change, future patches will make use of the new functionality.
This commit is contained in:
66
internal/nettrace/context_test.go
Normal file
66
internal/nettrace/context_test.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package nettrace
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestContext(t *testing.T) {
|
||||
tr := New("TestContext", "trace")
|
||||
defer tr.Finish()
|
||||
|
||||
// Attach the trace to a new context.
|
||||
ctx := NewContext(context.Background(), tr)
|
||||
|
||||
// Get the trace back from the context.
|
||||
{
|
||||
tr2, ok := FromContext(ctx)
|
||||
if !ok {
|
||||
t.Errorf("Context with trace returned not found")
|
||||
}
|
||||
if tr != tr2 {
|
||||
t.Errorf("Trace from context is different: %v != %v", tr, tr2)
|
||||
}
|
||||
}
|
||||
|
||||
// Create a child trace from the context.
|
||||
{
|
||||
tr3 := ChildFromContext(ctx, "TestContext", "child")
|
||||
if p := tr3.(*trace).Parent; p != tr {
|
||||
t.Errorf("Child doesn't have the right parent: %v != %v", p, tr)
|
||||
}
|
||||
tr3.Finish()
|
||||
}
|
||||
|
||||
// FromContextOrNew returns the one from the context.
|
||||
{
|
||||
tr4, ctx4 := FromContextOrNew(ctx, "TestContext", "from-ctx")
|
||||
if ctx4 != ctx {
|
||||
t.Errorf("Got new context: %v != %v", ctx4, ctx)
|
||||
}
|
||||
if tr4 != tr {
|
||||
t.Errorf("Context with trace returned new trace: %v != %v", tr4, tr)
|
||||
}
|
||||
}
|
||||
|
||||
// FromContextOrNew needs to create a new one.
|
||||
{
|
||||
tr5, ctx5 := FromContextOrNew(
|
||||
context.Background(), "TestContext", "tr5")
|
||||
if tr, _ := FromContext(ctx5); tr != tr5 {
|
||||
t.Errorf("Context with trace returned the wrong trace: %v != %v",
|
||||
tr, tr5)
|
||||
}
|
||||
tr5.Finish()
|
||||
}
|
||||
|
||||
// Child from a context that has no trace attached.
|
||||
{
|
||||
tr6 := ChildFromContext(
|
||||
context.Background(), "TestContext", "child")
|
||||
tr6.Finish()
|
||||
if p := tr6.(*trace).Parent; p != nil {
|
||||
t.Errorf("Expected orphan trace, it has a parent: %v", p)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user