Skip to content

Commit d16972f

Browse files
committed
Samples
Reorganizes and splits tests into `samples/` Now that we have them split, we can remove the GitHub-only ones, too, since we have enough to test several builtins + several loadable. However, in order to keep testing the module parameters in both builtin vs. loadable and default vs. custom, we generate the modules on the fly based on the base one. Takes also the chance to update the `.config`s; as well as cleanups the unused imports in each sample now that they are split. Updates the docs accordingly too. Fixes #65. Signed-off-by: Miguel Ojeda <[email protected]>
1 parent 1509393 commit d16972f

26 files changed

+927
-776
lines changed

.github/workflows/ci.yaml

Lines changed: 70 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,36 @@ jobs:
159159
- run: mv .github/workflows/busybox.config busybox/.config
160160
- run: cd busybox && make ${{ env.MAKE_CROSS_COMPILE }} -j3
161161

162+
# Setup: module parameters test
163+
- run: |
164+
cp samples/rust/rust_module_parameters.rs samples/rust/rust_module_parameters_builtin_default.rs
165+
cp samples/rust/rust_module_parameters.rs samples/rust/rust_module_parameters_builtin_custom.rs
166+
cp samples/rust/rust_module_parameters.rs samples/rust/rust_module_parameters_loadable_default.rs
167+
cp samples/rust/rust_module_parameters.rs samples/rust/rust_module_parameters_loadable_custom.rs
168+
169+
sed -i 's:" my_:" built-in default my_:g' samples/rust/rust_module_parameters_builtin_default.rs
170+
sed -i 's:" my_:" built-in custom my_:g' samples/rust/rust_module_parameters_builtin_custom.rs
171+
sed -i 's:" my_:" loadable default my_:g' samples/rust/rust_module_parameters_loadable_default.rs
172+
sed -i 's:" my_:" loadable custom my_:g' samples/rust/rust_module_parameters_loadable_custom.rs
173+
174+
sed -i 's:rust_module_parameters:rust_module_parameters_builtin_default:g' samples/rust/rust_module_parameters_builtin_default.rs
175+
sed -i 's:rust_module_parameters:rust_module_parameters_builtin_custom:g' samples/rust/rust_module_parameters_builtin_custom.rs
176+
sed -i 's:rust_module_parameters:rust_module_parameters_loadable_default:g' samples/rust/rust_module_parameters_loadable_default.rs
177+
sed -i 's:rust_module_parameters:rust_module_parameters_loadable_custom:g' samples/rust/rust_module_parameters_loadable_custom.rs
178+
179+
echo 'obj-y += rust_module_parameters_builtin_default.o' >> samples/rust/Makefile
180+
echo 'obj-y += rust_module_parameters_builtin_custom.o' >> samples/rust/Makefile
181+
echo 'obj-m += rust_module_parameters_loadable_default.o' >> samples/rust/Makefile
182+
echo 'obj-m += rust_module_parameters_loadable_custom.o' >> samples/rust/Makefile
183+
162184
# Build
163185
- run: mv .github/workflows/kernel-${{ matrix.arch }}-${{ matrix.config }}.config .config
164186

165187
- if: matrix.output == 'build'
166188
run: |
167189
mkdir ${{ env.BUILD_DIR }}
168190
mv .config ${{ env.BUILD_DIR }}.config
169-
sed -i 's:drivers/:${{ env.BUILD_DIR }}drivers/:' .github/workflows/qemu-initramfs.desc
191+
sed -i 's:samples/rust/:${{ env.BUILD_DIR }}samples/rust/:' .github/workflows/qemu-initramfs.desc
170192
171193
- run: make ${{ env.MAKE_ARCH }} ${{ env.MAKE_CROSS_COMPILE }} ${{ env.MAKE_TOOLCHAIN }} ${{ env.MAKE_OUTPUT }} ${{ env.MAKE_SYSROOT }} -j3
172194

