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