Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More usages of JsonExtensionData; ParameterShovelValue #287

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
using EasyNetQ.Management.Client.Model;
using System.Text.Json;

namespace EasyNetQ.Management.Client.IntegrationTests;

using JsonSerializer = System.Text.Json.JsonSerializer;

[Collection("RabbitMQ")]
public class ManagementClientTests
{
Expand Down Expand Up @@ -106,7 +109,7 @@
{
const string exchangeName = "test-dead-letter-exchange";
const string argumentKey = "x-dead-letter-exchange";
var queueInfo = new QueueInfo(Name: $"{TestQueue}1", Arguments: new Dictionary<string, object> { { argumentKey, exchangeName } });

Check warning on line 112 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Lint & Tests

Argument of type 'Dictionary<string, object>' cannot be used for parameter 'Arguments' of type 'IReadOnlyDictionary<string, object?>' in 'QueueInfo.QueueInfo(string Name, bool AutoDelete = false, bool Durable = true, IReadOnlyDictionary<string, object?>? Arguments = null)' due to differences in the nullability of reference types.

Check warning on line 112 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.10)

Argument of type 'Dictionary<string, object>' cannot be used for parameter 'Arguments' of type 'IReadOnlyDictionary<string, object?>' in 'QueueInfo.QueueInfo(string Name, bool AutoDelete = false, bool Durable = true, IReadOnlyDictionary<string, object?>? Arguments = null)' due to differences in the nullability of reference types.

Check warning on line 112 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.11)

Argument of type 'Dictionary<string, object>' cannot be used for parameter 'Arguments' of type 'IReadOnlyDictionary<string, object?>' in 'QueueInfo.QueueInfo(string Name, bool AutoDelete = false, bool Durable = true, IReadOnlyDictionary<string, object?>? Arguments = null)' due to differences in the nullability of reference types.

Check warning on line 112 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.12)

Argument of type 'Dictionary<string, object>' cannot be used for parameter 'Arguments' of type 'IReadOnlyDictionary<string, object?>' in 'QueueInfo.QueueInfo(string Name, bool AutoDelete = false, bool Durable = true, IReadOnlyDictionary<string, object?>? Arguments = null)' due to differences in the nullability of reference types.

await fixture.ManagementClient.CreateQueueAsync(queueInfo, Vhost);
var queue = await fixture.ManagementClient.GetQueueAsync(Vhost, queueInfo.Name);
Expand Down Expand Up @@ -267,7 +270,7 @@
Overflow: overflow,
ConsumerTimeout: consumerTimeout
)
{ ExtensionData = extensionData },

Check warning on line 273 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Lint & Tests

Nullability of reference types in value of type 'Dictionary<string, object>' doesn't match target type 'IReadOnlyDictionary<string, object?>'.

Check warning on line 273 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.10)

Nullability of reference types in value of type 'Dictionary<string, object>' doesn't match target type 'IReadOnlyDictionary<string, object?>'.

Check warning on line 273 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.11)

Nullability of reference types in value of type 'Dictionary<string, object>' doesn't match target type 'IReadOnlyDictionary<string, object?>'.

Check warning on line 273 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.12)

Nullability of reference types in value of type 'Dictionary<string, object>' doesn't match target type 'IReadOnlyDictionary<string, object?>'.
Priority: priority
)
);
Expand Down Expand Up @@ -295,7 +298,7 @@
&& p.Definition.MaxLengthBytes == maxLengthBytes
&& p.Definition.Overflow == overflow
&& p.Definition.ConsumerTimeout == consumerTimeout
&& p.Definition.ExtensionData.Keys.Order().SequenceEqual(extensionData.Keys.Order()))

Check warning on line 301 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Lint & Tests

Dereference of a possibly null reference.

Check warning on line 301 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.10)

Dereference of a possibly null reference.

Check warning on line 301 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.11)

Dereference of a possibly null reference.

Check warning on line 301 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.12)

Dereference of a possibly null reference.
);
}

Expand Down Expand Up @@ -747,9 +750,9 @@

var exchange = await EnsureExchangeExists(TestExchange);

