Skip to content

Commit 99bfd3e

Browse files
authored
Remove explicit function grouping (#9956) (#9989)
* Remove explicit function grouping * Fix unit tests
1 parent 68bbaa9 commit 99bfd3e

File tree

3 files changed

+41
-58
lines changed

3 files changed

+41
-58
lines changed

src/WebJobs.Script/Extensions/FunctionMetadataExtensions.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ public static class FunctionMetadataExtensions
1515
private const string IsDisabledKey = "IsDisabled";
1616
private const string IsCodelessKey = "IsCodeless";
1717
private const string FunctionIdKey = "FunctionId";
18-
private const string FunctionGroupKey = "FunctionGroup";
1918
private const string HttpTriggerKey = "HttpTrigger";
2019
private const string HttpOutputKey = "Http";
2120
private const string BlobTriggerType = "blobTrigger";
@@ -73,11 +72,6 @@ public static string GetFunctionGroup(this FunctionMetadata metadata)
7372
throw new ArgumentNullException(nameof(metadata));
7473
}
7574

76-
if (metadata.Properties.TryGetValue(FunctionGroupKey, out object group))
77-
{
78-
return group.ToString();
79-
}
80-
8175
// Ensure http and durable triggers are grouped together.
8276
foreach (BindingMetadata binding in metadata.InputBindings)
8377
{

test/WebJobs.Script.Tests/Description/FunctionGroupListenerDecoratorTests.cs

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.Extensions.Logging;
77
using Microsoft.Extensions.Logging.Abstractions;
88
using Moq;
9+
using Newtonsoft.Json.Linq;
910
using Xunit;
1011
using FuncDescriptor = Microsoft.Azure.WebJobs.Host.Protocols.FunctionDescriptor;
1112

@@ -16,14 +17,21 @@ public class FunctionGroupListenerDecoratorTests
1617
private readonly ILogger<FunctionGroupListenerDecorator> _logger
1718
= NullLogger<FunctionGroupListenerDecorator>.Instance;
1819

20+
private enum FuncGroup
21+
{
22+
None,
23+
Http,
24+
Other,
25+
}
26+
1927
[Fact]
2028
public void Decorate_NoTargetGroupConfigured_ReturnsOriginalListener()
2129
{
2230
// Arrange
2331
IFunctionDefinition definition = Mock.Of<IFunctionDefinition>();
2432
IListener original = Mock.Of<IListener>();
2533
IFunctionMetadataManager metadata = Mock.Of<IFunctionMetadataManager>();
26-
IEnvironment environment = CreateEnvironment(null);
34+
IEnvironment environment = CreateEnvironment(FuncGroup.None);
2735

2836
var context = new ListenerDecoratorContext(definition, original.GetType(), original);
2937
var decorator = new FunctionGroupListenerDecorator(metadata, environment, _logger);
@@ -42,7 +50,7 @@ public void Decorate_MetadataNotFound_ReturnsOriginalListener()
4250
IFunctionDefinition definition = CreateDefinition("test");
4351
IListener original = Mock.Of<IListener>();
4452
IFunctionMetadataManager metadata = Mock.Of<IFunctionMetadataManager>();
45-
IEnvironment environment = CreateEnvironment("test-group");
53+
IEnvironment environment = CreateEnvironment(FuncGroup.Http);
4654

4755
var context = new ListenerDecoratorContext(definition, original.GetType(), original);
4856
var decorator = new FunctionGroupListenerDecorator(metadata, environment, _logger);
@@ -60,8 +68,8 @@ public void Decorate_GroupMatch_ReturnsOriginalListener()
6068
// Arrange
6169
IFunctionDefinition definition = CreateDefinition("test");
6270
IListener original = Mock.Of<IListener>();
63-
IFunctionMetadataManager metadata = CreateMetadataManager("test", "test-group");
64-
IEnvironment environment = CreateEnvironment("test-group");
71+
IFunctionMetadataManager metadata = CreateMetadataManager("test", true);
72+
IEnvironment environment = CreateEnvironment(FuncGroup.Http);
6573

6674
var context = new ListenerDecoratorContext(definition, original.GetType(), original);
6775
var decorator = new FunctionGroupListenerDecorator(metadata, environment, _logger);
@@ -79,8 +87,8 @@ public void Decorate_GroupDoesNotMatch_ReturnsNoOpListener()
7987
// Arrange
8088
IFunctionDefinition definition = CreateDefinition("test");
8189
IListener original = Mock.Of<IListener>();
82-
IFunctionMetadataManager metadata = CreateMetadataManager("test", "test-group");
83-
IEnvironment environment = CreateEnvironment("other-group");
90+
IFunctionMetadataManager metadata = CreateMetadataManager("test", true);
91+
IEnvironment environment = CreateEnvironment(FuncGroup.Other);
8492

8593
var context = new ListenerDecoratorContext(definition, original.GetType(), original);
8694
var decorator = new FunctionGroupListenerDecorator(metadata, environment, _logger);
@@ -98,22 +106,45 @@ private static IFunctionDefinition CreateDefinition(string name)
98106
return Mock.Of<IFunctionDefinition>(m => m.Descriptor == descriptor);
99107
}
100108

101-
private static IFunctionMetadataManager CreateMetadataManager(string name, string group)
109+
private static IFunctionMetadataManager CreateMetadataManager(string name, bool group)
102110
{
111+
string trigger = group ? "httpTrigger" : "otherTrigger";
103112
var metadata = new FunctionMetadata()
104113
{
105-
Properties = { ["FunctionGroup"] = group },
114+
Name = "TestFunction1",
115+
Bindings =
116+
{
117+
new BindingMetadata
118+
{
119+
Name = "input",
120+
Type = trigger,
121+
Direction = BindingDirection.In,
122+
Raw = new JObject()
123+
{
124+
["name"] = "input",
125+
["type"] = trigger,
126+
["direction"] = "in",
127+
},
128+
}
129+
}
106130
};
107131

108132
var mock = new Mock<IFunctionMetadataManager>();
109133
mock.Setup(p => p.TryGetFunctionMetadata(name, out metadata, false)).Returns(true);
110134
return mock.Object;
111135
}
112136

113-
private static IEnvironment CreateEnvironment(string group)
137+
private static IEnvironment CreateEnvironment(FuncGroup group)
114138
{
139+
string groupStr = group switch
140+
{
141+
FuncGroup.Http => "http",
142+
FuncGroup.Other => "other",
143+
_ => null,
144+
};
145+
115146
var environment = new Mock<IEnvironment>(MockBehavior.Strict);
116-
environment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.FunctionsTargetGroup)).Returns(group);
147+
environment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.FunctionsTargetGroup)).Returns(groupStr);
117148
return environment.Object;
118149
}
119150
}

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

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -155,48 +155,6 @@ public async Task ToFunctionTrigger_Grouping_ReturnsExpected(string trigger, str
155155
Assert.Equal(group, functionGroup.Value<string>());
156156
}
157157

