コード例 #1
0
    def test_wait_for_app(self):
        port = 20000
        ip = '127.0.0.1'
        testing.disable_logging()
        fake_opener = flexmock(open=lambda url, timeout: flexmock(
            code=200, headers=flexmock(headers=[])))
        flexmock(urllib2).should_receive('build_opener').and_return(
            fake_opener)
        flexmock(appscale_info).should_receive('get_private_ip').and_return(ip)

        instance_manager = InstanceManager(None, None, None, None, None, None,
                                           None, None, None)
        instance_manager._private_ip = ip
        instance_started = yield instance_manager._wait_for_app(port)
        self.assertEqual(True, instance_started)

        current_time = time.time()
        flexmock(monotonic).should_receive('monotonic').and_return(current_time).\
          and_return(current_time + START_APP_TIMEOUT + 1)
        response = Future()
        response.set_result(None)
        flexmock(gen).should_receive('sleep').and_return(response)
        fake_opener.should_receive('open').and_raise(IOError)
        instance_started = yield instance_manager._wait_for_app(port)
        self.assertEqual(False, instance_started)
コード例 #2
0
  def test_wait_for_app(self):
    port = 20000
    ip = '127.0.0.1'
    testing.disable_logging()
    fake_opener = flexmock(
      open=lambda url, timeout: flexmock(code=200,
                                         headers=flexmock(headers=[])))
    flexmock(urllib2).should_receive('build_opener').and_return(fake_opener)
    flexmock(appscale_info).should_receive('get_private_ip').and_return(ip)

    instance_manager = InstanceManager(
      None, None, None, None, None, None, None, None, None)
    instance_manager._private_ip = ip
    instance_started = yield instance_manager._wait_for_app(port)
    self.assertEqual(True, instance_started)

    current_time = time.time()
    flexmock(time).should_receive('time').and_return(current_time).\
      and_return(current_time + START_APP_TIMEOUT + 1)
    response = Future()
    response.set_result(None)
    flexmock(gen).should_receive('sleep').and_return(response)
    fake_opener.should_receive('open').and_raise(IOError)
    instance_started = yield instance_manager._wait_for_app(port)
    self.assertEqual(False, instance_started)
コード例 #3
0
 def test_bad_convert_config_from_json(self):
     testing.disable_logging()
     self.assertEqual(None,
                      app_manager_server.convert_config_from_json(None))
     self.assertEqual(None,
                      app_manager_server.convert_config_from_json("{}"))
     self.assertEqual(
         None,
         app_manager_server.convert_config_from_json("{'app_name':'test'}"))
コード例 #4
0
    def test_stop(self):
        testing.disable_logging()

        flexmock(subprocess)\
          .should_receive('call')\
          .and_return(0)
        self.assertEqual(True, monit_interface.stop("watch_name"))

        flexmock(subprocess)\
          .should_receive('call')\
          .and_return(1)
        self.assertEqual(False, monit_interface.stop("watch_name"))
コード例 #5
0
  def test_wait_on_app(self):
    port = 20000
    ip = '127.0.0.1'
    testing.disable_logging()
    fake_opener = flexmock(
      open=lambda opener: flexmock(code=200, headers=flexmock(headers=[])))
    flexmock(urllib2).should_receive('build_opener').and_return(fake_opener)
    flexmock(appscale_info).should_receive('get_private_ip').and_return(ip)
    self.assertEqual(True, app_manager_server.wait_on_app(port))

    flexmock(time).should_receive('sleep').and_return()
    fake_opener.should_receive('open').and_raise(IOError)
    self.assertEqual(False, app_manager_server.wait_on_app(port))
コード例 #6
0
  def test_wait_on_app(self):
    port = 20000
    ip = '127.0.0.1'
    testing.disable_logging()
    fake_opener = flexmock(
      open=lambda opener: flexmock(code=200, headers=flexmock(headers=[])))
    flexmock(urllib2).should_receive('build_opener').and_return(fake_opener)
    flexmock(appscale_info).should_receive('get_private_ip').and_return(ip)
    self.assertEqual(True, app_manager_server.wait_on_app(port))

    flexmock(time).should_receive('sleep').and_return()
    fake_opener.should_receive('open').and_raise(IOError)
    self.assertEqual(False, app_manager_server.wait_on_app(port))
