NAME

OpenTracing::Implementation::Test::Tracer - OpenTracing Test for Tracer

DESCRIPTION

This tracer keeps track of created spans by itself, using an internal structure. It can be used with Test::Builder tests to check the correctness of OpenTracing utilites or to easily inspect your instrumentation.

INSTANCE METHODS

get_spans_as_struct

Returns a list of hashes representing all spans, including information from SpanContexts. Example structure:

  (
    {
      operation_name => 'begin',
      span_id        => '7a7da90',
      trace_id       => 'cacbd7a',
      level          => 0,
      parent_id      => undef,
      has_finished   => '',
      start_time     => 1592863360.000000,
      finish_time    => undef,
      duration       => undef,
      baggage_items  => {},
      tags           => { a => 1 },
    },
    {
      operation_name => 'sub',
      span_id        => 'e0be9cc',
      trace_id       => 'cacbd7a'
      level          => 1,
      parent_id      => '7a7da90',
      has_finished   => 1,
      start_time     => 1592863360.000000,
      finish_time    => 1592863360.811969,
      duration       => 0.811956882476807,
      baggage_items  => {},
      tags           => { a => 2 },
    };
  )

span_tree

Return a string representation of span relationships.

cmp_deeply

    $tracer->cmp_deeply $all_expected, $test_message;

This Test::Builder-enabled test method, will emit a single test with $test_message. The test will compare current saved spans (same as returned by get_spans_as_struct) with $all_expected using cmp_deeply from Test::Deep.

cmp_easy

    $tracer->cmp_easy $any_expected, $test_message;

Same as cmp_deeply but transforms $any_expected into a super bag of super hashes before the comparison, so that not all keys need to be specified and order doesn't matter.

clear_spans

Removes all saved spans from the tracer, useful for starting fresh before new test cases.

AUTHOR

Szymon Nieznanski <snieznanski@perceptyx.com>

COPYRIGHT AND LICENSE

'Test::OpenTracing::Integration' is Copyright (C) 2019 .. 2020, Perceptyx Inc

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

This package 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.