94 lines
3.5 KiB
Python
94 lines
3.5 KiB
Python
# 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)
|