blob: d31b8487a1d33389b9013be86bb754c43414a8e6 [file] [log] [blame]
# -*- python -*-
# Copyright (c) 2014 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import gdb_test
class DisconnectTest(gdb_test.GdbTest):
"""Test that graceful disconnect and gdb restart works."""
def Hangup(self):
self.gdb.Disconnect()
self.gdb.Quit()
self.gdb = None
def test_disconnect(self):
# Confirm that when you connect and disconnect the debugger that you stay
# at the same place and that breakpoints continue to be preserved.
for breakpoint, expected_value in [
['test_disconnect', '0'],
['test_disconnect_layer2', '100001'],
['test_disconnect_layer3', '100002']]:
# Break on the next location.
self.gdb.Command('break %s' % breakpoint)
# Run to that breakpoint.
self.gdb.ResumeAndExpectStop('continue', 'breakpoint-hit')
# Check for the expected value set at that point.
self.assertEquals(self.gdb.Eval('global_var'), expected_value)
# Confirm you can use the gdb disconnect and reconnect commands.
self.gdb.Disconnect()
self.gdb.Reconnect()
self.assertEquals(self.gdb.Eval('global_var'), expected_value)
# Confirm you can hangup and reconnect with a new gdb session.
self.Hangup()
self.LaunchGdb()
self.assertEquals(self.gdb.Eval('global_var'), expected_value)
class DisconnectAbruptlyTest(DisconnectTest):
"""Test that an abrupt disconnect and gdb restart works."""
def Hangup(self):
self.gdb.KillProcess()
self.gdb = None
if __name__ == '__main__':
gdb_test.Main()