Line data Source code
1 : /** \file suite_svcmgr-register.c
2 : * \brief Check unit testing framework main function for SvcMgr
3 : * \author François Cerbelle (Fanfan), francois@cerbelle.net
4 : *
5 : * \internal
6 : * Created: 20/03/2022
7 : * Revision: none
8 : * Last modified: 2024-07-19 15:18
9 : * Compiler: gcc
10 : * Organization: Cerbelle.net
11 : * Copyright: Copyright (c) 2024, François Cerbelle
12 : *
13 : * This source code is released for free distribution under the terms of the
14 : * GNU General Public License as published by the Free Software Foundation.
15 : */
16 :
17 : #ifdef HAVE_CONFIG_H
18 : #include "config.h"
19 : #endif
20 :
21 : #include "svcmgr.h"
22 : #include "oom.h" /* OOM simulation */
23 : #include <check.h>
24 : #include <unistd.h> /* pid_t getpid() */
25 : #include <sys/stat.h> /* mkdir(), chdir(), mode_t */
26 : #include <stdio.h> /* fprintf */
27 : #include <stdlib.h> /* abort() */
28 : #include "checktools.inc"
29 :
30 13 : static uint8_t svc_func (va_list p_ap)
31 : {
32 13 : uint8_t i=0;
33 :
34 52 : for (i=0; i<3; i++) {
35 39 : printf ("arg[%d]=%d, ",i,va_arg(p_ap,int));
36 : }
37 13 : printf("\n");
38 13 : return 0;
39 : }
40 :
41 3 : START_TEST(test_1)
42 : {
43 3 : svcmgr_register("a",svc_func);
44 3 : svcmgr_call("a",1,2,3);
45 3 : }
46 : END_TEST
47 :
48 3 : START_TEST(test_2)
49 : {
50 3 : svcmgr_register("b",svc_func);
51 3 : svcmgr_call("a",4,5,6);
52 3 : svcmgr_call("b",7,8,9);
53 3 : }
54 : END_TEST
55 :
56 3 : START_TEST(test_3)
57 : {
58 3 : svcmgr_register("a",svc_func);
59 3 : svcmgr_call("a",10,11,12);
60 3 : svcmgr_call("b",13,14,15);
61 3 : }
62 : END_TEST
63 :
64 3 : START_TEST(test_4)
65 : {
66 3 : svcmgr_register("b/c",svc_func);
67 3 : svcmgr_call("a",16,17,18);
68 3 : svcmgr_call("b",19,20,21);
69 3 : svcmgr_call("b/c",22,23,24);
70 3 : svcmgr_call("c",25,26,27);
71 3 : }
72 : END_TEST
73 :
74 3 : START_TEST(test_5)
75 : {
76 3 : svcmgr_unregister("a");
77 3 : }
78 : END_TEST
79 :
80 : /* Begining of test case */
81 13 : void svcmgr_unchecked_setup()
82 : {
83 13 : forktest_init();
84 13 : }
85 : /* Begining of test (potentially in child) */
86 15 : void svcmgr_checked_setup()
87 : {
88 15 : signals_catch();
89 15 : forktest_gprofdir();
90 15 : }
91 : /* End of test (potentially in child) */
92 15 : void svcmgr_checked_teardown()
93 : {
94 15 : signals_release();
95 15 : }
96 : /* End of testcase */
97 3 : void svcmgr_unchecked_teardown()
98 : {
99 3 : }
100 :
101 17 : Suite* svcmgr_register_suite()
102 : {
103 : Suite *s;
104 : TCase *tc;
105 :
106 17 : s = suite_create("SvcMgr");
107 17 : tc = tcase_create("SvcMgr");
108 : /* tcase_set_tags(tc,"tag1 tag2"); */
109 : /* tcase_set_timeout(tc,5); */ /* seconds */
110 17 : tcase_add_checked_fixture(tc, svcmgr_checked_setup, svcmgr_checked_teardown);
111 17 : tcase_add_unchecked_fixture(tc, svcmgr_unchecked_setup, svcmgr_unchecked_teardown);
112 17 : suite_add_tcase(s, tc);
113 17 : tcase_add_test(tc, test_1);
114 17 : tcase_add_test(tc, test_2);
115 17 : tcase_add_test(tc, test_3);
116 17 : tcase_add_test(tc, test_4);
117 17 : tcase_add_test(tc, test_5);
118 :
119 17 : return s;
120 : }
|