* Initial attempt at a Rust AMQP stack, merged against feature/rust_amqp for now. (#5942)
* Enabled building AMQP *without* uAMQP
* Start integrating Rust AMQP Value to C++ AMQP Value
* AMQP Value tests now pass
* Moved AmqpValueType ostream inserter to its original location
* Added Rust AMQP Message implementation
* Added start of message source tests
* Enabled building AMQP *without* uAMQP
* Start integrating Rust AMQP Value to C++ AMQP Value
* Moved AmqpValueType ostream inserter to its original location
* Message target support
* Message source and target support
* Add connection support; restructured tests to fail on RUST AMQP rather than attempting to run; removed some uAMQP-only features (#5986)
* Checkpoint of connection logic
* Started implementing Rust based Connection by pulling out uAMQP artifacts
* Implemented AMQP Connection in Rust; started API surface refactoring for Rust APIs; Refactored tests to remove some uAMQP only elements.
* Don't leak runtime context on calls
* Refactor AMQP logic to better isolate rust AMQP code from uAMQP code. (#6008)
* refactor uAMQP and Rust AMQP into separate implementations for ease of use
* Add connection support; restructured tests to fail on RUST AMQP rather than attempting to run; removed some uAMQP-only features (#5986)
* Checkpoint of connection logic
* Started implementing Rust based Connection by pulling out uAMQP artifacts
* Implemented AMQP Connection in Rust; started API surface refactoring for Rust APIs; Refactored tests to remove some uAMQP only elements.
* Don't leak runtime context on calls
* export UUID from AMQP
* Cleaned up some more elements; reduced scope of doxygen significantly
* runtime context needs to be process global not thread global; all tests pass or fail at this point
* Merged main into branch
* Implement AMQP Session APIs in Rust. (#6033)
* Checkpoint of rust session support
* Session begin/end now works
* Session tests pass
* Removed accidental regression
* Added rust per-call context (#6043)
* Reworked runtime context to be call context
* Added context parameter to blocking AMQP calls
* Added comments around the lifetime of the RustRuntimeContext captured in the CallContext object
* uAMQP changes corresponding to Rust changes
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* sync rust SDK fixes to C++
---------
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Enable Rust ClaimsBasedSecurity interoperability; Converted EventHubs producer client to work with Rust AMQP changes. (#6059)
* canonicalized return values; initial CBS support
* Implementation of CBS for C++
* Amqp Authentication works; Integrate Rust AMQP into Eventhubs Producer client
* Implemented Rust AMQP message sender. (#6083)
* Initial sender implementation
* PR feedback
* Management APIs work (#6096)
* Management APIs work
---------
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Converted builders to be compliant with Rust guidelines. (#6102)
* Converted builders to be compliant with Rust guidelines.
* Bring rust changes back to C++ repo
* Improved builder developer experience
* Removed builders from AMQP layer to conform to Rust guidelines; Fixed AMQP bug in message sender tests (#6208)
* Removed builders from AMQP layer to conform to Rust guidelines; Fixed AMQP related bug in message sender tests
* Pr feedback
* Implement receiving messages; Changes to eventhubs so that all eventhubs tests pass (#6254)
* Eventhubs tests pass
* Noise reduction; explain the task which spawns a task
* Update sdk/eventhubs/azure-messaging-eventhubs/src/producer_client.cpp
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* PR feedback
---------
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Integrate Rust 2 step message receive code to C++ (#6349)
* Integrate Rust 2 step message receive code to C++
* If receiving a delivery failed, transmit the error to the message channel if at all possible
* Enable Rust based AMQP by default (#6362)
* AMQP tests now pass; Integrate TestAmqpBroker with CI pipeline
* Updated changelogs to reflect API changes made during AMQP updates
* Replace uAMQP with Rust AMQP as the default AMQP transport; Updated build configurationj to reflect that
* Test fixes
* PR feedback; test fixes
* Fixed uninitialized variable tanking some tests (#6381)
* Fixed uninitialized variable tanking some tests
* Fixed Rust AMQP tests
* Removed connection string support from Eventhubs and EH tests. (#6391)
* Removed the ability to use connection strings from EventHubs
* Enable Rust AMQP by default!!!
* Update CMakePresets.json
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
---------
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Docs links coversion: docs.microsoft.com -> learn.microsoft.com
Some markdown formatting
* Adding "msrc" to cspell words
* Undoing things auto formatter did
* Appling Ahson's suggestions
* Add project skeleton and check-in snapshot of generated SDK for Azure App Configuration.
* Add new line at eof
* Add exclusion to the cspell issue.
* Explicitly use size_t instead of auto for iterating through a vector
* Add another cspell exclusion, since it is case-sensitive
* Address PR feedback, update CL, package version.
* Update readme to remove template project content.
* Exclude appconfig from recordings, since none exist atm.
* Temporarily exclude appconfiguration from docs generation.
* Add line/branch coverage thresholds and skip publishing docs if they don't exist.
* Added blocking Open for message sender
* Blocking message sender open; added AZURE_NODISCARD to help ensure APIs that are likely to fail have their returns checked
* Update eventhubs stress test to use DefaultAzureCredential instead of ClientSecretCredential; Fixed stress test to correctly request client parameters; Removed hard coded resource name from producer client test
* Pull request feedback with link events; renamed AZURE_NODISCARD to _azure_NODISCARD
---------
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
* dss
* first pass at a client and tests
* constructors work
* working request, need to fix the response parsing
* basic tests working for service client
* refactored the constructors
* testproxy and tests
* format file
* got client and one API working
* list working
* all apis recorded
* new assets.json
* assets.json regen
* format json
* adding word to cspell
* fix build issues
* fix one more break
* typo
* clangs
* one more issue
* more fixezez
* regen recordings
* try again
* clangs
* clangs again
* new assets
* new test proxy
* regen tests based on new merge
* hmmm
* restore
* add debug env for test proxy
* resync cmake presets from main
* gor get and set working
* get stats
* table client and create
* delete
* get/set acls
* list tables
* some cleanup
* Create /update/merge/delete
* upsert
* query entities
* generated tests
* clangs
* some fixes
* some more errors
* cspells
* got transaction API working
* transactions working , need to parse response
* get data out of the response
* clangs
* batch1
* regen tests
* part 2
* batch3
* batch4
* clangs
* regen tests
* regen tests
* try again
* live only
* added some more tests for the transaction body
* small refactor for tests
* oops
* some oter update
* darn includes
* sddfsd
* erorr fix
* key clients
* sas
* small cleanup
* All tests passing
* test recordings
* clangs
* missing ENV for test
* attempt1
* retry
* couple recordings
* regen some tests
* clangs
* again
* again
* comments
* comments
* headers and footers
* some cleanjup
* Move folders step1
* revert assets and test resources in storage
* revert to main
* cspell
* readme
* comments
* revert ci.yml
* liveonly test
* clangs
* camke
* ci2
* try again
* fdssfs
* fdsfsd
* some cleanup
* dasda
* dsdsds
* asda
* assets
* comments
* a few more bits and pieces
* some other updates for cspell
* typo
* more docs
* spell
* another doc error
* clangs docs
* docs
* test cov
* dasdas
* hg
* stress test
* cspell
* Update sdk/storage/azure-storage-common/test/ut/CMakeLists.txt
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/storage/azure-storage-common/test/ut/shared_key_policy_lite_test.cpp
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/tables/azure-data-tables/CHANGELOG.md
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/tables/azure-data-tables/CMakeLists.txt
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/tables/azure-data-tables/test/stress/scenarios-matrix.yaml
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/tables/azure-data-tables/test/stress/Dockerfile
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* PR comments
* respurces cleanup
* cleanup 2
* respurce fix
* revddrt
* weqq
* oops
* try again
* Update sdk/tables/azure-data-tables/vcpkg/vcpkg.json
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* try
* test fix
* samples
* readmes
* readmes
* readmes
* api view settings
* qualify friends
* try
* moving usings
* refactor for API View tool
* some more
* clangs
* Update sdk/tables/README.md
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/core/azure-core/inc/azure/core/http/http.hpp
Co-authored-by: Ahson Khan <ahkha@microsoft.com>
* Update sdk/core/azure-core/src/http/transport_policy.cpp
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/tables/azure-data-tables/inc/azure/data/tables/rest_client.hpp
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/tables/azure-data-tables/CHANGELOG.md
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/tables/azure-data-tables/test/ut/CMakeLists.txt
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* Update sdk/tables/azure-data-tables/src/rest_client.cpp
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* some comments
* comments
* comments part N
* clang
* try now
* clang
* comments
* update file names
* update test to check for the final signature
* ccc
* rename shared key policy lite
* cleanup some includes
* add a couple more tests
* small update
* clang
* increase test limits
* xml transition
* service_version_policy
* shared creds and key policy lite
* switch to secondary policy
* code done
* remove last storage vestiges
* put back some code
* readme/changelog
* Update sdk/tables/azure-data-tables/src/serializers.cpp
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
* Add the shared key policy for Larry
* Larry comments
* curlybracify the initializers
* Update sdk/core/azure-core-xml/inc/azure/core/xml/dll_import_export.hpp
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
* Update sdk/core/azure-core-xml/vcpkg.json
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
* Update sdk/tables/azure-data-tables/inc/azure/data/tables.hpp
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
* Rick's comments one more namespace change for serializers
* whiteline
* typo
* oops
* includes and clangs
* cleanup
* jhfjdhjfd
* hjkjdhf
* daas
* Anton's comments
* clang
* revert some changes
* fdss
* Update sdk/core/azure-core-xml/CHANGELOG.md
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
* everything works
* clangs and vcpkg test
* test remove azure-core-xml
* vcpkg json
* remove the code
* merge main
* saa
* wqw
* last comments
* clang
---------
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
Co-authored-by: Ahson Khan <ahkha@microsoft.com>
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
* Return pointer to message rather than message; cleaned up API surface to remove uAMQP details
* ASAN configuration via CMAKE preset, not environment variable
* clang-tidy fixes
# 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.
---------
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>
Co-authored-by: George Arama <50641385+gearama@users.noreply.github.com>
Co-authored-by: Rick Winter <rick.winter@microsoft.com>
Co-authored-by: Ahson Khan <ahkha@microsoft.com>
* Start of tracing prototype
* Created initial implementation of azure-core-opentelemetry package
* New version of enabling MSVCRT Lib for static configs
* Attempt to add OpenTelemetry tests to build
* Take a dependency on OpenTelemetry version 1.3
* Added service API level tracing support
* API Review feedback
It all started with UWP. The [docs](https://docs.microsoft.com/en-us/cpp/cppcx/crt-functions-not-supported-in-universal-windows-platform-apps?view=msvc-170) say: "`Environment variables are not available to UWP apps.`". And it truly won't work, I tried: linker error, the function is simply not present.
So, for a year or so, we were `ifdef`ing everything enivoronment-related: console logger, environment credential, managed identity credential.
And then just recently we wanted to enable our CI for UWP, including tests and samples. And it required to do more ifdefs (in vcpkg, we don't build samples or tests, so that problem did not exist).
It just became more messy. Especially in samples - you can see how we would disable warning with `#pragma warning(disable : 4996)` or defining `_CRT_SECURE_NO_WARNINGS` already, but now came UWP, so we would have to add comment that `getenv()` is not available and make the sample compilation to either fail with clear message, or throw an exception. Plus we would have to detect that we are being compiled on UWP, which also adds visual clutter for reader. You can see how such an irrelevant (for a sample) thing as `getenv` was consuming more and more lines of sample code and reader's attention.
But then! I read docs on more APIs for UWP. And I noticed that on .NET you can read environment variables. So I went and checked Win32 API docs for [GetEnvironmentVariable()](https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getenvironmentvariable) - it says: "`Minimum supported client: ... UWP apps`".
**GetEnvironmentVariable() works on UWP!**
And so does `SetEnvironmentVariable()` (our tests use it, which means we can make all of them work and execute for UWP).
That's good news, but now it would probably be more code: it usually takes more lines to invoke WinAPI, it is no more an one-liner to call `getenv()/setenv()`. So, I encapsulated that into `Azure::Core::_internal::Environment::GetVariable()` and `SetVariable()`. You can see how much less ifdefs is in our code now. Not to mention it works on UWP!
Per team request, that API is SDK-internal. Samples use their own mini-helper project, `get-env-helper` that makes is so that `getenv()` works naturally on Linux and macOS, compiles without warnings and works on Win32, and compiles and works on UWP (using `GetEnvironmentStringsA()`)
If it was for me, I would just make `Azure::Core::Environment::GetVariable()` public and simplify even further, I think it would be beneficial for sample readers (you can see that extra `get-env-helper` stuff adds just a little more visual clutter, compared to nothing). But I can see reasons against that, why team did not want to do it.
* Generate map files in build
* Add .map file artifact publishing
* Add Xlinker to spelling exceptions
* Remove PublishMapFiles from clang builds
* Generate the map file artifact name
* CXX_COMPILER_ID and some logging for Clang which might be linking using the GNU linker by default
* More logging
* Move logging out of conditional
* Logging up high, use OS to determine which link flags to set
* Use linker options specific to AppleClang's context, publish map files for all platforms
Part of https://github.com/Azure/azure-sdk-for-cpp/issues/1277, checking what types of warnings the CI emits.
Verified all SDK product `.cpp`, `.hpp`, `.txt`, and `.md` files, primarily focused on azure-core. They are all clean now. There are some exceptions that needs to be added for keyvault and storage, but they are false positives, so not a concern.
> `cspell lint --config .vscode/cspell.json *.hpp */**/*.hpp`
CSpell: Files checked: 188, Issues found: 0 in 0 files
> `cspell lint --config .vscode/cspell.json *.cpp */**/*.cpp`
CSpell: Files checked: 186, Issues found: 88 in 15 files (keyvault and storage false positives, or tests)
> `cspell lint --config .vscode/cspell.json *.md */**/*.md`
CSpell: Files checked: 45, Issues found: 5 in 2 files (eng/common)
> `cspell lint --config .vscode/cspell.json *.txt */**/*.txt`
CSpell: Files checked: 44, Issues found: 0 in 0 files
> `cspell lint --config .vscode/cspell.json *.* */**/*`
CSpell: Files checked: 646, Issues found: 328 in 69 files (most of these are in eng\docs\api\assets\style.css or eng/common)
Deprioritize and ignored the errors from the test files (including test resource json files), and `eng/common` since those need to be centrally fixed.
* Get static/dynamic CRT link options in sync
* Update docs
* PR feedback
* en-us
* Another 'en-us' in a link
* MSVC_USE_STATIC_CRT
* Update README.md
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
Adding CMake module to enable/disable transport adapters
TRANSPORT ADAPTER BUILD
Default: If no option is explicitly added, curl will be used for POSIX and WIN HTTP for WIndows
Windows: Both CURL and WIN_HTTP can be build to be used.
POSIX: Only CURL is acceptable. If WIN_HTTP is set, generate step will fail for user
Defines `BUILD_WIN_HTTP_TRANSPORT_ADAPTER` and `BUILD_CURL_HTTP_TRANSPORT_ADAPTER` for source code
Fixes#350
* Add version.txt
* Add doc generation for template
* Add version.hpp parsing and update capabilities to cmake and engsys
* Get-SdkVersion -> Get-PkgVersion
* Move Update-PkgVersion.ps1 under eng/scripts
* Get-PackageVersion -> Get-PkgVersion
* Update paths, params, verbosity
* Couple fixes to output and make use of new SemVer version
* Add fallback support for verison.txt in cases where we still use it to unblock release artifact generation
* Use version information in release pipeline
* Add workaround to generate storage pipeline artifacts
* eng/scripts/
* Write warning
* Haven't released storage-file-shares yet according to releases on GitHub
* Set release date on changelog.md
* Update CHANGELOG.md to indicate this is a test release
* Remove fallback exception for storage
* Re-add Rick's suggestions
* Revert "Remove fallback exception for storage"