示例#1
0
def test_mutate_closed_entity():

    segment = Segment('seg')
    segment.close()

    with pytest.raises(AlreadyEndedException):
        segment.put_annotation('key', 'value')

    with pytest.raises(AlreadyEndedException):
        segment.put_metadata('key', 'value')

    with pytest.raises(AlreadyEndedException):
        segment.put_http_meta('url', 'my url')

    with pytest.raises(AlreadyEndedException):
        segment.close()
示例#2
0
def test_put_metadata():

    segment = Segment('seg')
    meta = {
        'key1': 'value1',
        'key2': 'value2',
    }
    segment.put_metadata('key', meta)

    subsegment = Subsegment('sub', 'local', segment)
    segment.add_subsegment(subsegment)
    subsegment.put_metadata('key', meta, 'my namespace')

    doc = entity_to_dict(segment)
    assert doc['metadata']['default']['key'] == meta

    sub_doc = doc['subsegments'][0]
    assert sub_doc['metadata']['my namespace']['key'] == meta
def test_serialize_with_ast_metadata():

    class_string = """\
class A:
    def __init__(self, a):
        self.a = a
"""
    
    ast_obj = ast.parse(class_string)
    
    segment = Segment('test')
    
    segment.put_metadata('ast', ast_obj)
    
    segment.close()

    actual_segment_dict = entity_to_dict(segment)
        
    assert  'ast' in actual_segment_dict['metadata']['default']
def test_serialize_segment_with_metadata():

    class TestMetadata():
        def __init__(self, parameter_one, parameter_two):
            self.parameter_one = parameter_one
            self.parameter_two = parameter_two
        
            self.parameter_three = {'test'} #set
            self.parameter_four = {'a': [1, 2, 3], 'b': True, 'c': (1.1, 2.2), 'd': list} #dict
            self.parameter_five = [TestSubMetadata(datetime.time(9, 25, 31)), TestSubMetadata(datetime.time(23, 14, 6))] #list
        
    class TestSubMetadata():
        def __init__(self, time):
            self.time = time

    segment = Segment('test')
    
    segment.put_metadata('key_one', TestMetadata(1,2), 'namespace_one')
    segment.put_metadata('key_two', TestMetadata(3,4), 'namespace_two')
    
    segment.close()
    
    expected_segment_dict = {
    "id": segment.id,
    "name": "test",
    "start_time": segment.start_time,
    "in_progress": False,
    "metadata": {
        "namespace_one": {
            "key_one": {
                "parameter_one": 1,
                "parameter_two": 2,
                "parameter_three": [
                    "test"
                ],
                "parameter_four": {
                    "a": [
                        1,
                        2,
                        3
                    ],
                    "b": True,
                    "c": [
                        1.1,
                        2.2
                    ],
                    "d": str(list)
                },
                "parameter_five": [
                    {
                        "time": "09:25:31"
                    },
                    {
                        "time": "23:14:06"
                    }
                ]
            }
        },
        "namespace_two": {
            "key_two": {
                "parameter_one": 3,
                "parameter_two": 4,
                "parameter_three": [
                    "test"
                ],
                "parameter_four": {
                    "a": [
                        1,
                        2,
                        3
                    ],
                    "b": True,
                    "c": [
                        1.1,
                        2.2
                    ],
                    "d": str(list)
                },
                "parameter_five": [
                    {
                        "time": "09:25:31"
                    },
                    {
                        "time": "23:14:06"
                    }
                ]
            }
        }
    },
    "trace_id": segment.trace_id,
    "end_time": segment.end_time
    }

    actual_segment_dict = entity_to_dict(segment) 
    
    assert  expected_segment_dict == actual_segment_dict