def PollForMessages_AbortedWhenServerDies_test( app ): StartJavaCompleterServerInDirectory( app, PathToTestFile( 'simple_eclipse_project' ) ) filepath = TestFactory contents = ReadFile( filepath ) def AwaitMessages(): for tries in range( 0, 5 ): response = app.post_json( '/receive_messages', BuildRequest( filetype = 'java', filepath = filepath, contents = contents ) ).json if response is False: return raise AssertionError( 'The poll request was not aborted in 5 tries' ) message_poll_task = StartThread( AwaitMessages ) app.post_json( '/run_completer_command', BuildRequest( filetype = 'java', command_arguments = [ 'StopServer' ], ), ) message_poll_task.join()
def PollingThread(app, messages_for_filepath, filepath, contents): done = False def PollForMessagesInAnotherThread(): try: for message in PollForMessages(app, { 'filepath': filepath, 'contents': contents, 'filetype': 'java' }): if done: return if 'filepath' in message and message['filepath'] == filepath: messages_for_filepath.append(message) except PollForMessagesTimeoutException: pass try: poller = StartThread(PollForMessagesInAnotherThread) yield finally: done = True poller.join(120) assert not poller.is_alive()
def test_PollForMessages_AbortedWhenServerDies( self, app ): StartJavaCompleterServerInDirectory( app, PathToTestFile( 'simple_eclipse_project' ) ) filepath = TestFactory contents = ReadFile( filepath ) state = { 'aborted': False } def AwaitMessages(): max_tries = 20 for tries in range( 0, max_tries ): response = app.post_json( '/receive_messages', BuildRequest( filetype = 'java', filepath = filepath, contents = contents ) ).json if response is False: state[ 'aborted' ] = True return raise AssertionError( f'The poll request was not aborted in { max_tries } tries' ) message_poll_task = StartThread( AwaitMessages ) app.post_json( '/run_completer_command', BuildRequest( filetype = 'java', command_arguments = [ 'StopServer' ], ), ) message_poll_task.join() assert_that( state[ 'aborted' ] )