def test_create_config_file(self): flexmock(file_io)\ .should_receive('write')\ .and_return() temp_file = god_app_interface.create_config_file( "mywatch", "start_cmd", "stop_cmd", [1, 2, 3], { 'ENV1': "VALUE1", 'ENV2': "VALUE2" }) self.assertNotEqual(None, temp_file)
def test_create_config_file(self): flexmock(file_io)\ .should_receive('write')\ .and_return() temp_file = god_app_interface.create_config_file("mywatch", "start_cmd", "stop_cmd", [1,2,3], {'ENV1':"VALUE1", 'ENV2':"VALUE2"}) self.assertNotEqual(None, temp_file)
def start_app(config): """ Starts a Google App Engine application on this machine. It will start it up and then proceed to fetch the main page. Args: config: a dictionary that contains app_name: Name of the application to start app_port: Port to start on language: What language the app is written in load_balancer_ip: Public ip of load balancer load_balancer_port: Port of load balancer xmpp_ip: IP of XMPP service dblocations: List of database locations Returns: PID of process on success, -1 otherwise """ config = convert_config_from_json(config) if config == None: logging.error("Invalid configuration for application") return BAD_PID logging.info("Starting %s application %s"%(config['language'], config['app_name'])) start_cmd = "" stop_cmd = "" env_vars = {} watch = "app___" + config['app_name'] if config['language'] == constants.PYTHON or \ config['language'] == constants.GO: start_cmd = create_python_start_cmd(config['app_name'], config['load_balancer_ip'], config['app_port'], config['load_balancer_ip'], config['load_balancer_port'], config['xmpp_ip'], config['dblocations']) stop_cmd = create_python_stop_cmd(config['app_port']) env_vars = create_python_app_env(config['load_balancer_ip'], config['load_balancer_port'], config['app_name']) elif config['language'] == constants.JAVA: start_cmd = create_java_start_cmd(config['app_name'], config['app_port'], config['load_balancer_ip'], config['load_balancer_port'], config['dblocations']) stop_cmd = create_java_stop_cmd(config['app_port']) env_vars = create_java_app_env() else: logging.error("Unknown application language %s for appname %s"\ %(config['language'], config['app_name'])) return BAD_PID logging.info("Start command: " + str(start_cmd)) logging.info("Stop command: " + str(stop_cmd)) logging.info("Environment variables: " +str(env_vars)) config_file_loc = god_app_interface.create_config_file(str(watch), str(start_cmd), str(stop_cmd), [config['app_port']], env_vars) if not god_interface.start(config_file_loc, watch): logging.error("Unable to start application server with god") return BAD_PID if not wait_on_app(int(config['app_port'])): logging.error("Application server did not come up in time, " + \ "removing god watch") god_interface.stop(watch) return BAD_PID pid = get_pid_from_port(config['app_port']) pid_file = constants.APP_PID_DIR + config['app_name'] + '-' +\ str(config['app_port']) file_io.write(pid_file, str(pid)) return pid