add fedora docker tests + move dockerfiles to a new dir
authorDave Marchevsky <davemarchevsky@fb.com>
Wed, 29 Dec 2021 03:45:22 +0000 (22:45 -0500)
committerDave Marchevsky <davemarchevsky@fb.com>
Wed, 29 Dec 2021 10:04:51 +0000 (05:04 -0500)
Dockerfiles are cluttering up the main repo dir, so move them to a
newly-created 'docker' dir.

Add a fedora dockerfile and use it in bcc-test workflow.

14 files changed:
.dockerignore
.github/workflows/bcc-test.yml
CMakeLists.txt
Dockerfile.debian [deleted file]
Dockerfile.tests [deleted file]
Dockerfile.ubuntu [deleted file]
docker/Dockerfile.debian [new file with mode: 0644]
docker/Dockerfile.fedora [new file with mode: 0644]
docker/Dockerfile.tests [new file with mode: 0644]
docker/Dockerfile.ubuntu [new file with mode: 0644]
scripts/docker/build.sh
tests/lua/CMakeLists.txt
tests/lua/test_uprobes.lua
tests/python/test_uprobes.py

index d963b7ea70ad13ea59b169297b434e79c40b22be..1a8eb5e6fc1c30d4356470ded394c7706707d0e4 100644 (file)
@@ -1,3 +1,4 @@
 Dockerfile*
 build
 .*.swp
+docker/Dockerfile*
index e59d8a461dd6ed73d771d63e996ca44d426f5160..6085062d54f8a1e03020ce08e3b5712e6e2b691e 100644 (file)
@@ -28,7 +28,7 @@ jobs:
         docker build \
         --build-arg UBUNTU_VERSION=${{ matrix.os.version }} \
         --build-arg UBUNTU_SHORTNAME=${{ matrix.os.nick }} \
-        -t bcc-docker -f Dockerfile.tests .
+        -t bcc-docker -f docker/Dockerfile.tests .
     - name: Run bcc build
       env: ${{ matrix.env }}
       run: |
@@ -94,6 +94,86 @@ jobs:
         name: critical-tests-${{ matrix.env['TYPE'] }}-${{ matrix.os.version }}
         path: tests/python/critical.log
 
+  test_bcc_fedora:
+    runs-on: ubuntu-20.04
+    strategy:
+      matrix:
+        env:
+        - TYPE: Debug
+          PYTHON_TEST_LOGFILE: critical.log
+        - TYPE: Release
+          PYTHON_TEST_LOGFILE: critical.log
+    steps:
+    - uses: actions/checkout@v2
+    - name: System info
+      run: |
+        uname -a
+        ip addr
+    - name: Build docker container with all deps
+      run: |
+        docker build \
+        -t bcc-docker -f docker/Dockerfile.fedora .
+    - name: Run bcc build
+      env: ${{ matrix.env }}
+      run: |
+        /bin/bash -c \
+                   "docker run --privileged \
+                   --pid=host \
+                   -v $(pwd):/bcc \
+                   -v /sys/kernel/debug:/sys/kernel/debug:rw \
+                   -v /lib/modules:/lib/modules:ro \
+                   -v /usr/src:/usr/src:ro \
+                   -v /usr/include/linux:/usr/include/linux:ro \
+                   bcc-docker \
+                   /bin/bash -c \
+                   'mkdir -p /bcc/build && cd /bcc/build && \
+                    cmake -DCMAKE_BUILD_TYPE=${TYPE} -DENABLE_LLVM_SHARED=ON -DRUN_LUA_TESTS=OFF .. && make -j9'"
+    - name: Run bcc's cc tests
+      env: ${{ matrix.env }}
+      # tests are wrapped with `script` as a hack to get a TTY as github actions doesn't provide this
+      # see https://github.com/actions/runner/issues/241
+      run: |
+        script -e -c /bin/bash -c \
+        "docker run -ti \
+                    --privileged \
+                    --network=host \
+                    --pid=host \
+                    -v $(pwd):/bcc \
+                    -v /sys/kernel/debug:/sys/kernel/debug:rw \
+                    -v /lib/modules:/lib/modules:ro \
+                    -v /usr/src:/usr/src:ro \
+                    -e CTEST_OUTPUT_ON_FAILURE=1 \
+                    bcc-docker \
+                    /bin/bash -c \
+                    '/bcc/build/tests/wrapper.sh \
+                        c_test_all sudo /bcc/build/tests/cc/test_libbcc'"
+
+    - name: Run all tests
+      env: ${{ matrix.env }}
+      run: |
+        script -e -c /bin/bash -c \
+        "docker run -ti \
+                    --privileged \
+                    --network=host \
+                    --pid=host \
+                    -v $(pwd):/bcc \
+                    -v /sys/kernel/debug:/sys/kernel/debug:rw \
+                    -v /lib/modules:/lib/modules:ro \
+                    -v /usr/src:/usr/src:ro \
+                    -e CTEST_OUTPUT_ON_FAILURE=1 \
+                    bcc-docker \
+                    /bin/bash -c \
+                    'cd /bcc/build && \
+                     make test PYTHON_TEST_LOGFILE=$PYTHON_TEST_LOGFILE ARGS=-V'"
+
+    - name: Check critical tests
+      env: ${{ matrix.env }}
+      run: |
+        critical_count=$(grep @mayFail tests/python/critical.log | wc -l)
+        echo "There were $critical_count critical tests skipped with @mayFail:"
+        grep -A2 @mayFail tests/python/critical.log
+
+
 # To debug weird issues, you can add this step to be able to SSH to the test environment
 #     https://github.com/marketplace/actions/debugging-with-tmate
 #    - name: Setup tmate session
