public void DistributedTracePayload_RoundTrip( [Values("App", "Mobile")] string type, [Values("12345")] string accountId, [Values("1111")] string appId, [Random(0ul, 0xfffffffffffffffful, 1), Values(ulong.MinValue, ulong.MaxValue)] ulong parentId, [Random(0ul, 0xfffffffffffffffful, 1), Values(ulong.MinValue, ulong.MaxValue)] ulong guid, [Random(0ul, 0xfffffffffffffffful, 1), Values(ulong.MinValue, ulong.MaxValue)] ulong traceId, [Values("56789")] string trustKey, [Random(0f, 1.0f, 1), Values(0.0f, 1.0f, 0.1234567f)] float priority, [Values(true, false)] bool sampled, [Values(new[] { 1970, 1, 1, 0, 0, 1 }, new[] { 2018, 12, 31, 23, 59, 59 })] int[] time, [Random(0ul, 0xfffffffffffffffful, 1), Values(ulong.MinValue, ulong.MaxValue)] ulong _transactionId) { var input = DistributedTracePayload.TryBuildOutgoingPayload(type, accountId, appId, $"{guid:X8}", $"{traceId:X8}", trustKey, priority, sampled, new DateTime(time[0], time[1], time[2], time[3], time[4], time[5], DateTimeKind.Utc), $"{_transactionId:X8}"); var serialized = input.ToJson(); var deserialized = DistributedTracePayload.TryBuildIncomingPayloadFromJson(serialized); Assert.That(deserialized.Version, Is.Not.Null); Assert.That(deserialized.Version, Has.Exactly(2).Items); Assert.That(deserialized.Version[0], Is.EqualTo(0)); Assert.That(deserialized.Version[1], Is.EqualTo(1)); Assert.That(deserialized.Type, Is.EqualTo(input.Type)); Assert.That(deserialized.AccountId, Is.EqualTo(input.AccountId)); Assert.That(deserialized.AppId, Is.EqualTo(input.AppId)); Assert.That(deserialized.Guid, Is.EqualTo(input.Guid)); Assert.That(deserialized.TraceId, Is.EqualTo(input.TraceId)); Assert.That(deserialized.TrustKey, Is.EqualTo(input.TrustKey)); Assert.That(deserialized.Sampled, Is.EqualTo(input.Sampled)); Assert.That(deserialized.Timestamp, Is.EqualTo(input.Timestamp)); Assert.That(deserialized.TransactionId, Is.EqualTo(input.TransactionId)); }
public void DistributedTracePayloadWithZeroBasedTimestampThrows() { var type = "App"; var accountId = "12345"; var appId = "1111"; var parentId = $"{0xfffffffffffffffful:X9}"; var guid = $"{0xfffffffffffffffful:X9}"; var traceId = $"{0xfffffffffffffffful:X9}"; var trustKey = "56789"; var priority = 0f; var sampled = true; var time = new int[] { 1970, 1, 1, 0, 0, 0 }; var timestamp = new DateTime(time[0], time[1], time[2], time[3], time[4], time[5], DateTimeKind.Utc); var transactionId = $"{0xfffffffffffffffful:X9}"; var input = DistributedTracePayload.TryBuildOutgoingPayload(type, accountId, appId, $"{guid:X8}", $"{traceId:X8}", trustKey, priority, sampled, timestamp, transactionId); var serialized = input.ToJson(); Assert.Throws <DistributedTraceAcceptPayloadParseException>(() => DistributedTracePayload.TryBuildIncomingPayloadFromJson(serialized)); }
public void DistributedTracePayload_OptionalAndRequired(string json, IConstraint constraint) { Assert.That(() => DistributedTracePayload.TryBuildIncomingPayloadFromJson(json), constraint); }