コード例 #7
0
  def test_wait_on_app(self):
    port = 20000
    ip = '127.0.0.1'
    testing.disable_logging()
    fake_opener = flexmock(
      open=lambda opener: flexmock(code=200, headers=flexmock(headers=[])))
    flexmock(urllib2).should_receive('build_opener').and_return(fake_opener)
    flexmock(appscale_info).should_receive('get_private_ip').and_return(ip)
    instance_started = yield app_manager_server.wait_on_app(port)
    self.assertEqual(True, instance_started)

    response = Future()
    response.set_result(None)
    flexmock(gen).should_receive('sleep').and_return(response)
    fake_opener.should_receive('open').and_raise(IOError)
    instance_started = yield app_manager_server.wait_on_app(port)
    self.assertEqual(False, instance_started)
コード例 #8
0
    def test_start_app_goodconfig_java(self):
        testing.disable_logging()

        version_details = {
            'runtime': 'java',
            'revision': 1,
            'deployment': {
                'zip': {
                    'sourceUrl': 'source.tar.gz'
                }
            }
        }
        version_manager = flexmock(version_details=version_details,
                                   project_id='test',
                                   revision_key='test_default_v1_1',
                                   version_key='test_default_v1')

        instance_manager = InstanceManager(None, None, None, None, None, None,
                                           None, None, None)
        instance_manager._projects_manager = {
            'test': {
                'default': {
                    'v1': version_manager
                }
            }
        }
        instance_manager._deployment_config = flexmock(
            get_config=lambda x: {'default_max_appserver_memory': 400})

        source_manager = flexmock()
        response = Future()
        response.set_result(None)
        source_manager.should_receive('ensure_source').\
          with_args('test_default_v1_1', 'source.tar.gz', 'java').\
          and_return(response)
        instance_manager._source_manager = source_manager

        start_cmd = (
            '/root/appscale/AppServer_Java/appengine-java-repacked/bin/'
            'dev_appserver.sh --port 20000')
        flexmock(instance).should_receive('create_java_start_cmd').\
          and_return(start_cmd)

        flexmock(monit_app_configuration).should_receive('create_config_file').\
          and_return('fakeconfig')

        response = Future()
        response.set_result(None)
        flexmock(instance_manager).should_receive('_ensure_api_server').\
            and_return(response)

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

        response = Future()
        response.set_result(None)
        flexmock(MonitOperator).should_receive('send_command_retry_process').\
          with_args('app___test_default_v1_1-20000', 'start').\
          and_return(response)

        response = Future()
        response.set_result(None)
        flexmock(instance_manager).should_receive('_add_routing').\
          and_return(response)

        flexmock(instance).should_receive('create_java_app_env').\
          and_return({})
        flexmock(instance_manager_module).should_receive('create_java_start_cmd').\
          and_return('/root/appscale/AppServer_Java/appengine-java-repacked/bin/'
                     'dev_appserver.sh --port 20000')
        flexmock(instance_manager).should_receive('_wait_for_app').\
          and_return(True)
        flexmock(os).should_receive('popen').\
          and_return(flexmock(read=lambda: '0\n'))
        flexmock(file_io).should_receive('write').and_return()
        flexmock(subprocess).should_receive('call').and_return(0)
        flexmock(utils).should_receive("setup_logrotate").and_return()
        flexmock(os).should_receive('listdir').and_return([])

        instance_manager._zk_client = flexmock()
        instance_manager._zk_client.should_receive('ensure_path')

        response = Future()
        response.set_result(None)
        instance_manager._monit_operator = flexmock(
            reload=lambda x: response,
            send_command_retry_process=lambda watch, cmd: response)

        yield instance_manager._start_instance(version_manager, 20000)
