bcc/python tests: pull kernel_version_ge into utils
authorDave Marchevsky <davemarchevsky@fb.com>
Sat, 14 Aug 2021 08:29:31 +0000 (01:29 -0700)
committeryonghong-song <ys114321@gmail.com>
Thu, 19 Aug 2021 17:24:22 +0000 (10:24 -0700)
This helper is replicated in a few different places, let's pull it out.

12 files changed:
tests/python/test_clang.py
tests/python/test_free_bcc_memory.py
tests/python/test_lpm_trie.py
tests/python/test_map_batch_ops.py
tests/python/test_map_in_map.py
tests/python/test_queuestack.py
tests/python/test_ringbuf.py
tests/python/test_stackid.py
tests/python/test_tools_memleak.py
tests/python/test_tools_smoke.py
tests/python/test_tracepoint.py
tests/python/utils.py

index b62e905..f6c05ba 100755 (executable)
@@ -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)
index bb2c8fb..7d6f6f4 100755 (executable)
@@ -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"],
index c95b9ce..638362a 100755 (executable)
@@ -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)]
index 0276d04..ffc9bde 100755 (executable)
@@ -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
index bd909d8..751eb79 100755 (executable)
@@ -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):
index cec060a..c00283d 100755 (executable)
@@ -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);
index 2c24ead..93245be 100755 (executable)
@@ -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")
index 5809e95..34a756b 100755 (executable)
@@ -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):
index bbc0a83..45528b8 100755 (executable)
@@ -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'
index 5c01642..ac83434 100755 (executable)
@@ -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
index 3bc576a..ddc2c97 100755 (executable)
@@ -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):
index f4f501b..b1a7d26 100644 (file)
@@ -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