Skip to content

Commit

Permalink
Merge branch 'main' into efficiency/member_string
Browse files Browse the repository at this point in the history
  • Loading branch information
dmathieu authored May 7, 2024
2 parents 6aaf8f3 + f23078e commit 3c1ec42
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 84 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ var (
TraceID: trace.TraceID(traceIDA),
SpanID: trace.SpanID(spanIDA),
TraceFlags: trace.TraceFlags(flagsA),
InstrumentationScope: scope,
InstrumentationScope: &scope,
Resource: res,
}.NewRecord())

Expand All @@ -123,7 +123,7 @@ var (
TraceID: trace.TraceID(traceIDA),
SpanID: trace.SpanID(spanIDA),
TraceFlags: trace.TraceFlags(flagsA),
InstrumentationScope: scope,
InstrumentationScope: &scope,
Resource: res,
}.NewRecord())

Expand All @@ -137,7 +137,7 @@ var (
TraceID: trace.TraceID(traceIDB),
SpanID: trace.SpanID(spanIDB),
TraceFlags: trace.TraceFlags(flagsB),
InstrumentationScope: scope,
InstrumentationScope: &scope,
Resource: res,
}.NewRecord())

Expand All @@ -151,7 +151,7 @@ var (
TraceID: trace.TraceID(traceIDB),
SpanID: trace.SpanID(spanIDB),
TraceFlags: trace.TraceFlags(flagsB),
InstrumentationScope: scope,
InstrumentationScope: &scope,
Resource: res,
}.NewRecord())

Expand Down
2 changes: 1 addition & 1 deletion exporters/stdout/stdoutlog/exporter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ func getRecord(now time.Time) sdklog.Record {
"https://example.com/custom-resource-schema",
attribute.String("foo", "bar"),
),
InstrumentationScope: instrumentation.Scope{Name: "name", Version: "version", SchemaURL: "https://example.com/custom-schema"},
InstrumentationScope: &instrumentation.Scope{Name: "name", Version: "version", SchemaURL: "https://example.com/custom-schema"},
DroppedAttributes: 10,
}

Expand Down
6 changes: 3 additions & 3 deletions metric/asyncfloat64.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ type Float64ObservableCounter interface {
}