158-
[Theory]
159-
[InlineData("httpTrigger", "other0")]
160-
[InlineData("orchestrationTrigger", "other1")]
161-
[InlineData("activityTrigger", "other2")]
162-
[InlineData("entityTrigger", "other3")]
163-
[InlineData("otherTrigger", "other4")]
164-
public async Task ToFunctionTrigger_ExplicitGrouping_ReturnsExpected(string trigger, string group)
165-
{
166-
var functionMetadata = new FunctionMetadata
167-
{
168-
Name = "TestFunction1",
169-
Bindings =
170-
{
171-
new BindingMetadata
172-
{
173-
Name = "input",
174-
Type = trigger,
175-
Direction = BindingDirection.In,
176-
Raw = new JObject()
177-
{
178-
["name"] = "input",
179-
["type"] = trigger,
180-
["direction"] = "in",
181-
},
182-
}
183-
},
184-
Properties =
185-
{
186-
["FunctionGroup"] = group,
187-
},
188-
};
189-
var options = new ScriptJobHostOptions
190-
{
191-
RootScriptPath = _testRootScriptPath
192-
};
193-
194-
var result = await functionMetadata.ToFunctionTrigger(options, isFlexConsumption: true);
195-
Assert.Equal("TestFunction1", result["functionName"].Value<string>());
196-
Assert.Equal(group, result["functionGroup"].Value<string>());
197-
Assert.Equal(trigger, result["type"].Value<string>());
198-
}
199-
200158
[Fact]
201159
public async Task ToFunctionMetadataResponse_WithoutFiles_ReturnsExpected()
202160
{

0 commit comments

Comments
 (0)