@@ -184,55 +206,67 @@ jobs:
184206
-vga none \
185207
-no-reboot \
186208
-append '${{ env.QEMU_APPEND }} \
187-
rust_example.my_i32=123321 \
188-
rust_example.my_str=🦀mod \
189-
rust_example_2.my_i32=234432 \
190-
rust_example_2.my_array=1,2,3' \
209+
rust_module_parameters_builtin_custom.my_bool=n \
210+
rust_module_parameters_builtin_custom.my_i32=345543 \
211+
rust_module_parameters_builtin_custom.my_str=🦀mod \
212+
rust_module_parameters_builtin_custom.my_usize=84 \
213+
rust_module_parameters_builtin_custom.my_array=1,2,3 \
214+
' \
191215
| sed s:$'\r'$:: \
192216
| tee qemu-stdout.log
193217
194218
# Check
195219
- run: |
196-
grep '] Rust Example (init)$' qemu-stdout.log
197-
grep '] \[2] Rust Example (init)$' qemu-stdout.log
198-
grep '] \[3] Rust Example (init)$' qemu-stdout.log
199-
grep '] \[4] Rust Example (init)$' qemu-stdout.log
200-
201-
grep '] my_i32: 123321$' qemu-stdout.log
202-
grep '] \[2] my_i32: 234432$' qemu-stdout.log
203-
grep '] \[3] my_i32: 345543$' qemu-stdout.log
204-
grep '] \[4] my_i32: 456654$' qemu-stdout.log
205-
206-
grep '] my_usize: 42$' qemu-stdout.log
207-
grep '] \[2] my_usize: 42$' qemu-stdout.log
208-
grep '] \[3] my_usize: 42$' qemu-stdout.log
209-
grep '] \[4] my_usize: 84$' qemu-stdout.log
210-
211-
grep '] my_str: 🦀mod$' qemu-stdout.log
212-
grep '] \[2] my_str: default str val$' qemu-stdout.log
213-
grep '] \[3] my_str: 🦀mod$' qemu-stdout.log
214-
grep '] \[4] my_str: default str val$' qemu-stdout.log
215-
216-
grep '] my_array: \[0, 1]$' qemu-stdout.log
217-
grep '] \[2] my_array: \[1, 2, 3]$' qemu-stdout.log
218-
grep '] \[3] my_array: \[0, 1]$' qemu-stdout.log
219-
grep '] \[4] my_array: \[1, 2, 3]$' qemu-stdout.log
220-
221-
grep '] \[3] Rust Example (exit)$' qemu-stdout.log
222-
grep '] \[4] Rust Example (exit)$' qemu-stdout.log
220+
grep '] Rust minimal sample (init)$' qemu-stdout.log
221+
grep '] Rust minimal sample (exit)$' qemu-stdout.log
222+
223+
grep '] Rust module parameters sample (init)$' qemu-stdout.log
224+
grep '] built-in default my_bool: true$' qemu-stdout.log
225+
grep '] built-in default my_i32: 42$' qemu-stdout.log
226+
grep '] built-in default my_str: default str val$' qemu-stdout.log
227+
grep '] built-in default my_usize: 42$' qemu-stdout.log
228+
grep '] built-in default my_array: \[0, 1]$' qemu-stdout.log
229+
grep '] built-in custom my_bool: false$' qemu-stdout.log
230+
grep '] built-in custom my_i32: 345543$' qemu-stdout.log
231+
grep '] built-in custom my_str: 🦀mod$' qemu-stdout.log
232+
grep '] built-in custom my_usize: 84$' qemu-stdout.log
233+
grep '] built-in custom my_array: \[1, 2, 3]$' qemu-stdout.log
234+
grep '] loadable default my_bool: true$' qemu-stdout.log
235+
grep '] loadable default my_i32: 42$' qemu-stdout.log
236+
grep '] loadable default my_str: default str val$' qemu-stdout.log
237+
grep '] loadable default my_usize: 42$' qemu-stdout.log
238+
grep '] loadable default my_array: \[0, 1]$' qemu-stdout.log
239+
grep '] loadable custom my_bool: false$' qemu-stdout.log
240+
grep '] loadable custom my_i32: 345543$' qemu-stdout.log
241+
grep '] loadable custom my_str: 🦀mod$' qemu-stdout.log
242+
grep '] loadable custom my_usize: 84$' qemu-stdout.log
243+
grep '] loadable custom my_array: \[1, 2, 3]$' qemu-stdout.log
244+
grep '] Rust module parameters sample (exit)$' qemu-stdout.log
245+
246+
grep '] Rust synchronisation primitives sample (init)$' qemu-stdout.log
247+
grep '] Rust synchronisation primitives sample (exit)$' qemu-stdout.log
248+
249+
grep '] Rust character device sample (init)$' qemu-stdout.log
250+
grep '] Rust character device sample (exit)$' qemu-stdout.log
251+
252+
grep '] Rust miscellaneous device sample (init)$' qemu-stdout.log
253+
grep '] Rust miscellaneous device sample (exit)$' qemu-stdout.log
254+
255+
grep '] Rust stack probing sample (init)$' qemu-stdout.log
256+
grep '] Rust stack probing sample (exit)$' qemu-stdout.log
223257
224258
# Report
225259
- run: |
226260
ls -l \
227-
${{ env.BUILD_DIR }}drivers/char/rust_example.o \
228-
${{ env.BUILD_DIR }}drivers/char/rust_example_3.ko \
261+
${{ env.BUILD_DIR }}samples/rust/*.o \
262+
${{ env.BUILD_DIR }}samples/rust/*.ko \
229263
${{ env.BUILD_DIR }}rust/*.o \
230264
${{ env.BUILD_DIR }}vmlinux \
231265
${{ env.BUILD_DIR }}${{ env.IMAGE_PATH }}
232266
233267
size \
234-
${{ env.BUILD_DIR }}drivers/char/rust_example.o \
235-
${{ env.BUILD_DIR }}drivers/char/rust_example_3.ko \
268+
${{ env.BUILD_DIR }}samples/rust/*.o \
269+
${{ env.BUILD_DIR }}samples/rust/*.ko \
236270
${{ env.BUILD_DIR }}rust/*.o \
237271
${{ env.BUILD_DIR }}vmlinux
238272

0 commit comments

Comments
 (0)