Make test_connect_remote() more robust by waiting on the server ready message

before issuing the 'process connect ...' command.

test_comand_regex(): assign the spawned child to self.child so it gets automatically
shutdown during TestBase.tearDown(self).

llvm-svn: 130015
This commit is contained in:
Johnny Chen 2011-04-22 21:47:07 +00:00
parent 8a51be9e1b
commit ea76c4f229
2 changed files with 19 additions and 9 deletions

View File

@ -22,6 +22,8 @@ class CommandRegexTestCase(TestBase):
# Turn on logging for what the child sends back. # Turn on logging for what the child sends back.
if self.TraceOn(): if self.TraceOn():
child.logfile_read = sys.stdout child.logfile_read = sys.stdout
# So that the spawned lldb session gets shutdown durng teardown.
self.child = child
# Substitute 'Help!' with 'help' using the 'commands regex' mechanism. # Substitute 'Help!' with 'help' using the 'commands regex' mechanism.
child.expect(prompt) child.expect(prompt)
@ -33,7 +35,7 @@ class CommandRegexTestCase(TestBase):
# Help! # Help!
child.sendline('Help!') child.sendline('Help!')
# If we see the familiar 'help' output, the test is done. # If we see the familiar 'help' output, the test is done.
child.expect('The following is a list of built-in, permanent debugger commands:') child.expect('The following is a list of built-in, permanent debugger commands:')
if __name__ == '__main__': if __name__ == '__main__':
import atexit import atexit

View File

@ -2,9 +2,10 @@
Test lldb 'process connect' command. Test lldb 'process connect' command.
""" """
import os, time import os
import unittest2 import unittest2
import lldb import lldb
import pexpect
from lldbtest import * from lldbtest import *
class ConnectRemoteTestCase(TestBase): class ConnectRemoteTestCase(TestBase):
@ -16,14 +17,21 @@ class ConnectRemoteTestCase(TestBase):
"""Test "process connect connect:://localhost:12345".""" """Test "process connect connect:://localhost:12345"."""
# First, we'll start a fake debugserver (a simple echo server). # First, we'll start a fake debugserver (a simple echo server).
import subprocess fakeserver = pexpect.spawn('./EchoServer.py')
fakeserver = subprocess.Popen('./EchoServer.py')
# This does the cleanup afterwards.
def cleanup_fakeserver():
fakeserver.kill()
fakeserver.wait()
self.addTearDownHook(cleanup_fakeserver)
# Turn on logging for what the child sends back.
if self.TraceOn():
fakeserver.logfile = sys.stdout
# Schedule the fake debugserver to be shut down during teardown.
def shutdown_fakeserver():
fakeserver.close()
self.addTearDownHook(shutdown_fakeserver)
# Wait until we receive the server ready message before continuing.
fakeserver.expect('Listening on localhost:12345')
# Connect to the fake server....
self.runCmd("process connect connect://localhost:12345") self.runCmd("process connect connect://localhost:12345")