Ejemplo n.º 1
0
def test_custom_msgpack_encode():
    encoder = MsgpackEncoder()
    refencoder = RefMsgpackEncoder()

    trace = gen_trace(nspans=50)

    # Note that we assert on the decoded versions because the encoded
    # can vary due to non-deterministic map key/value positioning
    assert decode(refencoder.encode_trace(trace)) == decode(
        encoder.encode_trace(trace))

    ref_encoded = refencoder.encode_traces([trace, trace])
    encoded = encoder.encode_traces([trace, trace])
    assert decode(encoded) == decode(ref_encoded)

    # Empty trace (not that this should be done in practice)
    assert decode(refencoder.encode_trace([])) == decode(
        encoder.encode_trace([]))

    s = Span(None, None)
    # Need to .finish() to have a duration since the old implementation will not encode
    # duration_ns, the new one will encode as None
    s.finish()
    assert decode(refencoder.encode_trace([s])) == decode(
        encoder.encode_trace([s]))
Ejemplo n.º 2
0
def test_custom_msgpack_join_encoded():
    encoder = MsgpackEncoder()
    refencoder = RefMsgpackEncoder()

    trace = gen_trace(nspans=50)

    ref = refencoder.join_encoded([refencoder.encode_trace(trace) for _ in range(10)])
    custom = encoder.join_encoded([encoder.encode_trace(trace) for _ in range(10)])
    assert decode(ref) == decode(custom)

    ref = refencoder.join_encoded([refencoder.encode_trace(trace) for _ in range(1)])
    custom = encoder.join_encoded([encoder.encode_trace(trace) for _ in range(1)])
    assert decode(ref) == decode(custom)
Ejemplo n.º 3
0
    def test_join_encoded_msgpack(self):
        # test encoding for MsgPack format
        traces = []
        traces.append([
            Span(name='client.testing', tracer=None),
            Span(name='client.testing', tracer=None),
        ])
        traces.append([
            Span(name='client.testing', tracer=None),
            Span(name='client.testing', tracer=None),
        ])

        encoder = MsgpackEncoder()

        # Encode each individual trace on it's own
        encoded_traces = [encoder.encode_trace(trace) for trace in traces]
        # Join the encoded traces together
        data = encoder.join_encoded(encoded_traces)

        # Parse the encoded data
        items = msgpack.unpackb(data)

        # test the encoded output that should be a string
        # and the output must be flatten
        assert isinstance(data, msgpack_type)
        assert len(items) == 2
        assert len(items[0]) == 2
        assert len(items[1]) == 2
        for i in range(2):
            for j in range(2):
                assert b'client.testing' == items[i][j][b'name']
Ejemplo n.º 4
0
def test_msgpack_span_property_variations(span):
    refencoder = RefMsgpackEncoder()
    encoder = MsgpackEncoder()

    # Finish the span to ensure a duration exists.
    span.finish()

    trace = [span]
    assert decode(refencoder.encode_trace(trace)) == decode(encoder.encode_trace(trace))
Ejemplo n.º 5
0
def test_span_types(span, tags):
    refencoder = RefMsgpackEncoder()
    encoder = MsgpackEncoder()

    span.set_tags(tags)

    # Finish the span to ensure a duration exists.
    span.finish()

    trace = [span]
    assert decode(refencoder.encode_trace(trace)) == decode(encoder.encode_trace(trace))