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 creation of EventHubs service by @gearama #4755

Merged
merged 81 commits into from
Jul 13, 2023

Conversation

LarryOsterman
Copy link
Member

Create the EventHubs service.

Note that ALL this work was done by @gearama, @LarryOsterman is just shepherding the changes into main while he is on leave.

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 27 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 <[email protected]>
Co-authored-by: Konrad Jamrozik <[email protected]>
* 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 <[email protected]>

* 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 <[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]>
* first pass at creating service wireframe

* QFE

* readme

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

Co-authored-by: Rick Winter <[email protected]>

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

Co-authored-by: Rick Winter <[email protected]>

* Update sdk/messaging/CMakeLists.txt

Co-authored-by: Rick Winter <[email protected]>

* PR comments

---------

Co-authored-by: Rick Winter <[email protected]>
… 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
* Remove -Login and -PushImages parameters from stress helper (Azure#4615)

* Add Azure OpenAI (Azure#4644)

Co-authored-by: Shawn Fang <[email protected]>

* move the cleanup config to -SaveInputs parameter on the cli (Azure#4646)

Co-authored-by: m-nash <[email protected]>

* Fixes for uploading proxy logs (Azure#4652)

Co-authored-by: Bill Wert <[email protected]>

* Handle docker hangs and subscription mismatch on acr login (Azure#4653)

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

* Sync eng/common directory with azure-sdk-tools for PR 6202 (Azure#4651)

* Adding initial commit of TypeSpecE2E common script

* add TODO comment

* Updated per feedback

---------

Co-authored-by: raychen <[email protected]>

* added a test helper to test each type for having the expected default operations. (Azure#4627)

* add test helper

* constructible from Args

* restucture ClassTraits to ensure portability of static constexpr

* fix Etags tests and format

* clang format

* Add DefaultAzureCredential auth flow diagram (Azure#4654)

* Add DefaultAzureCredential auth flow diagram

* Update cspell.json

---------

Co-authored-by: Anton Kolesnyk <[email protected]>

* Remove defunct template (Azure#4659)

Co-authored-by: James Suplizio <[email protected]>

* Convert most AMQP types to read-only; Significant API surface cleanup. (Azure#4640)

* Prep for readonly connection

* Added options for Connection and Session to enable read-only configuration

* Read-only connection and session objects; use message source and target for message sender and receiver

* Enabled read-only session; added tests for incorrect AMQPS port

* Added token reader sample; flushed out eventhubs properties sample, added some timeouts to send async test

* Moved AMQP samples to internal

* Moved samples to use GetEnvHelper

---------

Co-authored-by: Anton Kolesnyk <[email protected]>

* Define a standardized header ordering for Azure SDK for C++ (Azure#4632)

* Standardized header ordering for C++ repo

* Reordered categories to move private headers above public headers; added space between categories to enable future flexibility

* fix flaky storage testcase (Azure#4660)

---------

Co-authored-by: Ben Broderick Phillips <[email protected]>
Co-authored-by: Azure SDK Bot <[email protected]>
Co-authored-by: Shawn Fang <[email protected]>
Co-authored-by: m-nash <[email protected]>
Co-authored-by: Bill Wert <[email protected]>
Co-authored-by: raychen <[email protected]>
Co-authored-by: Jennifer Chukwu <[email protected]>
Co-authored-by: Scott Addie <[email protected]>
Co-authored-by: Anton Kolesnyk <[email protected]>
Co-authored-by: James Suplizio <[email protected]>
Co-authored-by: Larry Osterman <[email protected]>
Co-authored-by: JinmingHu <[email protected]>
@LarryOsterman
Copy link
Member Author

/azp run cpp - eventhubs

@azure-pipelines
Copy link

No commit pushedDate could be found for PR 4755 in repo Azure/azure-sdk-for-cpp

@LarryOsterman
Copy link
Member Author

Ping :).

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.

Thank you for also removing unnecessary options!

@antkmsft
Copy link
Member

If you search for "{};", it would find more occurrences where they can be dropped.
There are some valid instances, such as for ints, but I'd suggest to also rewrite ints, floats, and bools as "= 0"/"= 0.0"/"= false", as I think they are more expressive and therefore for readable for the customers and better for the docs.

@LarryOsterman
Copy link
Member Author

If you search for "{};", it would find more occurrences where they can be dropped. There are some valid instances, such as for ints, but I'd suggest to also rewrite ints, floats, and bools as "= 0"/"= 0.0"/"= false", as I think they are more expressive and therefore for readable for the customers and better for the docs.

In general, I strongly prefer initializer syntax because it doesn't have the type mismatch issues associated with assignment syntax (= 0 assigns the value as an int, which can be ambiguous depending on the underlying type).

Also, I removed all the {} values, and discovered that many of them were actually needed, because either clang or gcc requires initialization syntax on structure fields definitions if you attempt to initialize a structure using initializer syntax. Annoying, but it is what it is.

Comment on lines -5 to +6
DownloadDepVersion(sdk/core azure-core 1.5.0)
DownloadDepVersion(sdk/identity azure-identity 1.1.0)
DownloadDepVersion(sdk/core azure-core)
DownloadDepVersion(sdk/identity azure-identity)
Copy link
Member

Choose a reason for hiding this comment

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

This change of removing the version strings has broken the CI:
#4810

DownloadDepVersion(sdk/core azure-core-amqp)
DownloadDepVersion(sdk/storage/azure-storage-common azure-storage-common)
DownloadDepVersion(sdk/storage/azure-storage-blobs azure-storage-blobs)
elseif(${project} STREQUAL STORAGE_FILES_DATALAKE)
Copy link
Member

Choose a reason for hiding this comment

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

This elseif is duplicated from above (from line 23) and likely incorrect.

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