Skip to content

Commit 31d6f48

Browse files
authored
Add SignalR to http group, always include group name (#9833)
* Add SignalR to http group, explicitly list functions with their own group * Always include grouping in sync triggers * Use ':' for group separator
1 parent 1b9a1ac commit 31d6f48

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

src/WebJobs.Script/Extensions/BindingMetadataExtensions.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public static class BindingMetadataExtensions
1212
{
1313
private const string HttpTriggerKey = "httpTrigger";
1414
private const string EventGridTriggerKey = "eventGridTrigger";
15+
private const string SignalRTriggerKey = "signalRTrigger";
1516
private const string BlobTriggerKey = "blobTrigger";
1617

1718
private static readonly HashSet<string> DurableTriggers = new(StringComparer.OrdinalIgnoreCase)
@@ -42,7 +43,7 @@ public static bool IsHttpTrigger(this BindingMetadata binding)
4243
/// <param name="binding">The binding metadata to check.</param>
4344
/// <returns><c>true</c> if a webhook trigger, <c>false</c> otherwise.</returns>
4445
/// <remarks>
45-
/// Known webhook triggers includes Event Grid and Event Grid sourced blob triggers.
46+
/// Known webhook triggers includes SignalR, Event Grid and Event Grid sourced blob triggers.
4647
/// </remarks>
4748
public static bool IsWebHookTrigger(this BindingMetadata binding)
4849
{
@@ -51,7 +52,8 @@ public static bool IsWebHookTrigger(this BindingMetadata binding)
5152
throw new ArgumentNullException(nameof(binding));
5253
}
5354

54-
if (string.Equals(EventGridTriggerKey, binding.Type, StringComparison.OrdinalIgnoreCase))
55+
if (string.Equals(EventGridTriggerKey, binding.Type, StringComparison.OrdinalIgnoreCase)
56+
|| string.Equals(SignalRTriggerKey, binding.Type, StringComparison.OrdinalIgnoreCase))
5557
{
5658
return true;
5759
}

src/WebJobs.Script/Extensions/FunctionMetadataExtensions.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public static bool IsLegacyBlobTriggerFunction(this FunctionMetadata metadata)
6565
/// Gets the function group for the specified <see cref="FunctionMetadata"/>.
6666
/// </summary>
6767
/// <param name="metadata">The function metadata.</param>
68-
/// <returns>The function group for this metadata or <c>null</c> if no group specified.</returns>
68+
/// <returns>The function group for this metadata.</returns>
6969
public static string GetFunctionGroup(this FunctionMetadata metadata)
7070
{
7171
if (metadata == null)
@@ -92,7 +92,8 @@ public static string GetFunctionGroup(this FunctionMetadata metadata)
9292
}
9393
}
9494

95-
return null;
95+
// A function with no specified group will be assigned to a group of itself.
96+
return $"function:{metadata.Name}";
9697
}
9798

9899
public static string GetFunctionId(this FunctionMetadata metadata)

test/WebJobs.Script.Tests/Extensions/BindingMetadataExtensionsTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public void IsHttpTrigger_ReturnsExpectedValue(string type, bool expected)
7272

7373
[Theory]
7474
[InlineData("eventGridTrigger", true)]
75+
[InlineData("signalRTrigger", true)]
7576
[InlineData("blobTrigger", true, "eventGrid")]
7677
[InlineData("blobTrigger", false, "other")]
7778
[InlineData("httpTrigger", false)]

test/WebJobs.Script.Tests/Extensions/FunctionMetadataExtensionsTests.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,15 +146,13 @@ public async Task ToFunctionTrigger_Grouping_ReturnsExpected(string trigger, str
146146
RootScriptPath = _testRootScriptPath
147147
};
148148

149+
group ??= $"function:{functionMetadata.Name}";
149150
var result = await functionMetadata.ToFunctionTrigger(options, isFlexConsumption: true);
150151
Assert.Equal("TestFunction1", result["functionName"].Value<string>());
151152
Assert.Equal(trigger, result["type"].Value<string>());
152153

153-
Assert.Equal(group != null, result.TryGetValue("functionGroup", out JToken functionGroup));
154-
if (functionGroup is not null)
155-
{
156-
Assert.Equal(group, functionGroup.Value<string>());
157-
}
154+
Assert.True(result.TryGetValue("functionGroup", out JToken functionGroup));
155+
Assert.Equal(group, functionGroup.Value<string>());
158156
}
159157

160158
[Theory]

0 commit comments

Comments
 (0)