From 8134902e8b8e1d5953845b0b73782f4cec091a8a Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Fri, 25 Jun 2021 10:47:06 -0700 Subject: [PATCH] tests,util-gem5art: Add presubmit tests for gem5art Change-Id: I7c10155e74de1a073fda861d498632c1d4be42b9 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/47223 Maintainer: Bobby R. Bruce Reviewed-by: Jason Lowe-Power Tested-by: kokoro --- .gitignore | 1 + tests/jenkins/gem5art-tests.sh | 69 ++++++++++++++++++++++++++++++++++ tests/jenkins/presubmit.sh | 5 +++ 3 files changed, 75 insertions(+) create mode 100755 tests/jenkins/gem5art-tests.sh diff --git a/.gitignore b/.gitignore index a19560973b..90a6bb2515 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ m5out /system/arm/bootloader/arm64/boot_v2.arm64 configs/example/memcheck.cfg configs/dram/lowp_sweep.cfg +.pyenv diff --git a/tests/jenkins/gem5art-tests.sh b/tests/jenkins/gem5art-tests.sh new file mode 100755 index 0000000000..2461de6f59 --- /dev/null +++ b/tests/jenkins/gem5art-tests.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# +# Copyright (c) 2021 The Regents of the University of California +# All rights reserved +# +# The license below extends only to copyright in the software and shall +# not be construed as granting a license to any other intellectual +# property including but not limited to intellectual property relating +# to a hardware implementation of the functionality of the software +# licensed hereunder. You may use the software subject to the license +# terms below provided that you ensure that this notice is replicated +# unmodified and in its entirety in all distributions of the software, +# modified or unmodified, in source code or in binary form. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer; +# redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution; +# neither the name of the copyright holders nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +set -e + +# Creating a virtual environment allows us to cleanly install the packages +# within a Docker container. +mkdir -p .pyenv +python3 -m venv .pyenv +source .pyenv/bin/activate + +# The 18.04_all-depenencies image has an outdated version of setuptools. We +# update it here. Attempts to fix this via the Dockerfile have been +# unsuccessful. +pip install -U setuptools + +# Install the packages +pip install -e util/gem5art/artifact +pip install -e util/gem5art/run +pip install -e util/gem5art/tasks + +# Run the gem5art artificat tests. +cd util/gem5art/artifact +python3 -m unittest +mypy -p gem5art.artifact + +# Run the gem5art run tests. +cd ../run +python3 -m unittest +mypy -p gem5art.run + +# Run the gem5art task tests. +cd ../tasks +python3 -m unittest +mypy -p gem5art.tasks diff --git a/tests/jenkins/presubmit.sh b/tests/jenkins/presubmit.sh index 5dc501655d..2aa0c04469 100755 --- a/tests/jenkins/presubmit.sh +++ b/tests/jenkins/presubmit.sh @@ -40,6 +40,7 @@ set -e DOCKER_IMAGE_ALL_DEP=gcr.io/gem5-test/ubuntu-20.04_all-dependencies DOCKER_IMAGE_CLANG_COMPILE=gcr.io/gem5-test/clang-version-9 PRESUBMIT_STAGE2=tests/jenkins/presubmit-stage2.sh +GEM5ART_TESTS=tests/jenkins/gem5art-tests.sh # Move the docker base directory to tempfs. sudo /etc/init.d/docker stop @@ -50,6 +51,10 @@ sudo /etc/init.d/docker start # Move the CWD to the gem5 checkout. cd git/jenkins-gem5-prod/ +# Using a docker image with all the dependencies, we run the gem5art tests. +docker run -u $UID:$GID --volume $(pwd):$(pwd) -w $(pwd) --rm \ + "${DOCKER_IMAGE_ALL_DEP}" "${GEM5ART_TESTS}" + # Using a docker image with all the dependencies, we run the presubmit tests. docker run -u $UID:$GID --volume $(pwd):$(pwd) -w $(pwd) --rm \ "${DOCKER_IMAGE_ALL_DEP}" "${PRESUBMIT_STAGE2}"