1 package logging
2
3 import (
4 "testing"
5
6 "github.com/tetratelabs/wazero/api"
7 "github.com/tetratelabs/wazero/internal/logging"
8 "github.com/tetratelabs/wazero/internal/testing/require"
9 . "github.com/tetratelabs/wazero/internal/wasip1"
10 "github.com/tetratelabs/wazero/internal/wasm"
11 )
12
13 type testFunctionDefinition struct {
14 name string
15 *wasm.FunctionDefinition
16 }
17
18
19 func (f *testFunctionDefinition) Name() string {
20 return f.name
21 }
22
23 func TestIsInLogScope(t *testing.T) {
24 clockTimeGet := &testFunctionDefinition{name: ClockTimeGetName}
25 fdRead := &testFunctionDefinition{name: FdReadName}
26 pollOneoff := &testFunctionDefinition{name: PollOneoffName}
27 procExit := &testFunctionDefinition{name: ProcExitName}
28 randomGet := &testFunctionDefinition{name: RandomGetName}
29 tests := []struct {
30 name string
31 fnd api.FunctionDefinition
32 scopes logging.LogScopes
33 expected bool
34 }{
35 {
36 name: "clockTimeGet in LogScopeClock",
37 fnd: clockTimeGet,
38 scopes: logging.LogScopeClock,
39 expected: true,
40 },
41 {
42 name: "clockTimeGet not in LogScopeFilesystem",
43 fnd: clockTimeGet,
44 scopes: logging.LogScopeFilesystem,
45 expected: false,
46 },
47 {
48 name: "clockTimeGet in LogScopeClock|LogScopeFilesystem",
49 fnd: clockTimeGet,
50 scopes: logging.LogScopeClock | logging.LogScopeFilesystem,
51 expected: true,
52 },
53 {
54 name: "clockTimeGet in LogScopeAll",
55 fnd: clockTimeGet,
56 scopes: logging.LogScopeAll,
57 expected: true,
58 },
59 {
60 name: "clockTimeGet not in LogScopeNone",
61 fnd: clockTimeGet,
62 scopes: logging.LogScopeNone,
63 expected: false,
64 },
65 {
66 name: "fdRead in LogScopeFilesystem",
67 fnd: fdRead,
68 scopes: logging.LogScopeFilesystem,
69 expected: true,
70 },
71 {
72 name: "fdRead not in LogScopeRandom",
73 fnd: fdRead,
74 scopes: logging.LogScopeRandom,
75 expected: false,
76 },
77 {
78 name: "fdRead in LogScopeRandom|LogScopeFilesystem",
79 fnd: fdRead,
80 scopes: logging.LogScopeRandom | logging.LogScopeFilesystem,
81 expected: true,
82 },
83 {
84 name: "fdRead in LogScopeAll",
85 fnd: fdRead,
86 scopes: logging.LogScopeAll,
87 expected: true,
88 },
89 {
90 name: "fdRead not in LogScopeNone",
91 fnd: fdRead,
92 scopes: logging.LogScopeNone,
93 expected: false,
94 },
95 {
96 name: "pollOneoff in LogScopePoll",
97 fnd: pollOneoff,
98 scopes: logging.LogScopePoll,
99 expected: true,
100 },
101 {
102 name: "pollOneoff not in LogScopeFilesystem",
103 fnd: pollOneoff,
104 scopes: logging.LogScopeFilesystem,
105 expected: false,
106 },
107 {
108 name: "pollOneoff in LogScopePoll|LogScopeFilesystem",
109 fnd: pollOneoff,
110 scopes: logging.LogScopePoll | logging.LogScopeFilesystem,
111 expected: true,
112 },
113 {
114 name: "pollOneoff in LogScopeAll",
115 fnd: pollOneoff,
116 scopes: logging.LogScopeAll,
117 expected: true,
118 },
119 {
120 name: "pollOneoff not in LogScopeNone",
121 fnd: pollOneoff,
122 scopes: logging.LogScopeNone,
123 expected: false,
124 },
125 {
126 name: "procExit in LogScopeProc",
127 fnd: procExit,
128 scopes: logging.LogScopeProc,
129 expected: true,
130 },
131 {
132 name: "procExit not in LogScopeFilesystem",
133 fnd: procExit,
134 scopes: logging.LogScopeFilesystem,
135 expected: false,
136 },
137 {
138 name: "procExit in LogScopeProc|LogScopeFilesystem",
139 fnd: procExit,
140 scopes: logging.LogScopeProc | logging.LogScopeFilesystem,
141 expected: true,
142 },
143 {
144 name: "procExit in LogScopeAll",
145 fnd: procExit,
146 scopes: logging.LogScopeAll,
147 expected: true,
148 },
149 {
150 name: "procExit not in LogScopeNone",
151 fnd: procExit,
152 scopes: logging.LogScopeNone,
153 expected: false,
154 },
155 {
156 name: "randomGet not in LogScopeFilesystem",
157 fnd: randomGet,
158 scopes: logging.LogScopeFilesystem,
159 expected: false,
160 },
161 {
162 name: "randomGet in LogScopeRandom|LogScopeFilesystem",
163 fnd: randomGet,
164 scopes: logging.LogScopeRandom | logging.LogScopeFilesystem,
165 expected: true,
166 },
167 {
168 name: "randomGet in LogScopeAll",
169 fnd: randomGet,
170 scopes: logging.LogScopeAll,
171 expected: true,
172 },
173 {
174 name: "randomGet not in LogScopeNone",
175 fnd: randomGet,
176 scopes: logging.LogScopeNone,
177 expected: false,
178 },
179 }
180
181 for _, tt := range tests {
182 tc := tt
183
184 t.Run(tc.name, func(t *testing.T) {
185 require.Equal(t, tc.expected, IsInLogScope(tc.fnd, tc.scopes))
186 })
187 }
188 }
189
View as plain text