var bindings = (await fixture.ManagementClient.GetQueueBindingsAsync(exchange, queue)).ToArray();
var bindings = await fixture.ManagementClient.GetQueueBindingsAsync(exchange, queue);

bindings.Length.Should().Be(0);
bindings.Should().BeEmpty();
}

[Fact]
Expand All @@ -760,7 +763,7 @@

var bindings = await fixture.ManagementClient.GetExchangeBindingsAsync(exchange1, exchange2);

bindings.Count.Should().Be(0);
bindings.Should().BeEmpty();
}

[Fact]
Expand All @@ -787,9 +790,9 @@
);

queue.Name.Should().Be(TestQueue);
queue.MessagesDetails.Samples.Count.Should().BeGreaterThan(0);
queue.MessagesReadyDetails.Samples.Count.Should().BeGreaterThan(0);
queue.MessagesUnacknowledgedDetails.Samples.Count.Should().BeGreaterThan(0);
queue.MessagesDetails.Samples.Should().NotBeNullOrEmpty();

Check warning on line 793 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Lint & Tests

Dereference of a possibly null reference.

Check warning on line 793 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.10)

Dereference of a possibly null reference.

Check warning on line 793 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.11)

Dereference of a possibly null reference.

Check warning on line 793 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.12)

Dereference of a possibly null reference.
queue.MessagesReadyDetails.Samples.Should().NotBeNullOrEmpty();

Check warning on line 794 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Lint & Tests

Dereference of a possibly null reference.

Check warning on line 794 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.10)

Dereference of a possibly null reference.

Check warning on line 794 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.11)

Dereference of a possibly null reference.

Check warning on line 794 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.12)

Dereference of a possibly null reference.
queue.MessagesUnacknowledgedDetails.Samples.Should().NotBeNullOrEmpty();

Check warning on line 795 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Lint & Tests

Dereference of a possibly null reference.

Check warning on line 795 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.10)

Dereference of a possibly null reference.

Check warning on line 795 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.11)

Dereference of a possibly null reference.

Check warning on line 795 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.12)

Dereference of a possibly null reference.
}

[Fact]
Expand All @@ -803,9 +806,9 @@
var queue = await fixture.ManagementClient.GetQueueAsync(Vhost, TestQueue, new LengthsCriteria(age, increment));

queue.Name.Should().Be(TestQueue);
queue.MessagesDetails.Samples.Count.Should().BeGreaterThan(0);
queue.MessagesReadyDetails.Samples.Count.Should().BeGreaterThan(0);
queue.MessagesUnacknowledgedDetails.Samples.Count.Should().BeGreaterThan(0);
queue.MessagesDetails.Samples.Should().NotBeNullOrEmpty();

Check warning on line 809 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Lint & Tests

Dereference of a possibly null reference.

Check warning on line 809 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.10)

Dereference of a possibly null reference.

Check warning on line 809 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.11)

Dereference of a possibly null reference.

Check warning on line 809 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.12)

Dereference of a possibly null reference.
queue.MessagesReadyDetails.Samples.Should().NotBeNullOrEmpty();

Check warning on line 810 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Lint & Tests

Dereference of a possibly null reference.

Check warning on line 810 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.10)

Dereference of a possibly null reference.

Check warning on line 810 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.11)

Dereference of a possibly null reference.

Check warning on line 810 in Source/EasyNetQ.Management.Client.IntegrationTests/ManagementClientTests.cs

View workflow job for this annotation

GitHub Actions / Integrations Tests (3.12)

Dereference of a possibly null reference.
queue.MessagesUnacknowledgedDetails.Samples.Should().NotBeNullOrEmpty();
}

[Fact]
Expand Down Expand Up @@ -1148,7 +1151,7 @@
{
var page = await fixture.ManagementClient.GetExchangesByPageAsync(new PageCriteria(1, 7, "amq"));

page.Items.Count.Should().BeGreaterThan(0);
page.Items.Should().NotBeNullOrEmpty();
}

[Fact(Skip = "Requires at least an active federation")]
Expand Down Expand Up @@ -1222,6 +1225,53 @@
}
}

