Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
T
tumbler-thumbnailing
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tests
tumbler-thumbnailing
Commits
45cc2bb0
Commit
45cc2bb0
authored
6 years ago
by
Andre Moreira Magalhaes
Browse files
Options
Downloads
Patches
Plain Diff
Add more helper scripts required by tests
parent
2ff97c1f
Branches
apertis/v2021
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
common.sh
+319
-0
319 additions, 0 deletions
common.sh
inherit-config.sh
+21
-0
21 additions, 0 deletions
inherit-config.sh
with
340 additions
and
0 deletions
common.sh
0 → 100644
+
319
−
0
View file @
45cc2bb0
# Source me!
# I need ROOTDIR, PN and PV to be defined! (see bottom of file)
# vim: set sts=4 sw=4 et :
# Detect whether stdout is to a terminal
if
tty
-s
<&1
;
then
IS_TTY
=
"true"
fi
is_tty
()
{
[
"
${
IS_TTY
}
"
=
true
]
&&
return
0
return
1
}
##########
# Murder #
##########
_kill_daemons
()
{
pkill dconf-service
>
/dev/null 2>&1
||
true
return
0
# Never fail
}
##########
# Output #
##########
cry_n
()
{
if
is_tty
;
then
# Cry tears of blood
/bin/echo
-n
-e
"
\0
33[01;31m#
\0
33[00m
$@
"
else
/bin/echo
-n
-e
"#
$@
"
fi
}
cry
()
{
cry_n
"
$@
"
echo
}
say_n
()
{
if
is_tty
;
then
# Speak in green
/bin/echo
-n
-e
"
\0
33[01;32m#
\0
33[00m
$@
"
else
/bin/echo
-n
-e
"#
$@
"
fi
}
say
()
{
say_n
"
$@
"
echo
}
whine_n
()
{
if
is_tty
;
then
# Whine in yellow
/bin/echo
-n
-e
"
\0
33[01;33m#
\0
33[00m
$@
"
else
/bin/echo
-n
-e
"#
$@
"
fi
}
whine
()
{
whine_n
"
$@
"
echo
}
echo_red
()
{
if
is_tty
;
then
# Print text in red, without an implicit newline
/bin/echo
-n
-e
"
\0
33[01;31m
$@
\0
33[00m"
else
/bin/echo
-n
-e
"
$@
"
fi
}
echo_green
()
{
if
is_tty
;
then
# Print text in green, without an implicit newline
/bin/echo
-n
-e
"
\0
33[01;32m
$@
\0
33[00m"
else
/bin/echo
-n
-e
"
$@
"
fi
}
###################
# Status Messages #
###################
test_success
()
{
say
"All tests PASSED successfully!"
_kill_daemons
trap
- ERR 2>/dev/null
||
true
trap
- EXIT
exit
0
}
test_failure
()
{
[
$?
-eq
0
]
&&
exit
cry
"Tests FAILED!"
_kill_daemons
whine
"Work directory was:
${
WORKDIR
}
"
exit
0
}
setup_success
()
{
say
"Test setup successfully!"
_kill_daemons
trap
- ERR 2>/dev/null
||
true
trap
- EXIT
return
0
}
setup_failure
()
{
[
$?
-eq
0
]
&&
exit
cry
"Test setup failed!"
_kill_daemons
exit
1
}
#############
# Utilities #
#############
create_temp_workdir
()
{
local
tempdir
=
"
$(
mktemp
-d
-p
${
WORKDIR
}
)
"
echo
"
${
tempdir
}
"
1>&2
_realpath
"
${
tempdir
}
"
}
# Takes an IFS delimited list of files from stdin, checks if each exists, and
# passes it on if it does. If the file doesn't exist, it prefixes the filename
# with "DNE", which is caught by _src_test, which then marks it as a failed test
check_file_exists_tee
()
{
while
read
i
;
do
if
[
-e
"
$i
"
]
;
then
echo
"
$i
"
else
echo
"DNE:
$i
"
fi
done
}
check_not_root
()
{
if
[
"
$(
id
-ru
)
"
=
0
]
;
then
cry
"Do not run this test as root!"
return
1
fi
return
0
}
check_have_root
()
{
if
[
"
$(
id
-ru
)
"
!=
0
]
;
then
cry
"Need root to run this test successfully!"
return
1
fi
return
0
}
arch_is_arm
()
{
case
"
$(
uname
-m
)
"
in
arm
*
)
return
0
;;
esac
return
1
}
# Check if a session bus is running otherwise fail
ensure_dbus_session
()
{
local
dbus_socket
dbus_socket
=
"/run/user/
$(
id
-ru
)
/bus"
if
[
!
-e
"
${
dbus_socket
}
"
]
;
then
cry
"Could not find session bus..."
return
1
fi
return
0
}
######################
# Internal functions #
######################
# Sleep, unless specified otherwise
_sleep
()
{
if
[
-z
"
${
QUICK
}
"
]
;
then
/bin/sleep
"
$@
"
else
/bin/sleep 0.2
fi
}
# Run external utilities with this
# All output is suppressed by default as LAVA doesn't cope well with very large logs.
# Use DEBUG=1 to enable all output when running tests locally on developer devices.
# Short-circuiting with a return is needed to prevent unexpected exiting due to
# a non-zero return code when set -e is enabled.
_run_cmd
()
{
if
[
"
${
DEBUG
}
"
=
1
]
then
"
$@
"
||
return
else
"
$@
"
>
/dev/null 2>&1
||
return
fi
}
_expect_pass
()
{
_run_cmd
"
$@
"
}
_expect_fail
()
{
!
_run_cmd
"
$@
"
}
_src_test
()
{
# Reads a list of tests to run via stdin, and executes them one by one
# All these are supposed to pass
local
i
local
failed
=
local
expect
=
$1
local
prefix
=
""
shift
if
[
-n
"
${
APERTIS_TESTS_NAME_PREFIX
}
"
]
;
then
prefix
=
"
${
APERTIS_TESTS_NAME_PREFIX
}
"
fi
while
read
i
;
do
case
$i
in
[
#]*)
echo_red
"
${
prefix
}
$i
: skip
\n
"
continue
;;
# See check_file_exists_tee()
DNE
*
)
echo_red
"
${
prefix
}
$i
: fail
\n
"
whine
"Got an invalid executable name '
$i
'!"
failed
=
"
$failed
$i
"
continue
;;
esac
say
"Running test '
$i
' ..."
if
!
"
$expect
"
"
$i
"
"
$@
"
;
then
failed
=
"
$failed
$i
"
echo_red
"
${
prefix
}
$i
: fail
\n
"
else
echo_green
"
${
prefix
}
$i
: pass
\n
"
fi
done
if
[
-n
"
$failed
"
]
;
then
whine
"The following tests failed: "
for
i
in
$failed
;
do
whine
"
\t
$i
"
done
return
1
fi
}
# Let's not depend on realpath; we don't need it
_realpath
()
{
cd
"
$1
"
echo
"
$PWD
"
}
##########
# Phases #
##########
src_test_pass
()
{
_src_test _expect_pass
"
$@
"
}
src_test_fail
()
{
_src_test _expect_fail
"
$@
"
}
src_unpack
()
{
mkdir
-p
"
${
WORKDIR
}
"
}
src_cleanup
()
{
rm
-rf
"
${
WORKDIR
}
"
}
src_copy
()
{
# Copy $1 $2 .. $N-1 to $N
# Essentially just a wrapper around `cp` right now
cp
-v
-L
-r
"
$@
"
1>&2
}
src_copy_contents
()
{
# Copy the contents of $1 to $2
# FIXME: This ignores dot-files. Use rsync or something?
cp
-v
-L
-r
"
$1
"
/
*
"
$2
"
1>&2
}
#############
# Variables #
#############
# Fix this to not flood /var/tmp with temporary directories
BASEWORKDIR
=
"/var/tmp/chaiwala-tests"
mkdir
-p
"
${
BASEWORKDIR
}
"
WORKDIR
=
"
$(
mktemp
-d
-p
${
BASEWORKDIR
}
"
$(
date
+%Y%m%d-%H%M%S
)
-XXXXXXXXXX"
)
"
# Tests might be run as chaiwala, or as root, or some other user
# Everyone should be able to write here
chown
1000
"
${
BASEWORKDIR
}
"
chmod
777
"
${
BASEWORKDIR
}
"
||
true
chmod
777
"
${
WORKDIR
}
"
||
true
sync
# Wrappers for external commands used
WGET
=
"
${
WGET
:-
wget
-c
}
"
# We disable apt-get, and just do a pass-through because these tests are
# integrated into LAVA now
#APT_GET="$(type -P true)"
GDBUS
=
"
${
GDBUS
:-
gdbus
}
"
# 0 = no output
# 1 = stderr
# 2 = stdout + stderr
DEBUG
=
"
${
DEBUG
:-
0
}
"
This diff is collapsed.
Click to expand it.
inherit-config.sh
0 → 100644
+
21
−
0
View file @
45cc2bb0
# This file should be symlinked inside your test directory,
# and sourced from config.sh
# It will be modified and copied to the install directory by make
.
"
${
TESTDIR
}
/common/common.sh"
## These variables are properties of the image itself
LIBEXECDIR
=
"
${
LIBEXECDIR
:-
/usr/lib
}
"
## These variables get modified by `make` during install
# Directory where scripts and other non-binary data is installed
TESTDATADIR
=
"
${
TESTDIR
}
"
# Binary executable install directory
TESTLIBDIR
=
"
${
TESTDIR
}
"
REALTESTDIR
=
"
$(
_realpath
${
TESTDIR
}
)
"
# Directory where test data/resources are installed
RESOURCE_DIR
=
"
${
REALTESTDIR
}
/common/resources"
## These are derived from the above
MEDIA_RESOURCE_DIR
=
"
${
RESOURCE_DIR
}
/media"
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment