def __init__(self, context): from vcttesting.docker import Docker, params_from_env from vcttesting.hgmo import HgCluster if 'HGMO_STATE_FILE' not in os.environ: print('Do not know where to store state.') print( 'Set the HGMO_STATE_FILE environment variable and try again.') sys.exit(1) if 'DOCKER_STATE_FILE' not in os.environ: print('Do not where to store Docker state.') print( 'Set the DOCKER_STATE_FILE environment variable and try again.' ) sys.exit(1) docker_url, tls = params_from_env(os.environ) docker = Docker(os.environ['DOCKER_STATE_FILE'], docker_url, tls=tls) if not docker.is_alive(): print('Docker not available') sys.exit(1) self.c = HgCluster( docker, os.environ['HGMO_STATE_FILE'], ldap_image=os.environ.get('DOCKER_LDAP_IMAGE'), master_image=os.environ.get('DOCKER_HGMASTER_IMAGE'), web_image=os.environ.get('DOCKER_HGWEB_IMAGE'), pulse_image=os.environ.get('DOCKER_PULSE_IMAGE'))
def has_docker(): from vcttesting.docker import Docker, params_from_env url, tls = params_from_env(os.environ) tf = tempfile.NamedTemporaryFile() tf.close() d = Docker(tf.name, url, tls=tls) return d.is_alive()
def has_docker(): if 'SKIP_DOCKER_TESTS' in os.environ: return False from vcttesting.docker import Docker, params_from_env url, tls = params_from_env(os.environ) tf = tempfile.NamedTemporaryFile() tf.close() d = Docker(tf.name, url, tls=tls) return d.is_alive()
def __init__(self, context): from vcttesting.docker import Docker, params_from_env from vcttesting.hgmo import HgCluster if 'DOCKER_STATE_FILE' not in os.environ: print('Do not where to store Docker state.') print('Set the DOCKER_STATE_FILE environment variable and try again.') sys.exit(1) docker_url, tls = params_from_env(os.environ) docker = Docker(os.environ['DOCKER_STATE_FILE'], docker_url, tls=tls) if not docker.is_alive(): print('Docker not available') sys.exit(1) self.c = HgCluster(docker)
def __init__(self, context): from vcttesting.docker import Docker, params_from_env from vcttesting.hgmo import HgCluster if 'HGMO_STATE_FILE' not in os.environ: print('Do not know where to store state.') print('Set the HGMO_STATE_FILE environment variable and try again.') sys.exit(1) if 'DOCKER_STATE_FILE' not in os.environ: print('Do not where to store Docker state.') print('Set the DOCKER_STATE_FILE environment variable and try again.') sys.exit(1) docker_url, tls = params_from_env(os.environ) docker = Docker(os.environ['DOCKER_STATE_FILE'], docker_url, tls=tls) self.c = HgCluster(docker, os.environ['HGMO_STATE_FILE'], ldap_image=os.environ.get('DOCKER_LDAP_IMAGE'), master_image=os.environ.get('DOCKER_HGMASTER_IMAGE'), web_image=os.environ.get('DOCKER_HGWEB_IMAGE'))
def __init__(self, path): if not path: raise Exception('You must specify a path to create an instance') path = os.path.abspath(path) self._path = path self._name = os.path.dirname(path) if not os.path.exists(path): os.mkdir(path) docker_state = os.path.join(path, 'docker-state.json') self._docker_state = docker_state docker_url, tls = params_from_env(os.environ) self._docker = Docker(docker_state, docker_url, tls=tls) if not self._docker.is_alive(): raise Exception('Docker is not available.')
def __init__(self, context): if 'DOCKER_STATE_FILE' in os.environ: state_file = os.environ['DOCKER_STATE_FILE'] # When running from Mercurial tests, use a per-test state file. # We can't use HGTMP because it is shared across many tests. We # use HGRCPATH as a base, since it is in a test-specific directory. elif 'HGRCPATH' in os.environ: state_file = os.path.join(os.path.dirname(os.environ['HGRCPATH']), '.dockerstate') else: state_file = os.path.join(ROOT, '.dockerstate') docker_url, tls = params_from_env(os.environ) d = Docker(state_file, docker_url, tls=tls) if not d.is_alive(): print('Docker is not available!') sys.exit(1) self.d = d
def __init__(self, path, web_image=None, hgrb_image=None, ldap_image=None, pulse_image=None, rbweb_image=None, autolanddb_image=None, autoland_image=None, hgweb_image=None, treestatus_image=None): if not path: raise Exception('You must specify a path to create an instance') path = os.path.abspath(path) self._path = path self.started = False self.web_image = web_image self.hgrb_image = hgrb_image self.ldap_image = ldap_image self.pulse_image = pulse_image self.rbweb_image = rbweb_image self.autolanddb_image = autolanddb_image self.autoland_image = autoland_image self.hgweb_image = hgweb_image self.treestatus_image = treestatus_image self._name = os.path.dirname(path) if not os.path.exists(path): os.mkdir(path) keys_path = os.path.join(path, 'keys') try: os.mkdir(keys_path) except OSError as e: if e.errno != errno.EEXIST: raise credentials_path = os.path.join(path, 'credentials') try: os.mkdir(credentials_path) except OSError as e: if e.errno != errno.EEXIST: raise self._state_path = os.path.join(path, 'state.json') docker_state = os.path.join(path, '.dockerstate') self._docker_state = docker_state self.bugzilla_username = None self.bugzilla_password = None self.docker_env = {} if os.path.exists(self._state_path): with open(self._state_path, 'rb') as fh: state = json.load(fh) for k, v in state.items(): setattr(self, k, v) # Preserve Docker settings from last time. # # This was introduced to make watchman happy, as its triggers may not # inherit environment variables. for k, v in self.docker_env.items(): os.environ[k] = v docker_url, tls = params_from_env(os.environ) self._docker = Docker(docker_state, docker_url, tls=tls) if not self._docker.is_alive(): raise DockerNotAvailable('Docker is not available.')
# it's own. sys.argv = [a for a in sys.argv if a != '--cover'] verbose = '-v' in sys.argv or '--verbose' in sys.argv # We take a snapshot of Docker containers and images before we start tests # so we can look for leaks later. # # This behavior is non-ideal: we should not leak Docker containers and # images. Furthermore, if others interact with Docker while we run, bad # things will happen. But this is the easiest solution, so hacks win. preserve_containers = set() preserve_images = set() # Enable tests to interact with our Docker controlling script. docker_state = os.path.join(HERE, '.docker-state.json') docker_url, docker_tls = vctdocker.params_from_env(os.environ) docker = vctdocker.Docker(docker_state, docker_url, tls=docker_tls) if docker.is_alive(): os.environ['DOCKER_HOSTNAME'] = docker.docker_hostname # We build the base BMO images in the test runner because doing it # from tests would be racey. It is easier to do it here instead of # complicating code with locks. db_image, web_image = docker.build_bmo(verbose=verbose) os.environ['DOCKER_BMO_DB_IMAGE'] = db_image os.environ['DOCKER_BMO_WEB_IMAGE'] = web_image for c in docker.client.containers(all=True): preserve_containers.add(c['Id']) for i in docker.client.images(all=True): preserve_images.add(i['Id'])