[Libreoffice-commits] online.git: Branch 'feature/parallel_cypress' - 7 commits - cypress_test/Makefile.am Makefile.am

Tamás Zolnai (via logerrit) logerrit at kemper.freedesktop.org
Tue Mar 3 09:27:13 UTC 2020


Rebased ref, commits from common ancestor:
commit a900009ebdc7755b399c60930bb44cdefa7ccbf3
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Mon Mar 2 17:15:38 2020 +0100
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Tue Mar 3 10:10:37 2020 +0100

    parallel-cypress: improve console output of parallel test run.
    
    Change-Id: I29440bafdba101c3f4e86de7d587330b972289de

diff --git a/cypress_test/Makefile.am b/cypress_test/Makefile.am
index 27845aeea..13a769f08 100644
--- a/cypress_test/Makefile.am
+++ b/cypress_test/Makefile.am
@@ -8,6 +8,7 @@ GET_PORT_BINARY = $(abs_builddir)/node_modules/get-port-cli/cli.js
 NPM_INSTALLED = $(abs_builddir)/workdir/npm_installed
 
 PID_FILE=$(abs_builddir)/workdir/loolwsd.pid
+ERROR_LOG=$(abs_builddir)/workdir/error.log
 
 DESKTOP_USER_AGENT = "cypress"
 DESKTOP_TEST_FOLDER = $(abs_srcdir)/integration_tests/desktop
@@ -57,18 +58,23 @@ MOBILE_TEST_FILES_DONE= \
 DESKTOP_TEST_FILES_DONE= \
 	$(foreach test_file,$(DEKSTOP_TEST_FILES),$(DESKTOP_TRACK_FOLDER)/$(test_file).done)
 
-check-local: $(DESKTOP_TEST_FILES_DONE) $(MOBILE_TEST_FILES_DONE)
+check-local: do-check
+	$(if $(wildcard $(ERROR_LOG)),$(error Cypress test failure!))
+
+do-check: $(DESKTOP_TEST_FILES_DONE) $(MOBILE_TEST_FILES_DONE)
 	@$(KILL_COMMAND) || true
 	$(if $(HEADLESS_BUILD), at pkill Xvfb,)
+	$(if $(wildcard $(ERROR_LOG)), at cat $(ERROR_LOG))
 
 $(PID_FILE): @JAILS_PATH@ $(NODE_BINS)
+	@rm -f $(ERROR_LOG)
 	$(call run_JS_error_check)
 	$(if $(HEADLESS_BUILD),$(call start_Xvfb),)
 	$(call start_loolwsd)
 
 $(MOBILE_TEST_FILES_DONE): $(PID_FILE)
 	$(if $(PARALLEL_BUILD),\
-		$(call run_mobile_tests,$(subst $(MOBILE_TRACK_FOLDER)/,,$(basename $@))),\
+		$(call run_mobile_tests,$(subst $(MOBILE_TRACK_FOLDER)/,,$(basename $@)),$(basename $@).log),\
 		$(call run_mobile_tests))
 	$(if $(PARALLEL_BUILD),\
 		@mkdir -p $(dir $@) && touch $@\
@@ -78,7 +84,7 @@ $(MOBILE_TEST_FILES_DONE): $(PID_FILE)
 
 $(DESKTOP_TEST_FILES_DONE): $(PID_FILE)
 	$(if $(PARALLEL_BUILD),\
-		$(call run_desktop_tests,$(subst $(DESKTOP_TRACK_FOLDER)/,,$(basename $@))),\
+		$(call run_desktop_tests,$(subst $(DESKTOP_TRACK_FOLDER)/,,$(basename $@)),$(basename $@).log),\
 		$(call run_desktop_tests))
 	$(if $(PARALLEL_BUILD),\
 		@mkdir -p $(dir $@) && touch $@\
@@ -162,8 +168,12 @@ define run_desktop_tests
 			--headless \
 			--env DATA_FOLDER=$(DESKTOP_DATA_FOLDER),WORKDIR=$(DESKTOP_WORKDIR),WSD_VERSION_HASH=$(LOOLWSD_VERSION_HASH),SERVER_PORT=$(FREE_PORT) \
 			$(if $(1), --spec=$(abs_dir)/integration_tests/desktop/$(1)) \
-			|| ($(KILL_COMMAND) && false))
-	$(if $(PARALLEL_BUILD), at echo "`echo $(RUN_COMMAND) && $(RUN_COMMAND)`",$(RUN_COMMAND))
+			$(if $(PARALLEL_BUILD),,|| ($(KILL_COMMAND) && false)))
+	$(if $(PARALLEL_BUILD),\
+		$(call execute_run_parallel,$(RUN_COMMAND),$(2))\
+	,\
+		$(RUN_COMMAND)\
+	)
 endef
 
 define run_mobile_tests
