Commit Graph

223 Commits

Author SHA1 Message Date
George Arama
c449e3f9bc
2502 exceptions (#2529)
* first pass

* move exception creation from keyvault to core

* merge fix

* format

* fix includes location and containers

* remove default constructor

* to trigger build

* undo change

* uncomment

* Update sdk/core/azure-core/test/ut/exception_test.cpp

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

Co-authored-by: Rick Winter <rick.winter@microsoft.com>
2021-07-01 04:17:15 +00:00
Wes Haggard
015c34a029
Update links from master to main (#2488)
* Update links from master to main

* Upate other references from master to main
2021-06-24 22:27:14 -07:00
George Arama
70c3e72763
Add Unit Tests for EnvironmentLogLevelListener (#2454)
* first UT

* formatting

* unused error

* putenv

* some refactoring

* formatting

* casting

* again

* Update sdk/core/azure-core/test/ut/environmentLogLevelListener_test.cpp

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

* some refactoring

* more tests

* format

* no env test

* put back missing empty line

* Update sdk/core/azure-core/test/ut/environmentLogLevelListener_test.cpp

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

* PR comments

* fix signed/unsigned mismatch that causes ci build to fail

Co-authored-by: Rick Winter <rick.winter@microsoft.com>
2021-06-22 21:51:41 +00:00
Victor Vazquez
81e0d5aab0
use size_t for buffers in libcurl internal impl (#2376)
* use size_t for buffers in libcurl internal impl
2021-06-14 14:28:36 -07:00
Ahson Khan
479134595b
Consolidate the use of std::size_t and always use size_t instead, since it is a "primitive" type. (#2415)
* Consolidate the use of std::size_t and always use size_t instead, since
it is a type.

* Fix clang formatting.
2021-06-09 11:09:54 -07:00
Victor Vazquez
da252f76f7
remove duplicated headers and update tests (#2369) 2021-06-01 10:02:55 -07:00
Anton Kolesnyk
a742608406
Catch as const whenever possible (#2361)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-05-28 01:52:59 -07:00
Anton Kolesnyk
cb862f56b5
Add x-ms-request-id to a default list of unredacted log headers (#2359)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-05-28 01:51:53 -07:00
Victor Vazquez
73d5ba0d2d
Doc changes for HTTP and removing the "More" link (#2332)
* update docs from classes

* remove more link from classes part II

* http docs

* Update sdk/core/azure-core/inc/azure/core/http/http.hpp

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

* Update cmake-modules/AzureDoxygen.cmake

* doc updates

* update RFC

Co-authored-by: Rick Winter <rick.winter@microsoft.com>
2021-05-25 14:02:14 -07:00
Victor Vazquez
88dc1ac8cf
adding Test file sufix to all tests (#2337)
* azure core

* perf

* identity

* keyvault

* storage
2021-05-25 11:15:30 -07:00
Ahson Khan
75d17550f2
Add argument validation to public APIs. Throw or Precondition/assert failure? (#2189)
* Add argument validation to public APIs.

* Add exception to spell check.

* Revert "Add exception to spell check."

This reverts commit be54b614cc1427ddb2f154f5927f4e612a4a1e28.

* Turn invalid arg excetion to a precondition assert for bodystream read.

* User assert in more places within body_stream.

* Update valiation for hashing and bodystream and update tests.

* Update  precondition test for size_t and add null ptr check

* Fix clang formatting.

* Update changelog and fix up the message for size_t validation in hash.

* Address PR feedback.

* More PR feedback.

* Remove unnecessary comment from test.

* Fix clang format.
2021-05-18 20:10:14 -07:00
Ahson Khan
65821ec115
Use size_t for buffers representing data in memory rather than int64_t. (#2285)
* Use size_t for buffers representing data in memory rather than int64_t.

* add a cast from size_t to int64_t

* Address feedback - OnRead return size_t.

* Change Read and ReadToCount to return size_t instead of int64_t.

* Update curl usage and ReadFromSocket.

* Missed one signature.

* Update changelog.

* Update transport layer to use the right size_t size.

* Fix curl use of MBS.

* Cast to size_t since that's all memory stream supprts.

* Add static casts to size_t as temporary workarounds.

* update storage tests.

* More test fixes.
2021-05-18 18:51:20 -07:00
Ahson Khan
ff126f1eb7
Explore removing use of int within header files to align with guidelines. (#2276)
Part of https://github.com/Azure/azure-sdk-for-cpp/issues/2226

Trying to focus mainly on headers, depending on the conclusion, we'd want to make cpp file changes as well, but that can be done later.

Assuming this is the guideline we want:
https://azure.github.io/azure-sdk/cpp_implementation.html#integer-sizes

![image](https://user-images.githubusercontent.com/6527137/118341184-00d52580-b4d3-11eb-8e96-937cb5899c92.png)

Some places that we still use `int` is for things like unix file desriptor or where APIs like BIO_read from OpenSSL returns an int. Are those exceptions OK?
0b64ab3845/sdk/core/azure-core/inc/azure/core/io/body_stream.hpp (L166)
308e5363ad/sdk/core/azure-core/src/base64.cpp (L87)
2021-05-18 20:49:53 +00:00
Anton Kolesnyk
898a8aee84
Remove Azure::Core::Diagnostics::Logger::Listener typedef (#2282) 2021-05-18 11:43:11 -07:00
Anton Kolesnyk
00dfcc2beb
Doxygen comment updates (#2280) 2021-05-17 17:05:06 -07:00
Victor Vazquez
e4a18b5eb3
Fault injection test (#2265)
* missing line for single docs

* format

* fault injection test

* winHttp

* storage blobs client with fault injector
2021-05-17 10:34:50 -07:00
Anton Kolesnyk
efe4772acb
Update upper/lower/other casing (#2267)
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
2021-05-14 12:54:16 -07:00
Anton Kolesnyk
019db35863
Add final specifier (#2237) 2021-05-10 11:57:40 -07:00
Ahson Khan
23136690af
Add a key type pair context precondition test. (#2223)
* Add a key type pair context precondition test.

* Fixup test since after overriding the key type getting an int value should fail.
2021-05-07 16:22:01 -07:00
Ahson Khan
fd9c3e5ebb
Fix true spelling errors across all source and header files within the SDK and add exceptions for false positives. (#2209)
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.
2021-05-07 21:04:58 +00:00
Anton Kolesnyk
43ee2ee192
Additional tests for Nullable<T> (#2215)
Closes #1786
2021-05-07 16:11:41 +00:00
Victor Vazquez
08c8147f54
Update abort() for AZURE_ASSERT (#2170)
* remove abort from Core
2021-05-06 15:30:46 -07:00
Victor Vazquez
8e4a1ae59b
Rename download via stream (#2196)
rename parameter for download stream
2021-05-06 02:42:38 +00:00
Ahson Khan
7f0792f114
Add transport layer unit tests with non-ascii host strings as input. (#2198)
* Add transport layer unit tests with non-ascii host strings as input.

* Update test string.
2021-05-05 17:18:46 -07:00
Victor Vazquez
10d244e511
LRO operation resume token - following factory method design (#2195)
* Add tests for resume token pattern

* update deleteKeyOperation
2021-05-05 23:14:31 +00:00
Anton Kolesnyk
d69742ae10
Context::GetApplicationContext() => Context::ApplicationContext (#2178) 2021-05-04 15:26:33 -07:00
Victor Vazquez
84560cb5f7
Md5 enhance impl and test (#2157)
* re-design hash md5 header and implementation
2021-05-04 00:11:53 +00:00
Anton Kolesnyk
2c050661aa
Add HttpMethod extensible enum tests (#2175) 2021-04-29 12:47:41 -07:00
Anton Kolesnyk
cd36753d76
PackageVersion made constexpr and moved to src/package_version.hpp (#2166) 2021-04-28 17:34:24 -07:00
Victor Vazquez
3e1af936d9
Remove thread detach (#2105) 2021-04-17 21:36:24 -07:00
Victor Vazquez
668d343dde
Do not reuse connection with diff port (#2122)
* Do not reuse connection with diff port
2021-04-16 23:11:11 +00:00
Ahson Khan
5715f750e1
Disable warning C6326 (potential comparison of a constant) in recently added azure-core tests. (#2090) 2021-04-09 06:31:59 +00:00
Victor Vazquez
5de76e7a21
Fix for Azure Core with libcurl. clean up and global clean up (#1500)
make SDK to call global_init and global_cleanup
2021-04-08 22:55:26 +00:00
Ahson Khan
4ef65aa00f
Add new header files to the simplified header and update tests. (#2070)
* Add new header files to the simplifie header and update tests.

* Add token credential options header to the simplified header

* Simplify the test.
2021-04-07 21:28:22 +00:00
Victor Vazquez
17c17c9b69
Update ssl name (#2066)
* raname

* changelog
2021-04-07 18:25:13 +00:00
Ahson Khan
4db9a563e7
Removed Azure::Core::Context::HasKey() and add TryGetValue() instead (#2037)
~@vhvb1989 This change is blocked until after the retry policy implementation has been updated. Let me know once you have that PR available.~

Fixes https://github.com/Azure/azure-sdk-for-cpp/issues/2036
2021-04-07 03:23:34 +00:00
Ahson Khan
304300c928
Removed GetUrlWithoutQuery() and GetUrlAuthorityWithScheme() from Azure::Core::Url and added GetScheme(). (#2055)
* Removed GetUrlWithoutQuery() and GetUrlAuthorityWithScheme() from
Azure::Core::Url and added GetScheme().

* Address PR feedback.
2021-04-07 01:48:33 +00:00
Victor Vazquez
cb39ec302c
Update RetryPolicy logic to use only one context (#2047)
* progress

* missing

* fix comp errors

* remove comments

* Bad merge with my recent changes to master

* Format

Co-authored-by: Ahson Khan <ahson_ahmedk@yahoo.com>
Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
2021-04-05 19:50:17 -07:00
Anton Kolesnyk
3b36c9091a
Add policy tests (#2009)
Closes #271
Closes #1570
Closes #1596
2021-04-06 02:10:30 +00:00
Ahson Khan
93bc8c4218
Make the Context parameter optional in BodyStream public Read methods. (#2046)
* Make the Context parameter optional in BodyStream public Read methods.

* Add some basic unit tests.

* Fix end of line.
2021-04-06 01:40:14 +00:00
Ahson Khan
d638d1ff3d
Move package version to details, and rename VersionString() to ToString(). (#2042) 2021-04-06 00:50:25 +00:00
Ahson Khan
63b2d21bc6
Renamed Azure::Nullable<T>::GetValue() to Value(). (#2034)
* Renamed `Azure::Nullable<T>::GetValue()` to `Value()`.

* Update clang formatting.
2021-04-05 15:42:14 -07:00
Anton Kolesnyk
c5ddbbc430
Changes around context expiration naming and types (#2033)
This would unblock #2010.

Closes #2032.
Closes #1880.

I know this comes out of the blue, but it seems to me the right change to do. This is a proposal, let me know what you think.

First, I started with the fact that we need to make `CancelWhen()` public.
Then, I realized that I don't like the `CancelWhen()` naming. `CancelAt()` is better?
But `CancelAt()` sounds like an order to do something, not as getter.
So, it should be named `Get...`. `GetCancelWhen()`? `GetCancelAt()`? Sounds strage.

`GetDeadline()` - not bad, bit it is not that clear, what the deadline is.
And I looked at the `WithDeadline()` method. And in comment, the first line is `@brief Create a context with expiration.`.
"Expiration" sounds better explanation for the essense of the "deadline".

So, I went with `GetExpiration()`. I think "Expiration" is also a better name, because should we want to add the method called "bool IsExpired()", it comes naturally using the existing terminology, sounds better than "`IsPastDeadline()`".

Next thing - if we have "`GetExpiration()`", it is strange to have a method called `Get()`. So, we have `WithExpiration()` and `WithValue()`. So, it sounds like the getter should be called `GetValue()`. I did that rename as well.

Then, I looked at "`With...`" method naming. It is a factory method. If for getters we have `Get`, then for factory methods we should have `Create`. So, I renamed `WithExpiration()` and `WithValue()` to `CreateWithExpiration()` and `CreateWithValue()`.

Then I looked at `Context::time_point` typedef. First, in general, if we can avoid public typedefs, it is better, because we don't need to document them and worry if we broke client code when we change them.
Second, it is strange that we use `Azure::DateTime` everywhere, but not in context.

So, I replaced it with `Azure::DateTime`. It is good because it allows us to drop to/from epoch conversions (#1880), and really all that extra dance we do to cast to representation and back to datetime is the ways to stay within legal type casting limits of compiler type declaration, while in reality there isn't much that is happening in the code: `DateTime` is essentially an `int64`, and with all these conversions to epoch time, then to representation and back, compiler does not generate real code, it still operates with that only `int64`.

Why we cast to `DateTime::rep` and back at all? Context stores it as `atomic`, and I am not questioning that. You can't get `std::atomic<DateTime>` today explicitly, so we "extract" representation (`int64`) and store it as `std::atomic<DateTime::rep>`, which is the same thing as `std::atomic_int64`.

-- Update: --
1. "Expiration" => "Deadline" (Jeffrey's request)
2. Added `Context::HasExpiration()` (response to Jinming) // plus, we do have `HasValue()` so why not have `HasDeadline()`.
3. `WithDeadline()`, `WithValue` => Two overloads of `CreateChildContext()` (my own initiative).

-- Update 2: --
`CreateChildContext()` => `WithDeadline()`, `WithValue`

-- Update 3: --
Removed `HasDeadline()`
2021-04-05 21:24:40 +00:00
Anton Kolesnyk
a7fdea42e6
Introduce Context::Key with pointer comparison speeds (#1988) 2021-04-05 11:26:50 -07:00
Ahson Khan
8095d85e67
Simplify the public surface design of Response<T> for usability. (#1974)
* Simplify the design of Response<T> for usability.

* Revert changes to operation<T> to keep the changes single purpose.

* Update many of the response<T> call sites based on API changes.

* Update all remaining callsites and fix clang formatting.

* Update Response<T> documentation.

* Fix clang formatting.

* Remove status code from the Response<T> public surface area.

* Update the changelog.

* Fix up CL wording and remove commented-out change to operation<T>.

* Fixed test by actually calling a method.

* Fix up key vault test by not taking ownership of raw response.

* Fix call to get status code in test.

* Add new line at end of keyvualt live test file.

* Make a local copy within keyvault pipeline to avoid compilers re-ordering things.

* Make the fixes to the recent keyvault changes.

* Fix key vault pipeline to address ImportKey test failure
2021-04-01 00:50:04 +00:00
Victor Vazquez
41be347002
remove-http-response-apis (#1998)
* remove-http-response-apis
2021-03-31 23:53:38 +00:00
Victor Vazquez
bae16450c9
update 3rd party httpbin server for inhouse instance (#1935)
* update 3rd party httpbin server for inhouse instance
2021-03-31 16:35:03 -07:00
Anton Kolesnyk
ddd7a093f4
Move policies to internal (#1985) 2021-03-31 12:56:33 -07:00
Victor Vazquez
7490709db4
test for Context heap integrity (#1999) 2021-03-30 18:52:47 +00:00
Anton Kolesnyk
0665efe0fe
unique_ptr Get() => Extract() || Send() || ExtractOrCreate() (#1984) 2021-03-30 10:17:24 -07:00