blob: ba82ad6790a143b5613c1a3e8ad5e46d19a01047 [file] [log] [blame]
// Copyright (C) 2014 BMW Group
// Author: Lutz Bichler (lutz.bichler@bmw.de)
// 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 <vsomeip/configuration.hpp>
#include <vsomeip/constants.hpp>
#include <vsomeip/logger.hpp>
#define DESIRED_ADDRESS "10.0.2.15"
#define DESIRED_HAS_CONSOLE true
#define DESIRED_HAS_FILE true
#define DESIRED_HAS_DLT false
#define DESIRED_LOGLEVEL "debug"
#define DESIRED_LOGFILE "/home/someip/another-file.log"
#define DESIRED_HOST "my_application"
#define DESIRED_PROTOCOL "tcp"
#define DESIRED_PORT 30666
#define DESIRED_RELIABLE_1234_0022 30506
#define DESIRED_UNRELIABLE_1234_0022 31000
#define DESIRED_RELIABLE_1234_0023 30503
#define DESIRED_UNRELIABLE_1234_0023 vsomeip::ILLEGAL_PORT
#define DESIRED_RELIABLE_2277_0022 30505
#define DESIRED_UNRELIABLE_2277_0022 31001
#define DESIRED_RELIABLE_2266_0022 30505
#define DESIRED_UNRELIABLE_2266_0022 30507
#define DESIRED_RELIABLE_4466_0321 30506
#define DESIRED_UNRELIABLE_4466_0321 30444
#define DESIRED_ADDRESS_1234_0022 "local"
#define DESIRED_MIN_INITIAL_DELAY_1234_0022 10
#define DESIRED_MAX_INITIAL_DELAY_1234_0022 100
#define DESIRED_REPETITION_BASE_DELAY_1234_0022 200
#define DESIRED_REPETITION_MAX_1234_0022 7
#define DESIRED_CYCLIC_OFFER_DELAY_1234_0022 2000
#define DESIRED_CYCLIC_REQUEST_DELAY_1234_0022 2001
#define DESIRED_ADDRESS_2277_0022 "local"
#define DESIRED_MIN_INITIAL_DELAY_2277_0022 100
#define DESIRED_MAX_INITIAL_DELAY_2277_0022 200
#define DESIRED_REPETITION_BASE_DELAY_2277_0022 300
#define DESIRED_REPETITION_MAX_2277_0022 5
#define DESIRED_CYCLIC_OFFER_DELAY_2277_0022 2500
#define DESIRED_CYCLIC_REQUEST_DELAY_2277_0022 2221
#define DESIRED_ADDRESS_4466_0321 "10.0.2.23"
template<class T>
void check(const T &_is, const T &_desired, const std::string &_test) {
if (_is == _desired) {
VSOMEIP_INFO << "Test \"" << _test << "\" succeeded.";
} else {
VSOMEIP_ERROR << "Test \"" << _test << "\" failed! (" << _is << " != " << _desired << ")";
}
}
int main(int argc, char **argv) {
std::string its_path;
int i = 0;
while (i < argc-1) {
if (std::string("--someip") == argv[i]) {
its_path = argv[i+1];
break;
}
i++;
}
if (its_path == "") {
std::cerr << "Usage: " << argv[0] << " --someip <path>" << std::endl;
return -1;
}
vsomeip::configuration *its_configuration = vsomeip::configuration::get(its_path);
// 1. Did we get a configuration object?
if (0 == its_configuration) {
VSOMEIP_ERROR << "No configuration object. Either memory overflow or loading error detected!";
return -1;
}
// 2. Check host address
boost::asio::ip::address its_address = its_configuration->get_unicast();
check<std::string>(its_address.to_string(), DESIRED_ADDRESS, "HOST ADDRESS");
// 3. Check logging
bool has_console = its_configuration->has_console_log();
bool has_file = its_configuration->has_file_log();
bool has_dlt = its_configuration->has_dlt_log();
std::string logfile = its_configuration->get_logfile();
boost::log::trivial::severity_level loglevel = its_configuration->get_loglevel();
check<bool>(has_console, DESIRED_HAS_CONSOLE, "HAS CONSOLE");
check<bool>(has_file, DESIRED_HAS_FILE, "HAS FILE");
check<bool>(has_dlt, DESIRED_HAS_DLT, "HAS DLT");
check<std::string>(logfile, DESIRED_LOGFILE, "LOGFILE");
check<std::string>(boost::log::trivial::to_string(loglevel), DESIRED_LOGLEVEL, "LOGLEVEL");
// 4. Services
uint16_t its_reliable = its_configuration->get_reliable_port(0x1234, 0x0022);
uint16_t its_unreliable = its_configuration->get_unreliable_port(0x1234, 0x0022);
check<uint16_t>(its_reliable, DESIRED_RELIABLE_1234_0022, "RELIABLE_TEST_1234_0022");
check<uint16_t>(its_unreliable, DESIRED_UNRELIABLE_1234_0022, "UNRELIABLE_TEST_1234_0022");
its_reliable = its_configuration->get_reliable_port(0x1234, 0x0023);
its_unreliable = its_configuration->get_unreliable_port(0x1234, 0x0023);
check<uint16_t>(its_reliable, DESIRED_RELIABLE_1234_0023, "RELIABLE_TEST_1234_0023");
check<uint16_t>(its_unreliable, DESIRED_UNRELIABLE_1234_0023, "UNRELIABLE_TEST_1234_0023");
its_reliable = its_configuration->get_reliable_port(0x2277, 0x0022);
its_unreliable = its_configuration->get_unreliable_port(0x2277, 0x0022);
check<uint16_t>(its_reliable, DESIRED_RELIABLE_2277_0022, "RELIABLE_TEST_2277_0022");
check<uint16_t>(its_unreliable, DESIRED_UNRELIABLE_2277_0022, "UNRELIABLE_TEST_2277_0022");
its_reliable = its_configuration->get_reliable_port(0x4466, 0x0321);
its_unreliable = its_configuration->get_unreliable_port(0x4466, 0x0321);
check<uint16_t>(its_reliable, DESIRED_RELIABLE_4466_0321, "RELIABLE_TEST_4466_0321");
check<uint16_t>(its_unreliable, DESIRED_UNRELIABLE_4466_0321, "UNRELIABLE_TEST_4466_0321");
its_reliable = its_configuration->get_reliable_port(0x2277, 0x0022);
its_unreliable = its_configuration->get_unreliable_port(0x2277, 0x0022);
check<uint16_t>(its_reliable, DESIRED_RELIABLE_2277_0022, "RELIABLE_TEST_2277_0022");
check<uint16_t>(its_unreliable, DESIRED_UNRELIABLE_2277_0022, "UNRELIABLE_TEST_2277_0022");
std::string its_address_s = its_configuration->get_unicast(0x1234, 0x0022);
std::string its_group_name = its_configuration->get_group(0x1234, 0x0022);
uint32_t its_min_initial_delay = its_configuration->get_min_initial_delay(its_group_name);
uint32_t its_max_initial_delay = its_configuration->get_max_initial_delay(its_group_name);
uint32_t its_repetition_base_delay = its_configuration->get_repetition_base_delay(its_group_name);
uint8_t its_repetition_max = its_configuration->get_repetition_max(its_group_name);
uint32_t its_cyclic_offer_delay = its_configuration->get_cyclic_offer_delay(its_group_name);
uint32_t its_cyclic_request_delay = its_configuration->get_cyclic_request_delay(its_group_name);
check<std::string>(its_address_s, DESIRED_ADDRESS_1234_0022, "ADDRESS_TEST_1234_0022");
check<uint32_t>(its_min_initial_delay, DESIRED_MIN_INITIAL_DELAY_1234_0022, "MIN_INITIAL_DELAY_TEST_1234_0022");
check<uint32_t>(its_max_initial_delay, DESIRED_MAX_INITIAL_DELAY_1234_0022, "MAX_INITIAL_DELAY_TEST_1234_0022");
check<uint32_t>(its_repetition_base_delay, DESIRED_REPETITION_BASE_DELAY_1234_0022, "REPETITION_BASE_DELAY_TEST_1234_0022");
check<uint8_t>(its_repetition_max, DESIRED_REPETITION_MAX_1234_0022, "REPETITION_MAX_TEST_1234_0022");
check<uint32_t>(its_cyclic_offer_delay, DESIRED_CYCLIC_OFFER_DELAY_1234_0022, "CYCLIC_OFFER_DELAY_TEST_1234_0022");
check<uint32_t>(its_cyclic_request_delay, DESIRED_CYCLIC_REQUEST_DELAY_1234_0022, "CYCLIC_REQUEST_DELAY_TEST_1234_0022");
its_group_name = its_configuration->get_group(0x1234, 0x0023);
its_min_initial_delay = its_configuration->get_min_initial_delay(its_group_name);
its_max_initial_delay = its_configuration->get_max_initial_delay(its_group_name);
its_repetition_base_delay = its_configuration->get_repetition_base_delay(its_group_name);
its_repetition_max = its_configuration->get_repetition_max(its_group_name);
its_cyclic_offer_delay = its_configuration->get_cyclic_offer_delay(its_group_name);
its_cyclic_request_delay = its_configuration->get_cyclic_request_delay(its_group_name);
check<uint32_t>(its_min_initial_delay, DESIRED_MIN_INITIAL_DELAY_1234_0022, "MIN_INITIAL_DELAY_TEST_1234_0023");
check<uint32_t>(its_max_initial_delay, DESIRED_MAX_INITIAL_DELAY_1234_0022, "MAX_INITIAL_DELAY_TEST_1234_0023");
check<uint32_t>(its_repetition_base_delay, DESIRED_REPETITION_BASE_DELAY_1234_0022, "REPETITION_BASE_DELAY_TEST_1234_0023");
check<uint8_t>(its_repetition_max, DESIRED_REPETITION_MAX_1234_0022, "REPETITION_MAX_TEST_1234_0023");
check<uint32_t>(its_cyclic_offer_delay, DESIRED_CYCLIC_OFFER_DELAY_1234_0022, "CYCLIC_OFFER_DELAY_TEST_1234_0023");
check<uint32_t>(its_cyclic_request_delay, DESIRED_CYCLIC_REQUEST_DELAY_1234_0022, "CYCLIC_REQUEST_DELAY_TEST_1234_0023");
its_group_name = its_configuration->get_group(0x2277, 0x0022);
its_min_initial_delay = its_configuration->get_min_initial_delay(its_group_name);
its_max_initial_delay = its_configuration->get_max_initial_delay(its_group_name);
its_repetition_base_delay = its_configuration->get_repetition_base_delay(its_group_name);
its_repetition_max = its_configuration->get_repetition_max(its_group_name);
its_cyclic_offer_delay = its_configuration->get_cyclic_offer_delay(its_group_name);
its_cyclic_request_delay = its_configuration->get_cyclic_request_delay(its_group_name);
check<uint32_t>(its_min_initial_delay, DESIRED_MIN_INITIAL_DELAY_2277_0022, "MIN_INITIAL_DELAY_TEST_2277_0022");
check<uint32_t>(its_max_initial_delay, DESIRED_MAX_INITIAL_DELAY_2277_0022, "MAX_INITIAL_DELAY_TEST_2277_0022");
check<uint32_t>(its_repetition_base_delay, DESIRED_REPETITION_BASE_DELAY_2277_0022, "REPETITION_BASE_DELAY_TEST_2277_0022");
check<uint8_t>(its_repetition_max, DESIRED_REPETITION_MAX_2277_0022, "REPETITION_MAX_TEST_2277_0022");
check<uint32_t>(its_cyclic_offer_delay, DESIRED_CYCLIC_OFFER_DELAY_2277_0022, "CYCLIC_OFFER_DELAY_TEST_2277_0022");
check<uint32_t>(its_cyclic_request_delay, DESIRED_CYCLIC_REQUEST_DELAY_2277_0022, "CYCLIC_REQUEST_DELAY_TEST_2277_0022");
its_group_name = its_configuration->get_group(0x2266, 0x0022);
its_min_initial_delay = its_configuration->get_min_initial_delay(its_group_name);
its_max_initial_delay = its_configuration->get_max_initial_delay(its_group_name);
its_repetition_base_delay = its_configuration->get_repetition_base_delay(its_group_name);
its_repetition_max = its_configuration->get_repetition_max(its_group_name);
its_cyclic_offer_delay = its_configuration->get_cyclic_offer_delay(its_group_name);
its_cyclic_request_delay = its_configuration->get_cyclic_request_delay(its_group_name);
check<uint32_t>(its_min_initial_delay, DESIRED_MIN_INITIAL_DELAY_2277_0022, "MIN_INITIAL_DELAY_TEST_2266_0022");
check<uint32_t>(its_max_initial_delay, DESIRED_MAX_INITIAL_DELAY_2277_0022, "MAX_INITIAL_DELAY_TEST_2266_0022");
check<uint32_t>(its_repetition_base_delay, DESIRED_REPETITION_BASE_DELAY_2277_0022, "REPETITION_BASE_DELAY_TEST_2266_0022");
check<uint8_t>(its_repetition_max, DESIRED_REPETITION_MAX_2277_0022, "REPETITION_MAX_TEST_2266_0022");
check<uint32_t>(its_cyclic_offer_delay, DESIRED_CYCLIC_OFFER_DELAY_2277_0022, "CYCLIC_OFFER_DELAY_TEST_2266_0022");
check<uint32_t>(its_cyclic_request_delay, DESIRED_CYCLIC_REQUEST_DELAY_2277_0022, "CYCLIC_REQUEST_DELAY_TEST_2266_0022");
its_address_s = its_configuration->get_unicast(0x4466, 0x0321);
check<std::string>(its_address_s, DESIRED_ADDRESS_4466_0321, "ADDRESS_TEST_4466_0321");
// 5. Service discovery
std::string protocol = its_configuration->get_service_discovery_protocol();
uint16_t port = its_configuration->get_service_discovery_port();
check<std::string>(protocol, DESIRED_PROTOCOL, "SERVICE DISCOVERY PROTOCOL");
check<uint16_t>(port, DESIRED_PORT, "SERVICE DISCOVERY PORT");
return 0;
}