summaryrefslogtreecommitdiff
path: root/src/components/application_manager/test/zero_request_amount_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/test/zero_request_amount_test.cc')
-rw-r--r--src/components/application_manager/test/zero_request_amount_test.cc169
1 files changed, 169 insertions, 0 deletions
diff --git a/src/components/application_manager/test/zero_request_amount_test.cc b/src/components/application_manager/test/zero_request_amount_test.cc
new file mode 100644
index 0000000000..0f52639575
--- /dev/null
+++ b/src/components/application_manager/test/zero_request_amount_test.cc
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2015, Ford Motor Company
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of the Ford Motor Company nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <string>
+#include <algorithm>
+#include "gtest/gtest.h"
+
+#include "application_manager/request_controller.h"
+#include "application_manager/commands/command_request_impl.h"
+#include "application_manager/application_manager_impl.h"
+#include "application_manager/message_helper.h"
+#include "application_manager/commands/mobile/put_file_request.h"
+#include "application_manager/commands/mobile/register_app_interface_request.h"
+#include "application_manager/commands/mobile/unregister_app_interface_request.h"
+#include "smart_objects/smart_object.h"
+#include "interfaces/MOBILE_API.h"
+
+namespace test {
+namespace components {
+namespace application {
+using namespace ::profile;
+
+using namespace application_manager::request_controller;
+using namespace application_manager;
+using namespace NsSmartDeviceLink::NsSmartObjects;
+
+commands::Command* RegisterApplication() {
+ SmartObjectSPtr resultsmart =
+ application_manager::MessageHelper::CreateModuleInfoSO(1);
+ SmartObject& test_message = *resultsmart;
+ uint32_t connection_key = 0;
+ test_message[strings::params][strings::connection_key] = connection_key;
+ test_message[strings::msg_params][strings::language_desired] = 0;
+ test_message[strings::msg_params][strings::hmi_display_language_desired] = 0;
+ commands::Command* testregCommand =
+ new commands::RegisterAppInterfaceRequest(resultsmart);
+ return testregCommand;
+}
+
+commands::Command* UnregisterApplication() {
+ SmartObjectSPtr resultsmart =
+ application_manager::MessageHelper::CreateModuleInfoSO(2);
+ commands::Command* testregCommand =
+ new commands::UnregisterAppInterfaceRequest(resultsmart);
+ return testregCommand;
+}
+
+commands::Command* PutFileCommand(uint32_t& correlation_id,
+ uint32_t& connection_key) {
+ SmartObjectSPtr resultsmart =
+ application_manager::MessageHelper::CreateModuleInfoSO(32);
+ SmartObject& test_message = *resultsmart;
+ test_message[strings::params][strings::correlation_id] = correlation_id;
+ test_message[strings::params][strings::connection_key] = connection_key;
+ test_message[strings::msg_params][strings::sync_file_name] = "file.png";
+ test_message[strings::msg_params][strings::file_type] =
+ mobile_apis::FileType::GRAPHIC_PNG;
+
+ commands::Command* testCommand = new commands::PutFileRequest(resultsmart);
+ return testCommand;
+}
+
+TEST(RequestControlTest, ZeroValuePendingRequestsAmount) {
+ // Default value
+ const uint32_t big_count_of_requests_for_test_ =
+ 10; // bigger than pending_requests_amount
+ uint32_t correlation_id = 0;
+ uint32_t connection_key = 0;
+ RequestController::TResult result;
+ RequestController request_ctrl_;
+
+ commands::Command* reg = RegisterApplication();
+ request_ctrl_.addMobileRequest(reg, mobile_apis::HMILevel::HMI_FULL);
+
+ for (uint32_t i = 0; i < big_count_of_requests_for_test_; ++i) {
+ correlation_id = i;
+ commands::Command* testCommand =
+ PutFileCommand(correlation_id, connection_key);
+ result = request_ctrl_.addMobileRequest(testCommand,
+ mobile_apis::HMILevel::HMI_FULL);
+ EXPECT_EQ(RequestController::SUCCESS, result);
+ }
+
+ commands::Command* unreg = UnregisterApplication();
+ request_ctrl_.addMobileRequest(unreg, mobile_apis::HMILevel::HMI_FULL);
+}
+
+TEST(RequestControlTest, ZeroValueAppRequestsTimeScale) {
+ // Default value
+ const uint32_t big_count_of_requests_for_test_ =
+ 10; // bigger than pending_requests_amount
+ uint32_t correlation_id = 0;
+ uint32_t connection_key = 0;
+ RequestController::TResult result;
+ RequestController request_ctrl_;
+
+ commands::Command* reg = RegisterApplication();
+ request_ctrl_.addMobileRequest(reg, mobile_apis::HMILevel::HMI_FULL);
+
+ for (uint32_t i = 0; i < big_count_of_requests_for_test_; ++i) {
+ correlation_id = i;
+ commands::Command* testCommand =
+ PutFileCommand(correlation_id, connection_key);
+ result = request_ctrl_.addMobileRequest(testCommand,
+ mobile_apis::HMILevel::HMI_FULL);
+ EXPECT_EQ(RequestController::SUCCESS, result);
+ }
+
+ commands::Command* unreg = UnregisterApplication();
+ request_ctrl_.addMobileRequest(unreg, mobile_apis::HMILevel::HMI_FULL);
+}
+
+TEST(RequestControlTest, ZeroValueAppTimeScaleMaxRequests) {
+ // Default value
+ const uint32_t big_count_of_requests_for_test_ =
+ 10; // bigger than pending_requests_amount
+ uint32_t correlation_id = 0;
+ uint32_t connection_key = 0;
+ RequestController::TResult result;
+ RequestController request_ctrl_;
+
+ commands::Command* reg = RegisterApplication();
+ request_ctrl_.addMobileRequest(reg, mobile_apis::HMILevel::HMI_FULL);
+
+ for (uint32_t i = 0; i < big_count_of_requests_for_test_; ++i) {
+ correlation_id = i;
+ commands::Command* testCommand =
+ PutFileCommand(correlation_id, connection_key);
+ result = request_ctrl_.addMobileRequest(testCommand,
+ mobile_apis::HMILevel::HMI_FULL);
+ EXPECT_EQ(RequestController::SUCCESS, result);
+ }
+
+ commands::Command* unreg = UnregisterApplication();
+ request_ctrl_.addMobileRequest(unreg, mobile_apis::HMILevel::HMI_FULL);
+}
+
+} // namespace application
+} // namespace components
+} // namespace test