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 b62e905ac0bc527b817573aa42e53987f9fa83f6..f6c05baeae670a7ee74252ecd787fb4b6ac706da 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 bb2c8fb462374eacfb38d1fd0e810026c1a368aa..7d6f6f4340d5d4bd258a2884e553bcd0c2a79024 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 c95b9ceddd2473f5a7e25cf573c84bfdc63a7532..638362a64ea894acdd10bc4a0c72f376b3fff2f8 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 0276d041ece93a3c84a5722c574af895eb8bffc0..ffc9bde633b3b67718673a54abf781d8a6a83bb8 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 bd909d844520093b145bf35f33b91f28eb1f02ee..751eb79ea79fdd09638fd96647f440f7c1839ed4 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 cec060a82bab3812a8f76abb1e73c0cb0e7a0be7..c00283db164da0cef542e967fbe398027661aa38 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 2c24eada122908303bb25aa79b622742e9df543b..93245be5d708a2647fdae572c9b153da1c48df99 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 5809e953a1c57c52f2b680f43d451540f6bb7bf5..34a756b47ba48beb85a1f3d3330681ac0404ba73 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 bbc0a83caf9f827115bfc58b96509d7c0b74954e..45528b83c1b6c5d27eb3d991cf15cfeade6b4c88 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 5c0164200ec1e257dae0bd2a5843090a96bdf755..ac83434b4ebd345ccb34ed468a0a397a5eb090fa 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 3bc576a84d55c13fe9cad23a8903ace2e1beb6b0..ddc2c9797682bbd471cfde7a5384e720e7285a67 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 f4f501bd5e21003d4b339ca893250b65fecff60a..b1a7d263801c4a5cd39597b66979dc73a56d7bd2 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