Skip to content

Commit aca960c

Browse files
committed
modify testing setup, try to fix workflow
- fix bug for resolving executable - change the correctness tests to call a harness and support any script file. - fix the workflow file to install trace_v3 and its programs and maps
1 parent 4e60b21 commit aca960c

7 files changed

Lines changed: 53 additions & 56 deletions

File tree

.github/workflows/test.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,11 @@ jobs:
3737
- name: checkout
3838
uses: actions/checkout@v4
3939

40-
- name: build
40+
- name: build and install
4141
run: |
4242
cargo build --release
43-
sudo install -o root -m 4755 target/release/trace_v3 /usr/local/bin
43+
sudo ./install.sh
44+
trace_v3 install
4445
4546
- name: run tests
4647
run: |

src/utils.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@ pub fn invoker_permissions() -> Result<(u32, u32)> {
1515
}
1616

1717
pub fn resolve_executable(executable: &str) -> Result<PathBuf> {
18+
let path_obj = PathBuf::from(executable);
19+
if path_obj.is_absolute() || executable.contains('/') {
20+
if path_obj.exists() {
21+
return Ok(path_obj);
22+
}
23+
return Err(anyhow!("executable not found at specified path"));
24+
}
25+
1826
let path = env::var("PATH")?;
1927
for p in path.split(':') {
2028
let executable_path = PathBuf::from(p).join(executable);

tests/correctness/harness.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/sh
2+
3+
test_name=$(basename "${1}" .sh)
4+
export TEST_OUTPUT="${TEST_OUTPUT:-$(mktemp -d /tmp/trace_v3_XXXX)/correctness}/${test_name}"
5+
mkdir -p "${TEST_OUTPUT}"
6+
7+
echo Running correctness harness for ${test_name}
8+
cat "./${test_name}.sh"
9+
10+
trace_v3 --dep-file /dev/null --trace-file "${TEST_OUTPUT}/trace_v3_log" -- "./${test_name}.sh" >/dev/null 2>&1
11+
12+
strace -y -f --seccomp-bpf -e %file,fork,clone,fcntl -o "${TEST_OUTPUT}/strace_log" -- "./${test_name}.sh" >/dev/null 2>&1
13+
14+
cat "${TEST_OUTPUT}/trace_v3_log" | cut -d'(' -f1 > "${TEST_OUTPUT}/trace_v3_calls"
15+
cat "${TEST_OUTPUT}/strace_log" | cut -d' ' -f2 | cut -d'(' -f1 | grep -v "+++" > "${TEST_OUTPUT}/strace_calls"
16+
17+
diff "${TEST_OUTPUT}/trace_v3_calls" "${TEST_OUTPUT}/strace_calls" > "${TEST_OUTPUT}/diff"
18+
diff_status=$?
19+
20+
echo Reported results for "$@" in "${TEST_OUTPUT}"
21+
cat "${TEST_OUTPUT}/diff"
22+
exit $diff_status

tests/correctness/run-harness.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/bin/sh
2+
3+
set -e
4+
5+
PROJ_ROOT="${PROJ_ROOT:-$(git rev-parse --show-toplevel)}"
6+
cd "${PROJ_ROOT}/tests/correctness"
7+
8+
export TEST_OUTPUT="${TEST_OUTPUT:-$(mktemp -d /tmp/trace_v3_XXXX)}/correctness"
9+
mkdir -p "${TEST_OUTPUT}"
10+
11+
for f in ./test-*
12+
do
13+
./harness.sh $f
14+
done

tests/correctness/test-find.sh

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,2 @@
11
#!/bin/sh
2-
3-
PROJ_ROOT="${PROJ_ROOT:-$(git rev-parse --show-toplevel)}"
4-
TEST="${PROJ_ROOT}"/tests
5-
TRACE=${TRACE:-$1}
6-
7-
TRACE_V3_OUTPUT=$(mktemp)
8-
STRACE_OUTPUT=$(mktemp)
9-
10-
echo trace_v3
11-
"${TRACE}" --dep-file /dev/null --trace-file $TRACE_V3_OUTPUT -- find /
12-
13-
echo strace
14-
strace -y -f --seccomp-bpf -e %file,fork,clone,fcntl -o $STRACE_OUTPUT -- find /
15-
16-
echo get syscalls
17-
cat $TRACE_V3_OUTPUT | cut -d'(' -f1 > "${TRACE_V3_OUTPUT}calls"
18-
cat $STRACE_OUTPUT | cut -d' ' -f2 | cut -d'(' -f1 > "${STRACE_OUTPUT}calls"
19-
20-
echo diff
21-
diff "${TRACE_V3_OUTPUT}calls" "${STRACE_OUTPUT}calls"
22-
23-
echo done
2+
find /

tests/correctness/test-ls.sh

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,2 @@
11
#!/bin/sh
2-
3-
PROJ_ROOT="${PROJ_ROOT:-$(git rev-parse --show-toplevel)}"
4-
TEST="${PROJ_ROOT}"/tests
5-
TRACE=${TRACE:-$1}
6-
7-
TRACE_V3_OUTPUT=$(mktemp)
8-
STRACE_OUTPUT=$(mktemp)
9-
10-
echo trace_v3
11-
"${TRACE}" --dep-file /dev/null --trace-file $TRACE_V3_OUTPUT -- ls
12-
13-
echo strace
14-
strace -y -f --seccomp-bpf -e %file,fork,clone,fcntl -o $STRACE_OUTPUT -- ls
15-
16-
echo get syscalls
17-
cat $TRACE_V3_OUTPUT | cut -d'(' -f1 > "${TRACE_V3_OUTPUT}calls"
18-
cat $STRACE_OUTPUT | cut -d' ' -f2 | cut -d'(' -f1 > "${STRACE_OUTPUT}calls"
19-
20-
echo diff
21-
diff "${TRACE_V3_OUTPUT}calls" "${STRACE_OUTPUT}calls"
22-
23-
echo done
2+
ls -latr

tests/run-tests.sh

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,6 @@ export PROJ_ROOT="$(git rev-parse --show-toplevel)"
44

55
export TRACE=$(which trace_v3)
66

7-
for test in "${PROJ_ROOT}"/tests/correctness/test-*.sh
8-
do
9-
echo "Running $(basename $test)"
10-
${test} 1>"${test}.out" 2>"${test}.err"
11-
echo "==== STDOUT ===="
12-
cat "${test}.out"
13-
echo "==== STDERR ===="
14-
cat "${test}.err"
15-
done
16-
177
for test in "${PROJ_ROOT}"/tests/short/test-*.sh
188
do
199
echo "Running $(basename $test)"
@@ -33,3 +23,7 @@ do
3323
echo "==== STDERR ===="
3424
cat "${test}.err"
3525
done
26+
27+
echo "==== CORRECTNESS TESTS ===="
28+
"${PROJ_ROOT}/tests/correctness/run-harness.sh"
29+

0 commit comments

Comments
 (0)