コード例 #9
0
    def test_start_app_goodconfig_python(self):
        testing.disable_logging()

        version_details = {
            'runtime': 'python27',
            'revision': 1,
            'deployment': {
                'zip': {
                    'sourceUrl': 'source.tar.gz'
                }
            }
        }
        version_manager = flexmock(version_details=version_details,
                                   project_id='test',
                                   revision_key='test_default_v1_1',
                                   version_key='test_default_v1')
        projects_manager = {'test': {'default': {'v1': version_manager}}}
        deployment_config = flexmock(
            get_config=lambda x: {'default_max_appserver_memory': 400})

        source_manager = flexmock()
        response = Future()
        response.set_result(None)
        source_manager.should_receive('ensure_source').\
          with_args('test_default_v1_1', 'source.tar.gz', 'python27').\
          and_return(response)

        instance_manager = InstanceManager(None, None, None, projects_manager,
                                           deployment_config, source_manager,
                                           None, None, None)
        instance_manager._login_server = '192.168.33.10'

        flexmock(monit_app_configuration).should_receive('create_config_file').\
          and_return('fakeconfig')

        response = Future()
        response.set_result(None)
        flexmock(instance_manager).should_receive('_ensure_api_server').\
          and_return(response)

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

        response = Future()
        response.set_result(None)
        flexmock(MonitOperator).should_receive('send_command_retry_process').\
          with_args('app___test_default_v1_1-20000', 'start').\
          and_return(response)

        response = Future()
        response.set_result(None)
        flexmock(instance_manager).should_receive('_add_routing').\
          and_return(response)

        flexmock(instance_manager).should_receive('_wait_for_app').\
          and_return(True)
        flexmock(os).should_receive('popen').\
          and_return(flexmock(read=lambda: '12345\n'))
        flexmock(file_io).should_receive('write').\
          and_return()
        flexmock(utils).should_receive("setup_logrotate").and_return()

        instance_manager._zk_client = flexmock()
        instance_manager._zk_client.should_receive('ensure_path')

        instance_manager._monit_operator = flexmock(
            reload=lambda x: response,
            send_command_retry_process=lambda watch, cmd: response)

        yield instance_manager._start_instance(version_manager, 20000)
コード例 #10
0
    def test_start_app_goodconfig_python(self):
        testing.disable_logging()

        version_details = {
            'runtime': 'python27',
            'revision': 1,
            'deployment': {
                'zip': {
                    'sourceUrl': 'source.tar.gz'
                }
            },
            'appscaleExtensions': {
                'httpPort': '8080'
            }
        }
        version_manager = flexmock(version_details=version_details,
                                   project_id='test',
                                   revision_key='test_default_v1_1',
                                   version_key='test_default_v1')
        projects_manager = {'test': {'default': {'v1': version_manager}}}
        deployment_config = flexmock(
            get_config=lambda x: {'default_max_appserver_memory': 400})

        source_manager = flexmock()
        response = Future()
        response.set_result(None)
        source_manager.should_receive('ensure_source').\
          with_args('test_default_v1_1', 'source.tar.gz', 'python27').\
          and_return(response)

        instance_manager = InstanceManager(None, None, None, projects_manager,
                                           deployment_config, source_manager,
                                           None, None, None)
        instance_manager._login_server = '192.168.33.10'

        response = Future()
        response.set_result((19999, []))
        flexmock(instance_manager).should_receive('_ensure_api_server').\
          and_return(response)

        flexmock(file_io).should_receive('write').and_return()

        response = Future()
        response.set_result(None)
        flexmock(ServiceOperator).should_receive('start_async').\
          and_return(response)

        response = Future()
        response.set_result(None)
        flexmock(instance_manager).should_receive('_add_routing').\
          and_return(response)

        flexmock(instance_manager).should_receive('_wait_for_app').\
          and_return(True)
        flexmock(os).should_receive('popen').\
          and_return(flexmock(read=lambda: '12345\n'))
        flexmock(file_io).should_receive('write').\
          and_return()
        flexmock(utils).should_receive("setup_logrotate").and_return()

        instance_manager._zk_client = flexmock()
        instance_manager._zk_client.should_receive('ensure_path')

        instance_manager._service_operator = flexmock(
            start_async=lambda service, wants, properties: response)

        yield instance_manager._start_instance(version_manager, 20000)
コード例 #11
0
  def test_start_app_goodconfig_python(self):
    testing.disable_logging()

    version_details = {'runtime': 'python27',
                       'revision': 1,
                       'deployment': {'zip': {'sourceUrl': 'source.tar.gz'}}}
    version_manager = flexmock(version_details=version_details,
                               project_id='test',
                               revision_key='test_default_v1_1',
                               version_key='test_default_v1')
    projects_manager = {
      'test': {'default': {'v1': version_manager}}}
    deployment_config = flexmock(
      get_config=lambda x: {'default_max_appserver_memory': 400})

    source_manager = flexmock()
    response = Future()
    response.set_result(None)
    source_manager.should_receive('ensure_source').\
      with_args('test_default_v1_1', 'source.tar.gz', 'python27').\
      and_return(response)

    instance_manager = InstanceManager(
      None, None, None, projects_manager, deployment_config,
      source_manager, None, None, None)
    instance_manager._login_server = '192.168.33.10'

    flexmock(monit_app_configuration).should_receive('create_config_file').\
      and_return('fakeconfig')

    response = Future()
    response.set_result(None)
    flexmock(instance_manager).should_receive('_ensure_api_server').\
      and_return(response)

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

    response = Future()
    response.set_result(None)
    flexmock(MonitOperator).should_receive('send_command_retry_process').\
      with_args('app___test_default_v1_1-20000', 'start').\
      and_return(response)

    response = Future()
    response.set_result(None)
    flexmock(instance_manager).should_receive('_add_routing').\
      and_return(response)

    flexmock(instance_manager).should_receive('_wait_for_app').\
      and_return(True)
    flexmock(os).should_receive('popen').\
      and_return(flexmock(read=lambda: '12345\n'))
    flexmock(file_io).should_receive('write').\
      and_return()
    flexmock(utils).should_receive("setup_logrotate").and_return()

    instance_manager._zk_client = flexmock()
    instance_manager._zk_client.should_receive('ensure_path')

    instance_manager._monit_operator = flexmock(
      reload=lambda x: response,
      send_command_retry_process=lambda watch, cmd: response)

    yield instance_manager._start_instance(version_manager, 20000)
