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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
  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' ] )