[Fact]
public async Task Should_get_queues_with_pagination()
{
foreach (var queue in await fixture.ManagementClient.GetQueuesAsync())
await fixture.ManagementClient.DeleteQueueAsync(queue);

await CreateTestQueue("1");
await CreateTestQueue("2");

var firstPage = await fixture.ManagementClient.GetQueuesByPageAsync(new PageCriteria(1, 1));
firstPage.Items.Count.Should().Be(1);

var secondPage = await fixture.ManagementClient.GetQueuesByPageAsync(new PageCriteria(2, 1));
secondPage.Items.Count.Should().Be(1);
}

[Fact]
public async Task Should_get_queues_by_vhost()
{
await fixture.ManagementClient.CreateVhostAsync(TestVHost);
var vhost = await fixture.ManagementClient.GetVhostAsync(TestVHost);
vhost.Name.Should().Be(TestVHost);

await CreateTestQueueInVhost($"{TestVHost}_{TestQueue}", vhost);
(await fixture.ManagementClient.GetQueuesAsync(vhost)).Should().NotBeNullOrEmpty();
}

[Fact]
public async Task Should_get_queues_with_pagination_by_vhost()
{
await fixture.ManagementClient.CreateVhostAsync(TestVHost);
var vhost = await fixture.ManagementClient.GetVhostAsync(TestVHost);
vhost.Name.Should().Be(TestVHost);

foreach (var queue in await fixture.ManagementClient.GetQueuesAsync(TestVHost))
await fixture.ManagementClient.DeleteQueueAsync(queue);

await CreateTestQueueInVhost($"{TestVHost}_{TestQueue}_1", vhost);
await CreateTestQueueInVhost($"{TestVHost}_{TestQueue}_2", vhost);

var firstPage = await fixture.ManagementClient.GetQueuesByPageAsync(vhost, new PageCriteria(1, 1));
firstPage.Items.Count.Should().Be(1);

var secondPage = await fixture.ManagementClient.GetQueuesByPageAsync(vhost, new PageCriteria(2, 1));
secondPage.Items.Count.Should().Be(1);
}

[Fact]
public async Task Should_get_queues_without_stats()
{
Expand All @@ -1230,32 +1280,51 @@
queues.Should().NotBeNullOrEmpty();
}


[Fact]
public async Task Should_get_queues_with_pagination()
public async Task Should_get_queues_without_stats_with_pagination()
{
foreach (var queue in await fixture.ManagementClient.GetQueuesAsync())
await fixture.ManagementClient.DeleteQueueAsync(queue);

await CreateTestQueue("1");
await CreateTestQueue("2");

var firstPage = await fixture.ManagementClient.GetQueuesByPageAsync(new PageCriteria(1, 1));
var firstPage = await fixture.ManagementClient.GetQueuesWithoutStatsByPageAsync(new PageCriteria(1, 1));
firstPage.Items.Count.Should().Be(1);

var secondPage = await fixture.ManagementClient.GetQueuesByPageAsync(new PageCriteria(2, 1));
var secondPage = await fixture.ManagementClient.GetQueuesWithoutStatsByPageAsync(new PageCriteria(2, 1));
secondPage.Items.Count.Should().Be(1);
}

[Fact]
public async Task Should_get_queues_by_vhost()
public async Task Should_get_queues_without_stats_by_vhost()
{
await fixture.ManagementClient.CreateVhostAsync(TestVHost);
var vhost = await fixture.ManagementClient.GetVhostAsync(TestVHost);
vhost.Name.Should().Be(TestVHost);

await CreateTestQueueInVhost($"{TestVHost}_{TestQueue}", vhost);
(await fixture.ManagementClient.GetQueuesAsync(vhost)).Count.Should().BeGreaterThan(0);
(await fixture.ManagementClient.GetQueuesWithoutStatsAsync(vhost.Name)).Should().NotBeNullOrEmpty();
}

