feat(batch28): merge jetstream-api
This commit is contained in:
@@ -15,6 +15,72 @@ public sealed class JetStreamEngineTests
|
||||
err!.Message.ShouldContain("unavailable");
|
||||
}
|
||||
|
||||
|
||||
[Fact] // T:1716
|
||||
public void IsJSONObjectOrArray_ShouldSucceed()
|
||||
{
|
||||
var tests = new (string Name, byte[] Data, bool Valid)[]
|
||||
{
|
||||
("empty", [], false),
|
||||
("empty_object", "{}"u8.ToArray(), true),
|
||||
("empty object, not trimmed", "\t\n\r{ }"u8.ToArray(), true),
|
||||
("empty_array", "[]"u8.ToArray(), true),
|
||||
("empty array, not trimmed", "\t\n\r[ ]"u8.ToArray(), true),
|
||||
("empty_string", "\"\""u8.ToArray(), false),
|
||||
("whitespace_only", " "u8.ToArray(), false),
|
||||
("object_with_whitespace", "{ }"u8.ToArray(), true),
|
||||
("array_with_whitespace", "[ ]"u8.ToArray(), true),
|
||||
("string_with_whitespace", " \"text\""u8.ToArray(), false),
|
||||
("number", "123"u8.ToArray(), false),
|
||||
("boolean_true", "true"u8.ToArray(), false),
|
||||
("boolean_false", "false"u8.ToArray(), false),
|
||||
("null_value", "null"u8.ToArray(), false),
|
||||
("invalid_json", "invalid"u8.ToArray(), false),
|
||||
};
|
||||
|
||||
foreach (var test in tests)
|
||||
{
|
||||
JetStreamApi.IsJSONObjectOrArray(test.Data).ShouldBe(test.Valid, test.Name);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact] // T:1719
|
||||
public void JetStreamDelayedAPIResponses_ShouldSucceed()
|
||||
{
|
||||
var account = new Account { Name = "ACC" };
|
||||
DelayedApiResponse? head = null;
|
||||
DelayedApiResponse? tail = null;
|
||||
var now = DateTime.UtcNow;
|
||||
|
||||
var responses = new[]
|
||||
{
|
||||
NewDelayed(account, "request2", "response2", now.AddMilliseconds(500)),
|
||||
NewDelayed(account, "request1", "response1", now.AddMilliseconds(200)),
|
||||
NewDelayed(account, "request4", "response4", now.AddMilliseconds(800)),
|
||||
NewDelayed(account, "request3", "response3", now.AddMilliseconds(650)),
|
||||
};
|
||||
|
||||
foreach (var response in responses)
|
||||
JetStreamApi.AddDelayedResponse(ref head, ref tail, response);
|
||||
|
||||
var orderedRequests = new List<string>();
|
||||
for (var current = head; current is not null; current = current.Next)
|
||||
orderedRequests.Add(current.Request);
|
||||
|
||||
orderedRequests.ShouldBe(["request1", "request2", "request3", "request4"]);
|
||||
}
|
||||
|
||||
private static DelayedApiResponse NewDelayed(Account account, string request, string response, DateTime deadlineUtc) =>
|
||||
new()
|
||||
{
|
||||
Account = account,
|
||||
Subject = "SUB",
|
||||
Reply = string.Empty,
|
||||
Request = request,
|
||||
Response = response,
|
||||
DeadlineUtc = deadlineUtc,
|
||||
};
|
||||
|
||||
[Fact] // T:1477
|
||||
public void JetStreamMaxConsumers_ShouldSucceed()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user