// Float64ObservableCounterConfig contains options for asynchronous counter
// instruments that record int64 values.
// instruments that record float64 values.
type Float64ObservableCounterConfig struct {
description string
unit string
Expand Down Expand Up @@ -97,7 +97,7 @@ type Float64ObservableUpDownCounter interface {
}

// Float64ObservableUpDownCounterConfig contains options for asynchronous
// counter instruments that record int64 values.
// counter instruments that record float64 values.
type Float64ObservableUpDownCounterConfig struct {
description string
unit string
Expand Down Expand Up @@ -154,7 +154,7 @@ type Float64ObservableGauge interface {
}

// Float64ObservableGaugeConfig contains options for asynchronous counter
// instruments that record int64 values.
// instruments that record float64 values.
type Float64ObservableGaugeConfig struct {
description string
unit string
Expand Down
8 changes: 4 additions & 4 deletions metric/syncfloat64.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ type Float64Counter interface {
}

// Float64CounterConfig contains options for synchronous counter instruments that
// record int64 values.
// record float64 values.
type Float64CounterConfig struct {
description string
unit string
Expand Down Expand Up @@ -81,7 +81,7 @@ type Float64UpDownCounter interface {
}

// Float64UpDownCounterConfig contains options for synchronous counter
// instruments that record int64 values.
// instruments that record float64 values.
type Float64UpDownCounterConfig struct {
description string
unit string
Expand Down Expand Up @@ -133,8 +133,8 @@ type Float64Histogram interface {
Record(ctx context.Context, incr float64, options ...RecordOption)
}

// Float64HistogramConfig contains options for synchronous counter instruments
// that record int64 values.
// Float64HistogramConfig contains options for synchronous histogram
// instruments that record float64 values.
type Float64HistogramConfig struct {
description string
unit string
Expand Down
2 changes: 1 addition & 1 deletion metric/syncint64.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ type Int64Histogram interface {
Record(ctx context.Context, incr int64, options ...RecordOption)
}

// Int64HistogramConfig contains options for synchronous counter instruments
// Int64HistogramConfig contains options for synchronous histogram instruments
// that record int64 values.
type Int64HistogramConfig struct {
description string
Expand Down
2 changes: 1 addition & 1 deletion sdk/log/logtest/example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
func ExampleRecordFactory() {
exp := exporter{os.Stdout}
rf := logtest.RecordFactory{
InstrumentationScope: instrumentation.Scope{Name: "myapp"},
InstrumentationScope: &instrumentation.Scope{Name: "myapp"},
}

rf.Body = logapi.StringValue("foo")
Expand Down
105 changes: 37 additions & 68 deletions sdk/log/logtest/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
package logtest // import "go.opentelemetry.io/otel/sdk/log/logtest"

import (
"context"
"slices"
"reflect"
"time"
"unsafe"

"go.opentelemetry.io/otel/log"
"go.opentelemetry.io/otel/sdk/instrumentation"
Expand All @@ -33,75 +33,44 @@ type RecordFactory struct {
TraceFlags trace.TraceFlags

Resource *resource.Resource
InstrumentationScope instrumentation.Scope
InstrumentationScope *instrumentation.Scope

DroppedAttributes int
DroppedAttributes int
AttributeValueLengthLimit int
AttributeCountLimit int
}

// NewRecord returns a log record.
func (b RecordFactory) NewRecord() sdklog.Record {
var record sdklog.Record
p := processor(func(r sdklog.Record) {
r.SetTimestamp(b.Timestamp)
r.SetObservedTimestamp(b.ObservedTimestamp)
r.SetSeverity(b.Severity)
r.SetSeverityText(b.SeverityText)
r.SetBody(b.Body)
r.SetAttributes(slices.Clone(b.Attributes)...)

// Generate dropped attributes.
for i := 0; i < b.DroppedAttributes; i++ {
r.AddAttributes(log.KeyValue{})
}

r.SetTraceID(b.TraceID)
r.SetSpanID(b.SpanID)
r.SetTraceFlags(b.TraceFlags)

record = r
})

attributeCountLimit := -1
if b.DroppedAttributes > 0 {
// Make sure that we can generate dropped attributes.
attributeCountLimit = len(b.Attributes)
}

res := b.Resource
if res == nil {
res = resource.Empty()
}

provider := sdklog.NewLoggerProvider(
sdklog.WithResource(res),
sdklog.WithAttributeCountLimit(attributeCountLimit),
sdklog.WithAttributeValueLengthLimit(-1),
sdklog.WithProcessor(p),
)

l := provider.Logger(b.InstrumentationScope.Name,
log.WithInstrumentationVersion(b.InstrumentationScope.Version),
log.WithSchemaURL(b.InstrumentationScope.SchemaURL),
)
l.Emit(context.Background(), log.Record{}) // This executes the processor function.
return record
}

type processor func(r sdklog.Record)

func (p processor) OnEmit(ctx context.Context, r sdklog.Record) error {
p(r)
return nil
}

func (processor) Enabled(context.Context, sdklog.Record) bool {
return true
}

func (processor) Shutdown(ctx context.Context) error {
return nil
// NewRecord returns a [sdklog.Record] configured from the values of f.
func (f RecordFactory) NewRecord() sdklog.Record {
// r needs to be addressable for set() below.
r := new(sdklog.Record)

// Set to unlimited so attributes are set exactly.
set(r, "attributeCountLimit", -1)
set(r, "attributeValueLengthLimit", -1)

r.SetTimestamp(f.Timestamp)
r.SetObservedTimestamp(f.ObservedTimestamp)
r.SetSeverity(f.Severity)
r.SetSeverityText(f.SeverityText)
r.SetBody(f.Body)
r.SetAttributes(f.Attributes...)
r.SetTraceID(f.TraceID)
r.SetSpanID(f.SpanID)
r.SetTraceFlags(f.TraceFlags)

set(r, "resource", f.Resource)
set(r, "scope", f.InstrumentationScope)
set(r, "dropped", f.DroppedAttributes)
set(r, "attributeCountLimit", f.AttributeCountLimit)
set(r, "attributeValueLengthLimit", f.AttributeValueLengthLimit)

return *r
}

func (processor) ForceFlush(context.Context) error {
return nil
func set(r *sdklog.Record, name string, value any) {
rVal := reflect.ValueOf(r).Elem()
rf := rVal.FieldByName(name)
rf = reflect.NewAt(rf.Type(), unsafe.Pointer(rf.UnsafeAddr())).Elem()
rf.Set(reflect.ValueOf(value))
}
8 changes: 6 additions & 2 deletions sdk/log/logtest/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ import (
"go.opentelemetry.io/otel/trace"
)

func TestRecordFactoryEmpty(t *testing.T) {
assert.Equal(t, sdklog.Record{}, RecordFactory{}.NewRecord())
}

func TestRecordFactory(t *testing.T) {
now := time.Now()
observed := now.Add(time.Second)
Expand Down Expand Up @@ -49,7 +53,7 @@ func TestRecordFactory(t *testing.T) {
SpanID: spanID,
TraceFlags: traceFlags,
DroppedAttributes: dropped,
InstrumentationScope: scope,
InstrumentationScope: &scope,
Resource: r,
}.NewRecord()

Expand Down Expand Up @@ -82,7 +86,7 @@ func TestRecordFactoryMultiple(t *testing.T) {
Timestamp: now,
Attributes: attrs,
DroppedAttributes: 1,
InstrumentationScope: scope,
InstrumentationScope: &scope,
}

record1 := f.NewRecord()
Expand Down

0 comments on commit 3c1ec42

Please sign in to comment.