* shrink the value type
went down from 40 bytes to 24
* add missing license blurb
* stringify value type
* print string value types in stdout exporter
* make Value function take a pointer receiver
golangci-lint runs its checks also on tests files, so make sure that
they build properly before running the linter. there is no obvious
solution to just build all the test without running them, so to work
that around, we specify a -run flag with a value that surely isn't
going to match any test function any time soon. that way we build all
the tests, but no test is run.
also, `go list ./...` returns only packages in the module, but no
packages within submodule, so exporter/trace/jaeger (which is a
submodule) was never on the list. so go test with those packages never
ran the jaeger trace exporter tests. fix this by visiting every
directory with the go.mod file and calling go test [options]
./... therein.
golangci-lint just issues an unreadable warning and quits with a
successful exit status on compilation error. just run a round of go
build ./... to catch those as hard errors.
* automate building all the examples
the EXAMPLES variable was out of date - the stackdriver example wasn't
even built
let's automate it, so we don't need to remember about updating the
variable after adding a new example to the examples directory
* move jaeger example to example directory
this should be in the examples directory, so it can be built by the
make test during CI.
* switch to go 1.13
circle ci uses go 1.12 (which is the oldest 1.12 release) that
contains some bugs with module handling
let's switch to go 1.13.3, the latest go currently
* use a single valid revision of the project in go.mod files
this probably shouldn't be a problem since the switch to go 1.13 in
circle ci, but cleans up the mess and the use of bogus releases
* move bridge out of the experimental directory
* drop a leftover from experimental stuff in gitignore
found by accident when doing `git grep experimental`.
Jaeger exporter was replaced with stdout exporter in the example, so
update the README to reflect that. Also drop the screenshot - it's not
referenced anywhere.
* Update metrics API to match current spec
* update options to match the spec
* drop the global meter API
* more docs
* get rid of leftover mentions about descriptor
* Add a document about contributing
It is shamelessly stolen from opentelemetry-python and edited to be
relevant to opentelemetry-go. This file should explain some less
obvious things about the development of the project, like running
linters and regenerating the files.
* Force the use of go modules
Until go 1.13 modules were disabled by default if the repository was
inside GOPATH. This was causing issues when running `make precommit`
for the first time, as it could not find sources for any of the tools
used in `make precommit` under `${GOPATH}/src`. With setting the
`GO111MODULE` environment variable to `on`, we tell `go` to behave
differently, just like go 1.13 does by default.
* Drop dead event type
* Replace EventType from reader with one from exporter
* Do not concat the strings for string buffer
* Fill scope ID in events
That required renaming a variable, because it had the same name as the
type we wanted to assert later.
* Do not fail quietly when span context is busted
* Allow specifying custom timestamps for events
Adding event with timestamp is not yet a part of the OpenTelemetry
specification, but this function will come in handy when implementing
the OpenTracing bridge.
* Add opentracing bridge, wrapper tracer and migration interfaces
There are some features missing - setting up links and span kind;
context propagation will only work between two OpenTracing bridges.
* Add some tests for the opentracing bridge
The tests mostly check various aspects of the cooperation between
OpenTracing and OpenTelemetry APIs.
This is to shrink the PR #100.
The only place where the registry.Variable type was used was metrics,
so just inline that type into its only user. The use of the
registry.Variable type in core.Key was limited to the Name field.
The stats package also used the registry.Variable type, but seems that
also only the Name field was used and the package is going to be
dropped anyway.
* Merge two event methods in span API
There was an agreement to get rid of the Event interface and
consolidate the two methods for adding events into one. See #57.
* Eliminate the use of the Event interface
There is no need for the SDK to provide the implementation of the
Event interface - it is used nowhere.
* Drop the Event interface
It's dead code now.
* Make it possible to override a finish timestamp through options
Opentracing to opentelemetry bridge will certainly use this feature.
* Obey the start time option
* Add tests for events and custom start/end times
This is to make tag.Map an immutable type, so it is safe to use
concurrently. The safety is not yet fully achieved because of the
functions returning contents of the map (Value and Foreach). The
functions give callers an access to core.Value objects, which contain
a byte slice, which has pointer like semantics. So to avoid accidental
changes, we will need to copy the value if it is of BYTES type.
Fixes#59
It was printing an ID of the created span instead. Also drop the if
clause checking if span has a parent span ID - we know at this point
that the condition is always true.
* Run go generate in the precommit target
So we should always get an updated version of a file generated by a
stringer utility.
* Update the generated file
* Make CI to fail if working tree has uncommited changes
The uncommitted changes may come from the golang linter (that formats
our code among other things) and from stringer (when updated some
enumeration).