Просмотр исходного кода

Merge pull request #4336 from overleaf/jpa-parallel-outer

[perf] run multiple module test suites in parallel

GitOrigin-RevId: 5ae528d216d6ecbcb71f6c749548d989b8c023df
Jakob Ackermann 5 лет назад
Родитель
Сommit
51aa9eade4
1 измененных файлов с 47 добавлено и 0 удалено
  1. 47 0
      services/web/Makefile

+ 47 - 0
services/web/Makefile

@@ -249,6 +249,31 @@ test_acceptance_modules_merged_inner:
 		node test/acceptance/getModuleTargets test_acceptance_merged_inner \
 	)
 
+# inner loop for running saas tests in parallel
+no_more_targets:
+
+# If we ever have more than 40 modules, we need to add _5 targets to all the places and have it START at 41.
+test_acceptance_modules_merged_inner_1: export START=1
+test_acceptance_modules_merged_inner_2: export START=11
+test_acceptance_modules_merged_inner_3: export START=21
+test_acceptance_modules_merged_inner_4: export START=31
+TEST_ACCEPTANCE_MODULES_MERGED_INNER_SPLIT = \
+	test_acceptance_modules_merged_inner_1 \
+	test_acceptance_modules_merged_inner_2 \
+	test_acceptance_modules_merged_inner_3 \
+	test_acceptance_modules_merged_inner_4 \
+
+# The node script prints one module per line.
+# Using tail and head we skip over the first n=START entries and print the last 10.
+# Finally we check with grep for any targets in a batch and print a fallback if none were found.
+$(TEST_ACCEPTANCE_MODULES_MERGED_INNER_SPLIT):
+	$(MAKE) $(shell \
+		SHARELATEX_CONFIG=$(BASE_CONFIG) \
+		node test/acceptance/getModuleTargets test_acceptance_merged_inner \
+		| tail -n+$(START) | head -n 10 \
+		| grep -e . || echo no_more_targets \
+	)
+
 # See docs for test_acceptance_server_ce how this works.
 test_acceptance_modules_merged_saas: export COMPOSE_PROJECT_NAME = \
 	acceptance_test_modules_merged_saas_$(BUILD_DIR_NAME)
@@ -274,6 +299,28 @@ $(TEST_ACCEPTANCE_MODULES_MERGED_VARIANTS):
 	$(DOCKER_COMPOSE) run --rm test_acceptance make test_acceptance_modules_merged_inner
 	$(DOCKER_COMPOSE) down -v -t 0
 
+# outer loop for running saas tests in parallel
+TEST_ACCEPTANCE_MODULES_MERGED_SPLIT_SAAS = \
+	test_acceptance_modules_merged_saas_1 \
+	test_acceptance_modules_merged_saas_2 \
+	test_acceptance_modules_merged_saas_3 \
+	test_acceptance_modules_merged_saas_4 \
+
+test_acceptance_modules_merged_saas_1: export COMPOSE_PROJECT_NAME = \
+	acceptance_test_modules_merged_saas_1_$(BUILD_DIR_NAME)
+test_acceptance_modules_merged_saas_2: export COMPOSE_PROJECT_NAME = \
+	acceptance_test_modules_merged_saas_2_$(BUILD_DIR_NAME)
+test_acceptance_modules_merged_saas_3: export COMPOSE_PROJECT_NAME = \
+	acceptance_test_modules_merged_saas_3_$(BUILD_DIR_NAME)
+test_acceptance_modules_merged_saas_4: export COMPOSE_PROJECT_NAME = \
+	acceptance_test_modules_merged_saas_4_$(BUILD_DIR_NAME)
+$(TEST_ACCEPTANCE_MODULES_MERGED_SPLIT_SAAS): export BASE_CONFIG = $(CFG_SAAS)
+
+$(TEST_ACCEPTANCE_MODULES_MERGED_SPLIT_SAAS): test_acceptance_modules_merged_saas_%:
+	$(DOCKER_COMPOSE) down -v -t 0
+	$(DOCKER_COMPOSE) run --rm test_acceptance make test_acceptance_modules_merged_inner_$*
+	$(DOCKER_COMPOSE) down -v -t 0
+
 test_acceptance_modules: $(TEST_ACCEPTANCE_MODULES_MERGED_VARIANTS)
 
 #