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()
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