forked from open-telemetry/opentelemetry-collector
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* trace sdk initial commit. * fix imports and comments. * remove tracestate * split trace.go * add attribute over limit test. * add comments and restructure span.go and tracer.go * refactor MessageEvent * defer unlock * some more cleanup in span.go * rename *MessageEvent* to *Event* * cleanup comments in trace_test.go * fix typos. * return full string ID for traceID and spanID.
- Loading branch information
Showing
28 changed files
with
2,082 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
// Copyright 2019, OpenTelemetry Authors | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
package internal // import "go.opentelemetry.io/sdk/internal" | ||
|
||
import ( | ||
"fmt" | ||
"time" | ||
|
||
opentelemetry "go.opentelemetry.io/sdk" | ||
) | ||
|
||
// UserAgent is the user agent to be added to the outgoing | ||
// requests from the exporters. | ||
var UserAgent = fmt.Sprintf("opentelemetry-go/%s", opentelemetry.Version()) | ||
|
||
// MonotonicEndTime returns the end time at present | ||
// but offset from start, monotonically. | ||
// | ||
// The monotonic clock is used in subtractions hence | ||
// the duration since start added back to start gives | ||
// end as a monotonic time. | ||
// See https://golang.org/pkg/time/#hdr-Monotonic_Clocks | ||
func MonotonicEndTime(start time.Time) time.Time { | ||
return start.Add(time.Since(start)) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
// Copyright 2019, OpenTelemetry Authors | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
package internal | ||
|
||
import ( | ||
"strings" | ||
"unicode" | ||
) | ||
|
||
const labelKeySizeLimit = 100 | ||
|
||
// Sanitize returns a string that is trunacated to 100 characters if it's too | ||
// long, and replaces non-alphanumeric characters to underscores. | ||
func Sanitize(s string) string { | ||
if len(s) == 0 { | ||
return s | ||
} | ||
if len(s) > labelKeySizeLimit { | ||
s = s[:labelKeySizeLimit] | ||
} | ||
s = strings.Map(sanitizeRune, s) | ||
if unicode.IsDigit(rune(s[0])) { | ||
s = "key_" + s | ||
} | ||
if s[0] == '_' { | ||
s = "key" + s | ||
} | ||
return s | ||
} | ||
|
||
// converts anything that is not a letter or digit to an underscore | ||
func sanitizeRune(r rune) rune { | ||
if unicode.IsLetter(r) || unicode.IsDigit(r) { | ||
return r | ||
} | ||
// Everything else turns into an underscore | ||
return '_' | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
// Copyright 2019, OpenTelemetry Authors | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
package internal | ||
|
||
import ( | ||
"strings" | ||
"testing" | ||
) | ||
|
||
func TestSanitize(t *testing.T) { | ||
tests := []struct { | ||
name string | ||
input string | ||
want string | ||
}{ | ||
{ | ||
name: "trunacate long string", | ||
input: strings.Repeat("a", 101), | ||
want: strings.Repeat("a", 100), | ||
}, | ||
{ | ||
name: "replace character", | ||
input: "test/key-1", | ||
want: "test_key_1", | ||
}, | ||
{ | ||
name: "add prefix if starting with digit", | ||
input: "0123456789", | ||
want: "key_0123456789", | ||
}, | ||
{ | ||
name: "add prefix if starting with _", | ||
input: "_0123456789", | ||
want: "key_0123456789", | ||
}, | ||
{ | ||
name: "starts with _ after sanitization", | ||
input: "/0123456789", | ||
want: "key_0123456789", | ||
}, | ||
{ | ||
name: "valid input", | ||
input: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789", | ||
want: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789", | ||
}, | ||
} | ||
|
||
for _, tt := range tests { | ||
t.Run(tt.name, func(t *testing.T) { | ||
if got, want := Sanitize(tt.input), tt.want; got != want { | ||
t.Errorf("sanitize() = %q; want %q", got, want) | ||
} | ||
}) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// Copyright 2019, OpenTelemetry Authors | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
// Package opentelemetry contains Go support for OpenTelemetry. | ||
package opentelemetry // import "go.opentelemetry.io/sdk" | ||
|
||
// Version is the current release version of OpenTelemetry in use. | ||
func Version() string { | ||
return "0.1.0" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
// Copyright 2019, OpenTelemetry Authors | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
package trace | ||
|
||
import ( | ||
"time" | ||
|
||
"go.opentelemetry.io/api/core" | ||
apievent "go.opentelemetry.io/api/event" | ||
) | ||
|
||
// event is used to describe an event with a message string and set of | ||
// attributes. | ||
type event struct { | ||
msg string | ||
attributes []core.KeyValue | ||
time time.Time | ||
} | ||
|
||
var _ apievent.Event = &event{} | ||
|
||
func (me *event) Message() string { | ||
return me.msg | ||
} | ||
|
||
func (me *event) Attributes() []core.KeyValue { | ||
return me.attributes | ||
} |
Oops, something went wrong.