summaryrefslogtreecommitdiff
path: root/test/offer_tests/offer_test_big_sd_msg_client.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/offer_tests/offer_test_big_sd_msg_client.cpp')
-rw-r--r--test/offer_tests/offer_test_big_sd_msg_client.cpp235
1 files changed, 0 insertions, 235 deletions
diff --git a/test/offer_tests/offer_test_big_sd_msg_client.cpp b/test/offer_tests/offer_test_big_sd_msg_client.cpp
deleted file mode 100644
index cf00de7..0000000
--- a/test/offer_tests/offer_test_big_sd_msg_client.cpp
+++ /dev/null
@@ -1,235 +0,0 @@
-// Copyright (C) 2014-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-#include <chrono>
-#include <condition_variable>
-#include <iomanip>
-#include <iostream>
-#include <sstream>
-#include <thread>
-#include <map>
-#include <algorithm>
-#include <atomic>
-
-#include <gtest/gtest.h>
-
-#include <vsomeip/vsomeip.hpp>
-#include "../../implementation/logging/include/logger.hpp"
-#include "../../implementation/configuration/include/internal.hpp"
-
-#include "offer_test_globals.hpp"
-
-class offer_test_big_sd_msg_client {
-public:
- offer_test_big_sd_msg_client(struct offer_test::service_info _service_info) :
- service_info_(_service_info),
- app_(vsomeip::runtime::get()->create_application("offer_test_big_sd_msg_client")),
- service_available_(false),
- wait_until_registered_(true),
- wait_until_service_available_(true),
- wait_until_subscribed_(true),
- wait_for_stop_(true),
- stop_thread_(std::bind(&offer_test_big_sd_msg_client::wait_for_stop, this)),
- send_thread_(std::bind(&offer_test_big_sd_msg_client::send, this)) {
- if (!app_->init()) {
- ADD_FAILURE() << "Couldn't initialize application";
- return;
- }
- app_->register_state_handler(
- std::bind(&offer_test_big_sd_msg_client::on_state, this,
- std::placeholders::_1));
-
- app_->register_message_handler(vsomeip::ANY_SERVICE,
- vsomeip::ANY_INSTANCE, vsomeip::ANY_METHOD,
- std::bind(&offer_test_big_sd_msg_client::on_message, this,
- std::placeholders::_1));
-
- // register availability for all other services and request their event.
- app_->register_availability_handler(vsomeip::ANY_SERVICE,
- vsomeip::ANY_INSTANCE,
- std::bind(&offer_test_big_sd_msg_client::on_availability, this,
- std::placeholders::_1, std::placeholders::_2,
- std::placeholders::_3), 0x1, 0x1);
- std::set<vsomeip::eventgroup_t> its_eventgroups;
- its_eventgroups.insert(offer_test::big_msg_eventgroup_id);
- for (std::uint16_t s = 1; s <= offer_test::big_msg_number_services; s++) {
- app_->request_service(s,0x1,0x1,0x1,false);
- app_->request_event(s,0x1, offer_test::big_msg_event_id,
- its_eventgroups, false);
- app_->subscribe(s, 0x1,offer_test::big_msg_eventgroup_id, 0x1,
- vsomeip::subscription_type_e::SU_RELIABLE_AND_UNRELIABLE,
- offer_test::big_msg_event_id);
- services_available_subribed_[s] = std::make_pair(false,false);
- app_->register_subscription_status_handler(s,0x1,
- offer_test::big_msg_eventgroup_id,
- offer_test::big_msg_event_id,
- std::bind(&offer_test_big_sd_msg_client::subscription_status_changed, this,
- std::placeholders::_1, std::placeholders::_2,
- std::placeholders::_3, std::placeholders::_4, std::placeholders::_5));
- }
- app_->start();
- }
-
- ~offer_test_big_sd_msg_client() {
- send_thread_.join();
- stop_thread_.join();
- }
-
- void on_state(vsomeip::state_type_e _state) {
- VSOMEIP_WARNING << "Application " << app_->get_name() << " is "
- << (_state == vsomeip::state_type_e::ST_REGISTERED ?
- "registered." : "deregistered.");
-
- if (_state == vsomeip::state_type_e::ST_REGISTERED) {
- std::lock_guard<std::mutex> its_lock(mutex_);
- wait_until_registered_ = false;
- condition_.notify_one();
- }
- }
-
- void on_availability(vsomeip::service_t _service,
- vsomeip::instance_t _instance, bool _is_available) {
- VSOMEIP_DEBUG << "Service [" << std::setw(4)
- << std::setfill('0') << std::hex << _service << "." << _instance
- << "] is " << (_is_available ? "available":"not available") << ".";
-
- std::lock_guard<std::mutex> its_lock(mutex_);
- if(_is_available) {
- auto found_service = services_available_subribed_.find(_service);
- if (found_service != services_available_subribed_.end()) {
- found_service->second.first = true;
- if (std::all_of(services_available_subribed_.cbegin(),
- services_available_subribed_.cend(),
- [](const services_available_subribed_t::value_type& v) {
- return v.second.first;
- }
- )) {
- VSOMEIP_WARNING << "************************************************************";
- VSOMEIP_WARNING << "All services available!";
- VSOMEIP_WARNING << "************************************************************";
- wait_until_service_available_ = false;
- condition_.notify_one();
- }
- }
- }
- }
-
- void subscription_status_changed(const vsomeip::service_t _service,
- const vsomeip::instance_t _instance,
- const vsomeip::eventgroup_t _eventgroup,
- const vsomeip::event_t _event,
- const uint16_t _error) {
- EXPECT_EQ(0x1, _instance);
- EXPECT_EQ(offer_test::big_msg_eventgroup_id, _eventgroup);
- EXPECT_EQ(offer_test::big_msg_event_id, _event);
- VSOMEIP_DEBUG << "Service [" << std::setw(4)
- << std::setfill('0') << std::hex << _service << "." << _instance
- << "] has " << (!_error ? "sent subscribe ack":" sent subscribe_nack") << ".";
- if (_error == 0x0 /*OK*/) {
-
- std::lock_guard<std::mutex> its_lock(mutex_);
- auto found_service = services_available_subribed_.find(_service);
- if (found_service != services_available_subribed_.end()) {
- found_service->second.second = true;
- if (std::all_of(services_available_subribed_.cbegin(),
- services_available_subribed_.cend(),
- [](const services_available_subribed_t::value_type& v) {
- return v.second.second;
- }
- )) {
- VSOMEIP_WARNING << "************************************************************";
- VSOMEIP_WARNING << "All subscription were acknowledged!";
- VSOMEIP_WARNING << "************************************************************";
- wait_until_subscribed_ = false;
- condition_.notify_one();
- }
- }
- }
- };
-
- void on_message(const std::shared_ptr<vsomeip::message> &_message) {
- if (_message->get_message_type() == vsomeip::message_type_e::MT_RESPONSE) {
- on_response(_message);
- }
- }
-
- void on_response(const std::shared_ptr<vsomeip::message> &_message) {
- EXPECT_EQ(0x1, _message->get_service());
- EXPECT_EQ(service_info_.shutdown_method_id, _message->get_method());
- EXPECT_EQ(0x1, _message->get_instance());
- if(service_info_.shutdown_method_id == _message->get_method()) {
- std::lock_guard<std::mutex> its_lock(stop_mutex_);
- wait_for_stop_ = false;
- VSOMEIP_INFO << "going down";
- stop_condition_.notify_one();
- }
- }
-
- void send() {
- std::unique_lock<std::mutex> its_lock(mutex_);
- while (wait_until_registered_) {
- condition_.wait(its_lock);
- }
-
- while (wait_until_service_available_) {
- condition_.wait(its_lock);
- }
-
- while (wait_until_subscribed_) {
- condition_.wait(its_lock);
- }
-
- std::this_thread::sleep_for(std::chrono::seconds(5));
- std::shared_ptr<vsomeip::message> its_req = vsomeip::runtime::get()->create_request();
- its_req->set_service(1);
- its_req->set_instance(1);
- its_req->set_interface_version(0x1);
- its_req->set_method(service_info_.shutdown_method_id);
- app_->send(its_req);
- }
-
- void wait_for_stop() {
- std::unique_lock<std::mutex> its_lock(stop_mutex_);
- while (wait_for_stop_) {
- stop_condition_.wait(its_lock);
- }
- VSOMEIP_INFO << "going down";
- app_->clear_all_handler();
- app_->stop();
- }
-
-private:
- struct offer_test::service_info service_info_;
- std::shared_ptr<vsomeip::application> app_;
- bool service_available_;
-
- bool wait_until_registered_;
- bool wait_until_service_available_;
- bool wait_until_subscribed_;
- std::mutex mutex_;
- std::condition_variable condition_;
-
- bool wait_for_stop_;
- std::mutex stop_mutex_;
- std::condition_variable stop_condition_;
-
- typedef std::map<vsomeip::service_t,std::pair<bool, bool>> services_available_subribed_t;
- services_available_subribed_t services_available_subribed_;
- std::thread stop_thread_;
- std::thread send_thread_;
-};
-
-TEST(someip_offer_test_big_sd_msg, subscribe_or_call_method_at_service)
-{
- offer_test_big_sd_msg_client its_sample(offer_test::service);
-}
-
-#ifndef _WIN32
-int main(int argc, char** argv)
-{
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}
-#endif