forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.6 KiB
82 lines
1.6 KiB
#!/bin/sh |
|
# SPDX-License-Identifier: GPL-2.0 |
|
|
|
# Kselftest framework requirement - SKIP code is 4. |
|
ksft_skip=4 |
|
|
|
TESTNAME=bpftool_metadata |
|
BPF_FS=$(awk '$3 == "bpf" {print $2; exit}' /proc/mounts) |
|
BPF_DIR=$BPF_FS/test_$TESTNAME |
|
|
|
_cleanup() |
|
{ |
|
set +e |
|
rm -rf $BPF_DIR 2> /dev/null |
|
} |
|
|
|
cleanup_skip() |
|
{ |
|
echo "selftests: $TESTNAME [SKIP]" |
|
_cleanup |
|
|
|
exit $ksft_skip |
|
} |
|
|
|
cleanup() |
|
{ |
|
if [ "$?" = 0 ]; then |
|
echo "selftests: $TESTNAME [PASS]" |
|
else |
|
echo "selftests: $TESTNAME [FAILED]" |
|
fi |
|
_cleanup |
|
} |
|
|
|
if [ $(id -u) -ne 0 ]; then |
|
echo "selftests: $TESTNAME [SKIP] Need root privileges" |
|
exit $ksft_skip |
|
fi |
|
|
|
if [ -z "$BPF_FS" ]; then |
|
echo "selftests: $TESTNAME [SKIP] Could not run test without bpffs mounted" |
|
exit $ksft_skip |
|
fi |
|
|
|
if ! bpftool version > /dev/null 2>&1; then |
|
echo "selftests: $TESTNAME [SKIP] Could not run test without bpftool" |
|
exit $ksft_skip |
|
fi |
|
|
|
set -e |
|
|
|
trap cleanup_skip EXIT |
|
|
|
mkdir $BPF_DIR |
|
|
|
trap cleanup EXIT |
|
|
|
bpftool prog load metadata_unused.o $BPF_DIR/unused |
|
|
|
METADATA_PLAIN="$(bpftool prog)" |
|
echo "$METADATA_PLAIN" | grep 'a = "foo"' > /dev/null |
|
echo "$METADATA_PLAIN" | grep 'b = 1' > /dev/null |
|
|
|
bpftool prog --json | grep '"metadata":{"a":"foo","b":1}' > /dev/null |
|
|
|
bpftool map | grep 'metadata.rodata' > /dev/null |
|
|
|
rm $BPF_DIR/unused |
|
|
|
bpftool prog load metadata_used.o $BPF_DIR/used |
|
|
|
METADATA_PLAIN="$(bpftool prog)" |
|
echo "$METADATA_PLAIN" | grep 'a = "bar"' > /dev/null |
|
echo "$METADATA_PLAIN" | grep 'b = 2' > /dev/null |
|
|
|
bpftool prog --json | grep '"metadata":{"a":"bar","b":2}' > /dev/null |
|
|
|
bpftool map | grep 'metadata.rodata' > /dev/null |
|
|
|
rm $BPF_DIR/used |
|
|
|
exit 0
|
|
|