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_from_string(self): traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-00') traceparent = BaseTraceparent.from_string( '01-12345678901234567890123456789012-1234567890123456-00') traceparent = BaseTraceparent.from_string( '02-12345678901234567890123456789012-1234567890123456-00') traceparent = BaseTraceparent.from_string( 'cc-12345678901234567890123456789012-1234567890123456-00') self.assertRaises( ValueError, lambda: BaseTraceparent.from_string( 'ff-12345678901234567890123456789012-1234567890123456-00')) traceparent = BaseTraceparent.from_string( '00-00000000000000000000000000000000-1234567890123456-00') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-00') traceparent = BaseTraceparent.from_string( '00-ffffffffffffffffffffffffffffffff-1234567890123456-00') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-0000000000000000-00') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-00') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-ffffffffffffffff-00') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-00') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-01') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-02') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-03') traceparent = BaseTraceparent.from_string( '00-12345678901234567890123456789012-1234567890123456-ff') self.assertRaises( ValueError, lambda: BaseTraceparent.from_string( '0-12345678901234567890123456789012-1234567890123456-00')) self.assertRaises( ValueError, lambda: BaseTraceparent.from_string( '000-12345678901234567890123456789012-1234567890123456-00')) self.assertRaises( ValueError, lambda: BaseTraceparent.from_string( '00-1234567890123456789012345678901-1234567890123456-00')) self.assertRaises( ValueError, lambda: BaseTraceparent.from_string( '00-123456789012345678901234567890123-1234567890123456-00')) self.assertRaises( ValueError, lambda: BaseTraceparent.from_string( '00-12345678901234567890123456789012-123456789012345-00')) self.assertRaises( ValueError, lambda: BaseTraceparent.from_string( '00-12345678901234567890123456789012-12345678901234567-00'))
def test_str(self): string = '12-12345678901234567890123456789012-1234567890123456-ff' traceparent = BaseTraceparent.from_string( '12-12345678901234567890123456789012-1234567890123456-ff') self.assertEqual(str(traceparent), string)
def test_repr(self): string = '12-12345678901234567890123456789012-1234567890123456-ff' traceparent = BaseTraceparent.from_string( '12-12345678901234567890123456789012-1234567890123456-ff') self.assertEqual(repr(traceparent), 'BaseTraceparent({})'.format(repr(string)))