Skip to content
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

Merge AMQP functionality to main. #4596

Merged
merged 93 commits into from
May 10, 2023

Conversation

LarryOsterman
Copy link
Member

Merge AMQP functionality in main.

This pull request moves the core AMQP functionality to main. It is still very much a work in progress, but moving it to main will reduce the complexity associated with working in feature branches.

Pull Request Checklist

Please leverage this checklist as a reminder to address commonly occurring feedback when submitting a pull request to make sure your PR can be reviewed quickly:

See the detailed list in the contributing guide.

  • C++ Guidelines
  • Doxygen docs
  • Unit tests
  • No unwanted commits/changes
  • Descriptive title/description
    • PR is single purpose
    • Related issue listed
  • Comments in source
  • No typos
  • Update changelog
  • Not work-in-progress
  • External references or docs updated
  • Self review of PR done
  • Any breaking changes?

LarryOsterman and others added 12 commits March 31, 2023 10:47
… (Azure#4500)

* ongoing

* Move get-codeowners scripts and tests to their own dirs

* address PR remarks

* Fix CodeOwnerFileLocation path, fix casing, and dedup param defaults

* fix param names

* add todos on needed changes in cpp repo

* Add CodeownersFileLocation to Get-Codeowners and use $null for default param values

* move get-codeowners back to scripts/ and rename -functions to .lib

* fix: use empty string as defaults instead of $nulls, to fix invocation

* fix bug with invocation of Get-Codeowners + add support for passing IncludeNonUserAliases as switch

* fix path iin Metadata-Helpers.ps1

* fix typo

* Update archetype-cpp-release.yml

---------

Co-authored-by: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
Co-authored-by: Konrad Jamrozik <kojamroz@microsoft.com>
* Sync eng/common directory with azure-sdk-tools for PR 5608 (Azure#4411)

* ongoing

* Move get-codeowners scripts and tests to their own dirs

* address PR remarks

* Fix CodeOwnerFileLocation path, fix casing, and dedup param defaults

* fix param names

* add todos on needed changes in cpp repo

* Add CodeownersFileLocation to Get-Codeowners and use $null for default param values

* move get-codeowners back to scripts/ and rename -functions to .lib

* fix: use empty string as defaults instead of $nulls, to fix invocation

* fix bug with invocation of Get-Codeowners + add support for passing IncludeNonUserAliases as switch

* fix path iin Metadata-Helpers.ps1

* fix typo

* Update archetype-cpp-release.yml

---------

Co-authored-by: Konrad Jamrozik <kojamroz@microsoft.com>

* First attempt at fixing nlohmann doctest compilation error (Azure#4499)

* First attempt at fixing nlohmann doctest compilation error

* fixed compilation issue

* Fixed ApiView generation for azure core

* update doctest lib to 2.4.11 (Azure#4501)

* Migrate Ubuntu 18 to 22 directly in the matricses (Azure#4442)

* First cut at migrating Ubuntu 18 to 22 directly in the matricses

* Try 20.04

* Remove azure.list from apt configuration on 22.04

* Parens

* gpp-8 on Ubuntu 20.04

* Remove g++-5

* Move config changes to steps/

* Remove g++-5 from live tests

* Update eng/pipelines/templates/steps/fix-linux-1es-configs.yml

Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>

* Review feedback

* Finish renaming

* Setting line coverage target to 91%

---------

Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>

* Initial population of azure-core-amqp

* cspell

* AMQP specific cspell dictionary

* CI pipeline fixes

* azure-uamqp-c cannot work on UWP builds

* Final cspell error; added amqp package to artifacts

* clang-format; added copyright notices to everything

* Added required files

* more CI fixes

* Renamed some files

* Renamed some files

* fixed case of amqp directory

* Renamed models directory

* Renamed network directory

* Most filenames are now lower case

* Hopefully fix CI pipeline failures

* Sort lines in cmakelists.txt

* Fixed name of message_target.cp

* Fixed name of transfer_instance.cpp

* Added preset for AMQP builds; reverted change from cmakesettings.json

* Add AMQP to doxygen generation; fixed clang-format issue

* Case folding fixes

* Correctly set up for DLL builds; removed diagnostic code

* Fixed socket listener to initialize platform

* clang-format

* clang-format

* clang-format; clang compilation fix

* Moved message sender implementation to shared pointer to enable copy and move semantics

* Don't forward declare enums with underlying type

* MOved MessageReceiver into an implementation class

* A couple of clang compiler fixes

* Moved all connection and session code to shared pointers

* Converted network callbacks to use events; restructured network to use shared pointer

* clang-format fixes

* case sensitivity

* clang fixes 4

random port for socket listener echo tests

clang-format

Random port for two more tests

Null event handler before destroying messagereceiver

clang-format

Random port for ReceiverOpenClose

Random port for LinkAttachDetach

Use random port for session tests

gcc warnings again 3

gcc warnings again 2

gcc warnings again

Print errno on socket listener start error

gcc warnings; enabled code coverage for amqp

clang-format

Missed file

clang fixes 8

clang fixes 7

clang fixes 6

clang fixes 5

clang fixes 3

clang fixes 2

clang fixes

* Catch exception thrown from worker thread

* Sample fixes

* Added context to wait for polled result

* clang build fix

clang build fix

* wait until listener thread completes before starting message receiver

* wait until listener thread completes before starting message receiver 2

* more thread cleanup changes

* more linux diagnostics 5

more linux diagnostics 13

more linux diagnostics 12

more linux diagnostics 11

more linux diagnostics 10

more linux diagnostics 9

more linux diagnostics 8

more linux diagnostics 7

more linux diagnostics 6

more linux diagnostics 4

more linux diagnostics 3

more linux diagnostics 2

more linux diagnostics

* Search for ports at 5000, not 0x5000; clang-format changes

* Fixed AV in MessageSenderReceiver when test is cancelled;

* Diagnostics for FindAvailableSOcket

* Diagnostics for FindAvailableSOcket

* Diagnostics for FindAvailableSOcket

* pull request feedback

* Added cbs test

* Finished snake case rename

* Fixed copyright and license text

* Undid accidental checkin

* Moved common and models types to _internal terminal namespace

* Basic CBS authentication test

* removed test resource name

* Fixed SAS token samples

* Sanitized token writer sample

* CI pipeline fixes

* Clear event callback when destroying message sender; close sender and receiver when done with test thread

* ApiView fixes; clang-format

* Fixed a coupe of CI pipeline issues

* Moved credenial type to a member variable not a virtual method returnign a constant

* Full mock implementation of claims based security

* Renamed ClaimBasedSecurity to ClaimsBasedSecurity; clang-format; clang fixes

* Improved code coverage.

* clang fix

* unit test fix

* Improved code coverage for connection string tests

* Added test for authenticated sender and receiver

* Added message source and target tests

Use better constructor for tokencredential

Use better constructor for tokencredential

crlf at the end of every file; made ClaimBasedSecurity class a _detail class

More code coverage fixes

Improved coe coverage for amqp message

Message->Value conversion 3

Message->Value conversion 2

Try casting message to value

Try casting message to value

Reverted attestation chagnes 2

Added more tests

Fixed doxygen issue

Don't use sender unless sender is set

Removed incorrect test

* More code coverage fixes

* Removed 2 param ctor

* More code coverage

* clang-format

* Hopefully final code coverage fixes

* clang-format

* Moved all amqp types to _internal terminal namespace

* Undid attestation change

* clang-format fixes

* Renamed Azure::Core::Amqp::Value to Azure::Core::Amqp::AmqpValue because Value is too generic a type name when you have 'using namespace' directives

* clang-format

* clang-format2

* turn crash into failure

* Try using async send rather than sync send for responding to CBS operations

* It helps to build the code you write

* Trigger CI

---------

Co-authored-by: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
Co-authored-by: Konrad Jamrozik <kojamroz@microsoft.com>
Co-authored-by: Victor Vazquez <victor.vazquez@microsoft.com>
Co-authored-by: Daniel Jurek <djurek@microsoft.com>
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
* first pass at creating service wireframe

* QFE

* readme

* Update sdk/messaging/azure-messaging-eventhubs/src/eventhubs.cpp

Co-authored-by: Rick Winter <rick.winter@microsoft.com>

* Update sdk/messaging/azure-messaging-eventhubs/inc/azure/messaging/eventhubs.hpp

Co-authored-by: Rick Winter <rick.winter@microsoft.com>

* Update sdk/messaging/CMakeLists.txt

Co-authored-by: Rick Winter <rick.winter@microsoft.com>

* PR comments

---------

Co-authored-by: Rick Winter <rick.winter@microsoft.com>
… be more C++-like. (Azure#4548)

* First pass at updating AmqpValue to be more C++ like

* Created AmqpTimestamp

* Created AmqpComposite type to represent composite values

* Finished cleaning up AMQP Value types

* Reworked message and message related fields to simplify ease of use

* Fixed uAMQP reference counting wierdness exposed by the memory leak fixes

* straighten out change that made clang-format on windows be confused

* Terminus enumerations shouldn't be in public API surface

* Cleaned up formatting for MessageHeader and MessageProperties headers

* Code Review Changes
…ove reference values. (Azure#4560)

Initial support for AMQP management APIs.

Bonus changes:

1. Impl types no longer reference non-Impl types
1. Impl types now use RAII wrappers around uAMQP types.
1. Removed connectionToPoll parameter from most APIs.
1. Renamed Message to AmqpMessage to reduce possible type confusion.
1. Added the ability to detect empty messages.
1. Removed interop methods from MessageHeader, MessageProperties, and AmqpMessage in favor of factory methods 1. which do the same.
1. Significant cleanup of MockAmqpServer test server to enable more flexibility.
1. Yield during polling loops to reduce CPU overhead.
1. Removed CreateChar and GetChar in favor of char32_t type.
* Added the ability to serialize AMQP messages
Copy link
Member

@antkmsft antkmsft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have reviewed it in another PR, and at least for the amount of time I looked at it, everything looked good to me, and I don't see why I should not approve this PR. Let's get this in, so that it gets automatic updates from main, and also there is no additional cost to maintain a feature branch. The code may also get more eyes on it when it is in main. If I see these files in my IDE, which is also a convenient way of viewing the code, and I have feedback, I know I can contact you.

Copy link
Contributor

@ahsonkhan ahsonkhan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking through some of the header files (timeboxed).

Copy link
Contributor

@ahsonkhan ahsonkhan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall, LGTM.

I am hoping we will have an APIView listing at some point to easily review the public and internal surface area :)

I wasn't able to review all the network/ and model/ implementation details since I don't have a lot of grasp on those concepts.

@LarryOsterman LarryOsterman enabled auto-merge (squash) May 10, 2023 19:00
…tail namespace since it's not a part of the public API surface
@LarryOsterman LarryOsterman merged commit 68d051f into Azure:main May 10, 2023
@LarryOsterman LarryOsterman deleted the larryo/mergeamqptomain branch May 10, 2023 23:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants