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_put_annotation(): segment = Segment('seg') invalid = { 'key1': 'value1', 'key2': 'value2', } # invalid annotation key-value pair should be dropped segment.put_annotation('invalid', invalid) segment.put_annotation('number', 1) subsegment = Subsegment('sub', 'local', segment) segment.add_subsegment(subsegment) subsegment.put_annotation('bool', False) doc = entity_to_dict(segment) assert doc['annotations']['number'] == 1 assert 'invalid' not in doc['annotations'] sub_doc = doc['subsegments'][0] assert not sub_doc['annotations']['bool']
def test_reference_counting(): segment = Segment('seg') subsegment = Subsegment('sub', 'local', segment) segment.add_subsegment(subsegment) subsegment = Subsegment('sub', 'local', segment) subsubsegment = Subsegment('subsub', 'local', segment) subsegment.add_subsegment(subsubsegment) assert not segment.ready_to_send() assert segment.ref_counter.get_current() == 2 subsubsegment.close() assert not segment.ready_to_send() assert segment.ref_counter.get_current() == 1 subsegment.close() assert not segment.ready_to_send() assert segment.ref_counter.get_current() == 0 segment.close() assert segment.ready_to_send() assert segment.get_total_subsegments_size() == 2