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