Commit summary:
[platform/core/security/suspicious-activity-monitor.git] / utest / mock / sys_stub.cpp
1 /**
2  * Samsung Ukraine R&D Center (SRK under a contract between)
3  * LLC "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
4  * Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License
17  */
18 #include <stdexcept>
19 #include <cassert>
20
21 #include "sys_stub.h"
22
23 namespace
24 {
25 static SysI* impl = nullptr;
26 }
27
28 SysI* SysI::instance()
29 {
30     if (impl == nullptr) {
31         throw std::runtime_error("Instance of SysI stub not created.");
32     }
33     return impl;
34 }
35
36 SysI::SysI()
37 {
38     if (impl != nullptr) {
39         throw std::runtime_error("Only one instance of LibAuditI stub implementation is allowed at a time.");
40     }
41     impl = this;
42 }
43 SysI::~SysI()
44 {
45     impl = nullptr;
46 }
47
48 int __attribute__ ((visibility ("protected"))) uname(struct utsname* buf)
49 {
50     return SysI::instance()->uname(buf);
51 }
52
53 int __attribute__ ((visibility ("protected"))) kill(pid_t pid, int sig)
54 {
55     return SysI::instance()->kill(pid, sig);
56 }
57
58 int system_info_get_platform_string(const char* key, char** value)
59 {
60     return SysI::instance()->system_info_get_platform_string(key, value);
61 }
62 int system_info_get_value_string(system_info_key_e key, char** value)
63 {
64     return SysI::instance()->system_info_get_value_string(key, value);
65 }