Skip to content

Commit 9f5c039

Browse files
authored
Filter proxies when checking for initializing language workers (#3426)
1 parent bd17848 commit 9f5c039

File tree

2 files changed

+88
-3
lines changed

2 files changed

+88
-3
lines changed

src/WebJobs.Script/Utility.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -430,12 +430,12 @@ internal static bool ShouldInitiliazeLanguageWorkers(IEnumerable<FunctionMetadat
430430
{
431431
return false;
432432
}
433-
434-
if (!string.IsNullOrEmpty(currentRuntimeLanguage) && ContainsFunctionWithCurrentLanguage(functions, currentRuntimeLanguage))
433+
var functionsListWithoutProxies = functions?.Where(f => f.IsProxy == false);
434+
if (!string.IsNullOrEmpty(currentRuntimeLanguage) && ContainsFunctionWithCurrentLanguage(functionsListWithoutProxies, currentRuntimeLanguage))
435435
{
436436
return true;
437437
}
438-
return ContainsNonDotNetFunctions(functions);
438+
return ContainsNonDotNetFunctions(functionsListWithoutProxies);
439439
}
440440

441441
private static bool ContainsNonDotNetFunctions(IEnumerable<FunctionMetadata> functions)

test/WebJobs.Script.Tests/ScriptHostTests.cs

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,91 @@ public void ShouldInitializeLanguageWorkers_Language_Not_Set_Returns_True()
817817
Assert.True(Utility.ShouldInitiliazeLanguageWorkers(functionsList, null));
818818
}
819819

820+
[Fact]
821+
public void ShouldInitializeLanguageWorkers_WithProxy_Language_Set_NodeFunctions_Returns_True()
822+
{
823+
FunctionMetadata funcCS1 = new FunctionMetadata()
824+
{
825+
Name = "funcCS1",
826+
Language = "csharp"
827+
};
828+
FunctionMetadata funcJS1 = new FunctionMetadata()
829+
{
830+
Name = "funcJS1",
831+
Language = "node"
832+
};
833+
FunctionMetadata proxy1 = new FunctionMetadata()
834+
{
835+
Name = "funcproxy1",
836+
IsProxy = true
837+
};
838+
IEnumerable<FunctionMetadata> functionsList = new Collection<FunctionMetadata>()
839+
{
840+
funcCS1, proxy1, funcJS1
841+
};
842+
Assert.True(Utility.ShouldInitiliazeLanguageWorkers(functionsList, LanguageWorkerConstants.NodeLanguageWorkerName));
843+
}
844+
845+
[Fact]
846+
public void ShouldInitializeLanguageWorkers_WithProxy_Language_Set_NodeFunctions_Returns_False()
847+
{
848+
FunctionMetadata funcCS1 = new FunctionMetadata()
849+
{
850+
Name = "funcCS1",
851+
Language = "csharp"
852+
};
853+
FunctionMetadata proxy1 = new FunctionMetadata()
854+
{
855+
Name = "funcproxy1",
856+
IsProxy = true
857+
};
858+
IEnumerable<FunctionMetadata> functionsList = new Collection<FunctionMetadata>()
859+
{
860+
funcCS1, proxy1
861+
};
862+
Assert.False(Utility.ShouldInitiliazeLanguageWorkers(functionsList, LanguageWorkerConstants.NodeLanguageWorkerName));
863+
}
864+
865+
[Fact]
866+
public void ShouldInitializeLanguageWorkers_OnlyProxies_Returns_False()
867+
{
868+
FunctionMetadata proxy1 = new FunctionMetadata()
869+
{
870+
Name = "funcproxy1",
871+
IsProxy = true
872+
};
873+
FunctionMetadata proxy2 = new FunctionMetadata()
874+
{
875+
Name = "funcproxy2",
876+
IsProxy = true
877+
};
878+
IEnumerable<FunctionMetadata> functionsList = new Collection<FunctionMetadata>()
879+
{
880+
proxy2, proxy1
881+
};
882+
Assert.False(Utility.ShouldInitiliazeLanguageWorkers(functionsList, LanguageWorkerConstants.NodeLanguageWorkerName));
883+
}
884+
885+
[Fact]
886+
public void ShouldInitializeLanguageWorkers_WithProxy_Language_Not_Set_Returns_True()
887+
{
888+
FunctionMetadata funcJs1 = new FunctionMetadata()
889+
{
890+
Name = "funcJs1",
891+
Language = "node"
892+
};
893+
FunctionMetadata proxy1 = new FunctionMetadata()
894+
{
895+
Name = "funcproxy1",
896+
IsProxy = true
897+
};
898+
IEnumerable<FunctionMetadata> functionsList = new Collection<FunctionMetadata>()
899+
{
900+
funcJs1, proxy1
901+
};
902+
Assert.True(Utility.ShouldInitiliazeLanguageWorkers(functionsList, null));
903+
}
904+
820905
private static IEnumerable<FunctionMetadata> GetDotNetFunctionsMetadata()
821906
{
822907
FunctionMetadata funcCS1 = new FunctionMetadata()

0 commit comments

Comments
 (0)