-
Notifications
You must be signed in to change notification settings - Fork 391
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
iox-#2330 Refactor func for platform
- Loading branch information
1 parent
a5f4534
commit 510c6c4
Showing
8 changed files
with
304 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
129 changes: 129 additions & 0 deletions
129
iceoryx_posh/test/moduletests/test_roudi_system_manager.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
// Copyright (c) 2019 - 2020 by Robert Bosch GmbH. All rights reserved. | ||
// Copyright (c) 2020 - 2021 by Apex.AI Inc. All rights reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
// | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
#include "iceoryx_posh/internal/roudi/roudi.hpp" | ||
#include <gtest/gtest.h> | ||
|
||
#if defined(_WIN32) || defined(_WIN64) | ||
#define GTEST_SKIP_FOR_WINDOWS() GTEST_SKIP() << "Skipping this test on Windows." | ||
#else | ||
#define GTEST_SKIP_FOR_WINDOWS() (void)0 | ||
#endif | ||
|
||
#ifdef USE_SYSTEMD_TEST | ||
#define GTEST_SKIP_NOT_SUPPORT_SYSTEMD() (void)0 | ||
#else | ||
#define GTEST_SKIP_NOT_SUPPORT_SYSTEMD() GTEST_SKIP() << "Skipping this test when systemd is not use." | ||
#endif | ||
|
||
|
||
TEST(RoudiSystemD, CreateObject) | ||
{ | ||
::testing::Test::RecordProperty("TEST_ID", "aa77b5f6-ffb3-4267-982d-dfe85da384ca"); | ||
GTEST_SKIP_NOT_SUPPORT_SYSTEMD(); | ||
std::unique_ptr<SendMessageServiceManagement> roudiSendMessage; | ||
ASSERT_NO_THROW(roudiSendMessage = std::make_unique<SendMessageServiceManagement>()); | ||
} | ||
|
||
TEST(RoudiSystemD, CheckConstantsSizeThreadName) | ||
{ | ||
::testing::Test::RecordProperty("TEST_ID", "9c39f45c-a63c-43ec-9606-e50c33247b3f"); | ||
GTEST_SKIP_NOT_SUPPORT_SYSTEMD(); | ||
std::unique_ptr<SendMessageServiceManagement> roudiSendMessage; | ||
ASSERT_NO_THROW(roudiSendMessage = std::make_unique<SendMessageServiceManagement>()); | ||
ASSERT_EQ(roudiSendMessage->SIZE_THREAD_NAME, 15) << "Size thread must equal 15 simbols"; | ||
} | ||
|
||
TEST(RoudiSystemD, CheckConstantsSizeString) | ||
{ | ||
::testing::Test::RecordProperty("TEST_ID", "0b3e3058-6052-49cc-8a67-723f3775a745"); | ||
GTEST_SKIP_NOT_SUPPORT_SYSTEMD(); | ||
std::unique_ptr<SendMessageServiceManagement> roudiSendMessage; | ||
ASSERT_NO_THROW(roudiSendMessage = std::make_unique<SendMessageServiceManagement>()); | ||
ASSERT_EQ(roudiSendMessage->SIZE_STRING, 4096) << "Size string must equal 4096 simbols"; | ||
} | ||
|
||
TEST(RoudiSystemD, SetThreadNameHelper) | ||
{ | ||
::testing::Test::RecordProperty("TEST_ID", "b9ff9e83-9dde-4221-bd1e-c1016ec2d5ff"); | ||
GTEST_SKIP_FOR_WINDOWS(); | ||
GTEST_SKIP_NOT_SUPPORT_SYSTEMD(); | ||
#ifdef USE_SYSTEMD_TEST | ||
std::unique_ptr<SendMessageServiceManagement> roudiSendMessage; | ||
bool result = true; | ||
|
||
ASSERT_NO_THROW(roudiSendMessage = std::make_unique<SendMessageServiceManagement>()); | ||
iox::string<SendMessageServiceManagement::SIZE_THREAD_NAME> nameThread = "test"; | ||
ASSERT_NO_THROW(result = roudiSendMessage->setThreadNameHelper(nameThread)); | ||
ASSERT_EQ(result, true) << "Can not change name thread"; | ||
#else | ||
/* need add test (other OS) */ | ||
ASSERT_EQ(true, true); | ||
#endif | ||
} | ||
|
||
TEST(RoudiSystemD, GetEnvironmentVariableReturnsCorrectValue) | ||
{ | ||
::testing::Test::RecordProperty("TEST_ID", "12dfa746-d1f1-4b4e-864d-2cb28ee49f70"); | ||
GTEST_SKIP_FOR_WINDOWS(); | ||
GTEST_SKIP_NOT_SUPPORT_SYSTEMD(); | ||
#ifdef USE_SYSTEMD_TEST | ||
const char* const env_var_name = "TEST_ENV_VAR"; | ||
const char* const env_var_value = "test_value"; | ||
|
||
auto set_env = IOX_POSIX_CALL(setenv)(env_var_name, env_var_value, 1).failureReturnValue(-1).evaluate(); | ||
EXPECT_FALSE(set_env.has_error()) << "setenv failed with error: " << set_env.get_error().errnum; | ||
|
||
SendMessageServiceManagement sut; | ||
|
||
std::string result = sut.getEnvironmentVariable(env_var_name); | ||
if (result != "no implement") | ||
{ | ||
EXPECT_EQ(result, env_var_value); | ||
} | ||
else | ||
{ | ||
EXPECT_EQ(result, "no implement"); | ||
} | ||
#else | ||
/* need add test (other OS) */ | ||
ASSERT_EQ(true, true); | ||
#endif | ||
} | ||
|
||
TEST(RoudiSystemD, GetEnvironmentVariableHandlesNonExistentVar) | ||
{ | ||
::testing::Test::RecordProperty("TEST_ID", "9595728f-a504-46e3-8672-b074696326a4"); | ||
GTEST_SKIP_FOR_WINDOWS(); | ||
GTEST_SKIP_NOT_SUPPORT_SYSTEMD(); | ||
#ifdef USE_SYSTEMD_TEST | ||
SendMessageServiceManagement sut; | ||
|
||
std::string result = sut.getEnvironmentVariable("NON_EXISTENT_VAR"); | ||
if (result != "no implement") | ||
{ | ||
EXPECT_TRUE(result.empty()); | ||
} | ||
else | ||
{ | ||
EXPECT_EQ(result, "no implement"); | ||
} | ||
#else | ||
/* need add test (other OS) */ | ||
ASSERT_EQ(true, true); | ||
#endif | ||
} |
59 changes: 59 additions & 0 deletions
59
tools/ci/build-test-ubuntu-support-systemd-integrations.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#!/bin/bash | ||
# Copyright (c) 2021 by Apex.AI Inc. All rights reserved. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# This script builds iceoryx_hoofs und iceoryx_posh and executes all tests | ||
|
||
set -e | ||
|
||
if [ "$USER" != "root" ]; then | ||
echo "Please run this as root or with sudo" | ||
exit 1 | ||
fi | ||
|
||
msg() { | ||
printf "\033[1;32m%s: %s\033[0m\n" ${FUNCNAME[1]} "$1" | ||
} | ||
|
||
WORKSPACE=$(git rev-parse --show-toplevel) | ||
DIR_BUILD="build" | ||
|
||
msg "Create unit file" | ||
echo -e "[Unit]\nDescription=Test application roudi\n\n[Service]\nType=notify\nRestartSec=10\nRestart=always\nExecStart=${WORKSPACE}/${DIR_BUILD}/iox-roudi\nTimeoutStartSec=10\nWatchdogSec=5\n\n[Install]\nWantedBy=multi-user.target" | tee /usr/lib/systemd/system/test_iox.service > /dev/null | ||
|
||
msg "Show unit" | ||
cat /usr/lib/systemd/system/test_iox.service | ||
|
||
msg "Daemon reload" | ||
systemctl daemon-reload | ||
|
||
msg "Check status" | ||
systemctl status test_iox || true | ||
|
||
msg "Start roudi" | ||
systemctl start test_iox || (echo "Failed to start service"; sudo journalctl -u test_iox -n 50; exit 1) | ||
|
||
msg "Wait for 30 seconds" | ||
sleep 30 | ||
|
||
msg "Check roudi" | ||
systemctl status test_iox || (echo "Failed to start service"; sudo journalctl -u test_iox -n 50; exit 1) | ||
|
||
msg "Stop roudi" | ||
systemctl stop test_iox | ||
|
||
msg "Show journal" | ||
journalctl -u test_iox -n 100 |
Oops, something went wrong.