-
Notifications
You must be signed in to change notification settings - Fork 167
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ability to bind to SBReceivedMessage #1313
Add ability to bind to SBReceivedMessage #1313
Conversation
Need to figure out why E2E tests are not working. |
/cc @jsquire |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Service Bus client library integrations look good to me.
extensions/Worker.Extensions.ServiceBus/src/ServiceBusExtensionStartup.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusExtensionStartup.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/Worker.Extensions.ServiceBus.csproj
Outdated
Show resolved
Hide resolved
…t-worker into sb-received-message
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
Cross linking to the issues this PR fixes #384 |
Hey @JoshLove-msft, I've finally gotten round to writing a guide for deferred binding support in worker extensions - it's an initial draft so feedback is welcome: https://dev.azure.com/msazure/One/_git/AAPT-Antares-Docs?path=/TeamDocs/FunctionTeamDocs/EngineeringHowTos/DeferredBinding/DotnetIsolatedExtensionGuide.md&version=GBmaster&_a=preview A couple things to call out which will help progress this PR:
|
Thanks! I will take a look. But just to clarify this PR is blocked on guidance around how to handle the named parameter bindings. |
Regarding the guide, one thing that I couldn't find is how to set up E2E testing when using something other than Azurite. The only enabled E2E tests that I found all depend on Azurite so there isn't any need to reference secrets or deploy resources. Do you have information on how to configure such tests? |
I don't believe we have anything in place for you to use real resources (definitely an improvement we can make to the scripts), but for now you can manually edit the Constants file. That's were all the emulator connection strings live so I imagine you can swap those out locally for testing. |
Ah yup, we're working on that! We have a design in place and are working on a prototype. I'll flag this PR as blocked until we have something in place to unblock you here |
Hi @liliankasem, |
Hello, we have a prototype in place for how we'd like to handle this. Once we have that fully implemented and merged, we'll do a new SDK release and you should be unblocked. @surgupta-msft any updates on how the skip deferred binding work is going/ETA? We'll also make sure to update the author guide on how to use the new approach. The gist of it is that now the converter can use an attribute to define the type it supports e.g. [SupportsDeferredBinding]
[SupportedConverterTypes(typeof(ServiceBusReceivedMessage))]
internal class ServiceBusReceivedMessageConverter : IInputConverter {} |
Yup, here is the PR - #1462 for bypass deferred binding work. Working on getting this in in this sprint. @JoshLove-msft feel free to test it, otherwise I will update you as soon as this is released. |
extensions/Worker.Extensions.ServiceBus/src/ServiceBusExtensionStartup.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/Worker.Extensions.ServiceBus.csproj
Show resolved
Hide resolved
samples/WorkerBindingSamples/ServiceBus/ServiceBusReceivedMessageBindingSamples.cs
Show resolved
Hide resolved
test/FunctionMetadataGeneratorTests/FunctionMetadataGeneratorTests.cs
Outdated
Show resolved
Hide resolved
samples/WorkerBindingSamples/ServiceBus/ServiceBusReceivedMessageBindingSamples.cs
Outdated
Show resolved
Hide resolved
…zure-functions-dotnet-worker into sb-received-message
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Almost there! just needs unit and e2e tests, feel free to use these as guidance:
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
extensions/Worker.Extensions.ServiceBus/src/ServiceBusReceivedMessageConverter.cs
Outdated
Show resolved
Hide resolved
I had a brief chat with Josh about E2E tests, but looks like ServiceBus does not have Emulator like Storage and Cosmos. Not sure if there is any other way we can do this? |
Hmm in that case, we can leave E2E tests to be outside of this PR - it will require changes in our testing pipeline. One way around this would be to have our pipeline spin up a service bus resource, run the tests, then tear it all down. Don't want to block this PR on that so we should a) still make sure to include unit tests, b) create an issue for updating our pipelines to deploy and destroy resources for E2E testing (could also be an investigation story if we want to explore other options), and c) create an issue to add service bus E2E tests (once infrastructure of it is ready) |
BTW we have invested a lot of effort to having live test infrastructure in the azure-sdk-for-net repo. So that would be another option you can consider - migrate the extension to that repo. |
Yeah we have actually been thinking about moving all of the extensions out of this repo and into azure-sdk-for-net and azure-webjobs-sdk-extensions - definitely worth considering before we spend too much time setting up our infrastructure |
Unit tests added! |
@liliankasem @surgupta-msft thank you for the review and your help implementing this! Feel free to merge it. |
* Add E2E tests for blob SDK type bindings (#1360) * Add analyzer for SupportsDeferredBindingAttribute (#1367) * Update SupportsDeferredBinding diagnostic code & update docs (#1377) * Revert "Remove types, tests & logic related to the SDK-binding feature (#1374)" This reverts commit eac5b19. * Added unit tests for BlobStorageConverter (#1370) * Adding test project * Added tests * Initial changes * Updating metadata * Adding a test * Code refactoring * Cosmos DB converter for SDK-type support and samples (#1406) * Execution flow added * Update pipeline variables to include tags (#1427) * Update extension variables to not use build number with tags (#1429) * Execution flow * cleanup * Cleanup * Cleanup * Cleanup execution flow * Added test * Adding tests * code cleanup * Code cleanup * code refactor * Added logic to check type before sending to converter * Updated tests * Removing advertised converters from options * Adding options back * Changes to check type * updating type check logic * correction in metadata generation * code cleanup * Test cleanup * Added changes to support poco * Metadata generation changes * Changes on Invocation side * correcting type check and tests * Test for poco invocation support * Added tests for poco invocation flows * Metadata generator minor update * Grpc definition update * Added poco and poco collection check * cleanup metadata generation * Adding support for type collection * code cleanup * Fixing metadata gen * Test fix * Grpc definition fix * Removing BlobContainerClient advertisement * Readding containerclient * Updated metadata generator * Changes as per latest design * code cleanup * updatin tests input * code cleanup * Cleanup Metadata generation * correcting converters fallback logic * Removing converter advertisement on cosmos trigger * Fixing failing test * test check in * Undo testing changes in sample app * spacing fix * updated tests * non secret changes * Addressing PR feedback * e2e test work * adding comments * Removed json deserialization attribute * Rename to AllowConverterFallback * Addressing feedback * Metada generation cleanup * Test cleanup * Addressing feedback * Updated grpcFunctionDefinition for multiple inputConverterAttribute * Removing cosmos converter registration * Address PR feedback * Address PR feedback * Test fix * Minor * addressing comments * getting e2e working * Implement bypass deferred binding (#1462) Implement bypass deferred binding * Build issue fix * comments * Update test/E2ETests/E2EApps/E2EApp/Table/TableInputBindingFunctions.cs Co-authored-by: Lilian Kasem <likasem@microsoft.com> * Adding check for PR in yml file (#1546) * addressing some more comments * dependency * one more dependency * trying to compile lol * seeing if tables project compiles with dependency * removing local instance * see if this compiles * trying to remove test * nvm adding it back * adding keys to nuget.config * trying to get feed * trying again * more yml * fixing spacing * ci.yml * Add ability to bind to SBReceivedMessage (#1313) * another change * trying again * formatting changes * changes * updating worker.sdk package * fixing unit test * getting unit tests to pass * fixing test --------- Co-authored-by: Lilian Kasem <likasem@microsoft.com> Co-authored-by: Surgupta <surgupta@microsoft.com> Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
* Add E2E tests for blob SDK type bindings (#1360) * Add analyzer for SupportsDeferredBindingAttribute (#1367) * Update SupportsDeferredBinding diagnostic code & update docs (#1377) * Revert "Remove types, tests & logic related to the SDK-binding feature (#1374)" This reverts commit eac5b19. * Added unit tests for BlobStorageConverter (#1370) * Adding test project * Added tests * Initial changes * Updating metadata * Adding a test * Code refactoring * Cosmos DB converter for SDK-type support and samples (#1406) * Execution flow added * Update pipeline variables to include tags (#1427) * Update extension variables to not use build number with tags (#1429) * Execution flow * cleanup * Cleanup * Cleanup * Cleanup execution flow * Added test * Adding tests * code cleanup * Code cleanup * code refactor * Added logic to check type before sending to converter * Updated tests * Removing advertised converters from options * Adding options back * Changes to check type * updating type check logic * correction in metadata generation * code cleanup * Test cleanup * Added changes to support poco * Metadata generation changes * Changes on Invocation side * correcting type check and tests * Test for poco invocation support * Added tests for poco invocation flows * Metadata generator minor update * Grpc definition update * Added poco and poco collection check * cleanup metadata generation * Adding support for type collection * code cleanup * Fixing metadata gen * Test fix * Grpc definition fix * Removing BlobContainerClient advertisement * Readding containerclient * Updated metadata generator * Changes as per latest design * code cleanup * updatin tests input * code cleanup * Cleanup Metadata generation * correcting converters fallback logic * Removing converter advertisement on cosmos trigger * Fixing failing test * test check in * Undo testing changes in sample app * spacing fix * updated tests * non secret changes * Addressing PR feedback * e2e test work * adding comments * Removed json deserialization attribute * Rename to AllowConverterFallback * Addressing feedback * Metada generation cleanup * Test cleanup * Addressing feedback * Updated grpcFunctionDefinition for multiple inputConverterAttribute * Removing cosmos converter registration * Address PR feedback * Address PR feedback * Test fix * Minor * addressing comments * getting e2e working * Implement bypass deferred binding (#1462) Implement bypass deferred binding * Build issue fix * comments * Update test/E2ETests/E2EApps/E2EApp/Table/TableInputBindingFunctions.cs Co-authored-by: Lilian Kasem <likasem@microsoft.com> * Adding check for PR in yml file (#1546) * addressing some more comments * dependency * one more dependency * trying to compile lol * seeing if tables project compiles with dependency * removing local instance * see if this compiles * trying to remove test * nvm adding it back * adding keys to nuget.config * trying to get feed * trying again * more yml * fixing spacing * ci.yml * Add ability to bind to SBReceivedMessage (#1313) * another change * trying again * formatting changes * changes * updating worker.sdk package * fixing unit test * getting unit tests to pass * fixing test --------- Co-authored-by: Lilian Kasem <likasem@microsoft.com> Co-authored-by: Surgupta <surgupta@microsoft.com> Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
* Add E2E tests for blob SDK type bindings (#1360) * Add analyzer for SupportsDeferredBindingAttribute (#1367) * Update SupportsDeferredBinding diagnostic code & update docs (#1377) * Revert "Remove types, tests & logic related to the SDK-binding feature (#1374)" This reverts commit eac5b19. * Added unit tests for BlobStorageConverter (#1370) * Adding test project * Added tests * Initial changes * Updating metadata * Adding a test * Code refactoring * Cosmos DB converter for SDK-type support and samples (#1406) * Execution flow added * Update pipeline variables to include tags (#1427) * Update extension variables to not use build number with tags (#1429) * Execution flow * cleanup * Cleanup * Cleanup * Cleanup execution flow * Added test * Adding tests * code cleanup * Code cleanup * code refactor * Added logic to check type before sending to converter * Updated tests * Removing advertised converters from options * Adding options back * Changes to check type * updating type check logic * correction in metadata generation * code cleanup * Test cleanup * Added changes to support poco * Metadata generation changes * Changes on Invocation side * correcting type check and tests * Test for poco invocation support * Added tests for poco invocation flows * Metadata generator minor update * Grpc definition update * Added poco and poco collection check * cleanup metadata generation * Adding support for type collection * code cleanup * Fixing metadata gen * Test fix * Grpc definition fix * Removing BlobContainerClient advertisement * Readding containerclient * Updated metadata generator * Changes as per latest design * code cleanup * updatin tests input * code cleanup * Cleanup Metadata generation * correcting converters fallback logic * Removing converter advertisement on cosmos trigger * Fixing failing test * test check in * Undo testing changes in sample app * spacing fix * updated tests * non secret changes * Addressing PR feedback * e2e test work * adding comments * Removed json deserialization attribute * Rename to AllowConverterFallback * Addressing feedback * Metada generation cleanup * Test cleanup * Addressing feedback * Updated grpcFunctionDefinition for multiple inputConverterAttribute * Removing cosmos converter registration * Address PR feedback * Address PR feedback * Test fix * Minor * addressing comments * getting e2e working * Implement bypass deferred binding (#1462) Implement bypass deferred binding * Build issue fix * comments * Update test/E2ETests/E2EApps/E2EApp/Table/TableInputBindingFunctions.cs Co-authored-by: Lilian Kasem <likasem@microsoft.com> * Adding check for PR in yml file (#1546) * addressing some more comments * dependency * one more dependency * trying to compile lol * seeing if tables project compiles with dependency * removing local instance * see if this compiles * trying to remove test * nvm adding it back * adding keys to nuget.config * trying to get feed * trying again * more yml * fixing spacing * ci.yml * Add ability to bind to SBReceivedMessage (#1313) * another change * trying again * formatting changes * changes * updating worker.sdk package * fixing unit test * getting unit tests to pass * fixing test --------- Co-authored-by: Lilian Kasem <likasem@microsoft.com> Co-authored-by: Surgupta <surgupta@microsoft.com> Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
* Add E2E tests for blob SDK type bindings (Azure#1360) * Add analyzer for SupportsDeferredBindingAttribute (Azure#1367) * Update SupportsDeferredBinding diagnostic code & update docs (Azure#1377) * Revert "Remove types, tests & logic related to the SDK-binding feature (Azure#1374)" This reverts commit eac5b19. * Added unit tests for BlobStorageConverter (Azure#1370) * Adding test project * Added tests * Initial changes * Updating metadata * Adding a test * Code refactoring * Cosmos DB converter for SDK-type support and samples (Azure#1406) * Execution flow added * Update pipeline variables to include tags (Azure#1427) * Update extension variables to not use build number with tags (Azure#1429) * Execution flow * cleanup * Cleanup * Cleanup * Cleanup execution flow * Added test * Adding tests * code cleanup * Code cleanup * code refactor * Added logic to check type before sending to converter * Updated tests * Removing advertised converters from options * Adding options back * Changes to check type * updating type check logic * correction in metadata generation * code cleanup * Test cleanup * Added changes to support poco * Metadata generation changes * Changes on Invocation side * correcting type check and tests * Test for poco invocation support * Added tests for poco invocation flows * Metadata generator minor update * Grpc definition update * Added poco and poco collection check * cleanup metadata generation * Adding support for type collection * code cleanup * Fixing metadata gen * Test fix * Grpc definition fix * Removing BlobContainerClient advertisement * Readding containerclient * Updated metadata generator * Changes as per latest design * code cleanup * updatin tests input * code cleanup * Cleanup Metadata generation * correcting converters fallback logic * Removing converter advertisement on cosmos trigger * Fixing failing test * test check in * Undo testing changes in sample app * spacing fix * updated tests * non secret changes * Addressing PR feedback * e2e test work * adding comments * Removed json deserialization attribute * Rename to AllowConverterFallback * Addressing feedback * Metada generation cleanup * Test cleanup * Addressing feedback * Updated grpcFunctionDefinition for multiple inputConverterAttribute * Removing cosmos converter registration * Address PR feedback * Address PR feedback * Test fix * Minor * addressing comments * getting e2e working * Implement bypass deferred binding (Azure#1462) Implement bypass deferred binding * Build issue fix * comments * Update test/E2ETests/E2EApps/E2EApp/Table/TableInputBindingFunctions.cs Co-authored-by: Lilian Kasem <likasem@microsoft.com> * Adding check for PR in yml file (Azure#1546) * addressing some more comments * dependency * one more dependency * trying to compile lol * seeing if tables project compiles with dependency * removing local instance * see if this compiles * trying to remove test * nvm adding it back * adding keys to nuget.config * trying to get feed * trying again * more yml * fixing spacing * ci.yml * Add ability to bind to SBReceivedMessage (Azure#1313) * another change * trying again * formatting changes * changes * updating worker.sdk package * fixing unit test * getting unit tests to pass * fixing test --------- Co-authored-by: Lilian Kasem <likasem@microsoft.com> Co-authored-by: Surgupta <surgupta@microsoft.com> Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
Issue describing the changes in this PR
resolves #1535
Pull request checklist
release_notes.md
Additional information
Additional PR information