1*63d1fd59SEnji Cooper /* $NetBSD: t_dummy.c,v 1.6 2016/11/19 15:13:46 kamil Exp $ */
2*63d1fd59SEnji Cooper
3*63d1fd59SEnji Cooper /*-
4*63d1fd59SEnji Cooper * Copyright (c) 2016 The NetBSD Foundation, Inc.
5*63d1fd59SEnji Cooper * All rights reserved.
6*63d1fd59SEnji Cooper *
7*63d1fd59SEnji Cooper * Redistribution and use in source and binary forms, with or without
8*63d1fd59SEnji Cooper * modification, are permitted provided that the following conditions
9*63d1fd59SEnji Cooper * are met:
10*63d1fd59SEnji Cooper * 1. Redistributions of source code must retain the above copyright
11*63d1fd59SEnji Cooper * notice, this list of conditions and the following disclaimer.
12*63d1fd59SEnji Cooper * 2. Redistributions in binary form must reproduce the above copyright
13*63d1fd59SEnji Cooper * notice, this list of conditions and the following disclaimer in the
14*63d1fd59SEnji Cooper * documentation and/or other materials provided with the distribution.
15*63d1fd59SEnji Cooper *
16*63d1fd59SEnji Cooper * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
17*63d1fd59SEnji Cooper * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18*63d1fd59SEnji Cooper * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19*63d1fd59SEnji Cooper * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
20*63d1fd59SEnji Cooper * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*63d1fd59SEnji Cooper * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*63d1fd59SEnji Cooper * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*63d1fd59SEnji Cooper * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*63d1fd59SEnji Cooper * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*63d1fd59SEnji Cooper * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26*63d1fd59SEnji Cooper * POSSIBILITY OF SUCH DAMAGE.
27*63d1fd59SEnji Cooper */
28*63d1fd59SEnji Cooper
29*63d1fd59SEnji Cooper
30*63d1fd59SEnji Cooper #include <sys/cdefs.h>
31*63d1fd59SEnji Cooper __RCSID("$NetBSD: t_dummy.c,v 1.6 2016/11/19 15:13:46 kamil Exp $");
32*63d1fd59SEnji Cooper
33*63d1fd59SEnji Cooper #include "h_common.h"
34*63d1fd59SEnji Cooper #include <pthread_dbg.h>
35*63d1fd59SEnji Cooper #include <stdio.h>
36*63d1fd59SEnji Cooper
37*63d1fd59SEnji Cooper #include <atf-c.h>
38*63d1fd59SEnji Cooper
39*63d1fd59SEnji Cooper
40*63d1fd59SEnji Cooper ATF_TC(dummy1);
ATF_TC_HEAD(dummy1,tc)41*63d1fd59SEnji Cooper ATF_TC_HEAD(dummy1, tc)
42*63d1fd59SEnji Cooper {
43*63d1fd59SEnji Cooper
44*63d1fd59SEnji Cooper atf_tc_set_md_var(tc, "descr",
45*63d1fd59SEnji Cooper "Asserts that dummy lookup functions stop td_open() with failure");
46*63d1fd59SEnji Cooper }
47*63d1fd59SEnji Cooper
ATF_TC_BODY(dummy1,tc)48*63d1fd59SEnji Cooper ATF_TC_BODY(dummy1, tc)
49*63d1fd59SEnji Cooper {
50*63d1fd59SEnji Cooper
51*63d1fd59SEnji Cooper struct td_proc_callbacks_t dummy_callbacks;
52*63d1fd59SEnji Cooper td_proc_t *main_ta;
53*63d1fd59SEnji Cooper
54*63d1fd59SEnji Cooper dummy_callbacks.proc_read = dummy_proc_read;
55*63d1fd59SEnji Cooper dummy_callbacks.proc_write = dummy_proc_write;
56*63d1fd59SEnji Cooper dummy_callbacks.proc_lookup = dummy_proc_lookup;
57*63d1fd59SEnji Cooper dummy_callbacks.proc_regsize = dummy_proc_regsize;
58*63d1fd59SEnji Cooper dummy_callbacks.proc_getregs = dummy_proc_getregs;
59*63d1fd59SEnji Cooper dummy_callbacks.proc_setregs = dummy_proc_setregs;
60*63d1fd59SEnji Cooper
61*63d1fd59SEnji Cooper ATF_REQUIRE(td_open(&dummy_callbacks, NULL, &main_ta) == TD_ERR_ERR);
62*63d1fd59SEnji Cooper }
63*63d1fd59SEnji Cooper
64*63d1fd59SEnji Cooper ATF_TC(dummy2);
ATF_TC_HEAD(dummy2,tc)65*63d1fd59SEnji Cooper ATF_TC_HEAD(dummy2, tc)
66*63d1fd59SEnji Cooper {
67*63d1fd59SEnji Cooper
68*63d1fd59SEnji Cooper atf_tc_set_md_var(tc, "descr",
69*63d1fd59SEnji Cooper "Asserts that td_open() for basic proc_{read,write,lookup} works");
70*63d1fd59SEnji Cooper }
71*63d1fd59SEnji Cooper
ATF_TC_BODY(dummy2,tc)72*63d1fd59SEnji Cooper ATF_TC_BODY(dummy2, tc)
73*63d1fd59SEnji Cooper {
74*63d1fd59SEnji Cooper struct td_proc_callbacks_t dummy_callbacks;
75*63d1fd59SEnji Cooper td_proc_t *main_ta;
76*63d1fd59SEnji Cooper
77*63d1fd59SEnji Cooper dummy_callbacks.proc_read = basic_proc_read;
78*63d1fd59SEnji Cooper dummy_callbacks.proc_write = basic_proc_write;
79*63d1fd59SEnji Cooper dummy_callbacks.proc_lookup = basic_proc_lookup;
80*63d1fd59SEnji Cooper dummy_callbacks.proc_regsize = dummy_proc_regsize;
81*63d1fd59SEnji Cooper dummy_callbacks.proc_getregs = dummy_proc_getregs;
82*63d1fd59SEnji Cooper dummy_callbacks.proc_setregs = dummy_proc_setregs;
83*63d1fd59SEnji Cooper
84*63d1fd59SEnji Cooper printf("Calling td_open(3)\n");
85*63d1fd59SEnji Cooper ATF_REQUIRE(td_open(&dummy_callbacks, NULL, &main_ta) == TD_ERR_OK);
86*63d1fd59SEnji Cooper
87*63d1fd59SEnji Cooper printf("Calling td_close(3)\n");
88*63d1fd59SEnji Cooper ATF_REQUIRE(td_close(main_ta) == TD_ERR_OK);
89*63d1fd59SEnji Cooper }
90*63d1fd59SEnji Cooper
91*63d1fd59SEnji Cooper ATF_TC(dummy3);
ATF_TC_HEAD(dummy3,tc)92*63d1fd59SEnji Cooper ATF_TC_HEAD(dummy3, tc)
93*63d1fd59SEnji Cooper {
94*63d1fd59SEnji Cooper
95*63d1fd59SEnji Cooper atf_tc_set_md_var(tc, "descr",
96*63d1fd59SEnji Cooper "Asserts that calling twice td_open() for the same process fails");
97*63d1fd59SEnji Cooper }
98*63d1fd59SEnji Cooper
ATF_TC_BODY(dummy3,tc)99*63d1fd59SEnji Cooper ATF_TC_BODY(dummy3, tc)
100*63d1fd59SEnji Cooper {
101*63d1fd59SEnji Cooper struct td_proc_callbacks_t dummy_callbacks;
102*63d1fd59SEnji Cooper td_proc_t *main_ta1;
103*63d1fd59SEnji Cooper td_proc_t *main_ta2;
104*63d1fd59SEnji Cooper
105*63d1fd59SEnji Cooper dummy_callbacks.proc_read = basic_proc_read;
106*63d1fd59SEnji Cooper dummy_callbacks.proc_write = basic_proc_write;
107*63d1fd59SEnji Cooper dummy_callbacks.proc_lookup = basic_proc_lookup;
108*63d1fd59SEnji Cooper dummy_callbacks.proc_regsize = dummy_proc_regsize;
109*63d1fd59SEnji Cooper dummy_callbacks.proc_getregs = dummy_proc_getregs;
110*63d1fd59SEnji Cooper dummy_callbacks.proc_setregs = dummy_proc_setregs;
111*63d1fd59SEnji Cooper
112*63d1fd59SEnji Cooper printf("Calling td_open(3) for the first time - expecting success\n");
113*63d1fd59SEnji Cooper ATF_REQUIRE(td_open(&dummy_callbacks, NULL, &main_ta1) == TD_ERR_OK);
114*63d1fd59SEnji Cooper
115*63d1fd59SEnji Cooper printf("Calling td_open(3) for the first time - expecting in-use\n");
116*63d1fd59SEnji Cooper ATF_REQUIRE(td_open(&dummy_callbacks, NULL, &main_ta2) ==
117*63d1fd59SEnji Cooper TD_ERR_INUSE);
118*63d1fd59SEnji Cooper
119*63d1fd59SEnji Cooper printf("Calling td_close(3) for the first successful call\n");
120*63d1fd59SEnji Cooper ATF_REQUIRE(td_close(main_ta1) == TD_ERR_OK);
121*63d1fd59SEnji Cooper }
122*63d1fd59SEnji Cooper
ATF_TP_ADD_TCS(tp)123*63d1fd59SEnji Cooper ATF_TP_ADD_TCS(tp)
124*63d1fd59SEnji Cooper {
125*63d1fd59SEnji Cooper
126*63d1fd59SEnji Cooper ATF_TP_ADD_TC(tp, dummy1);
127*63d1fd59SEnji Cooper ATF_TP_ADD_TC(tp, dummy2);
128*63d1fd59SEnji Cooper ATF_TP_ADD_TC(tp, dummy3);
129*63d1fd59SEnji Cooper
130*63d1fd59SEnji Cooper return atf_no_error();
131*63d1fd59SEnji Cooper }
132