def __init__(self, port=None): args = [McrouterGlobals.binPath('prodmc')] listen_sock = None # if mockmc is used here, we initialize the same way as MockMemcached if McrouterGlobals.binPath('mockmc') == args[0]: if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] args.extend(['-t', str(listen_sock.fileno())]) else: args.extend(['-P', str(port)]) MCProcess.__init__(self, args, port) if listen_sock is not None: listen_sock.close() else: args.extend([ '-A', '-g', '-t', '1', '--enable_hash_aliases', '--enable_unchecked_l1_sentinel_reads', '--reaper_throttle=100', '--ini_hashpower=16', ]) if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] args.extend(['--listen_sock_fd', str(listen_sock.fileno())]) else: args.extend(['-p', str(port)]) MCProcess.__init__(self, args, port) if listen_sock is not None: listen_sock.close() # delay here until the server goes up self.ensure_connected() tries = 10 s = self.stats() while ((not s or len(s) == 0) and tries > 0): # Note, we need to reconnect, because it's possible the # server is still going to process previous requests. self.ensure_connected() s = self.stats() time.sleep(0.5) tries -= 1 self.disconnect()
def try_mcrouter(self, config): listen_sock = socket.socket() listen_sock.listen(100) cmd = McrouterGlobals.preprocessArgs([ McrouterGlobals.binPath('mcrouter'), '-L', '/tmp/test.log', '--config', 'file:' + config, '--listen-sock-fd', str(listen_sock.fileno()), '--stats-logging-interval', '0', '--config-dump-root', '', '--validate-config', ] + self.extra_args) proc = Popen(cmd) for _i in range(50): if proc.poll() is not None: break time.sleep(0.1) ret = proc.returncode if proc is not None and proc.poll() is None: proc.terminate() listen_sock.close() return ret
def __init__(self, fifos_dir, extra_args=None): base_dir = BaseDirectory('mcpiper') args = [McrouterGlobals.binPath('mcpiper'), '--fifo-root', fifos_dir] if extra_args: args.extend(extra_args) ProcessBase.__init__(self, args, base_dir)
def test_linenumbers(self): args = McrouterGlobals.preprocessArgs([ McrouterGlobals.binPath('mcrouter'), '--config', 'file:' + self.config, '-p', str(5721) ]) self.spawn(args) self.assertTrue(self.check_for_error_line_number())
def __init__(self, port=None): args = [McrouterGlobals.binPath('prodmc')] listen_sock = None # if mockmc is used here, we initialize the same way as MockMemcached if McrouterGlobals.binPath('mockmc') == args[0]: if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] args.extend(['-t', str(listen_sock.fileno())]) else: args.extend(['-P', str(port)]) MCProcess.__init__(self, args, port) if listen_sock is not None: listen_sock.close() else: args.extend(['--ht_lease_token_power', '0']) if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] args.extend(['--listen_sock', str(listen_sock.fileno())]) else: args.extend(['--port', str(port)]) MCProcess.__init__(self, args, port) if listen_sock is not None: listen_sock.close() # delay here until the server goes up self.ensure_connected() l = 10 s = self.stats() while ((not s or len(s) == 0) and l > 0): # Note, we need to reconnect, because it's possible the # server is still going to process previous requests. self.ensure_connected() s = self.stats() time.sleep(0.5) l = l - 1 self.disconnect()
def __init__(self, config, port=None, default_route=None, extra_args=None, base_dir=None, substitute_config_ports=None, substitute_port_map=None, replace_map=None): if base_dir is None: base_dir = BaseDirectory('mcrouter') if replace_map: with open(config, 'r') as config_file: replaced_config = replace_strings(config_file.read(), replace_map) (_, config) = tempfile.mkstemp(dir=base_dir.path) with open(config, 'w') as config_file: config_file.write(replaced_config) if substitute_config_ports: with open(config, 'r') as config_file: replaced_config = replace_ports(config_file.read(), substitute_config_ports) (_, config) = tempfile.mkstemp(dir=base_dir.path) with open(config, 'w') as config_file: config_file.write(replaced_config) self.config = config args = [McrouterGlobals.binPath('mcrouter'), '--config', 'file:' + config] if default_route: args.extend(['-R', default_route]) if extra_args: args.extend(extra_args) if '-b' in args: def get_pid(): stats = self.stats() if stats: return int(stats['pid']) return None def terminate(): pid = get_pid() if pid: os.kill(pid, signal.SIGTERM) def is_alive(): pid = get_pid() if pid: return os.path.exists("/proc/{}".format(pid)) return False self.terminate = terminate self.is_alive = is_alive McrouterBase.__init__(self, args, port, base_dir)
def __init__(self, config, port=None, default_route=None, extra_args=None, # noqa: C901 base_dir=None, substitute_config_ports=None, substitute_port_map=None, replace_map=None): if base_dir is None: base_dir = BaseDirectory('mcrouter') if replace_map: with open(config, 'r') as config_file: replaced_config = replace_strings(config_file.read(), replace_map) (_, config) = tempfile.mkstemp(dir=base_dir.path) with open(config, 'w') as config_file: config_file.write(replaced_config) if substitute_config_ports: with open(config, 'r') as config_file: replaced_config = replace_ports(config_file.read(), substitute_config_ports) (_, config) = tempfile.mkstemp(dir=base_dir.path) with open(config, 'w') as config_file: config_file.write(replaced_config) self.config = config args = [McrouterGlobals.binPath('mcrouter'), '--config', 'file:' + config] if default_route: args.extend(['-R', default_route]) if extra_args: args.extend(extra_args) if '-b' in args: def get_pid(): stats = self.stats() if stats: return int(stats['pid']) return None def terminate(): pid = get_pid() if pid: os.kill(pid, signal.SIGTERM) def is_alive(): pid = get_pid() if pid: return os.path.exists("/proc/{}".format(pid)) return False self.terminate = terminate self.is_alive = is_alive McrouterBase.__init__(self, args, port, base_dir)
def __init__(self, port=None): args = [McrouterGlobals.binPath('prodmc')] listen_sock = None # if mockmc is used here, we initialize the same way as MockMemcached if McrouterGlobals.binPath('mockmc') == args[0]: if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] args.extend(['-t', str(listen_sock.fileno())]) else: args.extend(['-P', str(port)]) MCProcess.__init__(self, args, port) if listen_sock is not None: listen_sock.close() else: if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] args.extend(['--listen_sock', str(listen_sock.fileno())]) else: args.extend(['--port', str(port)]) MCProcess.__init__(self, args, port) if listen_sock is not None: listen_sock.close() # delay here until the server goes up self.ensure_connected() l = 20 s = self.stats() while (len(s) == 0 and l > 0): s = self.stats() time.sleep(0.5) l = l - 1 self.disconnect()
def __init__(self, port=None): args = [McrouterGlobals.binPath('mockmc')] listen_sock = None if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] args.extend(['-t', str(listen_sock.fileno())]) else: args.extend(['-P', str(port)]) MCProcess.__init__(self, args, port) if listen_sock is not None: listen_sock.close()
def test_bad_config(self): listen_sock = socket.socket() listen_sock.listen(100) args = McrouterGlobals.preprocessArgs([ McrouterGlobals.binPath('mcrouter'), '-f', "/dev/null/doesnotexist", '--listen-sock-fd', str(listen_sock.fileno()) ]) self.spawn(args) self.check_for_message(good='Can not read config', bad='reconfigured with', timeout=10) listen_sock.close()
def test_bad_config(self): listen_sock = socket.socket() listen_sock.listen(100) args = McrouterGlobals.preprocessArgs([ McrouterGlobals.binPath('mcrouter'), '-f', "/dev/null/doesnotexist", '--listen-sock-fd', str(listen_sock.fileno()) ]) self.spawn(args) self.check_for_message( good='Can not read config', bad='reconfigured with', timeout=10) listen_sock.close()
def __init__(self, port=None): args = [McrouterGlobals.binPath('mockmcthrift')] listen_sock = None pass_fds = [] if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] listen_sock_fd = listen_sock.fileno() args.extend(['-t', str(listen_sock.fileno())]) pass_fds.append(listen_sock_fd) else: args.extend(['-P', str(port)]) MCProcess.__init__(self, args, port, pass_fds=pass_fds) if listen_sock is not None: listen_sock.close()
def __init__(self, thriftPort=None, asyncPort=None): args = [McrouterGlobals.binPath('mockmcdual')] listen_sock = None if thriftPort is None: self.listenSocketThrift = create_listen_socket() thriftPort = self.listenSocketThrift.getsockname()[1] args.extend(['-t', str(self.listenSocketThrift.fileno())]) else: args.extend(['-p', str(thriftPort)]) if asyncPort is None: self.listenSocketAsyncMc = create_listen_socket() asyncPort = self.listenSocketAsyncMc.getsockname()[1] args.extend(['-T', str(self.listenSocketAsyncMc.fileno())]) else: args.extend(['-P', str(asyncPort)]) MCProcess.__init__(self, args, asyncPort) if listen_sock is not None: listen_sock.close()
def __init__(self, thriftPort=None, asyncPort=None, extra_args=None, mcrouterUseThrift=True): args = [McrouterGlobals.binPath('mockmcdual')] pass_fds = [] if thriftPort is None: listenSocketThrift = create_listen_socket() thriftPort = listenSocketThrift.getsockname()[1] sock_fd = listenSocketThrift.fileno() args.extend(['-t', str(sock_fd)]) pass_fds.append(sock_fd) else: args.extend(['-p', str(thriftPort)]) self.thriftPort = thriftPort self.mcrouterUseThrift = mcrouterUseThrift if asyncPort is None: listenSocketAsyncMc = create_listen_socket() asyncPort = listenSocketAsyncMc.getsockname()[1] sock_fd = listenSocketAsyncMc.fileno() args.extend(['-T', str(sock_fd)]) pass_fds.append(sock_fd) else: args.extend(['-P', str(asyncPort)]) self.asyncPort = asyncPort if extra_args: args.extend(extra_args) MCProcess.__init__(self, args, asyncPort, pass_fds=pass_fds) if listenSocketThrift is not None: listenSocketThrift.close() if listenSocketAsyncMc is not None: listenSocketAsyncMc.close()
def try_mcrouter(self, config): listen_sock = socket.socket() listen_sock.listen(100) cmd = McrouterGlobals.preprocessArgs([ McrouterGlobals.binPath('mcrouter'), '-L', '/tmp/test.log', '--config', 'file:' + config, '--listen-sock-fd', str(listen_sock.fileno()), '--stats-logging-interval', '0', '--validate-config' ] + self.extra_args) proc = Popen(cmd) for i in range(50): if proc.poll() is not None: break time.sleep(0.1) ret = proc.returncode if proc is not None and proc.poll() is None: proc.terminate() listen_sock.close() return ret
def __init__(self, port=None, ssl_port=None, extra_args=None): args = [McrouterGlobals.binPath('prodmc')] listen_sock = None pass_fds = [] # if mockmc is used here, we initialize the same way as MockMemcached if McrouterGlobals.binPath('mockmc') == args[0]: if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] listen_sock_fd = listen_sock.fileno() args.extend(['-t', str(listen_sock_fd)]) pass_fds.append(listen_sock_fd) else: args.extend(['-P', str(port)]) MCProcess.__init__(self, args, port, pass_fds=pass_fds) if listen_sock is not None: listen_sock.close() else: args.extend([ '-A', '-g', '-t', '1', '--enable_hash_aliases', '--enable_unchecked_l1_sentinel_reads', '--reaper_throttle=100', '--ini_hashpower=16', '--num_listening_sockets=1', ]) if (extra_args): args.extend(extra_args) if port is None: listen_sock = create_listen_socket() port = listen_sock.getsockname()[1] listen_sock_fd = listen_sock.fileno() args.extend(['--listen_sock_fd', str(listen_sock_fd)]) pass_fds.append(listen_sock_fd) else: args.extend(['-p', str(port)]) if ssl_port: self.ssl_port = ssl_port args.extend(['--ssl_port', str(self.ssl_port)]) MCProcess.__init__(self, args, port, pass_fds=pass_fds) if listen_sock is not None: listen_sock.close() # delay here until the server goes up self.ensure_connected() tries = 10 s = self.stats() while ((not s or len(s) == 0) and tries > 0): # Note, we need to reconnect, because it's possible the # server is still going to process previous requests. self.ensure_connected() s = self.stats() time.sleep(0.5) tries -= 1 self.disconnect()