1
+ // Copyright (c) 2019 - 2020 by Robert Bosch GmbH. All rights reserved.
2
+ // Copyright (c) 2020 - 2021 by Apex.AI Inc. All rights reserved.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+ // SPDX-License-Identifier: Apache-2.0
17
+
18
+ #include " iceoryx_posh/internal/roudi/roudi.hpp"
19
+ #include < gtest/gtest.h>
20
+
21
+ #if defined(_WIN32) || defined(_WIN64)
22
+ #define GTEST_SKIP_FOR_WINDOWS () GTEST_SKIP() << " Skipping this test on Windows."
23
+ #else
24
+ #define GTEST_SKIP_FOR_WINDOWS () (void )0
25
+ #endif
26
+
27
+ #ifdef USE_SYSTEMD_TEST
28
+ #define GTEST_SKIP_NOT_SUPPORT_SYSTEMD () (void )0
29
+ #else
30
+ #define GTEST_SKIP_NOT_SUPPORT_SYSTEMD () GTEST_SKIP() << " Skipping this test when systemd is not use."
31
+ #endif
32
+
33
+
34
+ TEST (RoudiSystemD, CreateObject)
35
+ {
36
+ ::testing::Test::RecordProperty (" TEST_ID" , " aa77b5f6-ffb3-4267-982d-dfe85da384ca" );
37
+ GTEST_SKIP_NOT_SUPPORT_SYSTEMD ();
38
+ std::unique_ptr<SendMessageServiceManagement> roudiSendMessage;
39
+ ASSERT_NO_THROW (roudiSendMessage = std::make_unique<SendMessageServiceManagement>());
40
+ }
41
+
42
+ TEST (RoudiSystemD, CheckConstantsSizeThreadName)
43
+ {
44
+ ::testing::Test::RecordProperty (" TEST_ID" , " 9c39f45c-a63c-43ec-9606-e50c33247b3f" );
45
+ GTEST_SKIP_NOT_SUPPORT_SYSTEMD ();
46
+ std::unique_ptr<SendMessageServiceManagement> roudiSendMessage;
47
+ ASSERT_NO_THROW (roudiSendMessage = std::make_unique<SendMessageServiceManagement>());
48
+ ASSERT_EQ (roudiSendMessage->SIZE_THREAD_NAME , 15 ) << " Size thread must equal 15 simbols" ;
49
+ }
50
+
51
+ TEST (RoudiSystemD, CheckConstantsSizeString)
52
+ {
53
+ ::testing::Test::RecordProperty (" TEST_ID" , " 0b3e3058-6052-49cc-8a67-723f3775a745" );
54
+ GTEST_SKIP_NOT_SUPPORT_SYSTEMD ();
55
+ std::unique_ptr<SendMessageServiceManagement> roudiSendMessage;
56
+ ASSERT_NO_THROW (roudiSendMessage = std::make_unique<SendMessageServiceManagement>());
57
+ ASSERT_EQ (roudiSendMessage->SIZE_STRING , 4096 ) << " Size string must equal 4096 simbols" ;
58
+ }
59
+
60
+ TEST (RoudiSystemD, SetThreadNameHelper)
61
+ {
62
+ ::testing::Test::RecordProperty (" TEST_ID" , " b9ff9e83-9dde-4221-bd1e-c1016ec2d5ff" );
63
+ GTEST_SKIP_FOR_WINDOWS ();
64
+ GTEST_SKIP_NOT_SUPPORT_SYSTEMD ();
65
+ #ifdef USE_SYSTEMD_TEST
66
+ std::unique_ptr<SendMessageServiceManagement> roudiSendMessage;
67
+ bool result = true ;
68
+
69
+ ASSERT_NO_THROW (roudiSendMessage = std::make_unique<SendMessageServiceManagement>());
70
+ iox::string<SendMessageServiceManagement::SIZE_THREAD_NAME> nameThread = " test" ;
71
+ ASSERT_NO_THROW (result = roudiSendMessage->setThreadNameHelper (nameThread));
72
+ ASSERT_EQ (result, true ) << " Can not change name thread" ;
73
+ #else
74
+ /* need add test (other OS) */
75
+ ASSERT_EQ (true , true );
76
+ #endif
77
+ }
78
+
79
+ TEST (RoudiSystemD, GetEnvironmentVariableReturnsCorrectValue)
80
+ {
81
+ ::testing::Test::RecordProperty (" TEST_ID" , " 12dfa746-d1f1-4b4e-864d-2cb28ee49f70" );
82
+ GTEST_SKIP_FOR_WINDOWS ();
83
+ GTEST_SKIP_NOT_SUPPORT_SYSTEMD ();
84
+ #ifdef USE_SYSTEMD_TEST
85
+ const char * const env_var_name = " TEST_ENV_VAR" ;
86
+ const char * const env_var_value = " test_value" ;
87
+
88
+ auto set_env = IOX_POSIX_CALL (setenv )(env_var_name, env_var_value, 1 ).failureReturnValue (-1 ).evaluate ();
89
+ EXPECT_FALSE (set_env.has_error ()) << " setenv failed with error: " << set_env.get_error ().errnum ;
90
+
91
+ SendMessageServiceManagement sut;
92
+
93
+ std::string result = sut.getEnvironmentVariable (env_var_name);
94
+ if (result != " no implement" )
95
+ {
96
+ EXPECT_EQ (result, env_var_value);
97
+ }
98
+ else
99
+ {
100
+ EXPECT_EQ (result, " no implement" );
101
+ }
102
+ #else
103
+ /* need add test (other OS) */
104
+ ASSERT_EQ (true , true );
105
+ #endif
106
+ }
107
+
108
+ TEST (RoudiSystemD, GetEnvironmentVariableHandlesNonExistentVar)
109
+ {
110
+ ::testing::Test::RecordProperty (" TEST_ID" , " 9595728f-a504-46e3-8672-b074696326a4" );
111
+ GTEST_SKIP_FOR_WINDOWS ();
112
+ GTEST_SKIP_NOT_SUPPORT_SYSTEMD ();
113
+ #ifdef USE_SYSTEMD_TEST
114
+ SendMessageServiceManagement sut;
115
+
116
+ std::string result = sut.getEnvironmentVariable (" NON_EXISTENT_VAR" );
117
+ if (result != " no implement" )
118
+ {
119
+ EXPECT_TRUE (result.empty ());
120
+ }
121
+ else
122
+ {
123
+ EXPECT_EQ (result, " no implement" );
124
+ }
125
+ #else
126
+ /* need add test (other OS) */
127
+ ASSERT_EQ (true , true );
128
+ #endif
129
+ }
0 commit comments