[Fact]
public async Task Should_get_queues_without_stats_with_pagination_by_vhost()
{
await fixture.ManagementClient.CreateVhostAsync(TestVHost);
var vhost = await fixture.ManagementClient.GetVhostAsync(TestVHost);
vhost.Name.Should().Be(TestVHost);

foreach (var queue in await fixture.ManagementClient.GetQueuesAsync(TestVHost))
await fixture.ManagementClient.DeleteQueueAsync(queue);

await CreateTestQueueInVhost($"{TestVHost}_{TestQueue}_1", vhost);
await CreateTestQueueInVhost($"{TestVHost}_{TestQueue}_2", vhost);

var firstPage = await fixture.ManagementClient.GetQueuesWithoutStatsByPageAsync(vhost.Name, new PageCriteria(1, 1));
firstPage.Items.Count.Should().Be(1);

var secondPage = await fixture.ManagementClient.GetQueuesWithoutStatsByPageAsync(vhost.Name, new PageCriteria(2, 1));
secondPage.Items.Count.Should().Be(1);
}

[Fact]
Expand Down Expand Up @@ -1301,30 +1370,39 @@
var destUri = new AmqpUri($"{fixture.Endpoint.Host}-1", fixture.Endpoint.Port, fixture.User, fixture.Password);

var shovelName = "queue-shovel";

await fixture.ManagementClient.CreateShovelAsync(
vhostName: Vhost.Name,
shovelName,
new ParameterShovelValue
var parameterShovelValue = new ParameterShovelValue
(
SrcProtocol: AmqpProtocol.AMQP091,
SrcUri: srcUri.ToString(),
SrcQueue: "test-queue-src",
SrcExchange: null,
SrcExchangeKey: null,
SrcQueueArguments: new Dictionary<string, object?> { { "x-queue-mode", "lazy" } },
SrcDeleteAfter: "never",
SrcPrefetchCount: 10,
DestProtocol: AmqpProtocol.AMQP091,
DestUri: destUri.ToString(),
DestQueue: "test-queue-dest",
DestExchange: null,
DestQueueArguments: new Dictionary<string, object?> { { "x-queue-mode", "lazy" } },
DestAddForwardHeaders: false,
DestAddTimestampHeader: false,
AckMode: "on-confirm",
AddForwardHeaders: false
)
ReconnectDelay: 10
);

await fixture.ManagementClient.CreateShovelAsync(
vhostName: Vhost.Name,
shovelName,
parameterShovelValue
);

var parameter = await fixture.ManagementClient.GetShovelAsync(Vhost.Name, shovelName);

Assert.Equal(shovelName, parameter.Name);
parameter.Value.Should().BeOfType<JsonElement>();
if (parameter.Value is JsonElement jsonElement)
{
var actualParameterShovelValue = JsonSerializer.Deserialize<ParameterShovelValue>(jsonElement.GetRawText());
actualParameterShovelValue.Should().BeEquivalentTo(parameterShovelValue);
}
}

[Fact]
Expand All @@ -1334,30 +1412,39 @@
var destUri = new AmqpUri($"{fixture.Endpoint.Host}-1", fixture.Endpoint.Port, fixture.User, fixture.Password);

var shovelName = "exchange-shovel";

await fixture.ManagementClient.CreateShovelAsync(
vhostName: Vhost.Name,
shovelName,
new ParameterShovelValue
var parameterShovelValue = new ParameterShovelValue
(
SrcProtocol: AmqpProtocol.AMQP091,
SrcUri: srcUri.ToString(),
SrcExchange: "test-exchange-src",
SrcExchangeKey: null,
SrcQueue: null,
SrcExchangeKey: "aaa",
SrcDeleteAfter: "never",
SrcPrefetchCount: 10,
DestProtocol: AmqpProtocol.AMQP091,
DestUri: destUri.ToString(),
DestExchange: "test-exchange-dest",
DestQueue: null,
DestExchangeKey: "bbb",
DestAddForwardHeaders: false,
DestAddTimestampHeader: false,
AckMode: "on-confirm",
AddForwardHeaders: false
)
ReconnectDelay: 10
);

await fixture.ManagementClient.CreateShovelAsync(
vhostName: Vhost.Name,
shovelName,
parameterShovelValue
);

