1# Copyright 2015 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import os 6 7import common 8from autotest_lib.client.bin import utils as common_utils 9from autotest_lib.client.common_lib.global_config import global_config 10 11 12# Name of the base container. 13BASE = global_config.get_config_value('AUTOSERV', 'container_base_name') 14 15# Path to folder that contains autotest code inside container. 16CONTAINER_AUTOTEST_DIR = '/usr/local/autotest' 17 18# Naming convention of the result directory in test container. 19RESULT_DIR_FMT = os.path.join(CONTAINER_AUTOTEST_DIR, 'results', 20 '%s') 21# Attributes to retrieve about containers. 22ATTRIBUTES = ['name', 'state'] 23 24# url to the folder stores base container. 25CONTAINER_BASE_FOLDER_URL = global_config.get_config_value('AUTOSERV', 26 'container_base_folder_url') 27CONTAINER_BASE_URL_FMT = '%s/%%s.tar.xz' % CONTAINER_BASE_FOLDER_URL 28CONTAINER_BASE_URL = CONTAINER_BASE_URL_FMT % BASE 29# Default directory used to store LXC containers. 30DEFAULT_CONTAINER_PATH = global_config.get_config_value('AUTOSERV', 31 'container_path') 32# Default directory for host mounts 33DEFAULT_SHARED_HOST_PATH = global_config.get_config_value( 34 'AUTOSERV', 35 'container_shared_host_path') 36 37# The name of the linux domain socket used by the container pool. Just one 38# exists, so this is just a hard-coded string. 39DEFAULT_CONTAINER_POOL_SOCKET = 'container_pool_socket' 40 41# Default size for the lxc container pool. 42DEFAULT_CONTAINER_POOL_SIZE = 20 43 44# Location of the host mount point in the container. 45CONTAINER_HOST_DIR = '/host' 46 47# Path to drone_temp folder in the container, which stores the control file for 48# test job to run. 49CONTROL_TEMP_PATH = os.path.join(CONTAINER_AUTOTEST_DIR, 'drone_tmp') 50 51# Bash command to return the file count in a directory. Test the existence first 52# so the command can return an error code if the directory doesn't exist. 53COUNT_FILE_CMD = '[ -d %(dir)s ] && ls %(dir)s | wc -l' 54 55# Seconds to wait for successful completion of a lxc force-destroy 56LXC_SCRUB_TIMEOUT = 300 57 58# Command line to append content to a file 59APPEND_CMD_FMT = ('echo \'%(content)s\' | sudo tee --append %(file)s' 60 '> /dev/null') 61 62# Flag to indicate it's running in a Moblab. Due to crbug.com/457496, lxc-ls has 63# different behavior in Moblab. 64IS_MOBLAB = common_utils.is_moblab() 65 66if IS_MOBLAB: 67 SITE_PACKAGES_PATH = '/usr/lib64/python2.7/site-packages' 68 CONTAINER_SITE_PACKAGES_PATH = '/usr/local/lib/python2.7/dist-packages/' 69else: 70 SITE_PACKAGES_PATH = os.path.join(common.autotest_dir, 'site-packages') 71 CONTAINER_SITE_PACKAGES_PATH = os.path.join(CONTAINER_AUTOTEST_DIR, 72 'site-packages') 73 74# This is an alternate site_packages that is built to be Trusty 75# compatible. crbug.com/1013241 76TRUSTY_SITE_PACKAGES_PATH = '/opt/trusty_site_packages' 77 78# TODO(dshi): If we are adding more logic in how lxc should interact with 79# different systems, we should consider code refactoring to use a setting-style 80# object to store following flags mapping to different systems. 81SUPPORT_SNAPSHOT_CLONE = True 82 83# Number of seconds to wait for network to be up in a container. 84NETWORK_INIT_TIMEOUT = 300 85# Network bring up is slower in Moblab. 86NETWORK_INIT_CHECK_INTERVAL = 1 if IS_MOBLAB else 0.1 87 88# Number of seconds to download files from devserver. We chose a timeout that 89# is on the same order as the permitted CTS runtime for normal jobs (1h). In 90# principle we should not retry timeouts as they indicate server/network 91# overload, but we may be tempted to retry for other failures. 92DEVSERVER_CALL_TIMEOUT = 3600 93# Number of retries to download files from devserver. There is no point in 94# having more than one retry for a file download. 95DEVSERVER_CALL_RETRY = 2 96# Average delay before attempting a retry to download from devserver. This 97# value needs to be large enough to allow an overloaded server/network to 98# calm down even in the face of retries. 99DEVSERVER_CALL_DELAY = 600 100 101# Type string for container related metadata. 102CONTAINER_CREATE_METADB_TYPE = 'container_create' 103CONTAINER_CREATE_RETRY_METADB_TYPE = 'container_create_retry' 104CONTAINER_RUN_TEST_METADB_TYPE = 'container_run_test' 105 106# The container's hostname MUST start with `test-` or `test_`. DHCP server in 107# MobLab uses that prefix to determine the lease time. Note that `test_` is not 108# a valid hostname as hostnames cannot contain underscores. Work is underway to 109# migrate to `test-`. See crbug/726131. 110CONTAINER_UTSNAME_FORMAT = 'test-%s' 111 112STATS_KEY = 'chromeos/autotest/lxc' 113 114CONTAINER_POOL_METRICS_PREFIX = 'chromeos/autotest/container_pool' 115