@@ -175,8 +185,21 @@ define run_mobile_tests
 			--headless \
 			--env DATA_FOLDER=$(MOBILE_DATA_FOLDER),WORKDIR=$(MOBILE_WORKDIR),WSD_VERSION_HASH=$(LOOLWSD_VERSION_HASH),SERVER_PORT=$(FREE_PORT) \
 			$(if $(1), --spec=$(abs_dir)/integration_tests/mobile/$(1)) \
-			|| ($(KILL_COMMAND) && false))
-	$(if $(PARALLEL_BUILD), at echo "`echo $(RUN_COMMAND) && $(RUN_COMMAND)`",$(RUN_COMMAND))
+			$(if $(PARALLEL_BUILD),,|| ($(KILL_COMMAND) && false)))
+	$(if $(PARALLEL_BUILD),\
+		$(call execute_run_parallel,$(RUN_COMMAND),$(2))\
+	,\
+		$(RUN_COMMAND)\
+	)
+endef
+
+define execute_run_parallel
+	@mkdir -p $(dir $(2)) && touch $(2) && \
+	echo "`echo $(1) && $(1)`" > $(2) 2>&1 && \
+	if [ `grep -o "CypressError" $(2)` ];\
+		then cat $(2) >> $(ERROR_LOG);\
+		else cat $(2);\
+	fi;
 endef
 
 NODE_BINS = \
commit 364568f6f98c3c9d3d1ef15a6f3b0f9b9c8f99bc
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Fri Feb 28 14:37:56 2020 +0100
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Tue Mar 3 10:09:43 2020 +0100

    parallel-cypress: restore original sequential build.
    
    Running all tests in one command will display a better output
    and also might be faster.
    
    Change-Id: Ib061fad28eeb1246c774bfb7fd958c3f5b9c317b

diff --git a/cypress_test/Makefile.am b/cypress_test/Makefile.am
index fe37e3c47..27845aeea 100644
--- a/cypress_test/Makefile.am
+++ b/cypress_test/Makefile.am
@@ -57,7 +57,7 @@ MOBILE_TEST_FILES_DONE= \
 DESKTOP_TEST_FILES_DONE= \
 	$(foreach test_file,$(DEKSTOP_TEST_FILES),$(DESKTOP_TRACK_FOLDER)/$(test_file).done)
 
-check-local: $(MOBILE_TEST_FILES_DONE) $(DESKTOP_TEST_FILES_DONE)
+check-local: $(DESKTOP_TEST_FILES_DONE) $(MOBILE_TEST_FILES_DONE)
 	@$(KILL_COMMAND) || true
 	$(if $(HEADLESS_BUILD), at pkill Xvfb,)
 
@@ -67,14 +67,24 @@ $(PID_FILE): @JAILS_PATH@ $(NODE_BINS)
 	$(call start_loolwsd)
 
 $(MOBILE_TEST_FILES_DONE): $(PID_FILE)