index 13abaec62a3014495e93276a752be065df69307f..1d7dabe58aca027834cd3afe2febe8a6ed740867 100644 (file)
@@ -67,6 +67,7 @@ option(ENABLE_USDT "Enable User-level Statically Defined Tracing" ON)
 option(ENABLE_EXAMPLES "Build examples" ON)
 option(ENABLE_MAN "Build man pages" ON)
 option(ENABLE_TESTS "Build tests" ON)
+option(RUN_LUA_TESTS "Run lua tests" ON)
 CMAKE_DEPENDENT_OPTION(ENABLE_CPP_API "Enable C++ API" ON "ENABLE_USDT" OFF)
 
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
diff --git a/Dockerfile.debian b/Dockerfile.debian
deleted file mode 100644 (file)
index 9b0284d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-FROM debian:stretch
-
-MAINTAINER Brenden Blanco <bblanco@gmail.com>
-
-RUN DEBIAN_RELEASE=stretch && \
-    # Adding non-free repo for netperf
-    echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE} non-free" > \
-        /etc/apt/sources.list.d/debian-non-free.list && \
-    apt-get -qq update && \
-    apt-get -y install pbuilder aptitude
-
-COPY ./ /root/bcc
-
-WORKDIR /root/bcc
-
-RUN /usr/lib/pbuilder/pbuilder-satisfydepends && \
-    ./scripts/build-deb.sh
diff --git a/Dockerfile.tests b/Dockerfile.tests
deleted file mode 100644 (file)
index 28965c4..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-ARG UBUNTU_VERSION="18.04"
-FROM ubuntu:${UBUNTU_VERSION}
-
-ARG LLVM_VERSION="11"
-ENV LLVM_VERSION=$LLVM_VERSION
-
-ARG UBUNTU_SHORTNAME="bionic"
-
-RUN apt-get update && apt-get install -y curl gnupg &&\
-    llvmRepository="\n\
-deb http://apt.llvm.org/${UBUNTU_SHORTNAME}/ llvm-toolchain-${UBUNTU_SHORTNAME} main\n\
-deb-src http://apt.llvm.org/${UBUNTU_SHORTNAME}/ llvm-toolchain-${UBUNTU_SHORTNAME} main\n\
-deb http://apt.llvm.org/${UBUNTU_SHORTNAME}/ llvm-toolchain-${UBUNTU_SHORTNAME}-${LLVM_VERSION} main\n\
-deb-src http://apt.llvm.org/${UBUNTU_SHORTNAME}/ llvm-toolchain-${UBUNTU_SHORTNAME}-${LLVM_VERSION} main\n" &&\
-    echo $llvmRepository >> /etc/apt/sources.list && \
-    curl -L https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
-
-ARG DEBIAN_FRONTEND="noninteractive"
-ENV TZ="Etc/UTC"
-
-RUN apt-get update && apt-get install -y \
-      util-linux \
-      bison \
-      binutils-dev \
-      cmake \
-      flex \
-      g++ \
-      git \
-      kmod \
-      wget \
-      libelf-dev \
-      zlib1g-dev \
-      libiberty-dev \
-      libbfd-dev \
-      libedit-dev \
-      clang-${LLVM_VERSION} \
-      libclang-${LLVM_VERSION}-dev \
-      libclang-common-${LLVM_VERSION}-dev \
-      libclang1-${LLVM_VERSION} \
-      llvm-${LLVM_VERSION} \
-      llvm-${LLVM_VERSION}-dev \
-      llvm-${LLVM_VERSION}-runtime \
-      libllvm${LLVM_VERSION} \
-      systemtap-sdt-dev \
-      sudo \
-      iproute2 \
-      python3 \
-      python3-pip \
-      ethtool \
-      arping \
-      netperf \
-      iperf \
-      iputils-ping \
-      bridge-utils \
-      libtinfo5 \
-      libtinfo-dev
-
-RUN pip3 install pyroute2==0.5.18 netaddr==0.8.0 dnslib==0.9.14 cachetools==3.1.1
-
-# FIXME this is faster than building from source, but it seems there is a bug
-# in probing libruby.so rather than ruby binary
-#RUN apt-get update -qq && \
-#    apt-get install -y software-properties-common && \
-#    apt-add-repository ppa:brightbox/ruby-ng && \
-#    apt-get update -qq && apt-get install -y ruby2.6 ruby2.6-dev
-
-RUN wget -O ruby-install-0.7.0.tar.gz \
-         https://github.com/postmodern/ruby-install/archive/v0.7.0.tar.gz && \
-    tar -xzvf ruby-install-0.7.0.tar.gz && \
-    cd ruby-install-0.7.0/ && \
-    make install
-
-RUN ruby-install --system ruby 2.6.0 -- --enable-dtrace
-RUN if [ ! -f "/usr/bin/python" ]; then ln -s /bin/python3 /usr/bin/python; fi
diff --git a/Dockerfile.ubuntu b/Dockerfile.ubuntu
deleted file mode 100644 (file)
index 133fda5..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-ARG OS_TAG=18.04
-FROM ubuntu:${OS_TAG} as builder
-
-ARG OS_TAG
-ARG BUILD_TYPE=release
-ARG DEBIAN_FRONTEND=noninteractive
-
-MAINTAINER Brenden Blanco <bblanco@gmail.com>
-
-RUN apt-get -qq update && \
-    apt-get -y install pbuilder aptitude
-
-COPY ./ /root/bcc
-
-WORKDIR /root/bcc
-
-RUN /usr/lib/pbuilder/pbuilder-satisfydepends && \
-    ./scripts/build-deb.sh ${BUILD_TYPE}
-
-FROM ubuntu:${OS_TAG}
-
-COPY --from=builder /root/bcc/*.deb /root/bcc/
-
-RUN \
-  apt-get update -y && \
-  DEBIAN_FRONTEND=noninteractive apt-get install -y python python3 python3-pip binutils libelf1 kmod  && \
-  if [ ${OS_TAG} = "18.04" ];then \
-    apt-get -y install python-pip && \
-    pip install dnslib cachetools ; \
-  fi ; \
-  pip3 install dnslib cachetools  && \
-  dpkg -i /root/bcc/*.deb
diff --git a/docker/Dockerfile.debian b/docker/Dockerfile.debian
new file mode 100644 (file)
index 0000000..9b0284d
--- /dev/null
@@ -0,0 +1,17 @@
+FROM debian:stretch
+
+MAINTAINER Brenden Blanco <bblanco@gmail.com>
+
+RUN DEBIAN_RELEASE=stretch && \
+    # Adding non-free repo for netperf
+    echo "deb http://deb.debian.org/debian ${DEBIAN_RELEASE} non-free" > \
+        /etc/apt/sources.list.d/debian-non-free.list && \
+    apt-get -qq update && \
+    apt-get -y install pbuilder aptitude
+
+COPY ./ /root/bcc
+
+WORKDIR /root/bcc
+
+RUN /usr/lib/pbuilder/pbuilder-satisfydepends && \
+    ./scripts/build-deb.sh
diff --git a/docker/Dockerfile.fedora b/docker/Dockerfile.fedora
new file mode 100644 (file)
index 0000000..4089049
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright (c) PLUMgrid, Inc.
+# Licensed under the Apache License, Version 2.0 (the "License")
+
+FROM fedora:34
+
+MAINTAINER Dave Marchevsky <davemarchevsky@fb.com>
+
+RUN dnf -y install \
+       bison \
+       cmake \
+       flex \
+       gcc \
+       gcc-c++ \
+       git \
+       libxml2-devel \
+       make \
+       rpm-build \
+       wget \
+       zlib-devel \
+       llvm \
+       llvm-devel \
+       clang-devel \
+       elfutils-debuginfod-client-devel \
+#      elfutils-libelf-devel-static \
+       elfutils-libelf-devel \
+       luajit \
+       luajit-devel \
+       python3-devel \
+       libstdc++ \
+       libstdc++-devel
+
+RUN dnf -y install \
+       python3 \
+       python3-pip
+
+RUN dnf -y install \
+       procps \
+       iputils \
+       net-tools \
+       hostname \
+       iproute
+
+RUN pip3 install pyroute2==0.5.18 netaddr==0.8.0 dnslib==0.9.14 cachetools==3.1.1
diff --git a/docker/Dockerfile.tests b/docker/Dockerfile.tests
new file mode 100644 (file)
index 0000000..28965c4
--- /dev/null
@@ -0,0 +1,74 @@
+ARG UBUNTU_VERSION="18.04"
+FROM ubuntu:${UBUNTU_VERSION}
+
+ARG LLVM_VERSION="11"
+ENV LLVM_VERSION=$LLVM_VERSION
+
+ARG UBUNTU_SHORTNAME="bionic"
+
+RUN apt-get update && apt-get install -y curl gnupg &&\
+    llvmRepository="\n\
+deb http://apt.llvm.org/${UBUNTU_SHORTNAME}/ llvm-toolchain-${UBUNTU_SHORTNAME} main\n\
+deb-src http://apt.llvm.org/${UBUNTU_SHORTNAME}/ llvm-toolchain-${UBUNTU_SHORTNAME} main\n\
+deb http://apt.llvm.org/${UBUNTU_SHORTNAME}/ llvm-toolchain-${UBUNTU_SHORTNAME}-${LLVM_VERSION} main\n\
+deb-src http://apt.llvm.org/${UBUNTU_SHORTNAME}/ llvm-toolchain-${UBUNTU_SHORTNAME}-${LLVM_VERSION} main\n" &&\
+    echo $llvmRepository >> /etc/apt/sources.list && \
+    curl -L https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
+
+ARG DEBIAN_FRONTEND="noninteractive"
+ENV TZ="Etc/UTC"
+
+RUN apt-get update && apt-get install -y \
+      util-linux \
+      bison \
+      binutils-dev \
+      cmake \
+      flex \
+      g++ \
+      git \
+      kmod \
+      wget \
+      libelf-dev \
+      zlib1g-dev \
+      libiberty-dev \
+      libbfd-dev \
+      libedit-dev \
+      clang-${LLVM_VERSION} \
+      libclang-${LLVM_VERSION}-dev \
+      libclang-common-${LLVM_VERSION}-dev \
+      libclang1-${LLVM_VERSION} \
+      llvm-${LLVM_VERSION} \
+      llvm-${LLVM_VERSION}-dev \
+      llvm-${LLVM_VERSION}-runtime \
+      libllvm${LLVM_VERSION} \
+      systemtap-sdt-dev \
+      sudo \
+      iproute2 \
+      python3 \
+      python3-pip \
+      ethtool \
+      arping \
+      netperf \
+      iperf \
+      iputils-ping \
+      bridge-utils \
+      libtinfo5 \
+      libtinfo-dev
+
+RUN pip3 install pyroute2==0.5.18 netaddr==0.8.0 dnslib==0.9.14 cachetools==3.1.1
+
+# FIXME this is faster than building from source, but it seems there is a bug
+# in probing libruby.so rather than ruby binary
+#RUN apt-get update -qq && \
+#    apt-get install -y software-properties-common && \
+#    apt-add-repository ppa:brightbox/ruby-ng && \
+#    apt-get update -qq && apt-get install -y ruby2.6 ruby2.6-dev
+
+RUN wget -O ruby-install-0.7.0.tar.gz \
+         https://github.com/postmodern/ruby-install/archive/v0.7.0.tar.gz && \
+    tar -xzvf ruby-install-0.7.0.tar.gz && \
+    cd ruby-install-0.7.0/ && \
+    make install
+
+RUN ruby-install --system ruby 2.6.0 -- --enable-dtrace
+RUN if [ ! -f "/usr/bin/python" ]; then ln -s /bin/python3 /usr/bin/python; fi
diff --git a/docker/Dockerfile.ubuntu b/docker/Dockerfile.ubuntu
new file mode 100644 (file)
index 0000000..133fda5
--- /dev/null
@@ -0,0 +1,32 @@
+ARG OS_TAG=18.04
+FROM ubuntu:${OS_TAG} as builder
+
+ARG OS_TAG
+ARG BUILD_TYPE=release
+ARG DEBIAN_FRONTEND=noninteractive
+
+MAINTAINER Brenden Blanco <bblanco@gmail.com>
+
+RUN apt-get -qq update && \
+    apt-get -y install pbuilder aptitude
+
+COPY ./ /root/bcc
+
+WORKDIR /root/bcc
+
+RUN /usr/lib/pbuilder/pbuilder-satisfydepends && \
+    ./scripts/build-deb.sh ${BUILD_TYPE}
+
+FROM ubuntu:${OS_TAG}
+
+COPY --from=builder /root/bcc/*.deb /root/bcc/
+
+RUN \
+  apt-get update -y && \
+  DEBIAN_FRONTEND=noninteractive apt-get install -y python python3 python3-pip binutils libelf1 kmod  && \
+  if [ ${OS_TAG} = "18.04" ];then \
+    apt-get -y install python-pip && \
+    pip install dnslib cachetools ; \
+  fi ; \
+  pip3 install dnslib cachetools  && \
+  dpkg -i /root/bcc/*.deb
index e2952c33748351477c643a7224182d2f290fbe63..9c906389a43520aa739466e996719f225788e431 100755 (executable)
@@ -20,7 +20,7 @@ distro=${4:-ubuntu}
 
 # The main docker image build,
 echo "Building ${distro} ${os_tag} release docker image for ${docker_repo}:${docker_tag}"
-docker build -t ${docker_repo}:${docker_tag} --build-arg OS_TAG=${os_tag} -f Dockerfile.${distro} .
+docker build -t ${docker_repo}:${docker_tag} --build-arg OS_TAG=${os_tag} -f docker/Dockerfile.${distro} .
 
 echo "Copying build artifacts to $(pwd)/output"
 mkdir -p output
index d3d7298a93bba006ef967e393e429f0ed88a378a..7db41e9106051b7f41cdd8ecf37cf9121f7661c9 100644 (file)
@@ -1,21 +1,23 @@
 find_program(LUAJIT luajit)
 find_program(BUSTED busted)
 
-if(LUAJIT)
-       add_test(NAME lua_test_clang WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-               COMMAND ${TEST_WRAPPER} lua_test_clang sudo ${LUAJIT} test_clang.lua)
+if(RUN_LUA_TESTS)
+       if(LUAJIT)
+               add_test(NAME lua_test_clang WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                       COMMAND ${TEST_WRAPPER} lua_test_clang sudo ${LUAJIT} test_clang.lua)
 
-       add_test(NAME lua_test_uprobes WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-               COMMAND ${TEST_WRAPPER} lua_test_uprobes sudo ${LUAJIT} test_uprobes.lua)
+               add_test(NAME lua_test_uprobes WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                       COMMAND ${TEST_WRAPPER} lua_test_uprobes sudo ${LUAJIT} test_uprobes.lua)
 
-       add_test(NAME lua_test_dump WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-               COMMAND ${TEST_WRAPPER} lua_test_dump sudo ${LUAJIT} test_dump.lua)
+               add_test(NAME lua_test_dump WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                       COMMAND ${TEST_WRAPPER} lua_test_dump sudo ${LUAJIT} test_dump.lua)
 
-       add_test(NAME lua_test_standalone WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-               COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test_standalone.sh)
+               add_test(NAME lua_test_standalone WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+                       COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/test_standalone.sh)
 
-       if(BUSTED)
-               add_test(NAME lua_test_busted WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-                       COMMAND busted --lua=${LUAJIT} -m "${CMAKE_CURRENT_SOURCE_DIR}/../../src/lua/?.lua" -m "${CMAKE_CURRENT_SOURCE_DIR}/../../src/lua/?/init.lua;")
+               if(BUSTED)
+                       add_test(NAME lua_test_busted WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+                               COMMAND busted --lua=${LUAJIT} -m "${CMAKE_CURRENT_SOURCE_DIR}/../../src/lua/?.lua" -m "${CMAKE_CURRENT_SOURCE_DIR}/../../src/lua/?/init.lua;")
+               endif()
        endif()
 endif()
index 059486e28110967d998942081600d79eeb51142c..9323d61a5a2ee3a7f043ce4b6843e790bc7f9efb 100644 (file)
@@ -54,10 +54,12 @@ int count(struct pt_regs *ctx) {
 }]]
 
   local b = BPF:new{text=text}
-  b:attach_uprobe{name="/usr/bin/python", sym="main", fn_name="count"}
-  b:attach_uprobe{name="/usr/bin/python", sym="main", fn_name="count", retprobe=true}
+  local pythonpath = "/usr/bin/python3"
+  local symname = "_start"
+  b:attach_uprobe{name=pythonpath, sym=symname, fn_name="count"}
+  b:attach_uprobe{name=pythonpath, sym=symname, fn_name="count", retprobe=true}
 
-  os.spawn("/usr/bin/python -V")
+  os.spawn(pythonpath .. " -V")
 
   local stats = b:get_table("stats")
   assert_true(tonumber(stats:get(0)) >= 2)
index afbf0e11308d32deef4b6bc4e2a5b90de9fa3d5c..3682f460403ce4d0233d1911f2af0290a16cbe89 100755 (executable)
@@ -57,13 +57,14 @@ int count(struct pt_regs *ctx) {
 }"""
         b = bcc.BPF(text=text)
         pythonpath = "/usr/bin/python3"
-        b.attach_uprobe(name=pythonpath, sym="main", fn_name="count")
-        b.attach_uretprobe(name=pythonpath, sym="main", fn_name="count")
+        symname = "_start"
+        b.attach_uprobe(name=pythonpath, sym=symname, fn_name="count")
+        b.attach_uretprobe(name=pythonpath, sym=symname, fn_name="count")
         with os.popen(pythonpath + " -V") as f:
             pass
         self.assertGreater(b["stats"][ctypes.c_int(0)].value, 0)
-        b.detach_uretprobe(name=pythonpath, sym="main")
-        b.detach_uprobe(name=pythonpath, sym="main")
+        b.detach_uretprobe(name=pythonpath, sym=symname)
+        b.detach_uprobe(name=pythonpath, sym=symname)
 
     def test_mount_namespace(self):
         text = """