You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.7 KiB
85 lines
1.7 KiB
6 years ago
|
package mocktrace
|
||
|
|
||
|
import (
|
||
|
"github.com/bilibili/kratos/pkg/net/trace"
|
||
|
)
|
||
|
|
||
|
// MockTrace .
|
||
|
type MockTrace struct {
|
||
|
Spans []*MockSpan
|
||
|
}
|
||
|
|
||
|
// New .
|
||
|
func (m *MockTrace) New(operationName string, opts ...trace.Option) trace.Trace {
|
||
|
span := &MockSpan{OperationName: operationName, MockTrace: m}
|
||
|
m.Spans = append(m.Spans, span)
|
||
|
return span
|
||
|
}
|
||
|
|
||
|
// Inject .
|
||
|
func (m *MockTrace) Inject(t trace.Trace, format interface{}, carrier interface{}) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Extract .
|
||
|
func (m *MockTrace) Extract(format interface{}, carrier interface{}) (trace.Trace, error) {
|
||
|
return &MockSpan{}, nil
|
||
|
}
|
||
|
|
||
|
// MockSpan .
|
||
|
type MockSpan struct {
|
||
|
*MockTrace
|
||
|
OperationName string
|
||
|
FinishErr error
|
||
|
Finished bool
|
||
|
Tags []trace.Tag
|
||
|
Logs []trace.LogField
|
||
|
}
|
||
|
|
||
|
// Fork .
|
||
|
func (m *MockSpan) Fork(serviceName string, operationName string) trace.Trace {
|
||
|
span := &MockSpan{OperationName: operationName, MockTrace: m.MockTrace}
|
||
|
m.Spans = append(m.Spans, span)
|
||
|
return span
|
||
|
}
|
||
|
|
||
|
// Follow .
|
||
|
func (m *MockSpan) Follow(serviceName string, operationName string) trace.Trace {
|
||
|
span := &MockSpan{OperationName: operationName, MockTrace: m.MockTrace}
|
||
|
m.Spans = append(m.Spans, span)
|
||
|
return span
|
||
|
}
|
||
|
|
||
|
// Finish .
|
||
|
func (m *MockSpan) Finish(perr *error) {
|
||
|
if perr != nil {
|
||
|
m.FinishErr = *perr
|
||
|
}
|
||
|
m.Finished = true
|
||
|
}
|
||
|
|
||
|
// SetTag .
|
||
|
func (m *MockSpan) SetTag(tags ...trace.Tag) trace.Trace {
|
||
|
m.Tags = append(m.Tags, tags...)
|
||
|
return m
|
||
|
}
|
||
|
|
||
|
// SetLog .
|
||
|
func (m *MockSpan) SetLog(logs ...trace.LogField) trace.Trace {
|
||
|
m.Logs = append(m.Logs, logs...)
|
||
|
return m
|
||
|
}
|
||
|
|
||
|
// Visit .
|
||
|
func (m *MockSpan) Visit(fn func(k, v string)) {}
|
||
|
|
||
|
// SetTitle .
|
||
|
func (m *MockSpan) SetTitle(title string) {
|
||
|
m.OperationName = title
|
||
|
}
|
||
|
|
||
|
// TraceID .
|
||
|
func (m *MockSpan) TraceID() string {
|
||
|
return ""
|
||
|
}
|