Initialize Tizen 2.3
[framework/system/deviced.git] / src / auto-test / test.h
1 /*
2  * test
3  *
4  * Copyright (c) 2013 Samsung Electronics Co., Ltd.
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
19
20 #ifndef __TEST_H__
21 #define __TEST_H__
22 #include <stdio.h>
23 #include <errno.h>
24 #include <E_DBus.h>
25
26 #include "core/list.h"
27 #include "core/common.h"
28 #include "core/udev.h"
29 #include "shared/dbus.h"
30
31 #ifdef ENABLE_TEST_DLOG
32 #define ENABLE_DLOG
33 #endif
34
35 #define LOG_TAG "AUTO_TEST"
36 #include "shared/log-macro.h"
37
38 #define TEST_WAIT_TIME_INTERVAL 5
39 #define METHOD_SET_DEVICE       "device_changed"
40
41 enum test_priority {
42         TEST_PRIORITY_NORMAL = 0,
43         TEST_PRIORITY_HIGH,
44 };
45
46 struct test_ops {
47         enum test_priority priority;
48         char *name;
49         void (*init) (void *data);
50         void (*exit) (void *data);
51         int (*start) (void);
52         int (*stop) (void);
53         int (*status) (void);
54         int (*unit) (int argc, char **argv);
55 };
56
57 enum test_ops_status {
58         TEST_OPS_STATUS_UNINIT,
59         TEST_OPS_STATUS_START,
60         TEST_OPS_STATUS_STOP,
61         TEST_OPS_STATUS_MAX,
62 };
63
64 void test_init(void *data);
65 void test_exit(void *data);
66
67 static inline int test_start(const struct test_ops *c)
68 {
69         if (c && c->start)
70                 return c->start();
71
72         return -EINVAL;
73 }
74
75 static inline int test_stop(const struct test_ops *c)
76 {
77         if (c && c->stop)
78                 return c->stop();
79
80         return -EINVAL;
81 }
82
83 static inline int test_get_status(const struct test_ops *c)
84 {
85         if (c && c->status)
86                 return c->status();
87
88         return -EINVAL;
89 }
90
91 #define TEST_OPS_REGISTER(c)    \
92 static void __CONSTRUCTOR__ module_init(void)   \
93 {       \
94         add_test(c);    \
95 }       \
96 static void __DESTRUCTOR__ module_exit(void)    \
97 {       \
98         remove_test(c); \
99 }
100 DBusMessage *deviced_dbus_method_sync_with_reply(const char *dest, const char *path,
101                 const char *interface, const char *method,
102                 const char *sig, char *param[]);
103 void add_test(const struct test_ops *c);
104 void remove_test(const struct test_ops *c);
105 const struct test_ops *find_test(const char *name);
106
107 #endif