-	$(call run_mobile_tests,$(subst $(MOBILE_TRACK_FOLDER),,$(basename $@)))
-	@mkdir -p $(dir $@)
-	@touch $@
+	$(if $(PARALLEL_BUILD),\
+		$(call run_mobile_tests,$(subst $(MOBILE_TRACK_FOLDER)/,,$(basename $@))),\
+		$(call run_mobile_tests))
+	$(if $(PARALLEL_BUILD),\
+		@mkdir -p $(dir $@) && touch $@\
+		,\
+		@$(foreach done_file,$(MOBILE_TEST_FILES_DONE),mkdir -p $(dir $(done_file)) && touch $(done_file) &&) true\
+	)
 
 $(DESKTOP_TEST_FILES_DONE): $(PID_FILE)
-	$(call run_desktop_tests,$(subst $(DESKTOP_TRACK_FOLDER),,$(basename $@)))
-	@mkdir -p $(dir $@)
-	@touch $@
+	$(if $(PARALLEL_BUILD),\
+		$(call run_desktop_tests,$(subst $(DESKTOP_TRACK_FOLDER)/,,$(basename $@))),\
+		$(call run_desktop_tests))
+	$(if $(PARALLEL_BUILD),\
+		@mkdir -p $(dir $@) && touch $@\
+		,\
+		@$(foreach done_file,$(DESKTOP_TEST_FILES_DONE),mkdir -p $(dir $(done_file)) && touch $(done_file) &&) true\
+	)
 
 check-desktop: @JAILS_PATH@ $(NODE_BINS)
 	$(call run_JS_error_check)
commit def1d25c76229a105a751dfcc866264fa8b3784a
Author:     Yunusemre Şentürk <yunusemre at collabora.com>
AuthorDate: Fri Feb 28 19:17:08 2020 +0300
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Tue Mar 3 10:09:43 2020 +0100

    Wait until Xvfb says it is ready
    
    Change-Id: I3af4428802d6e0ee380536e8dbad1de8aa6d9337
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/89727
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>

diff --git a/cypress_test/Makefile.am b/cypress_test/Makefile.am
index 701fcf093..fe37e3c47 100644
--- a/cypress_test/Makefile.am
+++ b/cypress_test/Makefile.am
@@ -139,7 +139,7 @@ endef
 define start_Xvfb
 	@echo "Launching Xvfb..."
 	Xvfb :$(DISPLAY_NUMBER) &
-	sleep 10
+	while [ ! -f /tmp/.X$(DISPLAY_NUMBER)-lock ] ; do sleep 1; done
 	@echo
 endef
 
commit 8dce3fe418f39f4a7e74df4eb71577a1fb21700d
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Tue Feb 25 13:09:31 2020 +0100
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Tue Mar 3 10:08:54 2020 +0100

    parallel-cypress: Start own Xvfb in CI environment.
    
    It's not necessary when we build with one job, but when
    there are more jobs they try to start their own Xvfb
    and they might use the same DISPLAY number for that
    which leads to a failure or a freeze.
    See also:
    https://docs.cypress.io/guides/guides/continuous-integration.html#Xvfb
    
    Change-Id: I2fb301b1d8e889b2898d6792fb38cece303129a6

diff --git a/cypress_test/Makefile.am b/cypress_test/Makefile.am
index 22c1e0271..701fcf093 100644
--- a/cypress_test/Makefile.am
+++ b/cypress_test/Makefile.am
@@ -24,6 +24,9 @@ MOBILE_TRACK_FOLDER=$(abs_builddir)/workdir/track/mobile
 ALLOWED_PORTS = $(shell seq 9900 1 9980)
 KILL_COMMAND=pkill -F $(PID_FILE) || pkill --signal SIGKILL -F $(PID_FILE)
 PARALLEL_BUILD = $(findstring jobserver,$(MAKEFLAGS))
