xref: /aosp_15_r20/external/bcc/tests/wrapper.sh.in (revision 387f9dfdfa2baef462e92476d413c7bc2470293e)
1#!/bin/bash
2# Copyright (c) PLUMgrid, Inc.
3# Licensed under the Apache License, Version 2.0 (the "License")
4
5#set -x
6
7name=$1; shift
8kind=$1; shift
9cmd=$1; shift
10
11PYTHONPATH=@CMAKE_BINARY_DIR@/src/python/bcc-python3
12PYTHONIOENCODING=utf-8
13LD_LIBRARY_PATH=@CMAKE_BINARY_DIR@:@CMAKE_BINARY_DIR@/src/cc
14
15ns=$name
16
17function cleanup() {
18  trap - EXIT
19  if [[ "$kind" = "namespace" ]]; then
20    sudo ip netns delete $ns
21  fi
22}
23
24trap cleanup EXIT
25
26function ns_run() {
27  sudo ip netns add $ns
28  sudo ip link add $ns.in type veth peer name $ns.out
29  sudo ip link set $ns.in netns $ns
30  sudo ip netns exec $ns ip link set $ns.in name eth0
31  sudo ip netns exec $ns ip addr add dev eth0 172.16.1.2/24
32  sudo ip netns exec $ns ip link set eth0 up
33  sudo ip netns exec $ns ethtool -K eth0 tx off
34  sudo ip addr add dev $ns.out 172.16.1.1/24
35  sudo ip link set $ns.out up
36  sudo --preserve-env=PYTHON_TEST_LOGFILE env PYTHONIOENCODING=$PYTHONIOENCODING PYTHONPATH=$PYTHONPATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH ip netns exec $ns $cmd "$@"
37  return $?
38}
39function sudo_run() {
40  sudo --preserve-env=PYTHON_TEST_LOGFILE env PYTHONIOENCODING=$PYTHONIOENCODING PYTHONPATH=$PYTHONPATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH $cmd "$@"
41  return $?
42}
43function simple_run() {
44  PYTHONIOENCODING=$PYTHONIOENCODING PYTHONPATH=$PYTHONPATH PYTHON_TEST_LOGFILE=$PYTHON_TEST_LOGFILE LD_LIBRARY_PATH=$LD_LIBRARY_PATH $cmd "$@"
45  return $?
46}
47
48case $kind in
49  namespace)
50    ns_run "$@"
51    ;;
52  sudo)
53    sudo_run "$@"
54    ;;
55  simple)
56    simple_run "$@"
57    ;;
58  *)
59    echo "Invalid kind $kind"
60    exit 1
61    ;;
62esac
63
64[[ $? -ne 0 ]] && { echo "Failed"; exit 1; }
65
66exit 0
67