예제 #1
0
class Pretender(object):

    def __init__(self, uid, host, port, boss_port):
        self.uid = uid
        self.boss_port = boss_port
        self.host = host
        self.port = port
        self.boss_api_handler = BossClient(host, boss_port).boss_access

        if in_parent_process():
            save_pid_file('pretenders-mock-{0}.pid'.format(uid))

    def run(self):
        raise NotImplementedError("run() not defined in "
                                  "{0}".format(self.__class__))

    @classmethod
    def start(cls):
        server = cls.from_command_line_args()
        try:
            server.run()
        except socket.error:
            LOGGER.info("QUITTING")
            import sys
            sys.exit(RETURN_CODE_PORT_IN_USE)

    @classmethod
    def from_command_line_args(cls):
        """Default parser for mock server scripts.

        Parse command line args and return the parsed object.
        """
        if not 'argparse' in locals().keys():
            raise NotImplementedError(
                "Command line not available for you version of python (2.7 or better is required)")
        parser = argparse.ArgumentParser(description='Start the server')
        parser.add_argument('-H', '--host', dest='host', default='localhost',
                    help='host/IP to run the server on (default: localhost)')
        parser.add_argument('-p', '--port', dest='port', type=int,
                            default=8001, help=('port number to run the '
                            'server on (default: 8001)'))
        parser.add_argument('-b', '--boss', dest='boss_port', default='8000',
                    help="port for accessing the Boss server.")
        parser.add_argument('-d', '--debug', dest="debug", default=False,
                    action="store_true",
                    help='start a build right after creation')
        parser.add_argument('-i', '--uid', dest='uid')
        args = parser.parse_args()
        return cls(uid=args.uid,
                   host=args.host,
                   port=args.port,
                   boss_port=args.boss_port)

    def store_history_retrieve_preset(self, body):
        return self.boss_api_handler.http(
                            'POST',
                            url="/replay/{0}".format(self.uid),
                            body=body)
예제 #2
0
    def __init__(self, uid, host, port, boss_port):
        self.uid = uid
        self.boss_port = boss_port
        self.host = host
        self.port = port
        self.boss_api_handler = BossClient(host, boss_port).boss_access

        if in_parent_process():
            save_pid_file('pretenders-mock-{0}.pid'.format(uid))
예제 #3
0
def run(host, port):
    """
    Run the maintainer.

    Which regularly triggers the boss to delete stale Mock servers.
    """
    boss_client = BossClient(host, port)
    while True:
        time.sleep(STALE_DELETE_FREQUENCY)
        boss_client.boss_access.http('DELETE', url='/pretender?stale=1')