def test_stop_app_instance(self):
    app_id = 'test'
    port = 20000
    flexmock(misc).should_receive('is_app_name_valid').and_return(False)
    self.assertFalse(app_manager_server.stop_app_instance(app_id, port))

    flexmock(misc).should_receive('is_app_name_valid').and_return(True)
    flexmock(monit_interface).should_receive('stop').and_return(False)
    self.assertFalse(app_manager_server.stop_app_instance(app_id, port))

    flexmock(monit_interface).should_receive('stop').and_return(True)
    flexmock(os).should_receive('remove')
    self.assertTrue(app_manager_server.stop_app_instance(app_id, port))
  def test_stop_app_instance(self):
    app_id = 'test'
    port = 20000
    flexmock(misc).should_receive('is_app_name_valid').and_return(False)
    self.assertFalse(app_manager_server.stop_app_instance(app_id, port))

    flexmock(misc).should_receive('is_app_name_valid').and_return(True)
    flexmock(app_manager_server).should_receive('remove_routing')
    flexmock(monit_interface).should_receive('stop').and_return(False)
    self.assertFalse(app_manager_server.stop_app_instance(app_id, port))

    flexmock(monit_interface).should_receive('stop').and_return(True)
    flexmock(os).should_receive('remove')
    self.assertTrue(app_manager_server.stop_app_instance(app_id, port))
    def test_stop_app_instance(self):
        version_key = 'test_default_v1'
        port = 20000
        flexmock(misc).should_receive('is_app_name_valid').and_return(False)

        with self.assertRaises(BadConfigurationException):
            yield app_manager_server.stop_app_instance(version_key, port)

        flexmock(misc).should_receive('is_app_name_valid').and_return(True)
        flexmock(app_manager_server).should_receive('unregister_instance')
        flexmock(MonitOperator).should_receive('send_command_sync').\
          with_args('app___test_default_v1-20000', 'unmonitor').\
          and_raise(HTTPError)

        unmonitor_future = Future()
        unmonitor_future.set_exception(HTTPError(500))
        flexmock(app_manager_server).should_receive('unmonitor_and_terminate').\
          and_return(unmonitor_future)

        entries_response = Future()
        entries_response.set_result(['app___test_default_v1_revid-20000'])
        flexmock(MonitOperator).should_receive('get_entries').\
          and_return(entries_response)

        with self.assertRaises(HTTPError):
            yield app_manager_server.stop_app_instance(version_key, port)

        flexmock(MonitOperator).should_receive('send_command_sync').\
          with_args('app___test_default_v1-20000', 'unmonitor')
        flexmock(os).should_receive('remove')
        flexmock(monit_interface).should_receive('safe_monit_run')

        response = Future()
        response.set_result(None)
        flexmock(MonitOperator).should_receive('reload').\
          and_return(response)

        response = Future()
        response.set_result(None)
        flexmock(app_manager_server).should_receive('clean_old_sources').\
          and_return(response)

        response = Future()
        response.set_result(None)
        flexmock(app_manager_server).should_receive('unmonitor_and_terminate').\
          and_return(response)

        yield app_manager_server.stop_app_instance(version_key, port)
  def test_stop_app_instance(self):
    version_key = 'test_default_v1'
    port = 20000
    flexmock(misc).should_receive('is_app_name_valid').and_return(False)

    with self.assertRaises(BadConfigurationException):
      yield app_manager_server.stop_app_instance(version_key, port)

    flexmock(misc).should_receive('is_app_name_valid').and_return(True)
    flexmock(app_manager_server).should_receive('unregister_instance')
    flexmock(app_manager_server).should_receive('unmonitor').\
      and_raise(HTTPError)

    unmonitor_future = Future()
    unmonitor_future.set_exception(HTTPError(500))
    flexmock(app_manager_server).should_receive('unmonitor_and_terminate').\
      and_return(unmonitor_future)

    entries_response = Future()
    entries_response.set_result(['app___test_default_v1_revid-20000'])
    flexmock(MonitOperator).should_receive('get_entries').\
      and_return(entries_response)

    with self.assertRaises(HTTPError):
      yield app_manager_server.stop_app_instance(version_key, port)

    flexmock(app_manager_server).should_receive('unmonitor')
    flexmock(os).should_receive('remove')
    flexmock(monit_interface).should_receive('safe_monit_run')

    response = Future()
    response.set_result(None)
    flexmock(app_manager_server).should_receive('clean_old_sources').\
      and_return(response)

    response = Future()
    response.set_result(None)
    flexmock(app_manager_server).should_receive('unmonitor_and_terminate').\
      and_return(response)

    yield app_manager_server.stop_app_instance(version_key, port)
    def test_stop_app_instance(self):
        app_id = 'test'
        port = 20000
        flexmock(misc).should_receive('is_app_name_valid').and_return(False)
        self.assertFalse(app_manager_server.stop_app_instance(app_id, port))

        flexmock(misc).should_receive('is_app_name_valid').and_return(True)
        flexmock(monit_interface).should_receive('stop').and_return(False)
        self.assertFalse(app_manager_server.stop_app_instance(app_id, port))

        flexmock(monit_interface).should_receive('stop').and_return(True)
        flexmock(monit_interface)
        flexmock(os).should_receive('remove')
        builtins = flexmock(sys.modules['__builtin__'])
        builtins.should_call('open')
        builtins.should_receive('open').\
          with_args('/var/run/appscale/app___test-20000.pid').\
          and_return(flexmock(read=lambda: '20000'))
        flexmock(threading.Thread).should_receive('__new__').and_return(
            flexmock(start=lambda: None))
        flexmock(app_manager_server).should_receive('unmonitor')
        self.assertTrue(app_manager_server.stop_app_instance(app_id, port))