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

Initial cut at AMQP protocol implementation. #4498

Merged
merged 92 commits into from
Apr 3, 2023

Conversation

LarryOsterman
Copy link
Member

Initial implementation of AMQP protocol.

There is still a great deal of cleanup that needs to be done before this is complete, but there is enough present to enable development of an AMQP client.

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?

* 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 <[email protected]>
@LarryOsterman
Copy link
Member Author

This is the same PR as the previous one, but namespaces are cleaned up. Please take a look at it.

* First attempt at fixing nlohmann doctest compilation error

* fixed compilation issue

* Fixed ApiView generation for azure core
vhvb1989 and others added 12 commits March 31, 2023 11:59
* 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 <[email protected]>

* Review feedback

* Finish renaming

* Setting line coverage target to 91%

---------

Co-authored-by: Ben Broderick Phillips <[email protected]>
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
…use Value is too generic a type name when you have 'using namespace' directives
@LarryOsterman
Copy link
Member Author

Approval would be appreciated at some point :).

@LarryOsterman LarryOsterman enabled auto-merge (squash) April 3, 2023 19:37
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 am going to approve the PR, because it blocks you, and also it is true that it goes to a feature branch, but I'd really like for us to be able to review it and to apply what we find, because there won't be another change to look at this change as a whole.

@LarryOsterman LarryOsterman merged commit 881552e into Azure:feature/amqp Apr 3, 2023
@LarryOsterman
Copy link
Member Author

I am going to approve the PR, because it blocks you, and also it is true that it goes to a feature branch, but I'd really like for us to be able to review it and to apply what we find, because there won't be another change to look at this change as a whole.

When the AMQP feature branch merges with main, you'll get to see the entire payload once again.

benbp added a commit that referenced this pull request Apr 6, 2023
* Sync eng/common directory with azure-sdk-tools for PR 5608 (#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 <[email protected]>

* First attempt at fixing nlohmann doctest compilation error (#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 (#4501)

* Migrate Ubuntu 18 to 22 directly in the matricses (#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 <[email protected]>

* Review feedback

* Finish renaming

* Setting line coverage target to 91%

---------

Co-authored-by: Ben Broderick Phillips <[email protected]>

* 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 <[email protected]>
Co-authored-by: Konrad Jamrozik <[email protected]>
Co-authored-by: Victor Vazquez <[email protected]>
Co-authored-by: Daniel Jurek <[email protected]>
Co-authored-by: Ben Broderick Phillips <[email protected]>
benbp added a commit that referenced this pull request Apr 6, 2023
* Sync eng/common directory with azure-sdk-tools for PR 5608 (#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 <[email protected]>

* First attempt at fixing nlohmann doctest compilation error (#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 (#4501)

* Migrate Ubuntu 18 to 22 directly in the matricses (#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 <[email protected]>

* Review feedback

* Finish renaming

* Setting line coverage target to 91%

---------

Co-authored-by: Ben Broderick Phillips <[email protected]>

* 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 <[email protected]>
Co-authored-by: Konrad Jamrozik <[email protected]>
Co-authored-by: Victor Vazquez <[email protected]>
Co-authored-by: Daniel Jurek <[email protected]>
Co-authored-by: Ben Broderick Phillips <[email protected]>
@LarryOsterman LarryOsterman deleted the larryo/create_amqp branch May 10, 2023 23:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants