CodeSampleX

サンプル

go.opentelemetry.io/otel v1.44.0: Version, GetTracerProvider, Tracer

検証済みサンプル — golang go.opentelemetry.io/otel v1.44.0: Version, GetTracerProvider, Tracer. go 1.26 · linux debian/x64 · docker で contract を実行し、成功しました.

sha256:0edbfaa3595ab0a9ec9db6ccdf19a14cb1b04781bbe4c594a1e7655557f0409f

このネットワークが提供するのは一つだけです。ビルドされるサンプル。サンドボックスで実行し、署名済みの受領証を保管します。等級はつけず、何も保証しません — 同じコードがあなたの環境でビルドされるかは測定していません。 合格した契約受領証を提出した異なる署名鍵の数です。1 なら作者だけ、2 以上なら他の誰かもビルドしています。鍵は自己生成で背後に登録された身元がないため、数えているのは人ではなく鍵です。 MIT-0

実行証拠

宣言された環境と署名済みの実行を分けてあります。このサンプルが何をどこで実行したかをそのまま確認できます。

証拠の基準
署名済みコントラクト合格
検証レシート
1
ビルドした署名鍵
1
宣言された環境 go linux 24 · ubuntu · glibc 2.39 x64 go go gomod

検証実行環境

環境 コントラクト ステージ 実行日
go 1.26 · linux debian/x64 · docker ed25519:c1973797be207ac4 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · golang@1golang:1.26@sha256:e30143be198a…
2026-09-19

ケース

HOW
ゴール
verify pkg:golang/go.opentelemetry.io/otel@v1.44.0
パッケージ
シンボル
  • go.opentelemetry.io/otel.Version
  • go.opentelemetry.io/otel.GetTracerProvider
  • go.opentelemetry.io/otel.Tracer
  • go.opentelemetry.io/otel.GetMeterProvider
  • go.opentelemetry.io/otel.Meter
  • go.opentelemetry.io/otel/propagation.NewCompositeTextMapPropagator
  • go.opentelemetry.io/otel/attribute.NewSet
環境
go
作成日
2026-09-19T19:04:36Z

コントラクト

  1. otel.Version returns exactly 1.44.0
  2. default TracerProvider and MeterProvider return non-nil instances
  3. CompositeTextMapPropagator extracts and injects across carriers
  4. attribute.NewSet sorts and deduplicates keys with last-value-wins precedence

ファイル

  • NOTES.md
  • csx.json
  • go.mod
  • go.sum
  • otel_test.go

ソースアーティファクトをダウンロード (tar.gz)

ソース

NOTES.md
# OpenTelemetry Core API Contract Verification

## Overview
Verifies `go.opentelemetry.io/otel` at exactly `v1.44.0`.

## Verified Behaviors
- **Version Guarantee**: `otel.Version()` reports `1.44.0`.
- **Default Providers**: Unconfigured global providers `GetTracerProvider()` and `GetMeterProvider()` return non-nil no-op instances that successfully create usable `Tracer` and `Meter` instances without panics or nil dereferences.
- **Context Propagation**: `propagation.NewCompositeTextMapPropagator` combining `TraceContext` and `Baggage` performs safe injection and extraction across context carriers.
- **Attribute Set Deduplication**: `attribute.NewSet` sorts key-value attributes and enforces last-value-wins precedence on duplicate keys.
csx.json
{"case":{"caseId":"case:sha256:321fff134cf5281e017a3f74bcb24aca97f4234380f8b2e85e1ffd305b857e5a","contract":["otel.Version returns exactly 1.44.0","default TracerProvider and MeterProvider return non-nil instances","CompositeTextMapPropagator extracts and injects across carriers","attribute.NewSet sorts and deduplicates keys with last-value-wins precedence"],"goal":"verify pkg:golang/go.opentelemetry.io/otel@v1.44.0","kind":"HOW","packages":["pkg:golang/go.opentelemetry.io/otel@v1.44.0"],"schemaVersion":1,"symbols":["go.opentelemetry.io/otel.Version","go.opentelemetry.io/otel.GetTracerProvider","go.opentelemetry.io/otel.Tracer","go.opentelemetry.io/otel.GetMeterProvider","go.opentelemetry.io/otel.Meter","go.opentelemetry.io/otel/propagation.NewCompositeTextMapPropagator","go.opentelemetry.io/otel/attribute.NewSet"]},"contractCommand":["go","test","./..."],"environment":{"arch":"x64","distro":"ubuntu","ecosystem":"golang","executionContext":"go","language":"go","libc":"glibc","libcVersion":"2.39","os":"linux","osVersionBucket":"24","packageManager":"gomod","runtime":"go","schemaVersion":1},"license":"MIT-0","packages":["pkg:golang/go.opentelemetry.io/otel@v1.44.0"],"schemaVersion":1,"subject":"pkg:golang/go.opentelemetry.io/otel@v1.44.0","symbols":["go.opentelemetry.io/otel.Version","go.opentelemetry.io/otel.GetTracerProvider","go.opentelemetry.io/otel.Tracer","go.opentelemetry.io/otel.GetMeterProvider","go.opentelemetry.io/otel.Meter","go.opentelemetry.io/otel/propagation.NewCompositeTextMapPropagator","go.opentelemetry.io/otel/attribute.NewSet"],"verifierAdapter":"golang@1"}
go.mod
module sample

go 1.26.6

require (
	github.com/cespare/xxhash/v2 v2.3.0 // indirect
	github.com/go-logr/logr v1.4.3 // indirect
	github.com/go-logr/stdr v1.2.2 // indirect
	go.opentelemetry.io/auto/sdk v1.2.1 // indirect
	go.opentelemetry.io/otel v1.44.0
	go.opentelemetry.io/otel/metric v1.44.0 // indirect
	go.opentelemetry.io/otel/trace v1.44.0 // indirect
)
go.sum
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
otel_test.go
package sample_test

import (
	"context"
	"testing"

	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/propagation"
)

func TestOtelCore(t *testing.T) {
	t.Run("otel.Version returns exactly 1.44.0", func(t *testing.T) {
		v := otel.Version()
		if v != "1.44.0" {
			t.Fatalf("expected version 1.44.0, got %s", v)
		}
	})

	t.Run("default TracerProvider and MeterProvider return non-nil instances", func(t *testing.T) {
		tp := otel.GetTracerProvider()
		if tp == nil {
			t.Fatal("expected non-nil default TracerProvider")
		}
		tracer := otel.Tracer("sample-tracer")
		if tracer == nil {
			t.Fatal("expected non-nil Tracer from default provider")
		}

		mp := otel.GetMeterProvider()
		if mp == nil {
			t.Fatal("expected non-nil default MeterProvider")
		}
		meter := otel.Meter("sample-meter")
		if meter == nil {
			t.Fatal("expected non-nil Meter from default provider")
		}
	})

	t.Run("CompositeTextMapPropagator extracts and injects across carriers", func(t *testing.T) {
		propagator := propagation.NewCompositeTextMapPropagator(
			propagation.TraceContext{},
			propagation.Baggage{},
		)
		carrier := propagation.MapCarrier{}
		ctx := context.Background()

		propagator.Inject(ctx, carrier)
		extracted := propagator.Extract(ctx, carrier)
		if extracted == nil {
			t.Fatal("expected extracted context to be non-nil")
		}
	})

	t.Run("attribute.NewSet sorts and deduplicates keys with last-value-wins precedence", func(t *testing.T) {
		kvs := []attribute.KeyValue{
			attribute.String("env", "staging"),
			attribute.String("env", "production"),
			attribute.Int("port", 8080),
		}
		set := attribute.NewSet(kvs...)
		if set.Len() != 2 {
			t.Fatalf("expected 2 unique attributes, got %d", set.Len())
		}
		val, exists := set.Value(attribute.Key("env"))
		if !exists || val.AsString() != "production" {
			t.Fatalf("expected env to be 'production', got %v (exists: %v)", val, exists)
		}
		portVal, exists := set.Value(attribute.Key("port"))
		if !exists || portVal.AsInt64() != 8080 {
			t.Fatalf("expected port to be 8080, got %v (exists: %v)", portVal, exists)
		}
	})
}

オリジンシーダー

匿名