def test_ctor(self): self.assertRaises(ValueError, lambda: Traceparent(version=1)) self.assertRaises(ValueError, lambda: Traceparent(version=0xff)) self.assertRaises( ValueError, lambda: Traceparent(trace_id=b'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0')) self.assertRaises(ValueError, lambda: Traceparent(span_id=b'\0\0\0\0\0\0\0\0'))
def do_POST(self): self.send_response(200) arguments = json.loads( str(self.rfile.read(int(self.headers['Content-Length'])), 'ascii')) traceparent = None tracestate = Tracestate() try: temp_traceparent = BaseTraceparent.from_string( self.get_header('traceparent')) if temp_traceparent.version == 0: if temp_traceparent._residue: raise ValueError('illegal traceparent format') traceparent = Traceparent(0, temp_traceparent.trace_id, temp_traceparent.span_id, temp_traceparent.trace_flags) except ValueError: pass if traceparent is None: traceparent = Traceparent() else: try: header = self.get_header('tracestate', commaSeparated=True) if header is not None: tracestate = Tracestate(header) except ValueError: # if tracestate is malformed, reuse the traceparent instead of restart the trace # traceparent = Traceparent() pass for item in arguments: headers = {} headers['traceparent'] = str( Traceparent(0, traceparent.trace_id, None, traceparent.trace_flags)) if tracestate.is_valid(): headers['tracestate'] = str(tracestate) request = Request(method='POST', url=item['url'], headers=headers, data=bytes(json.dumps(item['arguments']), 'ascii')) with self.opener_director.open( request, timeout=self.timeout) as response: pass self.end_headers()
def test_ctor_default(self): traceparent = Traceparent() self.assertEqual(traceparent.version, 0) self.assertNotEqual(traceparent.trace_id, b'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0') self.assertNotEqual(traceparent.span_id, b'\0\0\0\0\0\0\0\0') self.assertEqual(traceparent.trace_flags, 0)
def get_traceparent(self, headers): retval = [] for key, value in headers: if self.traceparent_name_re.match(key): retval.append((key, value)) self.assertEqual(len(retval), 1, 'expect one traceparent header, got {} {!r}'.format('more' if retval else 'zero', retval)) return Traceparent.from_string(retval[0][1])
def test_set_span_id(self): traceparent = Traceparent() self.assertRaises(ValueError, lambda: traceparent.set_span_id(None))
def test_set_version(self): traceparent = Traceparent() traceparent.set_version(0) self.assertRaises(ValueError, lambda: traceparent.set_version(1))
def test_str(self): string = '00-12345678901234567890123456789012-1234567890123456-ff' traceparent = Traceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-ff') self.assertEqual(str(traceparent), string)
def test_repr(self): string = '00-12345678901234567890123456789012-1234567890123456-ff' traceparent = Traceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-ff') self.assertEqual(repr(traceparent), 'Traceparent({})'.format(repr(string)))
def test_from_string(self): traceparent = Traceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-00') traceparent = Traceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-01') traceparent = Traceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-02') traceparent = Traceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-03') traceparent = Traceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-ff') self.assertRaises( ValueError, lambda: Traceparent.from_string( '01-12345678901234567890123456789012-1234567890123456-00')) self.assertRaises( ValueError, lambda: Traceparent.from_string( '02-12345678901234567890123456789012-1234567890123456-00')) self.assertRaises( ValueError, lambda: Traceparent.from_string( 'cc-12345678901234567890123456789012-1234567890123456-00')) self.assertRaises( ValueError, lambda: Traceparent.from_string( 'ff-12345678901234567890123456789012-1234567890123456-00')) self.assertRaises( ValueError, lambda: Traceparent.from_string( '00-00000000000000000000000000000000-1234567890123456-00')) self.assertRaises( ValueError, lambda: Traceparent.from_string( '00-12345678901234567890123456789012-0000000000000000-00'))