* Restore configurable propagator option
* Propagate B3 id in the same format received
* Relax interpretation of sampled flag
The B3 spec says a forgiving implementation will accept 1 or true and 0
or false as sampling values, even though only 1 or 0 should be used.
* Fix typos
* Correct changelog for B3
* Extract LS context propagation into configurable propagator class
* Extract context prop test cases to LightStepPropagator spec
* Make LightStepPropagator easier to subclass
Constant lookup will search in Module.nesting before looking up
the inheritance chain, which makes constants hard to override
when subclassing. This commit prefixes constants in the
LightStep propagator with self.class in order to steer lookup
to the inheritance chain.
* Introduce B3 Propagator
This commit introduces a B3 Propagator where keys are properly
injected and extracted under the proper names. Special handling
of the trace id and sampled flag will come in subsequent commits.
* Propagate 16 byte trace ids for B3; use 16 byte ids internally
* Honor and propagate sampled flag for B3
* Clean up tests
* Specify default propagator for Tracer#configure
* Test against currently maintained Rubies
This updates our build matrix to test against Ruby versions that are
still under maintenance by the Ruby core team.
* The mutating tr! and downcase! methods are not chainable; don't chain them
* Make it easier to specify a propgator
* Update changelog for B3
The OpenTracing Ruby gem defines a `start_active_span` method which can
be called on a tracer; the LightStep tracer also defines this method,
but does not delegate to it from the LightStep module.
As a result, if OpenTracing is configured in the most simple manner, as:
```ruby
OpenTracing.global_tracer = LightStep
```
then calling `OpenTracing.start_active_span` fails, as that method does
not exist.
This adds `start_active_span` to the set of methods delegated from
`LightStep` to the underlying tracer, so that that method call will
succeed and be compliant with the OpenTracing interface when configured
as above.
If you explicitly pass in a transport and an access token to the tracer,
a new transport is created with the access token instead of using the
supplied transport.
Note that the "OpenTracing spec" here is
https://github.com/opentracing/specification/blob/master/specification.md
rather than github.com/opentracing/opentracing-ruby (which does not
reflect Summer 2016 changes to Inject/Extract).
The idea here is to have the small number of LightStep API users vet
these changes before they're proposed in opentracing-ruby.
Given the dynamic nature of Ruby's type system, the ordering of
LightStep and OpenTracing API changes is formally unimportant.