Beispiel #1
0
    def is_span_id(self) -> bool:
        """Return whether the current value is a valid span id

        Empty strings are valid, so that it can be used for has:trace.span queries
        """
        if not isinstance(self.raw_value, str):
            return False
        return is_span_id(self.raw_value) or self.raw_value == ""
Beispiel #2
0
 def from_str(s: str) -> Span:
     parts = s.rsplit(":", 1)
     if len(parts) != 2:
         raise ValueError(
             "span must consist of of a span op and a valid 16 character hex delimited by a colon (:)"
         )
     if not is_span_id(parts[1]):
         raise ValueError(INVALID_SPAN_ID.format("spanGroup"))
     return Span(op=parts[0], group=parts[1])
Beispiel #3
0
 def validate_spanGroup(self, span_groups):
     for group in span_groups:
         if not is_span_id(group):
             raise serializers.ValidationError(
                 INVALID_SPAN_ID.format("spanGroup"))
     return span_groups
def test_is_span_id():
    assert is_span_id("202ab439bb9c4f31")
    assert is_span_id("202AB439BB9C4F31")
    assert is_span_id("202AB439bb9c4f31")
    assert is_span_id(b"202AB439bb9c4f31")

    assert not is_span_id("")
    assert not is_span_id("202a-b439-bb9c-4f31")
    assert not is_span_id("ZZZZZZZZZZZZZZZZ")
    assert not is_span_id("202ab439bb9c4f31AAAAAAAAAA")
    assert not is_span_id("202ab439")
    assert not is_span_id(4711)
    assert not is_span_id(False)
    assert not is_span_id(None)