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 = b'{"req":"status"}\n'
28 sharkd_proc.stdin.write(sharkd_commands)
29 self.waitProcess(sharkd_proc)
31 self.assertEqual(self.countOutput('Hello in child.', count_stdout=False, count_stderr=True), 1, 'No hello message.')
34 jdata = json.loads(sharkd_proc.stdout_str)
35 self.assertEqual(jdata['duration'], 0.0, 'Missing duration.')
37 self.fail('Invalid JSON: "{}"'.format(sharkd_proc.stdout_str))
39 def test_sharkd_hello_dhcp_pcap(self):
40 '''sharkd hello message, simple capture file'''
41 sharkd_proc = self.startProcess((config.cmd_sharkd, '-'),
45 sharkd_commands = b'{"req":"load","file":'
46 sharkd_commands += json.dumps(dhcp_pcap).encode('utf8')
47 sharkd_commands += b'}\n'
48 sharkd_commands += b'{"req":"status"}\n'
49 sharkd_commands += b'{"req":"frames"}\n'
51 sharkd_proc.stdin.write(sharkd_commands)
52 self.waitProcess(sharkd_proc)
55 for line in sharkd_proc.stdout_str.splitlines():
59 jdata = json.loads(line)
61 self.fail('Invalid JSON for "{}"'.format(line))
64 if 'DHCP' in jdata[0]['c']:
69 self.assertTrue(has_dhcp, 'Failed to find DHCP in JSON output')