aboutsummaryrefslogtreecommitdiffstats
path: root/tests/use_count/use_count_test.err
blob: 97e74a5108535b8aae0d91bad21ffcb899fe1f41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
test_use_count_fsm()
DFOO DEBUG foo(a){IN_USE}: Allocated
DFOO DEBUG foo(b){IN_USE}: Allocated
DFOO DEBUG foo(c){IN_USE}: Allocated

all use counts:
a: 0 (-)
b: 0 (-)
c: 0 (-)
3 foos

A few gets and puts, logging source file information
DFOO NOTICE foo(a){IN_USE}: a +1 barring: now used by 1 (barring) (use_count_test.c:223)
DFOO NOTICE foo(b){IN_USE}: b +1 barring: now used by 1 (barring) (use_count_test.c:225)
DFOO NOTICE foo(b){IN_USE}: b +1 fighting: now used by 2 (barring,fighting) (use_count_test.c:226)

all use counts:
a: 1 (barring)
b: 2 (barring,fighting)
c: 0 (-)
3 foos

Attempt to get more than one on limited 'barring' user:
DFOO ERROR foo(b){IN_USE}: Attempt to get more than one barring (use_count_test.c:231)
osmo_use_count_get_put(b, barring, 1) returned error: -34 Numerical result out of range

all use counts:
a: 1 (barring)
b: 2 (barring,fighting)
c: 0 (-)
3 foos

Put away one user of b
DFOO NOTICE foo(b){IN_USE}: b -1 barring: now used by 1 (fighting) (use_count_test.c:235)

all use counts:
a: 1 (barring)
b: 1 (fighting)
c: 0 (-)
3 foos

(no longer log source file information)
Test null use token
DFOO NOTICE foo(a){IN_USE}: a +1 NULL: now used by 2 (barring,NULL)

all use counts:
a: 2 (barring,NULL)
b: 1 (fighting)
c: 0 (-)
3 foos

DFOO NOTICE foo(a){IN_USE}: a -1 NULL: now used by 1 (barring)

all use counts:
a: 1 (barring)
b: 1 (fighting)
c: 0 (-)
3 foos

Put away last user of a, goes to RELEASING state and waits for a hypothetic async release process
DFOO NOTICE foo(a){IN_USE}: a -1 barring: now used by 0 (-)
DFOO DEBUG foo(a){IN_USE}: Received Event FOO_EV_UNUSED
DFOO DEBUG foo(a){IN_USE}: state_chg to IN_RELEASE
DFOO NOTICE foo(a){IN_RELEASE}: a +1 releasing: now used by 1 (releasing)

all use counts:
a: 1 (releasing)
b: 1 (fighting)
c: 0 (-)
3 foos

