Skip to content

Commit 0cd8fc3

Browse files
committed
Added entityMaximumSize diagnostic
1 parent 8dac1a3 commit 0cd8fc3

3 files changed

Lines changed: 81 additions & 29 deletions

File tree

src/NServiceBus.AzureFunctions.Analyzer.Tests/AzureFunctionsConfigurationAnalyzerTests.cs

Lines changed: 66 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ void Bar()
218218
}
219219

220220
[Test]
221-
public Task DiagnosticIsReportedForMaxAutoLockRenewalDuration()
221+
public Task DiagnosticIsReportedForPrefetchCount()
222222
{
223223
var source =
224224
$@"using NServiceBus;
@@ -228,31 +228,28 @@ class Foo
228228
{{
229229
void Bar(ServiceBusTriggeredEndpointConfiguration endpointConfig)
230230
{{
231-
[|endpointConfig.Transport.MaxAutoLockRenewalDuration|] = new System.TimeSpan(0, 0, 5, 0);
231+
[|endpointConfig.Transport.PrefetchCount|] = 5;
232232
233233
var transportConfig = endpointConfig.Transport;
234-
[|transportConfig.MaxAutoLockRenewalDuration|] = new System.TimeSpan(0, 0, 5, 0);
234+
[|transportConfig.PrefetchCount|] = 5;
235235
}}
236236
}}";
237237

238-
return Assert(AzureFunctionsDiagnostics.MaxAutoLockRenewalDurationNotAllowedId, source);
238+
return Assert(AzureFunctionsDiagnostics.PrefetchCountNotAllowedId, source);
239239
}
240240

241241
[Test]
242-
public Task DiagnosticIsReportedForPrefetchCount()
242+
public Task DiagnosticIsReportedForPrefetchCountAsExtension()
243243
{
244244
var source =
245245
$@"using NServiceBus;
246246
using System;
247247
using System.Threading.Tasks;
248248
class Foo
249249
{{
250-
void Bar(ServiceBusTriggeredEndpointConfiguration endpointConfig)
250+
void Bar(TransportExtensions<AzureServiceBusTransport> transportExtension)
251251
{{
252-
[|endpointConfig.Transport.PrefetchCount|] = 5;
253-
254-
var transportConfig = endpointConfig.Transport;
255-
[|transportConfig.PrefetchCount|] = 5;
252+
[|transportExtension.PrefetchCount(5)|];
256253
}}
257254
}}";
258255

@@ -281,7 +278,25 @@ void Bar(ServiceBusTriggeredEndpointConfiguration endpointConfig)
281278
}
282279

283280
[Test]
284-
public Task DiagnosticIsReportedForTimeToWaitBeforeTriggeringCircuitBreaker()
281+
public Task DiagnosticIsReportedForPrefetchMultiplierAsExtension()
282+
{
283+
var source =
284+
$@"using NServiceBus;
285+
using System;
286+
using System.Threading.Tasks;
287+
class Foo
288+
{{
289+
void Bar(TransportExtensions<AzureServiceBusTransport> transportExtension)
290+
{{
291+
[|transportExtension.PrefetchMultiplier(5)|];
292+
}}
293+
}}";
294+
295+
return Assert(AzureFunctionsDiagnostics.PrefetchMultiplierNotAllowedId, source);
296+
}
297+
298+
[Test]
299+
public Task DiagnosticIsReportedForMaxAutoLockRenewalDuration()
285300
{
286301
var source =
287302
$@"using NServiceBus;
@@ -291,18 +306,18 @@ class Foo
291306
{{
292307
void Bar(ServiceBusTriggeredEndpointConfiguration endpointConfig)
293308
{{
294-
[|endpointConfig.Transport.TimeToWaitBeforeTriggeringCircuitBreaker|] = new System.TimeSpan(0, 0, 5, 0);
309+
[|endpointConfig.Transport.MaxAutoLockRenewalDuration|] = new System.TimeSpan(0, 0, 5, 0);
295310
296311
var transportConfig = endpointConfig.Transport;
297-
[|transportConfig.TimeToWaitBeforeTriggeringCircuitBreaker|] = new System.TimeSpan(0, 0, 5, 0);
312+
[|transportConfig.MaxAutoLockRenewalDuration|] = new System.TimeSpan(0, 0, 5, 0);
298313
}}
299314
}}";
300315

301-
return Assert(AzureFunctionsDiagnostics.TimeToWaitBeforeTriggeringCircuitBreakerNotAllowedId, source);
316+
return Assert(AzureFunctionsDiagnostics.MaxAutoLockRenewalDurationNotAllowedId, source);
302317
}
303318

304319
[Test]
305-
public Task DiagnosticIsReportedForPrefetchCountAsExtension()
320+
public Task DiagnosticIsReportedForMaxAutoLockRenewalDurationAsExtension()
306321
{
307322
var source =
308323
$@"using NServiceBus;
@@ -312,33 +327,36 @@ class Foo
312327
{{
313328
void Bar(TransportExtensions<AzureServiceBusTransport> transportExtension)
314329
{{
315-
[|transportExtension.PrefetchCount(5)|];
330+
[|transportExtension.MaxAutoLockRenewalDuration(new System.TimeSpan(0, 0, 5, 0))|];
316331
}}
317332
}}";
318333

319-
return Assert(AzureFunctionsDiagnostics.PrefetchCountNotAllowedId, source);
334+
return Assert(AzureFunctionsDiagnostics.MaxAutoLockRenewalDurationNotAllowedId, source);
320335
}
321336

322337
[Test]
323-
public Task DiagnosticIsReportedForPrefetchMultiplierAsExtension()
338+
public Task DiagnosticIsReportedForTimeToWaitBeforeTriggeringCircuitBreaker()
324339
{
325340
var source =
326341
$@"using NServiceBus;
327342
using System;
328343
using System.Threading.Tasks;
329344
class Foo
330345
{{
331-
void Bar(TransportExtensions<AzureServiceBusTransport> transportExtension)
346+
void Bar(ServiceBusTriggeredEndpointConfiguration endpointConfig)
332347
{{
333-
[|transportExtension.PrefetchMultiplier(5)|];
348+
[|endpointConfig.Transport.TimeToWaitBeforeTriggeringCircuitBreaker|] = new System.TimeSpan(0, 0, 5, 0);
349+
350+
var transportConfig = endpointConfig.Transport;
351+
[|transportConfig.TimeToWaitBeforeTriggeringCircuitBreaker|] = new System.TimeSpan(0, 0, 5, 0);
334352
}}
335353
}}";
336354

337-
return Assert(AzureFunctionsDiagnostics.PrefetchMultiplierNotAllowedId, source);
355+
return Assert(AzureFunctionsDiagnostics.TimeToWaitBeforeTriggeringCircuitBreakerNotAllowedId, source);
338356
}
339357

340358
[Test]
341-
public Task DiagnosticIsReportedForMaxAutoLockRenewalDurationAsExtension()
359+
public Task DiagnosticIsReportedForTimeToWaitBeforeTriggeringCircuitBreakerAsExtension()
342360
{
343361
var source =
344362
$@"using NServiceBus;
@@ -348,15 +366,36 @@ class Foo
348366
{{
349367
void Bar(TransportExtensions<AzureServiceBusTransport> transportExtension)
350368
{{
351-
[|transportExtension.MaxAutoLockRenewalDuration(new System.TimeSpan(0, 0, 5, 0))|];
369+
[|transportExtension.TimeToWaitBeforeTriggeringCircuitBreaker(new System.TimeSpan(0, 0, 5, 0))|];
352370
}}
353371
}}";
354372

355-
return Assert(AzureFunctionsDiagnostics.MaxAutoLockRenewalDurationNotAllowedId, source);
373+
return Assert(AzureFunctionsDiagnostics.TimeToWaitBeforeTriggeringCircuitBreakerNotAllowedId, source);
356374
}
357375

358376
[Test]
359-
public Task DiagnosticIsReportedForTimeToWaitBeforeTriggeringCircuitBreakerAsExtension()
377+
public Task DiagnosticIsReportedForEntityMaximumSize()
378+
{
379+
var source =
380+
$@"using NServiceBus;
381+
using System;
382+
using System.Threading.Tasks;
383+
class Foo
384+
{{
385+
void Bar(ServiceBusTriggeredEndpointConfiguration endpointConfig)
386+
{{
387+
[|endpointConfig.Transport.EntityMaximumSize|] = 5;
388+
389+
var transportConfig = endpointConfig.Transport;
390+
[|transportConfig.EntityMaximumSize|] = 5;
391+
}}
392+
}}";
393+
394+
return Assert(AzureFunctionsDiagnostics.EntityMaximumSizeNotAllowedId, source);
395+
}
396+
397+
[Test]
398+
public Task DiagnosticIsReportedForEntityMaximumSizeAsExtension()
360399
{
361400
var source =
362401
$@"using NServiceBus;
@@ -366,11 +405,11 @@ class Foo
366405
{{
367406
void Bar(TransportExtensions<AzureServiceBusTransport> transportExtension)
368407
{{
369-
[|transportExtension.TimeToWaitBeforeTriggeringCircuitBreaker(new System.TimeSpan(0, 0, 5, 0))|];
408+
[|transportExtension.EntityMaximumSize(1)|];
370409
}}
371410
}}";
372411

373-
return Assert(AzureFunctionsDiagnostics.TimeToWaitBeforeTriggeringCircuitBreakerNotAllowedId, source);
412+
return Assert(AzureFunctionsDiagnostics.EntityMaximumSizeNotAllowedId, source);
374413
}
375414
}
376415
}

src/NServiceBus.AzureFunctions.Analyzer/AzureFunctionsConfigurationAnalyzer.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ public class AzureFunctionsConfigurationAnalyzer : DiagnosticAnalyzer
2525
AzureFunctionsDiagnostics.MaxAutoLockRenewalDurationNotAllowed,
2626
AzureFunctionsDiagnostics.PrefetchCountNotAllowed,
2727
AzureFunctionsDiagnostics.PrefetchMultiplierNotAllowed,
28-
AzureFunctionsDiagnostics.TimeToWaitBeforeTriggeringCircuitBreakerNotAllowed
28+
AzureFunctionsDiagnostics.TimeToWaitBeforeTriggeringCircuitBreakerNotAllowed,
29+
AzureFunctionsDiagnostics.EntityMaximumSizeNotAllowed
2930
);
3031

3132
static readonly Dictionary<string, DiagnosticDescriptor> NotAllowedEndpointConfigurationMethods
@@ -54,7 +55,8 @@ static readonly Dictionary<string, DiagnosticDescriptor> NotAllowedTransportSett
5455
["MaxAutoLockRenewalDuration"] = AzureFunctionsDiagnostics.MaxAutoLockRenewalDurationNotAllowed,
5556
["PrefetchCount"] = AzureFunctionsDiagnostics.PrefetchCountNotAllowed,
5657
["PrefetchMultiplier"] = AzureFunctionsDiagnostics.PrefetchMultiplierNotAllowed,
57-
["TimeToWaitBeforeTriggeringCircuitBreaker"] = AzureFunctionsDiagnostics.TimeToWaitBeforeTriggeringCircuitBreakerNotAllowed
58+
["TimeToWaitBeforeTriggeringCircuitBreaker"] = AzureFunctionsDiagnostics.TimeToWaitBeforeTriggeringCircuitBreakerNotAllowed,
59+
["EntityMaximumSize"] = AzureFunctionsDiagnostics.EntityMaximumSizeNotAllowed
5860
};
5961

6062
public override void Initialize(AnalysisContext context)

src/NServiceBus.AzureFunctions.Analyzer/AzureFunctionsDiagnostics.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ public static class AzureFunctionsDiagnostics
2020
public const string PrefetchMultiplierNotAllowedId = "NSBFUNC015";
2121
public const string TimeToWaitBeforeTriggeringCircuitBreakerNotAllowedId = "NSBFUNC016";
2222

23+
public const string EntityMaximumSizeNotAllowedId = "NSBFUNC017";
24+
2325
const string DiagnosticCategory = "NServiceBus.AzureFunctions";
2426

2527
internal static readonly DiagnosticDescriptor PurgeOnStartupNotAllowed = new DiagnosticDescriptor(
@@ -147,5 +149,14 @@ public static class AzureFunctionsDiagnostics
147149
defaultSeverity: DiagnosticSeverity.Error,
148150
isEnabledByDefault: true
149151
);
152+
153+
internal static readonly DiagnosticDescriptor EntityMaximumSizeNotAllowed = new DiagnosticDescriptor(
154+
id: EntityMaximumSizeNotAllowedId,
155+
title: "EntityMaximumSize is not supported in Azure Functions",
156+
messageFormat: "Azure Functions endpoints do not support automatic queue creation.",
157+
category: DiagnosticCategory,
158+
defaultSeverity: DiagnosticSeverity.Error,
159+
isEnabledByDefault: true
160+
);
150161
}
151162
}

0 commit comments

Comments
 (0)