コード例 #12
0
 def test_start_app_badconfig2(self):
   testing.disable_logging()
   self.assertEqual(app_manager_server.BAD_PID,
     app_manager_server.start_app("{'app_name':'test'}"))
コード例 #13
0
  def test_start_app_goodconfig_java(self):
    testing.disable_logging()

    version_details = {'runtime': 'java',
                       'revision': 1,
                       'deployment': {'zip': {'sourceUrl': 'source.tar.gz'}}}
    version_manager = flexmock(version_details=version_details,
                               project_id='test',
                               revision_key='test_default_v1_1',
                               version_key='test_default_v1')

    instance_manager = InstanceManager(
      None, None, None, None, None, None, None, None, None)
    instance_manager._projects_manager = {
      'test': {'default': {'v1': version_manager}}}
    instance_manager._deployment_config = flexmock(
      get_config=lambda x: {'default_max_appserver_memory': 400})

    source_manager = flexmock()
    response = Future()
    response.set_result(None)
    source_manager.should_receive('ensure_source').\
      with_args('test_default_v1_1', 'source.tar.gz', 'java').\
      and_return(response)
    instance_manager._source_manager = source_manager

    start_cmd = ('/root/appscale/AppServer_Java/appengine-java-repacked/bin/'
                 'dev_appserver.sh --port 20000')
    flexmock(instance).should_receive('create_java_start_cmd').\
      and_return(start_cmd)

    flexmock(monit_app_configuration).should_receive('create_config_file').\
      and_return('fakeconfig')

    response = Future()
    response.set_result(None)
    flexmock(instance_manager).should_receive('_ensure_api_server').\
        and_return(response)

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

    response = Future()
    response.set_result(None)
    flexmock(MonitOperator).should_receive('send_command_retry_process').\
      with_args('app___test_default_v1_1-20000', 'start').\
      and_return(response)

    response = Future()
    response.set_result(None)
    flexmock(instance_manager).should_receive('_add_routing').\
      and_return(response)

    flexmock(instance).should_receive('create_java_app_env').\
      and_return({})
    flexmock(instance_manager_module).should_receive('create_java_start_cmd').\
      and_return('/root/appscale/AppServer_Java/appengine-java-repacked/bin/'
                 'dev_appserver.sh --port 20000')
    flexmock(instance_manager).should_receive('_wait_for_app').\
      and_return(True)
    flexmock(os).should_receive('popen').\
      and_return(flexmock(read=lambda: '0\n'))
    flexmock(file_io).should_receive('write').and_return()
    flexmock(subprocess).should_receive('call').and_return(0)
    flexmock(utils).should_receive("setup_logrotate").and_return()
    flexmock(os).should_receive('listdir').and_return([])

    instance_manager._zk_client = flexmock()
    instance_manager._zk_client.should_receive('ensure_path')

    response = Future()
    response.set_result(None)
    instance_manager._monit_operator = flexmock(
      reload=lambda x: response,
      send_command_retry_process=lambda watch, cmd: response)

    yield instance_manager._start_instance(version_manager, 20000)
コード例 #14
0
 def test_start_app_badconfig(self):
   testing.disable_logging()
   self.assertEqual(app_manager_server.BAD_PID,
     app_manager_server.start_app({}))
コード例 #15
0
    def test_start_app_goodconfig_java(self):
        testing.disable_logging()

        configuration = {
            'app_port': 20000,
            'login_server': 'public1',
            'service_id': 'default',
            'version_id': 'v1',
            'env_vars': {}
        }

        version_details = {
            'runtime': 'java',
            'revision': 1,
            'deployment': {
                'zip': {
                    'sourceUrl': 'source.tar.gz'
                }
            }
        }
        version_manager = flexmock(version_details=version_details)
        app_manager_server.projects_manager = {
            'test': {
                'default': {
                    'v1': version_manager
                }
            }
        }
        app_manager_server.deployment_config = flexmock(
            get_config=lambda x: {'default_max_appserver_memory': 400})

        source_manager = flexmock()
        response = Future()
        response.set_result(None)
        source_manager.should_receive('ensure_source').\
          with_args('test_default_v1_1', 'source.tar.gz', 'java').\
          and_return(response)
        app_manager_server.source_manager = source_manager

        start_cmd = (
            '/root/appscale/AppServer_Java/appengine-java-repacked/bin/'
            'dev_appserver.sh --port 20000')
        flexmock(app_manager_server).should_receive('create_java_start_cmd').\
          and_return(start_cmd)

        flexmock(monit_app_configuration).should_receive('create_config_file').\
          and_return('fakeconfig')

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

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

        response = Future()
        response.set_result(None)
        flexmock(MonitOperator).should_receive('send_command_retry_process').\
          with_args('app___test_default_v1_1-20000', 'start').\
          and_return(response)

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

        flexmock(app_manager_server).should_receive('create_java_app_env').\
          and_return({})
        flexmock(app_manager_server).should_receive('wait_on_app').\
          and_return(True)
        flexmock(app_manager_server).should_receive('locate_dir').\
          and_return('/path/to/dir/')
        flexmock(os).should_receive('popen').\
          and_return(flexmock(read=lambda: '0\n'))
        flexmock(file_io).should_receive('write').and_return()
        flexmock(subprocess).should_receive('call').and_return(0)
        flexmock(threading).should_receive('Thread').\
          and_return(flexmock(start=lambda: None))
        flexmock(app_manager_server).should_receive(
            "setup_logrotate").and_return()
        flexmock(os).should_receive('listdir').and_return([])

        app_manager_server.zk_client = flexmock()
        app_manager_server.zk_client.should_receive('ensure_path')
        yield app_manager_server.start_app('test_default_v1', configuration)
コード例 #16
0
    def test_start_app_badconfig(self):
        testing.disable_logging()

        with self.assertRaises(BadConfigurationException):
            yield app_manager_server.start_app('test', {})
コード例 #17
0
    def test_start_app_goodconfig_python(self):
        testing.disable_logging()

        configuration = {
            'app_port': 20000,
            'login_server': 'public1',
            'service_id': 'default',
            'version_id': 'v1',
            'env_vars': {}
        }

        version_details = {
            'runtime': 'python27',
            'revision': 1,
            'deployment': {
                'zip': {
                    'sourceUrl': 'source.tar.gz'
                }
            }
        }
        version_manager = flexmock(version_details=version_details)
        app_manager_server.projects_manager = {
            'test': {
                'default': {
                    'v1': version_manager
                }
            }
        }
        app_manager_server.deployment_config = flexmock(
            get_config=lambda x: {'default_max_appserver_memory': 400})

        source_manager = flexmock()
        response = Future()
        response.set_result(None)
        source_manager.should_receive('ensure_source').\
          with_args('test_default_v1_1', 'source.tar.gz', 'python27').\
          and_return(response)
        app_manager_server.source_manager = source_manager

        flexmock(monit_app_configuration).should_receive('create_config_file').\
          and_return('fakeconfig')

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

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

        response = Future()
        response.set_result(None)
        flexmock(MonitOperator).should_receive('send_command_retry_process').\
          with_args('app___test_default_v1_1-20000', 'start').\
          and_return(response)

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

        flexmock(app_manager_server).should_receive('wait_on_app').\
          and_return(True)
        flexmock(os).should_receive('popen').\
          and_return(flexmock(read=lambda: '12345\n'))
        flexmock(file_io).should_receive('write').\
          and_return()
        flexmock(threading).should_receive('Thread').\
          and_return(flexmock(start=lambda: None))
        flexmock(app_manager_server).should_receive(
            "setup_logrotate").and_return()

        app_manager_server.zk_client = flexmock()
        app_manager_server.zk_client.should_receive('ensure_path')
        yield app_manager_server.start_app('test_default_v1', configuration)
コード例 #18
0
  def test_start_app_badconfig(self):
    testing.disable_logging()

    with self.assertRaises(BadConfigurationException):
      yield app_manager_server.start_app('test', {})