Async releasing of a is done, will dealloc
DFOO NOTICE foo(a){IN_RELEASE}: a -1 releasing: now used by 0 (-)
DFOO DEBUG foo(a){IN_RELEASE}: Received Event FOO_EV_UNUSED
DFOO DEBUG foo(a){IN_RELEASE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DFOO DEBUG foo(a){IN_RELEASE}: Freeing instance
DFOO DEBUG foo(a){IN_RELEASE}: Deallocated

all use counts:
b: 1 (fighting)
c: 0 (-)
2 foos

Use b multiple times
DFOO NOTICE foo(b){IN_USE}: b +1 kungfoo: now used by 2 (fighting,kungfoo)
DFOO NOTICE foo(b){IN_USE}: b +1 kungfoo: now used by 3 (fighting,2*kungfoo)
DFOO NOTICE foo(b){IN_USE}: b -1 kungfoo: now used by 2 (fighting,kungfoo)
DFOO NOTICE foo(b){IN_USE}: b +1 kungfoo: now used by 3 (fighting,2*kungfoo)
DFOO NOTICE foo(b){IN_USE}: b +1 kungfoo: now used by 4 (fighting,3*kungfoo)

all use counts:
b: 4 (fighting,3*kungfoo)
c: 0 (-)
2 foos

Test range: set kung-fu to INT32_MAX-1, then get three more; total count gets max-clamped to INT32_MAX
DFOO NOTICE foo(b){IN_USE}: b +2147483643 kungfoo: now used by 2147483647 (fighting,2147483646*kungfoo)

all use counts:
b: 2147483647 (fighting,2147483646*kungfoo)
c: 0 (-)
2 foos

DFOO NOTICE foo(b){IN_USE}: b +1 kungfoo: now used by 2147483647 (fighting,2147483647*kungfoo)
osmo_use_count_get_put(b, kungfoo, 1) returned error: -34 Numerical result out of range
osmo_use_count_get_put(b, kungfoo, 1) returned error: -34 Numerical result out of range
DFOO NOTICE foo(b){IN_USE}: b +2 fighting: now used by 2147483647 (3*fighting,2147483647*kungfoo)
DFOO NOTICE foo(b){IN_USE}: b -3 kungfoo: now used by 2147483647 (3*fighting,2147483644*kungfoo)
DFOO NOTICE foo(b){IN_USE}: b -1 kungfoo: now used by 2147483646 (3*fighting,2147483643*kungfoo)
DFOO NOTICE foo(b){IN_USE}: b -1 kungfoo: now used by 2147483645 (3*fighting,2147483642*kungfoo)
DFOO NOTICE foo(b){IN_USE}: b +1 fighting: now used by 2147483646 (4*fighting,2147483642*kungfoo)
DFOO NOTICE foo(b){IN_USE}: b +1 fighting: now used by 2147483647 (5*fighting,2147483642*kungfoo)
DFOO NOTICE foo(b){IN_USE}: b +1 fighting: now used by 2147483647 (6*fighting,2147483642*kungfoo)

all use counts:
b: 2147483647 (6*fighting,2147483642*kungfoo)
c: 0 (-)
2 foos

Release all uses of b
DFOO NOTICE foo(b){IN_USE}: b -2147483642 kungfoo: now used by 6 (6*fighting)
DFOO NOTICE foo(b){IN_USE}: b -6 fighting: now used by 0 (-)
DFOO DEBUG foo(b){IN_USE}: Received Event FOO_EV_UNUSED
DFOO DEBUG foo(b){IN_USE}: state_chg to IN_RELEASE
DFOO NOTICE foo(b){IN_RELEASE}: b +1 releasing: now used by 1 (releasing)
Signal async release as done
DFOO NOTICE foo(b){IN_RELEASE}: b -1 releasing: now used by 0 (-)
DFOO DEBUG foo(b){IN_RELEASE}: Received Event FOO_EV_UNUSED
DFOO DEBUG foo(b){IN_RELEASE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DFOO DEBUG foo(b){IN_RELEASE}: Freeing instance
DFOO DEBUG foo(b){IN_RELEASE}: Deallocated

all use counts:
c: 0 (-)
1 foos

Release something not gotten before: a get/put bug goes into negative count
DFOO NOTICE foo(c){IN_USE}: c -1 kungfoo: now used by -1 (-1*kungfoo)
DFOO ERROR foo(c){IN_USE}: Negative use count on kungfoo: -1 (-1*kungfoo)

all use counts:
c: -1 (-1*kungfoo)
1 foos

More negative
DFOO NOTICE foo(c){IN_USE}: c -1 kungfoo: now used by -2 (-2*kungfoo)
DFOO ERROR foo(c){IN_USE}: Negative use count on kungfoo: -2 (-2*kungfoo)
DFOO NOTICE foo(c){IN_USE}: c -1 kungfoo: now used by -3 (-3*kungfoo)
DFOO ERROR foo(c){IN_USE}: Negative use count on kungfoo: -3 (-3*kungfoo)

all use counts:
c: -3 (-3*kungfoo)
1 foos

Also release c
DFOO NOTICE foo(c){IN_USE}: c +4 kungfoo: now used by 1 (kungfoo)
DFOO NOTICE foo(c){IN_USE}: c -1 kungfoo: now used by 0 (-)
DFOO DEBUG foo(c){IN_USE}: Received Event FOO_EV_UNUSED
DFOO DEBUG foo(c){IN_USE}: state_chg to IN_RELEASE
DFOO NOTICE foo(c){IN_RELEASE}: c +1 releasing: now used by 1 (releasing)
Signal async release as done
DFOO NOTICE foo(c){IN_RELEASE}: c -1 releasing: now used by 0 (-)
DFOO DEBUG foo(c){IN_RELEASE}: Received Event FOO_EV_UNUSED
DFOO DEBUG foo(c){IN_RELEASE}: Terminating (cause = OSMO_FSM_TERM_REGULAR)
DFOO DEBUG foo(c){IN_RELEASE}: Freeing instance
DFOO DEBUG foo(c){IN_RELEASE}: Deallocated

all use counts:
0 foos