From bf98432f19b7b5127c095d60a030ca6846a37e22 Mon Sep 17 00:00:00 2001
From: Clayton Smith <argilo@gmail.com>
Date: Sun, 23 Oct 2022 12:10:32 -0400
Subject: [PATCH] blocks: Remove ControlPort tests

Python bindings for ControlPort were not ported to pybind11, so these
tests have been non-functional since GNU Radio 3.9.

Signed-off-by: Clayton Smith <argilo@gmail.com>
---
 .packaging/conda_recipe/build.sh              |   6 -
 gr-blocks/python/blocks/CMakeLists.txt        |   9 -
 gr-blocks/python/blocks/qa_cpp_py_binding.py  | 188 --------------
 .../python/blocks/qa_cpp_py_binding_set.py    | 147 -----------
 gr-blocks/python/blocks/qa_ctrlport_probes.py | 239 ------------------
 6 files changed, 6 insertions(+), 595 deletions(-)
 delete mode 100644 gr-blocks/python/blocks/qa_cpp_py_binding.py
 delete mode 100644 gr-blocks/python/blocks/qa_cpp_py_binding_set.py
 delete mode 100644 gr-blocks/python/blocks/qa_ctrlport_probes.py

diff --git a/.packaging/conda_recipe/build.sh b/.packaging/conda_recipe/build.sh
index 526505c..c0aacb3 100644
--- a/.packaging/conda_recipe/build.sh
+++ b/.packaging/conda_recipe/build.sh
@@ -19,9 +19,6 @@ cmake --build . --config Release --target install
 
 if [[ $target_platform == linux* ]] ; then
     SKIP_TESTS=(
-        qa_cpp_py_binding
-        qa_cpp_py_binding_set
-        qa_ctrlport_probes
         qa_qtgui
         qa_rotator_cc
         test_modtool
@@ -30,9 +27,6 @@ else
     SKIP_TESTS=(
         qa_add_system_time
         qa_block_gateway
-        qa_cpp_py_binding
-        qa_cpp_py_binding_set
-        qa_ctrlport_probes
         qa_fecapi_cc
         qa_fecapi_dummy
         qa_fecapi_ldpc
diff --git a/gr-blocks/python/blocks/CMakeLists.txt b/gr-blocks/python/blocks/CMakeLists.txt
index f13d9da..24f222a 100644
--- a/gr-blocks/python/blocks/CMakeLists.txt
+++ b/gr-blocks/python/blocks/CMakeLists.txt
@@ -32,15 +32,6 @@ if(ENABLE_TESTING)
     include(GrTest)
     file(GLOB py_qa_test_files "qa_*.py")
 
-    # Force out the controlport QA tests if CTRLPORT is not enabled or
-    # if it is enabled but we have no backends to use.
-    if(NOT ENABLE_GR_CTRLPORT OR CTRLPORT_BACKENDS EQUAL 0)
-        list(
-            REMOVE_ITEM py_qa_test_files ${CMAKE_CURRENT_SOURCE_DIR}/qa_cpp_py_binding.py
-            ${CMAKE_CURRENT_SOURCE_DIR}/qa_cpp_py_binding_set.py
-            ${CMAKE_CURRENT_SOURCE_DIR}/qa_ctrlport_probes.py)
-    endif(NOT ENABLE_GR_CTRLPORT OR CTRLPORT_BACKENDS EQUAL 0)
-
     if(NOT SNDFILE_FOUND)
         list(REMOVE_ITEM py_qa_test_files ${CMAKE_CURRENT_SOURCE_DIR}/qa_wavfile.py)
     endif()
diff --git a/gr-blocks/python/blocks/qa_cpp_py_binding.py b/gr-blocks/python/blocks/qa_cpp_py_binding.py
deleted file mode 100644
index 8352f67..0000000
--- a/gr-blocks/python/blocks/qa_cpp_py_binding.py
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2012,2013,2015 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-#
-
-#
-# This program tests mixed python and c++ ctrlport exports in a single app
-#
-
-
-import sys
-import time
-import random
-import numpy
-import re
-from gnuradio import gr, gr_unittest, blocks
-
-from gnuradio.ctrlport import GNURadio
-from gnuradio import ctrlport
-import os
-
-
-def get1():
-    return "success"
-
-
-def get2():
-    return "failure"
-
-
-class inc_class(object):
-    def __init__(self):
-        self.val = 1
-
-    def pp(self):
-        self.val = self.val + 1
-        return self.val
-
-
-get3 = inc_class()
-
-
-def get4():
-    random.seed(0)
-    rv = random.random()
-    return rv
-
-
-def get5():
-    numpy.random.seed(0)
-    samp_t = numpy.random.randn(24) + 1j * numpy.random.randn(24)
-    samp_f = numpy.fft.fft(samp_t)
-    log_pow_f = 20 * numpy.log10(numpy.abs(samp_f))
-    rv = list(log_pow_f)
-    return rv
-
-
-def get6():
-    numpy.random.seed(0)
-    samp_t = numpy.random.randn(1024) + 1j * numpy.random.randn(1024)
-    rv = list(samp_t)
-    return rv
-
-
-class test_cpp_py_binding(gr_unittest.TestCase):
-
-    def setUp(self):
-        self.tb = gr.top_block()
-        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
-
-    def tearDown(self):
-        self.tb = None
-
-    def test_001(self):
-        v1 = gr.RPC_get_string("pyland", "v1", "unit_1_string",
-                               "Python Exported String", "", "", "",
-                               gr.DISPNULL)
-        v1.activate(get1)
-
-        v2 = gr.RPC_get_string("pyland", "v2", "unit_2_string",
-                               "Python Exported String", "", "", "",
-                               gr.DISPNULL)
-        v2.activate(get2)
-
-        v3 = gr.RPC_get_int("pyland", "v3", "unit_3_int",
-                            "Python Exported Int", 0, 100, 1,
-                            gr.DISPNULL)
-        v3.activate(get3.pp)
-
-        v4 = gr.RPC_get_double("pyland", "time", "unit_4_time_double",
-                               "Python Exported Double", 0, 1000, 1,
-                               gr.DISPNULL)
-        v4.activate(get4)
-
-        v5 = gr.RPC_get_vector_float(
-            "pyland",
-            "fvec",
-            "unit_5_float_vector",
-            "Python Exported Float Vector",
-            [],
-            [],
-            [],
-            gr.DISPTIME | gr.DISPOPTCPLX)
-        v5.activate(get5)
-
-        v6 = gr.RPC_get_vector_gr_complex(
-            "pyland",
-            "cvec",
-            "unit_6_gr_complex_vector",
-            "Python Exported Complex Vector",
-            [],
-            [],
-            [],
-            gr.DISPXY | gr.DISPOPTSCATTER)
-        v6.activate(get6)
-
-        # print some variables locally
-        val = get1()
-        rval = v1.get()
-        self.assertEqual(val, rval)
-
-        val = get2()
-        rval = v2.get()
-        self.assertEqual(val, rval)
-
-        val = get3.pp()
-        rval = v3.get()
-        self.assertEqual(val + 1, rval)
-
-        val = get4()
-        rval = v4.get()
-        self.assertEqual(val, rval)
-
-        val = get5()
-        rval = v5.get()
-        self.assertComplexTuplesAlmostEqual(val, rval, 5)
-
-        val = get6()
-        rval = v6.get()
-        self.assertComplexTuplesAlmostEqual(val, rval, 5)
-
-    def test_002(self):
-        data = list(range(1, 9))
-
-        self.src = blocks.vector_source_c(data)
-        self.p1 = blocks.ctrlport_probe_c("aaa", "C++ exported variable")
-        self.p2 = blocks.ctrlport_probe_c("bbb", "C++ exported variable")
-        probe_name = self.p2.alias()
-
-        self.tb.connect(self.src, self.p1)
-        self.tb.connect(self.src, self.p2)
-        self.tb.start()
-
-        # Probes return complex values as list of floats with re, im
-        # Imaginary parts of this data set are 0.
-        expected_result = [1, 2, 3, 4,
-                           5, 6, 7, 8]
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-        hostname = re.search(r"-h (\S+|\d+\.\d+\.\d+\.\d+)", ep).group(1)
-        portnum = re.search(r"-p (\d+)", ep).group(1)
-
-        # Initialize a simple ControlPort client from endpoint
-        from gnuradio.ctrlport.GNURadioControlPortClient import GNURadioControlPortClient
-        radiosys = GNURadioControlPortClient(
-            hostname, portnum, rpcmethod='thrift')
-        radio = radiosys.client
-
-        # Get all exported knobs
-        ret = radio.getKnobs([probe_name + "::bbb"])
-        for name in list(ret.keys()):
-            result = ret[name].value
-            self.assertEqual(result, expected_result)
-
-        self.tb.stop()
-
-
-if __name__ == '__main__':
-    gr_unittest.run(test_cpp_py_binding)
diff --git a/gr-blocks/python/blocks/qa_cpp_py_binding_set.py b/gr-blocks/python/blocks/qa_cpp_py_binding_set.py
deleted file mode 100644
index c404669..0000000
--- a/gr-blocks/python/blocks/qa_cpp_py_binding_set.py
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2012,2013,2015 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-#
-
-#
-# This program tests mixed python and c++ GRCP sets in a single app
-#
-
-
-import sys
-import time
-import random
-import numpy
-import re
-from gnuradio import gr, gr_unittest, blocks
-
-from gnuradio.ctrlport import GNURadio
-from gnuradio import ctrlport
-import os
-
-
-class inc_class(object):
-    def __init__(self, val):
-        self.val = val
-
-    def _get(self):
-        # print "returning get (val = %s)"%(str(self.val));
-        return self.val
-
-    def _set(self, val):
-        # print "updating val to %s"%(str(val));
-        self.val = val
-        return
-
-
-getset1 = inc_class(10)
-getset2 = inc_class(100.0)
-getset3 = inc_class("test")
-
-
-class test_cpp_py_binding_set(gr_unittest.TestCase):
-    def setUp(self):
-        self.tb = gr.top_block()
-        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
-
-    def tearDown(self):
-        self.tb = None
-
-    def test_001(self):
-
-        g1 = gr.RPC_get_int("pyland", "v1", "unit_1_int",
-                            "Python Exported Int", 0, 100, 10,
-                            gr.DISPNULL)
-        g1.activate(getset1._get)
-        s1 = gr.RPC_get_int("pyland", "v1", "unit_1_int",
-                            "Python Exported Int", 0, 100, 10,
-                            gr.DISPNULL)
-        s1.activate(getset1._set)
-        time.sleep(0.01)
-
-        # test int variables
-        getset1._set(21)
-        val = getset1._get()
-        rval = g1.get()
-        self.assertEqual(val, rval)
-
-        g2 = gr.RPC_get_float("pyland", "v2", "unit_2_float",
-                              "Python Exported Float", -100, 1000.0, 100.0,
-                              gr.DISPNULL)
-        g2.activate(getset2._get)
-        s2 = gr.RPC_get_float("pyland", "v2", "unit_2_float",
-                              "Python Exported Float", -100, 1000.0, 100.0,
-                              gr.DISPNULL)
-        s2.activate(getset2._set)
-        time.sleep(0.01)
-
-        # test float variables
-        getset2._set(123.456)
-        val = getset2._get()
-        rval = g2.get()
-        self.assertAlmostEqual(val, rval, 4)
-
-        g3 = gr.RPC_get_string("pyland", "v3", "unit_3_string",
-                               "Python Exported String", "", "", "",
-                               gr.DISPNULL)
-        g3.activate(getset3._get)
-        s3 = gr.RPC_get_string("pyland", "v3", "unit_3_string",
-                               "Python Exported String", "", "", "",
-                               gr.DISPNULL)
-        s3.activate(getset3._set)
-        time.sleep(0.01)
-
-        # test string variables
-        getset3._set("third test")
-        val = getset3._get()
-        rval = g3.get()
-        self.assertEqual(val, rval)
-
-    def test_002(self):
-        data = list(range(1, 10))
-
-        self.src = blocks.vector_source_c(data, True)
-        self.p = blocks.nop(gr.sizeof_gr_complex)
-        self.p.set_ctrlport_test(0)
-        probe_info = self.p.alias()
-
-        self.tb.connect(self.src, self.p)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-        hostname = re.search(r"-h (\S+|\d+\.\d+\.\d+\.\d+)", ep).group(1)
-        portnum = re.search(r"-p (\d+)", ep).group(1)
-
-        # Initialize a simple ControlPort client from endpoint
-        from gnuradio.ctrlport.GNURadioControlPortClient import GNURadioControlPortClient
-        radiosys = GNURadioControlPortClient(
-            hostname, portnum, rpcmethod='thrift')
-        radio = radiosys.client
-
-        self.tb.start()
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get all exported knobs
-        key_name_test = probe_info + "::test"
-        ret = radio.getKnobs([key_name_test, ])
-
-        ret[key_name_test].value = 10
-        radio.setKnobs({key_name_test: ret[key_name_test]})
-
-        ret = radio.getKnobs([])
-        result_test = ret[key_name_test].value
-        self.assertEqual(result_test, 10)
-
-        self.tb.stop()
-        self.tb.wait()
-
-
-if __name__ == '__main__':
-    gr_unittest.run(test_cpp_py_binding_set)
diff --git a/gr-blocks/python/blocks/qa_ctrlport_probes.py b/gr-blocks/python/blocks/qa_ctrlport_probes.py
deleted file mode 100644
index 33b5a02..0000000
--- a/gr-blocks/python/blocks/qa_ctrlport_probes.py
+++ /dev/null
@@ -1,239 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2013,2015 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# SPDX-License-Identifier: GPL-3.0-or-later
-#
-#
-
-
-import sys
-import time
-import random
-import numpy
-from gnuradio import gr, gr_unittest, blocks
-import os
-import struct
-import re
-
-from gnuradio.ctrlport.GNURadioControlPortClient import GNURadioControlPortClient
-
-
-class test_ctrlport_probes(gr_unittest.TestCase):
-
-    def setUp(self):
-        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
-        self.tb = gr.top_block()
-
-    def tearDown(self):
-        self.tb = None
-
-    def test_001(self):
-        data = list(range(1, 9))
-
-        self.src = blocks.vector_source_c(data, True)
-        self.probe = blocks.ctrlport_probe2_c("samples", "Complex",
-                                              len(data), gr.DISPNULL)
-        probe_name = self.probe.alias()
-
-        self.tb.connect(self.src, self.probe)
-        self.tb.start()
-
-        # Probes return complex values as list of floats with re, im
-        # Imaginary parts of this data set are 0.
-        expected_result = [1, 2, 3, 4,
-                           5, 6, 7, 8]
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-        hostname = re.search(r"-h (\S+|\d+\.\d+\.\d+\.\d+)", ep).group(1)
-        portnum = re.search(r"-p (\d+)", ep).group(1)
-
-        # Initialize a simple ControlPort client from endpoint
-        from gnuradio.ctrlport.GNURadioControlPortClient import GNURadioControlPortClient
-        radiosys = GNURadioControlPortClient(
-            hostname, portnum, rpcmethod='thrift')
-        radio = radiosys.client
-
-        # Get all exported knobs
-        ret = radio.getKnobs([probe_name + "::samples"])
-        for name in list(ret.keys()):
-            # Get data in probe, which might be offset; find the
-            # beginning and unwrap.
-            result = ret[name].value
-            i = result.index(complex(1.0, 0.0))
-            result = result[i:] + result[0:i]
-            self.assertComplexTuplesAlmostEqual(expected_result, result, 4)
-
-        self.tb.stop()
-        self.tb.wait()
-
-    def test_002(self):
-        data = list(range(1, 9))
-
-        self.src = blocks.vector_source_f(data, True)
-        self.probe = blocks.ctrlport_probe2_f("samples", "Floats",
-                                              len(data), gr.DISPNULL)
-        probe_name = self.probe.alias()
-
-        self.tb.connect(self.src, self.probe)
-        self.tb.start()
-
-        expected_result = [1, 2, 3, 4, 5, 6, 7, 8, ]
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-        hostname = re.search(r"-h (\S+|\d+\.\d+\.\d+\.\d+)", ep).group(1)
-        portnum = re.search(r"-p (\d+)", ep).group(1)
-
-        # Initialize a simple ControlPort client from endpoint
-        from gnuradio.ctrlport.GNURadioControlPortClient import GNURadioControlPortClient
-        radiosys = GNURadioControlPortClient(
-            hostname, portnum, rpcmethod='thrift')
-        radio = radiosys.client
-
-        # Get all exported knobs
-        ret = radio.getKnobs([probe_name + "::samples"])
-        for name in list(ret.keys()):
-            # Get data in probe, which might be offset; find the
-            # beginning and unwrap.
-            result = ret[name].value
-            i = result.index(1.0)
-            result = result[i:] + result[0:i]
-            self.assertEqual(expected_result, result)
-
-        self.tb.stop()
-        self.tb.wait()
-
-    def test_003(self):
-        data = list(range(1, 9))
-
-        self.src = blocks.vector_source_i(data, True)
-        self.probe = blocks.ctrlport_probe2_i("samples", "Integers",
-                                              len(data), gr.DISPNULL)
-        probe_name = self.probe.alias()
-
-        self.tb.connect(self.src, self.probe)
-        self.tb.start()
-
-        expected_result = [1, 2, 3, 4, 5, 6, 7, 8, ]
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-        hostname = re.search(r"-h (\S+|\d+\.\d+\.\d+\.\d+)", ep).group(1)
-        portnum = re.search(r"-p (\d+)", ep).group(1)
-
-        # Initialize a simple ControlPort client from endpoint
-        from gnuradio.ctrlport.GNURadioControlPortClient import GNURadioControlPortClient
-        radiosys = GNURadioControlPortClient(
-            hostname, portnum, rpcmethod='thrift')
-        radio = radiosys.client
-
-        # Get all exported knobs
-        ret = radio.getKnobs([probe_name + "::samples"])
-        for name in list(ret.keys()):
-            # Get data in probe, which might be offset; find the
-            # beginning and unwrap.
-            result = ret[name].value
-            i = result.index(1.0)
-            result = result[i:] + result[0:i]
-            self.assertEqual(expected_result, result)
-
-        self.tb.stop()
-        self.tb.wait()
-
-    def test_004(self):
-        data = list(range(1, 9))
-
-        self.src = blocks.vector_source_s(data, True)
-        self.probe = blocks.ctrlport_probe2_s("samples", "Shorts",
-                                              len(data), gr.DISPNULL)
-        probe_name = self.probe.alias()
-
-        self.tb.connect(self.src, self.probe)
-        self.tb.start()
-
-        expected_result = [1, 2, 3, 4, 5, 6, 7, 8, ]
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-        hostname = re.search(r"-h (\S+|\d+\.\d+\.\d+\.\d+)", ep).group(1)
-        portnum = re.search(r"-p (\d+)", ep).group(1)
-
-        # Initialize a simple ControlPort client from endpoint
-        from gnuradio.ctrlport.GNURadioControlPortClient import GNURadioControlPortClient
-        radiosys = GNURadioControlPortClient(
-            hostname, portnum, rpcmethod='thrift')
-        radio = radiosys.client
-
-        # Get all exported knobs
-        ret = radio.getKnobs([probe_name + "::samples"])
-        for name in list(ret.keys()):
-            # Get data in probe, which might be offset; find the
-            # beginning and unwrap.
-            result = ret[name].value
-            i = result.index(1.0)
-            result = result[i:] + result[0:i]
-            self.assertEqual(expected_result, result)
-
-        self.tb.stop()
-        self.tb.wait()
-
-    def test_005(self):
-        data = list(range(1, 9))
-
-        self.src = blocks.vector_source_b(data, True)
-        self.probe = blocks.ctrlport_probe2_b("samples", "Bytes",
-                                              len(data), gr.DISPNULL)
-        probe_name = self.probe.alias()
-
-        self.tb.connect(self.src, self.probe)
-        self.tb.start()
-
-        expected_result = [1, 2, 3, 4, 5, 6, 7, 8, ]
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-        hostname = re.search(r"-h (\S+|\d+\.\d+\.\d+\.\d+)", ep).group(1)
-        portnum = re.search(r"-p (\d+)", ep).group(1)
-
-        # Initialize a simple ControlPort client from endpoint
-        from gnuradio.ctrlport.GNURadioControlPortClient import GNURadioControlPortClient
-        radiosys = GNURadioControlPortClient(
-            hostname, portnum, rpcmethod='thrift')
-        radio = radiosys.client
-
-        # Get all exported knobs
-        ret = radio.getKnobs([probe_name + "::samples"])
-        for name in list(ret.keys()):
-            # Get data in probe, which might be offset; find the
-            # beginning and unwrap.
-            result = ret[name].value
-            result = list(struct.unpack(len(result) * 'b', result))
-            i = result.index(1)
-            result = result[i:] + result[0:i]
-            self.assertEqual(expected_result, result)
-
-        self.tb.stop()
-        self.tb.wait()
-
-
-if __name__ == '__main__':
-    gr_unittest.run(test_ctrlport_probes)
-- 
2.35.1