var parameters = await fixture.ManagementClient.GetParametersAsync();
var parameter = await fixture.ManagementClient.GetShovelAsync(Vhost.Name, shovelName);

Assert.Contains(parameters, p => p.Name == shovelName);
Assert.Equal(shovelName, parameter.Name);
parameter.Value.Should().BeOfType<JsonElement>();
if (parameter.Value is JsonElement jsonElement)
{
var actualParameterShovelValue = JsonSerializer.Deserialize<ParameterShovelValue>(jsonElement.GetRawText());
actualParameterShovelValue.Should().BeEquivalentTo(parameterShovelValue);
}
}

[Fact]
Expand Down Expand Up @@ -1391,7 +1478,7 @@
DestExchange: "test-exchange-dest",
DestQueue: null,
AckMode: "on-confirm",
AddForwardHeaders: false
DestAddForwardHeaders: false
)
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ public void Should_deserialize()
Node: "rabbit@localhost",
Protocol: "amqp",
IpAddress: "127.0.0.1",
Port: 5672
Port: 5672,
SocketOpts: new SocketOpts(Backlog: 128, Nodelay: true, ExitOnClose: false)
),
new(
Node: "rabbit@localhost",
Expand All @@ -72,25 +73,29 @@ public void Should_deserialize()
Node: "rabbit@localhost",
Protocol: "http",
IpAddress: "::",
Port: 15672
Port: 15672,
SocketOpts: new SocketOpts()
),
new(
Node: "rabbit@localhost",
Protocol: "mqtt",
IpAddress: "::",
Port: 1883
Port: 1883,
SocketOpts: new SocketOpts(Backlog: 128, Nodelay: true)
),
new(
Node: "rabbit@localhost",
Protocol: "stomp",
IpAddress: "::",
Port: 61613
Port: 61613,
SocketOpts: new SocketOpts(Backlog: 128, Nodelay: true)
),
new(
Node: "rabbit@localhost",
Protocol: "stream",
IpAddress: "::",
Port: 5552
Port: 5552,
SocketOpts: new SocketOpts(Backlog: 128, Nodelay: true)
)
},
Contexts: Array.Empty<Context>()
Expand Down Expand Up @@ -138,7 +143,8 @@ public void Should_deserialize()
Node: "rabbit@localhost",
Protocol: "amqp",
IpAddress: "127.0.0.1",
Port: 5672
Port: 5672,
SocketOpts: new SocketOpts(Backlog: 128, Nodelay: true, ExitOnClose: false)
),
new(
Node: "rabbit@localhost",
Expand All @@ -150,25 +156,29 @@ public void Should_deserialize()
Node: "rabbit@localhost",
Protocol: "http",
IpAddress: "::",
Port: 15672
Port: 15672,
SocketOpts: new SocketOpts()
),
new(
Node: "rabbit@localhost",
Protocol: "mqtt",
IpAddress: "::",
Port: 1883
Port: 1883,
SocketOpts: new SocketOpts(Backlog: 128, Nodelay: true)
),
new(
Node: "rabbit@localhost",
Protocol: "stomp",
IpAddress: "::",
Port: 61613
Port: 61613,
SocketOpts: new SocketOpts(Backlog: 128, Nodelay: true)
),
new(
Node: "rabbit@localhost",
Protocol: "stream",
IpAddress: "::",
Port: 5552
Port: 5552,
SocketOpts: new SocketOpts(Backlog: 128, Nodelay: true)
)
},
Contexts: new Context[]
Expand All @@ -181,7 +191,14 @@ public void Should_deserialize()
)
}
)
}
},
options => options
.Excluding(o => o.ExtensionData)
.Excluding(o => o.JsonExtensionData)
.For(o => o.Listeners).Exclude(l => l.ExtensionData)
.For(o => o.Listeners).Exclude(l => l.JsonExtensionData)
.For(o => o.Listeners).Exclude(l => l.SocketOpts.ExtensionData)
.For(o => o.Listeners).Exclude(l => l.SocketOpts.JsonExtensionData)
);
}
}
Loading
Loading