From: Dave Marchevsky Date: Sat, 14 Aug 2021 08:29:31 +0000 (-0700) Subject: bcc/python tests: pull kernel_version_ge into utils X-Git-Tag: v0.22.0~24 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=16b65f0e7a04f5c9438d19c698c035892ebbdcb9;p=platform%2Fupstream%2Fbcc.git bcc/python tests: pull kernel_version_ge into utils This helper is replicated in a few different places, let's pull it out. --- diff --git a/tests/python/test_clang.py b/tests/python/test_clang.py index b62e905a..f6c05bae 100755 --- a/tests/python/test_clang.py +++ b/tests/python/test_clang.py @@ -5,12 +5,12 @@ from bcc import BPF import ctypes as ct from unittest import main, skipUnless, TestCase +from utils import kernel_version_ge import os import sys import socket import struct from contextlib import contextmanager -import distutils.version @contextmanager def redirect_stderr(to): @@ -24,17 +24,6 @@ def redirect_stderr(to): sys.stderr.flush() os.dup2(copied.fileno(), stderr_fd) -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - class TestClang(TestCase): def test_complex(self): b = BPF(src_file="test_clang_complex.c", debug=0) diff --git a/tests/python/test_free_bcc_memory.py b/tests/python/test_free_bcc_memory.py index bb2c8fb4..7d6f6f43 100755 --- a/tests/python/test_free_bcc_memory.py +++ b/tests/python/test_free_bcc_memory.py @@ -9,20 +9,9 @@ from __future__ import print_function from bcc import BPF from unittest import main, skipUnless, TestCase from subprocess import Popen, PIPE -import distutils.version +from utils import kernel_version_ge import os -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - class TestFreeLLVMMemory(TestCase): def getRssFile(self): p = Popen(["cat", "/proc/" + str(os.getpid()) + "/status"], diff --git a/tests/python/test_lpm_trie.py b/tests/python/test_lpm_trie.py index c95b9ced..638362a6 100755 --- a/tests/python/test_lpm_trie.py +++ b/tests/python/test_lpm_trie.py @@ -3,23 +3,12 @@ # Licensed under the Apache License, Version 2.0 (the "License") import ctypes as ct -import distutils.version import os from unittest import main, skipUnless, TestCase +from utils import kernel_version_ge from bcc import BPF from netaddr import IPAddress -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - class KeyV4(ct.Structure): _fields_ = [("prefixlen", ct.c_uint), ("data", ct.c_ubyte * 4)] diff --git a/tests/python/test_map_batch_ops.py b/tests/python/test_map_batch_ops.py index 0276d041..ffc9bde6 100755 --- a/tests/python/test_map_batch_ops.py +++ b/tests/python/test_map_batch_ops.py @@ -7,25 +7,13 @@ from __future__ import print_function from unittest import main, skipUnless, TestCase +from utils import kernel_version_ge from bcc import BPF import os -import distutils.version import ctypes as ct -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - - @skipUnless(kernel_version_ge(5, 6), "requires kernel >= 5.6") class TestMapBatch(TestCase): MAPSIZE = 1024 diff --git a/tests/python/test_map_in_map.py b/tests/python/test_map_in_map.py index bd909d84..751eb79e 100755 --- a/tests/python/test_map_in_map.py +++ b/tests/python/test_map_in_map.py @@ -7,8 +7,8 @@ from __future__ import print_function from bcc import BPF -import distutils.version from unittest import main, skipUnless, TestCase +from utils import kernel_version_ge import ctypes as ct import os @@ -19,17 +19,6 @@ class CustomKey(ct.Structure): ("value_2", ct.c_int) ] -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - @skipUnless(kernel_version_ge(4,11), "requires kernel >= 4.11") class TestUDST(TestCase): def test_hash_table(self): diff --git a/tests/python/test_queuestack.py b/tests/python/test_queuestack.py index cec060a8..c00283db 100755 --- a/tests/python/test_queuestack.py +++ b/tests/python/test_queuestack.py @@ -3,27 +3,16 @@ # Licensed under the Apache License, Version 2.0 (the "License") import os -import distutils.version import ctypes as ct from bcc import BPF from unittest import main, TestCase, skipUnless - -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True +from utils import kernel_version_ge @skipUnless(kernel_version_ge(4,20), "requires kernel >= 4.20") class TestQueueStack(TestCase): - + def test_stack(self): text = """ BPF_STACK(stack, u64, 10); diff --git a/tests/python/test_ringbuf.py b/tests/python/test_ringbuf.py index 2c24eada..93245be5 100755 --- a/tests/python/test_ringbuf.py +++ b/tests/python/test_ringbuf.py @@ -4,23 +4,12 @@ from bcc import BPF import os -import distutils.version import ctypes as ct import random import time import subprocess from unittest import main, TestCase, skipUnless - -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True +from utils import kernel_version_ge class TestRingbuf(TestCase): @skipUnless(kernel_version_ge(5,8), "requires kernel >= 5.8") diff --git a/tests/python/test_stackid.py b/tests/python/test_stackid.py index 5809e953..34a756b4 100755 --- a/tests/python/test_stackid.py +++ b/tests/python/test_stackid.py @@ -3,23 +3,11 @@ # Licensed under the Apache License, Version 2.0 (the "License") import bcc -import distutils.version import os import unittest -from utils import mayFail +from utils import mayFail, kernel_version_ge import subprocess -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - @unittest.skipUnless(kernel_version_ge(4,6), "requires kernel >= 4.6") class TestStackid(unittest.TestCase): diff --git a/tests/python/test_tools_memleak.py b/tests/python/test_tools_memleak.py index bbc0a83c..45528b83 100755 --- a/tests/python/test_tools_memleak.py +++ b/tests/python/test_tools_memleak.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from unittest import main, skipUnless, TestCase -import distutils.version +from utils import kernel_version_ge import os import subprocess import sys @@ -19,18 +19,6 @@ class cfg: leaking_amount = 30000 -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - - def setUpModule(): # Build the memory leaking application. c_src = 'test_tools_memleak_leaker_app.c' diff --git a/tests/python/test_tools_smoke.py b/tests/python/test_tools_smoke.py index 5c016420..ac83434b 100755 --- a/tests/python/test_tools_smoke.py +++ b/tests/python/test_tools_smoke.py @@ -7,21 +7,10 @@ import subprocess import os import re from unittest import main, skipUnless, TestCase -from utils import mayFail +from utils import mayFail, kernel_version_ge TOOLS_DIR = "../../tools/" -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - @skipUnless(kernel_version_ge(4,1), "requires kernel >= 4.1") class SmokeTests(TestCase): # Use this for commands that have a built-in timeout, so they only need diff --git a/tests/python/test_tracepoint.py b/tests/python/test_tracepoint.py index 3bc576a8..ddc2c979 100755 --- a/tests/python/test_tracepoint.py +++ b/tests/python/test_tracepoint.py @@ -5,21 +5,10 @@ import bcc import unittest from time import sleep -import distutils.version +from utils import kernel_version_ge import os import subprocess -def kernel_version_ge(major, minor): - # True if running kernel is >= X.Y - version = distutils.version.LooseVersion(os.uname()[2]).version - if version[0] > major: - return True - if version[0] < major: - return False - if minor and version[1] < minor: - return False - return True - @unittest.skipUnless(kernel_version_ge(4,7), "requires kernel >= 4.7") class TestTracepoint(unittest.TestCase): def test_tracepoint(self): diff --git a/tests/python/utils.py b/tests/python/utils.py index f4f501bd..b1a7d263 100644 --- a/tests/python/utils.py +++ b/tests/python/utils.py @@ -1,6 +1,7 @@ from pyroute2 import NSPopen from distutils.spawn import find_executable import traceback +import distutils.version import logging, os, sys @@ -62,3 +63,14 @@ class NSPopenWithCheck(NSPopen): name = list(argv)[0][0] has_executable(name) super(NSPopenWithCheck, self).__init__(nsname, *argv, **kwarg) + +def kernel_version_ge(major, minor): + # True if running kernel is >= X.Y + version = distutils.version.LooseVersion(os.uname()[2]).version + if version[0] > major: + return True + if version[0] < major: + return False + if minor and version[1] < minor: + return False + return True