# Perl - Test OpenTracing

Make integration testing easy, for all you care about are spans!


## SYNOPSIS

### Testing Traces

```perl
use Test::OpenTracing;

$ENV{OPENTRACING_IMPLEMENTATATION} = 'Test';

... # run your test-requests

cmp_deeply_global_tracer (
    [
        superhashof => {
            operation_name  => 'request',
            start_time      => 0.0,
            child_spans     => [
                superhash       => {
                    operation_name  => 'setup',
                    finish_time     => 0.1,
                },
                superhash       => {
                    operation_name  => 'run',
                    start_time      => 0.1,
                    child_spans     => ignore(),
                },
                
            ],
            duration        => 0.3,
        },
    ],
    "Looks like we did create all the expected spans on the right timing"
);

```

### Testing Interface Methods

```perl
use Test::OpenTracing;

opentracing_interface_ok_span_context( 'MyImplementation::SpanContext',
    "'MyImplementation' class implements required methods for 'SpanContext'";

```

### Testing Implementation Typechecks

```perl
use Test::OpenTracing;

opentracing_implementation_ok_span_context( 'MyImplementation::SpanContext',
    "'MyImplementation' class is strict on typechecks for 'SpanContext'";

```


## DESCRIPTION

Test::OpenTracing is an easy way to check your OpenTracing compliant framework
integrations and implementations.

The `cmp_deeply_global_tracer` is a `cmp_deeply` like test, that works on a
special tracer implementation: `OpenTracing::Implementation::Test`.

The `opentracing_interface_ok` test, basically run `can_ok` tests.

The `opentracing_implementation_ok` test run a series of test against each
(required) method, to see if they are fault tolerant or strict on accepting in
coming parameters and returned results.


## EXPORTED SUBROUTINES

### cmp_deeply_global_tracer

### opentracing_interface_ok

### opentracing_implementation_ok


## LICENSE INFORMATION

This library is free software; you can redistribute it and/or modify it under
the terms of the Artistic License 2.0.

This library is distributed in the hope that it will be useful, but it is
provided ���as is��� and without any express or implied warranties.

For details, see the full text of the license in the file LICENSE.