2020-09-15 16:45:43 -07:00
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# Kselftest framework requirement - SKIP code is 4.
ksft_skip = 4
2022-10-20 11:05:34 +08:00
BPF_FILE_USED = "metadata_used.bpf.o"
BPF_FILE_UNUSED = "metadata_unused.bpf.o"
2020-09-15 16:45:43 -07:00
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
2022-10-20 11:05:34 +08:00
bpftool prog load $BPF_FILE_UNUSED $BPF_DIR /unused
2020-09-15 16:45:43 -07:00
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
2022-10-20 11:05:34 +08:00
bpftool prog load $BPF_FILE_USED $BPF_DIR /used
2020-09-15 16:45:43 -07:00
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