diff options
Diffstat (limited to 'test/suite_extcaps.py')
-rw-r--r-- | test/suite_extcaps.py | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/test/suite_extcaps.py b/test/suite_extcaps.py new file mode 100644 index 0000000000..64b0e833c5 --- /dev/null +++ b/test/suite_extcaps.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +# Wireshark tests +# By Gerald Combs <gerald@wireshark.org> +# +# Copyright (c) 2019 Dario Lombardo <lomato@gmail.com> +# +# SPDX-License-Identifier: GPL-2.0-or-later +# +'''extcap tests''' + +import subprocesstest +import fixtures +import re +import os +import sys + + +@fixtures.fixture +def check_extcap_execution(cmd_extcap, program_path, request): + def check_extcap_interface_execution(extcap_name, interface): + ''' Check if an extcap runs flawlessly for interface configuration. ''' + self = request.instance + self.assertRun([cmd_extcap(extcap_name), '--extcap-interface', + interface, '--extcap-dlts'], cwd=program_path) + self.assertRun([cmd_extcap(extcap_name), '--extcap-interface', + interface, '--extcap-config'], cwd=program_path) + + def extcap_get_interfaces(extcap_output): + ''' Extract the interface name from extcap. ''' + parser = re.compile("{value=(.*?)}") + interfaces = [] + for line in extcap_output.splitlines(): + if line.startswith('interface '): + interfaces.append(parser.findall(line)[0]) + return interfaces + + def check_extcap_execution_real(extcap_name, always_present=True): + ''' + Check if an extcap runs flawlessly. + always_present: at least one interface is always offered by the extcap. + ''' + self = request.instance + self.assertRun([cmd_extcap(extcap_name), '--help'], cwd=program_path) + extcap_proc = self.assertRun( + [cmd_extcap(extcap_name), '--extcap-interfaces'], cwd=program_path) + interfaces = extcap_get_interfaces(extcap_proc.stdout_str) + if always_present: + self.assertGreaterEqual(len(interfaces), 1) + for interface in interfaces: + check_extcap_interface_execution(extcap_name, interface) + + return check_extcap_execution_real + + +@fixtures.mark_usefixtures('base_env') +@fixtures.uses_fixtures +class case_extcaps(subprocesstest.SubprocessTestCase): + def test_androiddump(self, check_extcap_execution): + ''' extcap interface tests for androiddump ''' + check_extcap_execution("androiddump", always_present=False) + + def test_ciscodump(self, check_extcap_execution): + ''' extcap interface tests for ciscodump ''' + check_extcap_execution("ciscodump") + + def test_dpauxmon(self, check_extcap_execution): + ''' extcap interface tests for dpauxmon ''' + if sys.platform == 'win32': + fixtures.skip('dpauxmon not available on Windows') + check_extcap_execution("dpauxmon") + + def test_randpktdump(self, check_extcap_execution): + ''' extcap interface tests for randpktdump ''' + check_extcap_execution("randpktdump") + + def test_sdjournal(self, check_extcap_execution): + ''' extcap interface tests for sdjournal ''' + if sys.platform == 'win32': + fixtures.skip('sdjournal not available on Windows') + check_extcap_execution("sdjournal") + + def test_sshdump(self, check_extcap_execution): + ''' extcap interface tests for sshdump ''' + check_extcap_execution("sshdump") + + def test_udpdump(self, check_extcap_execution): + ''' extcap interface tests for udpdump ''' + check_extcap_execution("udpdump") |