@@ -17,11 +17,13 @@ function checkpointctl() {
17
17
function setup() {
18
18
TEST_TMP_DIR1=$( mktemp -d)
19
19
TEST_TMP_DIR2=$( mktemp -d)
20
+ NON_ROOT_TMP1=$( sudo -u ' nobody' mktemp -d)
20
21
}
21
22
22
23
function teardown() {
23
24
[ " $TEST_TMP_DIR1 " != " " ] && rm -rf " $TEST_TMP_DIR1 "
24
25
[ " $TEST_TMP_DIR2 " != " " ] && rm -rf " $TEST_TMP_DIR2 "
26
+ [ " $NON_ROOT_TMP1 " != " " ] && rm -rf " $NON_ROOT_TMP1 "
25
27
}
26
28
27
29
@test " Run checkpointctl" {
@@ -301,6 +303,31 @@ function teardown() {
301
303
[[ ${lines[10]} == * " piggie/piggie" * ]]
302
304
}
303
305
306
+ @test " Run checkpointctl inspect with tar file and --ps-tree-cmd as non-root" {
307
+ if [ " $CHECKPOINTCTL " == " ../checkpointctl.coverage" ]; then
308
+ skip " non-root test cannot access the coverage directory"
309
+ fi
310
+ cp data/config.dump \
311
+ data/spec.dump " $TEST_TMP_DIR1 "
312
+ mkdir " $TEST_TMP_DIR1 " /checkpoint
313
+ cp test-imgs/pstree.img \
314
+ test-imgs/core-* .img \
315
+ test-imgs/pagemap-* .img \
316
+ test-imgs/pages-* .img \
317
+ test-imgs/mm-* .img " $TEST_TMP_DIR1 " /checkpoint
318
+ ( cd " $TEST_TMP_DIR1 " && tar cf " $NON_ROOT_TMP1 " /test.tar . )
319
+ chmod 644 " $NON_ROOT_TMP1 " /test.tar
320
+ NON_ROOT_BIN=$( mktemp)
321
+ cp " $CHECKPOINTCTL " " $NON_ROOT_BIN "
322
+ chmod 755 " $NON_ROOT_BIN "
323
+ run sudo -u ' nobody' " $NON_ROOT_BIN " inspect " $NON_ROOT_TMP1 " /test.tar --ps-tree-cmd
324
+ echo " $output "
325
+ rm -f " $NON_ROOT_BIN "
326
+ [ " $status " -eq 0 ]
327
+ [[ ${lines[9]} == * " Process tree" * ]]
328
+ [[ ${lines[10]} == * " piggie/piggie" * ]]
329
+ }
330
+
304
331
@test " Run checkpointctl inspect with tar file and --ps-tree-cmd and missing pages-*.img" {
305
332
cp data/config.dump \
306
333
data/spec.dump " $TEST_TMP_DIR1 "
0 commit comments