+DISPLAY_NUMBER = 100
+HEADLESS_BUILD := $(findstring Command failed,$(shell xhost > /dev/null 2>&1 || echo "Command failed, so we are in a headless environment."))
+export DISPLAY=$(if $(HEADLESS_BUILD),:$(DISPLAY_NUMBER),$(shell echo $$DISPLAY))
 
 if HAVE_LO_PATH
 MOBILE_TEST_FILES= \
@@ -56,9 +59,11 @@ DESKTOP_TEST_FILES_DONE= \
 
 check-local: $(MOBILE_TEST_FILES_DONE) $(DESKTOP_TEST_FILES_DONE)
 	@$(KILL_COMMAND) || true
+	$(if $(HEADLESS_BUILD), at pkill Xvfb,)
 
 $(PID_FILE): @JAILS_PATH@ $(NODE_BINS)
 	$(call run_JS_error_check)
+	$(if $(HEADLESS_BUILD),$(call start_Xvfb),)
 	$(call start_loolwsd)
 
 $(MOBILE_TEST_FILES_DONE): $(PID_FILE)
@@ -130,6 +135,14 @@ define start_loolwsd
 	@echo
 endef
 
+#https://docs.cypress.io/guides/guides/continuous-integration.html#Xvfb
+define start_Xvfb
+	@echo "Launching Xvfb..."
+	Xvfb :$(DISPLAY_NUMBER) &
+	sleep 10
+	@echo
+endef
+
 define run_desktop_tests
 	@echo $(if $(1),"Running cypress desktop test: $(1)","Running cypress desktop tests...")
 	@echo
commit 1998cbd9cb5521a3b7daba011937ca18da7064b4
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Tue Feb 25 12:56:42 2020 +0100
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Tue Mar 3 10:08:54 2020 +0100

    [DONT PUSH TO MASTER]: Don't run C++ unit tests.
    
    Change-Id: I7a8a10187e63668f04c9af18fa6352fbbe958251

diff --git a/Makefile.am b/Makefile.am
index bf5725b92..60654c841 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,7 +14,7 @@ endif
 
 else
 
-SUBDIRS = . test loleaflet cypress_test
+SUBDIRS = . loleaflet cypress_test
 
 export ENABLE_DEBUG
 
commit c2ad3b2f389fcac85010029ca0982e48438aeb6b
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Sat Feb 22 11:48:33 2020 +0100
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Tue Mar 3 10:08:54 2020 +0100

    parallel-cypress: during parallel build don't write out execution line-by-line
    
    Because in this case, the output of the different threads will be
    mixed in the command line.
    For sequential build keep the original behavior.
    
    Change-Id: Ibf9bf7c6111f8b5b0cf188fab66b97dedd613c65

diff --git a/cypress_test/Makefile.am b/cypress_test/Makefile.am
index 0984e5248..22c1e0271 100644
--- a/cypress_test/Makefile.am
+++ b/cypress_test/Makefile.am
@@ -23,6 +23,7 @@ MOBILE_TRACK_FOLDER=$(abs_builddir)/workdir/track/mobile
 
 ALLOWED_PORTS = $(shell seq 9900 1 9980)
 KILL_COMMAND=pkill -F $(PID_FILE) || pkill --signal SIGKILL -F $(PID_FILE)
+PARALLEL_BUILD = $(findstring jobserver,$(MAKEFLAGS))
 
 if HAVE_LO_PATH
 MOBILE_TEST_FILES= \
@@ -130,27 +131,29 @@ define start_loolwsd
 endef
 
 define run_desktop_tests
+	@echo $(if $(1),"Running cypress desktop test: $(1)","Running cypress desktop tests...")
 	@echo
