copy & update test routines from what-jenkins-does

Currently the only testing we had was 'what-jenkins-does' and
'make lint'. While the lint testing is suitable for developers,
the 'what-jenkins-does' target really isn't, as it was designed
specifically for testing on jenkins.

This adds the infrastructure for basic tests that are more suitable
for the developer. Extended tests and improvements will follow.

Add the coreboot-builds directories to .gitignore.

TODO:
- Save/restore .config
- Update test-abuild to use existing COREBOOT_BUILD_DIR variable

Change-Id: I19e1256d79531112ff84e47a307f55791533806f
Signed-off-by: Martin Roth <martinroth@google.com>
Reviewed-on: https://review.coreboot.org/20874
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Chris Ching <chingcodes@google.com>
This commit is contained in:
Martin Roth 2017-08-03 09:25:43 -06:00
parent e624e270e6
commit 6c9c196f1c
5 changed files with 83 additions and 14 deletions

1
.gitignore vendored
View File

@ -61,6 +61,7 @@ site-local
*.pyc *.pyc
*.sw[po] *.sw[po]
/*.rom /*.rom
coreboot-builds*/
# Development friendly files # Development friendly files
tags tags

View File

@ -92,9 +92,7 @@ help_coreboot help::
@echo ' distclean - Remove build artifacts and config files' @echo ' distclean - Remove build artifacts and config files'
@echo ' doxygen - Build doxygen documentation for coreboot' @echo ' doxygen - Build doxygen documentation for coreboot'
@echo ' doxyplatform - Build doxygen documentation for the current platform' @echo ' doxyplatform - Build doxygen documentation for the current platform'
@echo ' what-jenkins-does - Run platform build tests (Use CPUS=# for more cores)'
@echo ' printall - print makefile info for debugging' @echo ' printall - print makefile info for debugging'
@echo ' lint / lint-stable - run coreboot lint tools (all / minimal)'
@echo ' gitconfig - set up git to submit patches to coreboot' @echo ' gitconfig - set up git to submit patches to coreboot'
@echo ' ctags / ctags-project - make ctags file for all of coreboot or current board' @echo ' ctags / ctags-project - make ctags file for all of coreboot or current board'
@echo ' cscope / cscope-project - make cscope.out file for coreboot or current board' @echo ' cscope / cscope-project - make cscope.out file for coreboot or current board'

View File

@ -75,7 +75,7 @@ files_added:: build_complete
####################################################################### #######################################################################
# our phony targets # our phony targets
PHONY+= clean-abuild coreboot lint lint-stable build-dirs build_complete PHONY+= clean-abuild coreboot build-dirs build_complete
####################################################################### #######################################################################
# root source directories of coreboot # root source directories of coreboot
@ -556,9 +556,6 @@ printcrt0s:
update: update:
dongle.py -c /dev/term/1 $(obj)/coreboot.rom EOF dongle.py -c /dev/term/1 $(obj)/coreboot.rom EOF
lint lint-stable:
util/lint/lint $@
gitconfig: gitconfig:
[ -d .git ] [ -d .git ]
mkdir -p .git/hooks mkdir -p .git/hooks

View File

