Skip to content

Commit

Permalink
.NET Isolated support + more efficient out-of-proc protocol (#2046)
Browse files Browse the repository at this point in the history
* Adds .NET 6.0 target for the WebJobs extension
* Adds .NET Isolated worker extension
* Adds automated smoke testing in GitHub actions
  • Loading branch information
cgillum authored Feb 5, 2022
1 parent c6841f3 commit 32cca93
Show file tree
Hide file tree
Showing 69 changed files with 8,769 additions and 1,667 deletions.
14 changes: 14 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Azure Functions artifacts
bin
obj
appsettings.json
local.settings.json

# Other
.funcignore
.gitignore
.ionide
.git
.vs
.vscode
node_modules
148 changes: 148 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# Rules in this file were initially inferred by Visual Studio IntelliCode from the C:\GitHub\azure-functions-durable-extension codebase based on best match to current usage at 10/25/2021
# You can modify the rules from these initially generated values to suit your own policies
# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
[*.cs]


#Core editorconfig formatting - indentation

#use soft tabs (spaces) for indentation
indent_style = space

#Formatting - indentation options

#indent switch case contents.
csharp_indent_case_contents = true
#csharp_indent_case_contents_when_block
csharp_indent_case_contents_when_block = true
#indent switch labels
csharp_indent_switch_labels = true

#Formatting - new line options

#place catch statements on a new line
csharp_new_line_before_catch = true
#place else statements on a new line
csharp_new_line_before_else = true
#require members of anonymous types to be on separate lines
csharp_new_line_before_members_in_anonymous_types = true
#require members of object intializers to be on separate lines
csharp_new_line_before_members_in_object_initializers = true
#require braces to be on a new line for object_collection_array_initializers, properties, lambdas, types, anonymous_types, methods, accessors, and control_blocks (also known as "Allman" style)
csharp_new_line_before_open_brace = object_collection_array_initializers, properties, lambdas, types, anonymous_types, methods, accessors, control_blocks

#Formatting - organize using options

#sort System.* using directives alphabetically, and place them before other usings
dotnet_sort_system_directives_first = true

#Formatting - spacing options

#require NO space between a cast and the value
csharp_space_after_cast = false
#require a space before the colon for bases or interfaces in a type declaration
csharp_space_after_colon_in_inheritance_clause = true
#require a space after a keyword in a control flow statement such as a for loop
csharp_space_after_keywords_in_control_flow_statements = true
#require a space before the colon for bases or interfaces in a type declaration
csharp_space_before_colon_in_inheritance_clause = true
#remove space within empty argument list parentheses
csharp_space_between_method_call_empty_parameter_list_parentheses = false
#remove space between method call name and opening parenthesis
csharp_space_between_method_call_name_and_opening_parenthesis = false
#do not place space characters after the opening parenthesis and before the closing parenthesis of a method call
csharp_space_between_method_call_parameter_list_parentheses = false
#remove space within empty parameter list parentheses for a method declaration
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
#place a space character after the opening parenthesis and before the closing parenthesis of a method declaration parameter list.
csharp_space_between_method_declaration_parameter_list_parentheses = false

#Formatting - wrapping options

#leave code block on single line
csharp_preserve_single_line_blocks = true
#leave statements and member declarations on the same line
csharp_preserve_single_line_statements = true

#Style - Code block preferences

#prefer curly braces even for one line of code
csharp_prefer_braces = true:suggestion

#Style - expression bodied member options

#prefer block bodies for accessors
csharp_style_expression_bodied_accessors = false:suggestion
#prefer block bodies for constructors
csharp_style_expression_bodied_constructors = false:suggestion
#prefer block bodies for methods
csharp_style_expression_bodied_methods = false:suggestion
#prefer expression-bodied members for properties
csharp_style_expression_bodied_properties = true:suggestion

#Style - expression level options

#prefer out variables to be declared inline in the argument list of a method call when possible
csharp_style_inlined_variable_declaration = true:suggestion
#prefer tuple names to ItemX properties
dotnet_style_explicit_tuple_names = true:suggestion
#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them
dotnet_style_predefined_type_for_member_access = true:suggestion

#Style - Expression-level preferences

#prefer objects to be initialized using object initializers when possible
dotnet_style_object_initializer = true:suggestion
#prefer inferred anonymous type member names
dotnet_style_prefer_inferred_anonymous_type_member_names = false:suggestion
#prefer inferred tuple element names
dotnet_style_prefer_inferred_tuple_names = true:suggestion

#Style - implicit and explicit types

#prefer var over explicit type in all cases, unless overridden by another code style rule
csharp_style_var_elsewhere =false:suggestion
#prefer var is used to declare variables with built-in system types such as int
csharp_style_var_for_built_in_types =false:suggestion
#prefer var when the type is already mentioned on the right-hand side of a declaration expression
csharp_style_var_when_type_is_apparent = true:suggestion

#Style - language keyword and framework type options

#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion

#Style - Miscellaneous preferences

#prefer local functions over anonymous functions
csharp_style_pattern_local_over_anonymous_function = true:suggestion

#Style - modifier options

#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods.
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion

#Style - Modifier preferences

#when this rule is set to a list of modifiers, prefer the specified ordering.
csharp_preferred_modifier_order = public,private,internal,protected,static,readonly,async,override,abstract,virtual,sealed:suggestion

#Style - Pattern matching

#prefer pattern matching instead of is expression with type casts
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion

#Style - qualification options

#prefer fields not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_field = false:suggestion
#prefer methods to be prefaced with this. in C# or Me. in Visual Basic
dotnet_style_qualification_for_method = true:suggestion
#prefer properties not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_property = false:suggestion
csharp_using_directive_placement=outside_namespace:suggestion

[*.{cs,vb}]
dotnet_style_qualification_for_field=true:suggestion
dotnet_style_qualification_for_property=true:suggestion
dotnet_style_qualification_for_event=false:suggestion
4 changes: 3 additions & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ resolves #issue_for_this_pr
* [ ] Otherwise: Backport tracked by issue/PR #issue_or_pr
* [ ] I have added all required tests (Unit tests, E2E tests)
* [ ] My changes **do not** require any extra work to be leveraged by OutOfProc SDKs
* [ ] Otherwise: That work is being tracked here: #issue_or_pr_in_each_sdk
* [ ] Otherwise: That work is being tracked here: #issue_or_pr_in_each_sdk
* [ ] My changes **do not** change the version of the WebJobs.Extensions.DurableTask package
* [ ] Otherwise: major or minor version updates are reflected in `/src/Worker.Extensions.DurableTask/AssemblyInfo.cs`
24 changes: 24 additions & 0 deletions .github/workflows/smoketest-dotnet-isolated-v4.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Smoke Test - .NET Isolated

on:
push:
branches: [ main, dev ]
paths:
- 'src/**'
- 'test/SmokeTests/OOProcSmokeTests/DotNetIsolated/**'
pull_request:
branches: [ main, dev ]
paths:
- 'src/**'
- 'test/SmokeTests/OOProcSmokeTests/DotNetIsolated/**'

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

# Validation is blocked on https://github.com/Azure/azure-functions-host/issues/7995
- name: Run .NET Isolated Smoke Test
run: test/SmokeTests/e2e-test.ps1 -DockerfilePath test/SmokeTests/OOProcSmokeTests/DotNetIsolated/Dockerfile -HttpStartPath api/StartHelloCitiesTyped -NoValidation
shell: pwsh
22 changes: 22 additions & 0 deletions .github/workflows/smoketest-dotnet-v3.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Smoke Test - .NET V3

on:
push:
branches: [ main, dev ]
paths:
- 'src/**'
- 'test/SmokeTests/SmokeTestsV3/**'
pull_request:
branches: [ main, dev ]
paths:
- 'src/**'
- 'test/SmokeTests/SmokeTestsV3/**'

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run .NET V3 Smoke Test
run: test/SmokeTests/e2e-test.ps1 -DockerfilePath test/SmokeTests/SmokeTestsV3/Dockerfile -HttpStartPath api/HttpStart
shell: pwsh
22 changes: 22 additions & 0 deletions .github/workflows/smoketest-node14-v4.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Smoke Test - Node14 V4

on:
push:
branches: [ main, dev ]
paths:
- 'src/**'
- 'test/SmokeTests/OOProcSmokeTests/durableJS/**'
pull_request:
branches: [ main, dev ]
paths:
- 'src/**'
- 'test/SmokeTests/OOProcSmokeTests/durableJS/**'

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Node14 V4 Smoke Test
run: test/SmokeTests/e2e-test.ps1 -DockerfilePath test/SmokeTests/OOProcSmokeTests/durableJS/Dockerfile -HttpStartPath api/DurableFunctionsHttpStart
shell: pwsh
77 changes: 75 additions & 2 deletions WebJobs.Extensions.DurableTask.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29418.71
# Visual Studio Version 17
VisualStudioVersion = 17.0.31822.380
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebJobs.Extensions.DurableTask", "src\WebJobs.Extensions.DurableTask\WebJobs.Extensions.DurableTask.csproj", "{51790AFE-5B8E-4795-9EA3-D2B15D04B5AC}"
EndProject
Expand All @@ -20,12 +20,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebJobs.Extensions.DurableT
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9850DECF-CBA2-43E7-B5E2-55053DD308E9}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
README.md = README.md
release_notes.md = release_notes.md
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VSSampleV1", "test\SmokeTests\SmokeTestsV1\VSSampleV1.csproj", "{78141F66-4DDD-4ABB-9DE3-D0B426FE8110}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SmokeTests", "SmokeTests", "{A8CF6993-258A-484A-AF6D-6CC88D36AF93}"
ProjectSection(SolutionItems) = preProject
test\SmokeTests\e2e-test.ps1 = test\SmokeTests\e2e-test.ps1
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VSSampleV2", "test\SmokeTests\SmokeTestsV2\VSSampleV2.csproj", "{E997024B-633E-4252-880B-E2A726E1B4A4}"
EndProject
Expand All @@ -47,6 +52,34 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TimeoutTests", "test\Timeou
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "extensions", "test\TimeoutTests\Python\extensions.csproj", "{1B5BA0DF-FE16-493F-B3A2-44A281821F3F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DurableFunctions.TypedInterfaces", "src\DurableFunctions.TypedInterfaces\SourceGenerator\DurableFunctions.TypedInterfaces.csproj", "{44A9EFDA-CAA2-48B6-80D3-76566B660365}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DurableFunctions.TypedInterfaces.SourceGenerator.Test", "test\CodeGen.SourceGenerator.Test\DurableFunctions.TypedInterfaces.SourceGenerator.Test.csproj", "{A050602C-A85A-4888-9CEC-A654D346927C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SourceGenerators", "SourceGenerators", "{4DDB6BA9-201F-4BCB-9C28-801A43B7CA7B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DurableFunctions.TypedInterfaces.Examples.Test", "test\CodeGen.Example.Test\DurableFunctions.TypedInterfaces.Examples.Test.csproj", "{68F8AB7F-BF03-4BCE-8398-2D8EBEE58231}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DurableFunctions.TypedInterfaces.Example", "src\DurableFunctions.TypedInterfaces\Example\DurableFunctions.TypedInterfaces.Example.csproj", "{C88D68A2-7FC8-4AB8-B784-5F32C2C460FE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebJobs.Extensions.DurableTask.Analyzers", "src\WebJobs.Extensions.DurableTask.Analyzers\WebJobs.Extensions.DurableTask.Analyzers.csproj", "{AC0A99E3-D4B6-42F5-AB82-9BA244DED6A9}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebJobs.Extensions.DurableTask.Analyzers.Test", "test\WebJobs.Extensions.DurableTask.Analyzers.Test\WebJobs.Extensions.DurableTask.Analyzers.Test.csproj", "{8518C337-A787-4CB9-B0B3-3AC3CD51E109}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DotNetIsolated", "DotNetIsolated", "{9B0F4A0A-1B18-4E98-850A-14A2F76F673D}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetIsolated", "test\SmokeTests\OOProcSmokeTests\DotNetIsolated\DotNetIsolated.csproj", "{FF6CD07A-A4BF-43C5-B14E-213328DEB835}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Worker.Extensions.DurableTask", "src\Worker.Extensions.DurableTask\Worker.Extensions.DurableTask.csproj", "{5F5FAF27-D6B8-4A60-ACF2-F63D13F89CA2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pipelines", "pipelines", "{B7FBBE6E-9AC7-4CEB-9B80-6FD9AE74415A}"
ProjectSection(SolutionItems) = preProject
azure-pipelines.yml = azure-pipelines.yml
.github\workflows\smoketest-dotnet-isolated-v4.yml = .github\workflows\smoketest-dotnet-isolated-v4.yml
.github\workflows\smoketest-dotnet-v3.yml = .github\workflows\smoketest-dotnet-v3.yml
.github\workflows\smoketest-node14-v4.yml = .github\workflows\smoketest-node14-v4.yml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -93,6 +126,36 @@ Global
{1B5BA0DF-FE16-493F-B3A2-44A281821F3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1B5BA0DF-FE16-493F-B3A2-44A281821F3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B5BA0DF-FE16-493F-B3A2-44A281821F3F}.Release|Any CPU.Build.0 = Release|Any CPU
{44A9EFDA-CAA2-48B6-80D3-76566B660365}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{44A9EFDA-CAA2-48B6-80D3-76566B660365}.Debug|Any CPU.Build.0 = Debug|Any CPU
{44A9EFDA-CAA2-48B6-80D3-76566B660365}.Release|Any CPU.ActiveCfg = Release|Any CPU
{44A9EFDA-CAA2-48B6-80D3-76566B660365}.Release|Any CPU.Build.0 = Release|Any CPU
{A050602C-A85A-4888-9CEC-A654D346927C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A050602C-A85A-4888-9CEC-A654D346927C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A050602C-A85A-4888-9CEC-A654D346927C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A050602C-A85A-4888-9CEC-A654D346927C}.Release|Any CPU.Build.0 = Release|Any CPU
{68F8AB7F-BF03-4BCE-8398-2D8EBEE58231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68F8AB7F-BF03-4BCE-8398-2D8EBEE58231}.Debug|Any CPU.Build.0 = Debug|Any CPU
{68F8AB7F-BF03-4BCE-8398-2D8EBEE58231}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68F8AB7F-BF03-4BCE-8398-2D8EBEE58231}.Release|Any CPU.Build.0 = Release|Any CPU
{C88D68A2-7FC8-4AB8-B784-5F32C2C460FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C88D68A2-7FC8-4AB8-B784-5F32C2C460FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C88D68A2-7FC8-4AB8-B784-5F32C2C460FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C88D68A2-7FC8-4AB8-B784-5F32C2C460FE}.Release|Any CPU.Build.0 = Release|Any CPU
{AC0A99E3-D4B6-42F5-AB82-9BA244DED6A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AC0A99E3-D4B6-42F5-AB82-9BA244DED6A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC0A99E3-D4B6-42F5-AB82-9BA244DED6A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC0A99E3-D4B6-42F5-AB82-9BA244DED6A9}.Release|Any CPU.Build.0 = Release|Any CPU
{8518C337-A787-4CB9-B0B3-3AC3CD51E109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8518C337-A787-4CB9-B0B3-3AC3CD51E109}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8518C337-A787-4CB9-B0B3-3AC3CD51E109}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8518C337-A787-4CB9-B0B3-3AC3CD51E109}.Release|Any CPU.Build.0 = Release|Any CPU
{FF6CD07A-A4BF-43C5-B14E-213328DEB835}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF6CD07A-A4BF-43C5-B14E-213328DEB835}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F5FAF27-D6B8-4A60-ACF2-F63D13F89CA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5F5FAF27-D6B8-4A60-ACF2-F63D13F89CA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5F5FAF27-D6B8-4A60-ACF2-F63D13F89CA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5F5FAF27-D6B8-4A60-ACF2-F63D13F89CA2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -113,6 +176,16 @@ Global
{AFE91C1C-B657-4FB7-A190-CF9F1AEA2BA6} = {7BDC4D07-83DC-497B-9896-788701A3ACB9}
{4E44051D-C5B4-4C9E-BDF7-0E3AB501C4FB} = {7BDC4D07-83DC-497B-9896-788701A3ACB9}
{1B5BA0DF-FE16-493F-B3A2-44A281821F3F} = {AFE91C1C-B657-4FB7-A190-CF9F1AEA2BA6}
{44A9EFDA-CAA2-48B6-80D3-76566B660365} = {7EC858EE-3481-4A82-AED4-CB00C34F42D0}
{A050602C-A85A-4888-9CEC-A654D346927C} = {4DDB6BA9-201F-4BCB-9C28-801A43B7CA7B}
{4DDB6BA9-201F-4BCB-9C28-801A43B7CA7B} = {78BCF152-C22C-408F-9FB1-0F8C99B154B5}
{68F8AB7F-BF03-4BCE-8398-2D8EBEE58231} = {4DDB6BA9-201F-4BCB-9C28-801A43B7CA7B}
{C88D68A2-7FC8-4AB8-B784-5F32C2C460FE} = {4DDB6BA9-201F-4BCB-9C28-801A43B7CA7B}
{AC0A99E3-D4B6-42F5-AB82-9BA244DED6A9} = {7EC858EE-3481-4A82-AED4-CB00C34F42D0}
{8518C337-A787-4CB9-B0B3-3AC3CD51E109} = {78BCF152-C22C-408F-9FB1-0F8C99B154B5}
{9B0F4A0A-1B18-4E98-850A-14A2F76F673D} = {A8CF6993-258A-484A-AF6D-6CC88D36AF93}
{FF6CD07A-A4BF-43C5-B14E-213328DEB835} = {9B0F4A0A-1B18-4E98-850A-14A2F76F673D}
{5F5FAF27-D6B8-4A60-ACF2-F63D13F89CA2} = {7EC858EE-3481-4A82-AED4-CB00C34F42D0}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5E9AC327-DE18-41A5-A55D-E44CB4281943}
Expand Down
Loading

0 comments on commit 32cca93

Please sign in to comment.