-	@echo "Running cypress desktop tests..."
-	@echo
-	$(CYPRESS_BINARY) run --browser $(CHROME) \
+	$(eval RUN_COMMAND = \
+		$(CYPRESS_BINARY) run --browser $(CHROME) \
 			--config integrationFolder=$(DESKTOP_TEST_FOLDER),userAgent=$(DESKTOP_USER_AGENT) \
 			--headless \
 			--env DATA_FOLDER=$(DESKTOP_DATA_FOLDER),WORKDIR=$(DESKTOP_WORKDIR),WSD_VERSION_HASH=$(LOOLWSD_VERSION_HASH),SERVER_PORT=$(FREE_PORT) \
 			$(if $(1), --spec=$(abs_dir)/integration_tests/desktop/$(1)) \
-			|| ($(KILL_COMMAND) && false)
+			|| ($(KILL_COMMAND) && false))
+	$(if $(PARALLEL_BUILD), at echo "`echo $(RUN_COMMAND) && $(RUN_COMMAND)`",$(RUN_COMMAND))
 endef
 
 define run_mobile_tests
+	@echo $(if $(1),"Running cypress mobile test: $(1)","Running cypress mobile tests...")
 	@echo
-	@echo "Running cypress mobile tests..."
-	@echo
-	$(CYPRESS_BINARY) run --browser $(CHROME) \
+	$(eval RUN_COMMAND = \
+		$(CYPRESS_BINARY) run --browser $(CHROME) \
 			--config integrationFolder=$(MOBILE_TEST_FOLDER),userAgent=$(MOBILE_USER_AGENT) \
 			--headless \
 			--env DATA_FOLDER=$(MOBILE_DATA_FOLDER),WORKDIR=$(MOBILE_WORKDIR),WSD_VERSION_HASH=$(LOOLWSD_VERSION_HASH),SERVER_PORT=$(FREE_PORT) \
 			$(if $(1), --spec=$(abs_dir)/integration_tests/mobile/$(1)) \
-			|| ($(KILL_COMMAND) && false)
+			|| ($(KILL_COMMAND) && false))
+	$(if $(PARALLEL_BUILD), at echo "`echo $(RUN_COMMAND) && $(RUN_COMMAND)`",$(RUN_COMMAND))
 endef
 
 NODE_BINS = \
commit 49e48677f192d4f97860f993af31e9e4a873f3b3
Author:     Tamás Zolnai <tamas.zolnai at collabora.com>
AuthorDate: Thu Feb 20 22:01:27 2020 +0100
Commit:     Tamás Zolnai <tamas.zolnai at collabora.com>
CommitDate: Tue Mar 3 10:08:47 2020 +0100

    parallel-cypress: initial parallelization
    
    - Run all spec files separately so we can run them
    parallel.
    - Use separate test files for all spec files.
    - Disable two tests which are failing while running in parallel.
    
    Change-Id: I521feeac6e1ac4c3d2c87e989c11d4231945e569

diff --git a/cypress_test/Makefile.am b/cypress_test/Makefile.am
index e05ddbb82..0984e5248 100644
--- a/cypress_test/Makefile.am
+++ b/cypress_test/Makefile.am
@@ -13,24 +13,62 @@ DESKTOP_USER_AGENT = "cypress"
 DESKTOP_TEST_FOLDER = $(abs_srcdir)/integration_tests/desktop
 DESKTOP_DATA_FOLDER = $(abs_srcdir)/data/desktop/
 DESKTOP_WORKDIR = $(abs_builddir)/workdir/desktop/
+DESKTOP_TRACK_FOLDER=$(abs_builddir)/workdir/track/desktop
 
 MOBILE_USER_AGENT = "cypress mobile"
 MOBILE_TEST_FOLDER = $(abs_srcdir)/integration_tests/mobile
 MOBILE_DATA_FOLDER = $(abs_srcdir)/data/mobile/
 MOBILE_WORKDIR = $(abs_builddir)/workdir/mobile/
+MOBILE_TRACK_FOLDER=$(abs_builddir)/workdir/track/mobile
 
 ALLOWED_PORTS = $(shell seq 9900 1 9980)
-FREE_PORT=$(shell $(GET_PORT_BINARY) --host=127.0.0.1 $(ALLOWED_PORTS))
-
 KILL_COMMAND=pkill -F $(PID_FILE) || pkill --signal SIGKILL -F $(PID_FILE)
 
 if HAVE_LO_PATH
-check-local: @JAILS_PATH@ $(NODE_BINS)
+MOBILE_TEST_FILES= \
+	calc/calc_focus_spec.js \
+	impress/impress_focus_spec.js \
+	writer/apply_font_spec.js \
+	writer/apply_paragraph_properties_spec.js \
+	writer/bottom_toolbar_spec.js \
+	writer/focus_spec.js \
+	writer/insert_field_spec.js \
+	writer/insert_formatting_mark_spec.js \
+	writer/insert_object_spec.js \
+	writer/mobile_wizard_state_spec.js \
+	writer/shape_properties_spec.js \
+	writer/spellchecking_spec.js \
+	writer/styles_spec.js \
+	writer/table_properties_spec.js \
+	writer/toolbar_spec.js
+
+DEKSTOP_TEST_FILES= \
+	copy_paste_spec.js \
+	example_desktop_test_spec.js \
+	shape_operations_spec.js
+
+MOBILE_TEST_FILES_DONE= \
+	$(foreach test_file,$(MOBILE_TEST_FILES),$(MOBILE_TRACK_FOLDER)/$(test_file).done)
+
+DESKTOP_TEST_FILES_DONE= \
+	$(foreach test_file,$(DEKSTOP_TEST_FILES),$(DESKTOP_TRACK_FOLDER)/$(test_file).done)
+
+check-local: $(MOBILE_TEST_FILES_DONE) $(DESKTOP_TEST_FILES_DONE)
+	@$(KILL_COMMAND) || true
+
+$(PID_FILE): @JAILS_PATH@ $(NODE_BINS)
 	$(call run_JS_error_check)
 	$(call start_loolwsd)
-	$(call run_desktop_tests)
-	$(call run_mobile_tests)
-	@$(KILL_COMMAND) || true
+
+$(MOBILE_TEST_FILES_DONE): $(PID_FILE)
+	$(call run_mobile_tests,$(subst $(MOBILE_TRACK_FOLDER),,$(basename $@)))
+	@mkdir -p $(dir $@)
+	@touch $@
+
+$(DESKTOP_TEST_FILES_DONE): $(PID_FILE)
+	$(call run_desktop_tests,$(subst $(DESKTOP_TRACK_FOLDER),,$(basename $@)))
+	@mkdir -p $(dir $@)
+	@touch $@
 
 check-desktop: @JAILS_PATH@ $(NODE_BINS)
 	$(call run_JS_error_check)
@@ -73,6 +111,7 @@ define run_JS_error_check
 endef
 
 define start_loolwsd
+	$(eval FREE_PORT:=$(shell $(GET_PORT_BINARY) --host=127.0.0.1 $(ALLOWED_PORTS)))
 	@echo "Found available port for testing: $(FREE_PORT)"
 	@echo
 	@echo "Launching loolwsd..."
@@ -82,9 +121,10 @@ define start_loolwsd
 			--o:child_root_path="@JAILS_PATH@" --o:storage.filesystem[@allow]=true \
 			--disable-ssl \
 			--o:admin_console.username=admin --o:admin_console.password=admin \
-			--o:logging.file[@enable]=true --o:logging.level=trace > /dev/null 2>&1 \
+			--o:logging.file[@enable]=true --o:logging.level=trace \
 			--port=$(FREE_PORT) \
-			--pidfile=$(PID_FILE) &
+			--pidfile=$(PID_FILE) \
+			 > /dev/null 2>&1 &
 	@$(WAIT_ON_BINARY) http://localhost:$(FREE_PORT) --timeout 60000
 	@echo
 endef


More information about the Libreoffice-commits mailing list