blob: 4294877b32ae5deb2a0d8ed7bc4d1d7cd720d5d2 [file] [log] [blame]
# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This test only checks whether the directory of the dependency package exists.
# It is expected that the necessary path configuration will be done in the test.
# IMPORTANT: This test should be updated whenever the dependencies specified change
# for any of the environments.
import logging
import os
import subprocess
from autotest_lib.client.bin import utils as client_utils
from autotest_lib.client.common_lib import error
from autotest_lib.server import test, utils
class cheets_LabDependencies(test.test):
"""Check basic dependency requirements for running CTS tests."""
version = 1
"""
Context: xTS P requires JDK 8 or 9, and xTS R requires JDK 9 or above.
LXC (container for running server-side autotest)
Runs xTS P and R. Uses JDK 8 as default, and JDK 9 on xTS R.
JDK 9 path is hardcoded in cheets_CTS_R.
moblab
Only runs CTS P. Uses JDK 9 (single JDK) on CTS P.
Currently this test does not run on moblab.
Because is_moblab does not work, test ignores the moblab component.
Need to move JDK's to /java. TODO(haddowk)
Will run when new distribution is released.
chroot (PFQ environment)
Runs CTS P and R. Uses JDK 11 as default, and JDK 8 on CTS P.
JDK 8 Path is hardcoded in cheets_CTS_P.
"""
ENV_EXPECTED = {
'LXC': {
'JDK': [
'/usr/lib/jvm/jdk-9.0.4',
'/usr/lib/jvm/java-8-openjdk-amd64',
],
'DIR': '/usr/lib/jvm'
},
'moblab': {
'JDK': [
'/java/jdk-9.0.4',
],
'DIR': '/java'
},
'chroot': {
'JDK': [
'/opt/icedtea-bin-3.4.0',
'/opt/openjdk-bin-11',
],
'DIR': '/opt'
}
}
def check_JDK(self, env):
"""Check whether required JDK directories exist for the environment."""
for dep_path in self.ENV_EXPECTED[env]['JDK']:
"""Raise TestFail if specified JDK directories do not exist."""
if not os.path.isdir(dep_path):
java_path = subprocess.check_output([
'find', self.ENV_EXPECTED[env]['DIR'], '-path',
'*bin/java'], stderr=subprocess.STDOUT)
if java_path:
java_path = ', '.join(java_path.split('\n')[:-1])
raise error.TestFail(
'Missing required JDK dependency %s for %s. '
'Quick search shows currently installed versions are %s.'
% (dep_path, env, java_path))
def run_once(self, host=None):
"""Check the type of environment, and see if all dependencies are satisfied."""
if utils.is_in_container():
logging.info('[ENV] Running inside the LXC container')
env = 'LXC'
# is_moblab does not work. Run in moblab when new distribution is released.
elif client_utils.is_moblab():
logging.info('[ENV] Running inside moblab')
env = 'moblab'
else:
logging.info('[ENV] Running inside chroot environment')
env = 'chroot'
self.host = host
self.check_JDK(env)