29840bcecb
Allow the `make vmcheck` target to take a HOSTS var, which is simply a space-separated list of hosts on which we can run testsuites. Add a multitest.py script that takes care of monitoring and scheduling the tests onto the nodes. The script itself is "dumb": we don't know how long each test can take, so we can't do any smart/heuristic scheduling that could save more time. Closes: #675 Approved by: cgwalters
137 lines
4.6 KiB
Plaintext
137 lines
4.6 KiB
Plaintext
include $(top_srcdir)/buildutil/glib-tap.mk
|
|
|
|
BASE_TESTS_ENVIRONMENT = \
|
|
builddir=$(abs_builddir) \
|
|
topsrcdir=$(abs_top_srcdir) \
|
|
commondir=$(abs_top_srcdir)/tests/common
|
|
|
|
|
|
AM_TESTS_ENVIRONMENT = \
|
|
UNINSTALLEDTESTS=1 \
|
|
$(BASE_TESTS_ENVIRONMENT)
|
|
|
|
# we consume libdnf as a submodule, but we may not have installed it yet (and we
|
|
# don't want it to fall back to the system libhif if it's also installed)
|
|
AM_TESTS_ENVIRONMENT += \
|
|
LD_LIBRARY_PATH=$(abs_builddir)/libdnf-build/libdnf \
|
|
$(NULL)
|
|
if BUILDOPT_ASAN
|
|
AM_TESTS_ENVIRONMENT += ASAN_OPTIONS=detect_leaks=false
|
|
endif
|
|
|
|
CLEANFILES += \
|
|
tests/common/compose/yum/repo \
|
|
tests/common/compose/test-repo.repo \
|
|
$(NULL)
|
|
|
|
testpackages = \
|
|
tests/common/compose/yum/repo/packages/x86_64/empty-1.0-1.x86_64.rpm \
|
|
tests/common/compose/yum/repo/packages/x86_64/foo-1.0-1.x86_64.rpm \
|
|
tests/common/compose/yum/repo/packages/x86_64/bar-1.0-1.x86_64.rpm \
|
|
tests/common/compose/yum/repo/packages/x86_64/scriptpkg1-1.0-1.x86_64.rpm \
|
|
tests/common/compose/yum/repo/packages/x86_64/nonrootcap-1.0-1.x86_64.rpm \
|
|
tests/common/compose/yum/repo/packages/x86_64/test-post-rofiles-violation-1.0-1.x86_64.rpm \
|
|
tests/common/compose/yum/repo/packages/x86_64/test-opt-1.0-1.x86_64.rpm \
|
|
$(NULL)
|
|
|
|
# Create a rule for each testpkg with their respective spec file as dep.
|
|
# The static pattern feature is almost a fit for this, but does not allow string
|
|
# substitutions and wildcards in the patterns to allow rpm-filename -->
|
|
# spec-filename without also encoding the arch, release, and rev.
|
|
define testpkgbuild_template =
|
|
$(1): tests/common/compose/yum/$(2).spec
|
|
(cd tests/common/compose/yum && \
|
|
rm -rf .build && \
|
|
rpmbuild -ba $$$$(basename $$<) \
|
|
--define "_sourcedir $$$$PWD" \
|
|
--define "_specdir $$$$PWD" \
|
|
--define "_builddir $$$$PWD/.build" \
|
|
--define "_srcrpmdir $$$$PWD" \
|
|
--define "_rpmdir $$$$PWD/repo/packages" \
|
|
--define "_buildrootdir $$$$PWD" && \
|
|
rm -rf .build && \
|
|
rm -f *.src.rpm)
|
|
endef
|
|
|
|
$(foreach pkg,$(testpackages),$(eval $(call testpkgbuild_template,$(pkg),$(shell basename $(pkg) | sed -e 's,-1\.0.*,,'))))
|
|
|
|
tests/common/compose/yum/repo/repodata/repomd.xml: $(testpackages)
|
|
(cd tests/common/compose/yum/repo && \
|
|
createrepo_c --no-database $$PWD)
|
|
|
|
tests/common/compose/test-repo.repo: tests/common/compose/test-repo.repo.in \
|
|
tests/common/compose/yum/repo/repodata/repomd.xml
|
|
cat $< | sed -e "s|%WHERE%|$(abs_top_srcdir)|" > $@
|
|
|
|
CLEANFILES += \
|
|
tests/common/compose/test-repo-local.repo \
|
|
$(NULL)
|
|
|
|
tests_check_jsonutil_CPPFLAGS = $(AM_CPPFLAGS) -I $(srcdir)/src/libpriv -I $(srcdir)/libglnx
|
|
tests_check_jsonutil_CFLAGS = $(AM_CFLAGS) $(PKGDEP_RPMOSTREE_CFLAGS)
|
|
tests_check_jsonutil_LDADD = $(PKGDEP_RPMOSTREE_LIBS) librpmostreepriv.la
|
|
|
|
tests_check_cache_branch_to_nevra_CPPFLAGS = $(AM_CPPFLAGS) -I $(srcdir)/src/libpriv -I $(srcdir)/libglnx
|
|
tests_check_cache_branch_to_nevra_CFLAGS = $(AM_CFLAGS) $(PKGDEP_RPMOSTREE_CFLAGS)
|
|
tests_check_cache_branch_to_nevra_LDADD = $(PKGDEP_RPMOSTREE_LIBS) librpmostreepriv.la
|
|
|
|
tests/check/test-compose.sh: tests/common/compose/test-repo.repo
|
|
|
|
tests/check/test-ucontainer.sh: tests/common/compose/test-repo.repo
|
|
|
|
uninstalled_test_programs = \
|
|
tests/check/jsonutil \
|
|
tests/check/cache_branch_to_nevra \
|
|
$(NULL)
|
|
|
|
uninstalled_test_scripts = \
|
|
tests/check/test-basic.sh \
|
|
tests/check/test-compose.sh \
|
|
tests/check/test-ucontainer.sh \
|
|
$(NULL)
|
|
|
|
uninstalled_test_extra_programs = dbus-run-session
|
|
|
|
dbus_run_session_SOURCES = tests/utils/dbus-run-session.c
|
|
|
|
check-local:
|
|
@echo " *** NOTE ***"
|
|
@echo " *** NOTE ***"
|
|
@echo " \"make check\" only runs a subset of rpm-ostree's tests."
|
|
@echo " Use \"make vmcheck\" to run remaining tests in a VM."
|
|
@echo " *** NOTE ***"
|
|
@echo " *** NOTE ***"
|
|
|
|
.PHONY: vmsync vmoverlay vmshell vmcheck testenv
|
|
|
|
vmsync:
|
|
@env $(BASE_TESTS_ENVIRONMENT) ./tests/vmcheck/sync.sh
|
|
|
|
HOSTS := "vmcheck"
|
|
|
|
vmoverlay:
|
|
@if [ -z "$(SKIP_VMOVERLAY)" ]; then \
|
|
rm -rf $(abs_top_srcdir)/insttree; \
|
|
echo -n "$(HOSTS)" | xargs -P 0 -n 1 -d ' ' -I {} \
|
|
env $(BASE_TESTS_ENVIRONMENT) VM={} \
|
|
./tests/vmcheck/overlay.sh; \
|
|
fi
|
|
|
|
vmshell: vmsync
|
|
ssh -F ssh-config vmcheck
|
|
|
|
# set up test environment to somewhat resemble uninstalled tests
|
|
vmcheck: vmoverlay tests/common/compose/yum/repo/repodata/repomd.xml
|
|
@env VMTESTS=1 $(BASE_TESTS_ENVIRONMENT) PYTHONUNBUFFERED=1 \
|
|
tests/vmcheck/multitest.py $(HOSTS)
|
|
|
|
testenv:
|
|
@echo "===== ENTERING TESTENV ====="
|
|
test_tmpdir=$$(mktemp -d test.XXXXXX) && \
|
|
cd $$test_tmpdir && \
|
|
env $(BASE_TESTS_ENVIRONMENT) PATH=$(abs_builddir):$$PATH TESTENV=1 \
|
|
sh ../tests/utils/setup-session.sh bash && \
|
|
cd .. && \
|
|
rm -rf $$test_tmpdir
|
|
@echo "===== LEAVING TESTENV ====="
|