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)
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)
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'}"))
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"))
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))
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)
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)
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)
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)
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)
def test_start_app_badconfig2(self): testing.disable_logging() self.assertEqual(app_manager_server.BAD_PID, app_manager_server.start_app("{'app_name':'test'}"))
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)
def test_start_app_badconfig(self): testing.disable_logging() self.assertEqual(app_manager_server.BAD_PID, app_manager_server.start_app({}))
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)
def test_start_app_badconfig(self): testing.disable_logging() with self.assertRaises(BadConfigurationException): yield app_manager_server.start_app('test', {})
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)