2 # -*- coding: utf-8 -*-
4 # By Gerald Combs <gerald@wireshark.org>
6 # SPDX-License-Identifier: GPL-2.0-or-later
18 dhcp_pcap = os.path.join(config.capture_dir, 'dhcp.pcap')
20 class case_sharkd(subprocesstest.SubprocessTestCase):
21 def test_sharkd_hello_no_pcap(self):
22 '''sharkd hello message, no capture file'''
23 sharkd_proc = self.startProcess((config.cmd_sharkd, '-'),
27 sharkd_commands = '{"req":"status"}\n'
28 if sys.version_info[0] >= 3:
29 sharkd_commands = sharkd_commands.encode('UTF-8')
30 sharkd_proc.stdin.write(sharkd_commands)
31 self.waitProcess(sharkd_proc)
33 self.assertEqual(self.countOutput('Hello in child.', count_stdout=False, count_stderr=True), 1, 'No hello message.')
36 jdata = json.loads(sharkd_proc.stdout_str)
37 self.assertEqual(jdata['duration'], 0.0, 'Missing duration.')
39 self.fail('Invalid JSON: "{}"'.format(sharkd_proc.stdout_str))
41 def test_sharkd_hello_dhcp_pcap(self):
42 '''sharkd hello message, simple capture file'''
43 sharkd_proc = self.startProcess((config.cmd_sharkd, '-'),
48 sharkd_commands = '{"req":"load","file":' + json.JSONEncoder().encode(dhcp_pcap) + '}\n'
49 sharkd_commands += '{"req":"status"}\n'
50 sharkd_commands += '{"req":"frames"}\n'
51 if sys.version_info[0] >= 3:
52 sharkd_commands = sharkd_commands.encode('UTF-8')
54 sharkd_proc.stdin.write(sharkd_commands)
55 self.waitProcess(sharkd_proc)
58 for line in sharkd_proc.stdout_str.splitlines():
62 jdata = json.loads(line)
64 self.fail('Invalid JSON for "{}"'.format(line))
67 if 'DHCP' in jdata[0]['c']:
72 self.assertTrue(has_dhcp, 'Failed to find DHCP in JSON output')