source: mainline/uspace/lib/c/test/fibril/timer.c@ cd1e3fc0

Last change on this file since cd1e3fc0 was d7f7a4a, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 4 years ago

Replace some license headers with SPDX identifier

Headers are replaced using tools/transorm-copyright.sh only
when it can be matched verbatim with the license header used
throughout most of the codebase.

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/*
2 * SPDX-FileCopyrightText: 2017 Jiri Svoboda
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <async.h>
8#include <fibril_synch.h>
9#include <pcut/pcut.h>
10
11PCUT_INIT;
12
13PCUT_TEST_SUITE(fibril_timer);
14
15static void test_timeout_fn(void *arg)
16{
17 int *i;
18
19 i = (int *)arg;
20 ++*i;
21}
22
23PCUT_TEST(create_destroy)
24{
25 fibril_timer_t *t;
26
27 t = fibril_timer_create(NULL);
28 PCUT_ASSERT_NOT_NULL(t);
29 fibril_timer_destroy(t);
30}
31
32PCUT_TEST(create_destroy_user_lock)
33{
34 fibril_mutex_t lock;
35 fibril_timer_t *t;
36
37 fibril_mutex_initialize(&lock);
38 t = fibril_timer_create(&lock);
39 PCUT_ASSERT_NOT_NULL(t);
40 fibril_timer_destroy(t);
41}
42
43PCUT_TEST(set_clear_locked)
44{
45 fibril_mutex_t lock;
46 fibril_timer_t *t;
47 fibril_timer_state_t fts;
48 int cnt;
49
50 fibril_mutex_initialize(&lock);
51 t = fibril_timer_create(&lock);
52 PCUT_ASSERT_NOT_NULL(t);
53
54 fibril_mutex_lock(&lock);
55 cnt = 0;
56
57 fibril_timer_set_locked(t, 100 * 1000 * 1000, test_timeout_fn, &cnt);
58 fibril_usleep(1000);
59 fts = fibril_timer_clear_locked(t);
60 PCUT_ASSERT_INT_EQUALS(fts_active, fts);
61
62 PCUT_ASSERT_INT_EQUALS(0, cnt);
63 fibril_mutex_unlock(&lock);
64
65 fibril_timer_destroy(t);
66}
67
68PCUT_TEST(set_clear_not_locked)
69{
70 fibril_mutex_t lock;
71 fibril_timer_t *t;
72 fibril_timer_state_t fts;
73 int cnt;
74
75 fibril_mutex_initialize(&lock);
76 t = fibril_timer_create(&lock);
77 PCUT_ASSERT_NOT_NULL(t);
78
79 cnt = 0;
80 fibril_timer_set(t, 100 * 1000 * 1000, test_timeout_fn, &cnt);
81 fibril_usleep(1000);
82 fts = fibril_timer_clear(t);
83 PCUT_ASSERT_INT_EQUALS(fts_active, fts);
84
85 PCUT_ASSERT_INT_EQUALS(0, cnt);
86
87 fibril_timer_destroy(t);
88}
89
90PCUT_TEST(fire)
91{
92 fibril_mutex_t lock;
93 fibril_timer_t *t;
94 fibril_timer_state_t fts;
95 int cnt;
96
97 fibril_mutex_initialize(&lock);
98 t = fibril_timer_create(&lock);
99 PCUT_ASSERT_NOT_NULL(t);
100
101 fibril_mutex_lock(&lock);
102 cnt = 0;
103
104 fibril_timer_set_locked(t, 100, test_timeout_fn, &cnt);
105 fibril_mutex_unlock(&lock);
106
107 fibril_usleep(1000);
108
109 fibril_mutex_lock(&lock);
110 fts = fibril_timer_clear_locked(t);
111 PCUT_ASSERT_INT_EQUALS(fts_fired, fts);
112
113 PCUT_ASSERT_INT_EQUALS(1, cnt);
114 fibril_mutex_unlock(&lock);
115
116 fibril_timer_destroy(t);
117}
118
119PCUT_EXPORT(fibril_timer);
Note: See TracBrowser for help on using the repository browser.