@ -147,3 +147,12 @@ junit.xml:
done done
echo "</testsuite>" >> $@.tmp echo "</testsuite>" >> $@.tmp
mv $@.tmp $@ mv $@.tmp $@
test-configs:
for config in $(filter-out %.old,$(wildcard configs/*)); do \
$(MAKE) clean; \
cp "$$config" test_config; \
echo "*** Making libpayload config $$config ***"; \
$(MAKE) olddefconfig DOTCONFIG=test_config V=$(V) Q=$(Q) ; \
$(MAKE) V=$(V) Q=$(Q) CONFIG_LP_CCACHE=$(CONFIG_LP_CCACHE) DOTCONFIG=test_config; \
done

View File

@ -11,6 +11,21 @@
## GNU General Public License for more details. ## GNU General Public License for more details.
## ##
test-help help::
@echo '*** coreboot test targets ***'
@echo ' what-jenkins-does - Run platform build tests with junit output'
@echo ' lint / lint-stable - run coreboot lint tools (all / minimal)'
@echo ' test-basic - Run stardard build tests. All expected to pass.'
@echo ' test-lint - basic: Run stable and extended lint tests.'
@echo ' test-tools - basic: Tests a basic list of tools.'
@echo ' test-abuild - basic: Builds all platforms'
@echo ' test-payloads - basic: Builds internal payloads'
@echo ' test-cleanup - basic: Cleans coreboot directories'
# junit.xml is a helper target to wrap builds that don't create junit.xml output
# BLD = Subdirectory the build lives in - The name of the build
# BLD_DIR = Top path from coreboot to the build subdirectory
# MAKETARGET = target to build
junit.xml: junit.xml:
echo "Building $(BLD)" echo "Building $(BLD)"
echo '<?xml version="1.0" encoding="utf-8"?><testsuite>' > $@.tmp echo '<?xml version="1.0" encoding="utf-8"?><testsuite>' > $@.tmp
@ -35,16 +50,26 @@ junit.xml:
echo echo
TOOLLIST= \ TOOLLIST= \
cbmem \ cbmem \
ectool \ ectool \
futility \ futility \
inteltool \ inteltool \
intelvbttool \ intelvbttool \
nvramtool \ nvramtool \
superiotool \ superiotool \
viatool viatool
TEST_PAYLOADLIST_INTERNAL= \
coreinfo \
nvramcui
JENKINS_PAYLOAD?=none JENKINS_PAYLOAD?=none
TEST_PAYLOAD?=$(JENKINS_PAYLOAD)
CPUS?=4 CPUS?=4
lint lint-stable:
util/lint/lint $@
what-jenkins-does: what-jenkins-does:
util/lint/lint lint-stable --junit util/lint/lint lint-stable --junit
util/abuild/abuild -B -J $(if $(JENKINS_NOCCACHE),,-y) -c $(CPUS) -z -p $(JENKINS_PAYLOAD) -x -X $(top)/abuild-chromeos.xml util/abuild/abuild -B -J $(if $(JENKINS_NOCCACHE),,-y) -c $(CPUS) -z -p $(JENKINS_PAYLOAD) -x -X $(top)/abuild-chromeos.xml
@ -54,3 +79,42 @@ what-jenkins-does:
unset COREBOOT_BUILD_DIR;$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=payloads/ BLD=nvramcui MFLAGS= MAKEFLAGS= MAKETARGET=all junit.xml unset COREBOOT_BUILD_DIR;$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=payloads/ BLD=nvramcui MFLAGS= MAKEFLAGS= MAKETARGET=all junit.xml
unset COREBOOT_BUILD_DIR;$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=payloads/ BLD=coreinfo MFLAGS= MAKEFLAGS= MAKETARGET=defaultbuild junit.xml unset COREBOOT_BUILD_DIR;$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=payloads/ BLD=coreinfo MFLAGS= MAKEFLAGS= MAKETARGET=defaultbuild junit.xml
$(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=util/ BLD=romcc MFLAGS= MAKEFLAGS= MAKETARGET=test junit.xml $(MAKE) CPUS=$(CPUS) V=$(V) Q=$(Q) BLD_DIR=util/ BLD=romcc MFLAGS= MAKEFLAGS= MAKETARGET=test junit.xml
test-basic: test-lint test-tools test-abuild test-payloads test-cleanup
test-lint:
util/lint/lint lint-stable
util/lint/lint-015-final-newlines
test-abuild:
rm -rf coreboot-builds-chromeos coreboot-builds
export COREBOOT_BUILD_DIR=coreboot-builds-chromeos; util/abuild/abuild -B -e $(if $(TEST_NOCCACHE),,-y) -c $(CPUS) -p $(TEST_PAYLOAD) -x
util/abuild/abuild -B -e $(if $(TEST_NOCCACHE),,-y) -c $(CPUS) -p $(TEST_PAYLOAD)
test-payloads:
$(MAKE) -C payloads/libpayload test-configs -j $(CPUS) V=$(V) Q=$(Q) MFLAGS= MAKEFLAGS= $(if $(TEST_NOCCACHE),,CONFIG_LP_CCACHE=y)
export MFLAGS=;export MAKEFLAGS=; \
$(foreach payload, $(TEST_PAYLOADLIST_INTERNAL), \
echo "*** Making payload $(payload) ***"; \
$(MAKE) -C payloads/$(payload) distclean ;\
$(MAKE) $(payload) -j $(CPUS) V=$(V) Q=$(Q)\
|| exit 1; )
test-tools:
@echo "Build testing $(TOOLLIST)"
$(foreach tool, $(TOOLLIST), $(MAKE) -C util/$(tool) clean ; )
$(MAKE) -C util/romcc clean
$(foreach tool, $(TOOLLIST), echo "Building $(tool)";export MFLAGS= ;export MAKEFLAGS= ;$(MAKE) -C util/$(tool) all V=$(V) Q=$(Q) || exit 1; )
echo "Building romcc"
$(MAKE) -C util/romcc all test -j $(CPUS) V=$(V) Q=$(Q)
test-cleanup:
rm -rf coreboot-builds coreboot-builds-chromeos
$(MAKE) clean
$(MAKE) distclean
$(foreach tool, $(TOOLLIST), $(MAKE) -C util/$(tool) clean ; )
$(MAKE) -C util/romcc clean
.PHONY: test-basic test-lint test-abuild test-payloads
.PHONY: test-tools test-cleanup test-help
.PHONY: lint lint-stable what-jenkins-does