HttpRequestorTest.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <AzTest/AzTest.h>
  9. #include <AzCore/UnitTest/TestTypes.h>
  10. #include <AzCore/std/parallel/atomic.h>
  11. #include <AzCore/std/parallel/condition_variable.h>
  12. #include "HttpRequestManager.h"
  13. class HttpTest
  14. : public UnitTest::LeakDetectionFixture
  15. {
  16. };
  17. TEST_F(HttpTest, HttpRequesterTest)
  18. {
  19. HttpRequestor::Manager httpRequestManager;
  20. // to wait for test to complete
  21. AZStd::mutex requestMutex;
  22. AZStd::condition_variable requestConditionVar;
  23. AZStd::string resultData = {};
  24. AZStd::atomic<Aws::Http::HttpResponseCode> resultCode = Aws::Http::HttpResponseCode::REQUEST_NOT_MADE;
  25. {
  26. AZStd::unique_lock<AZStd::mutex> lock(requestMutex);
  27. requestConditionVar.wait_for(lock, AZStd::chrono::milliseconds(10));
  28. }
  29. httpRequestManager.AddTextRequest(HttpRequestor::TextParameters(
  30. "https://httpbin.org/ip",
  31. Aws::Http::HttpMethod::HTTP_GET,
  32. [&resultData, &resultCode, &requestConditionVar](const AZStd::string& data, Aws::Http::HttpResponseCode code)
  33. {
  34. resultData = data;
  35. resultCode = code;
  36. requestConditionVar.notify_all();
  37. }));
  38. {
  39. AZStd::unique_lock<AZStd::mutex> lock(requestMutex);
  40. requestConditionVar.wait_for(lock, AZStd::chrono::milliseconds(5000));
  41. }
  42. EXPECT_NE(Aws::Http::HttpResponseCode::REQUEST_NOT_MADE, resultCode);
  43. }
  44. AZ_UNIT_TEST_HOOK(DEFAULT_UNIT_TEST_ENV);