|
@@ -67,24 +67,29 @@ SHARDS ?= 4
|
|
|
|
|
|
|
|
define run_parallel
|
|
define run_parallel
|
|
|
@echo "Running $(1) with $(SHARDS) shards in parallel..."
|
|
@echo "Running $(1) with $(SHARDS) shards in parallel..."
|
|
|
- @fail=0; \
|
|
|
|
|
|
|
+ @fail=0; pids=""; \
|
|
|
for i in $$(seq 0 $$(($(SHARDS) - 1))); do \
|
|
for i in $$(seq 0 $$(($(SHARDS) - 1))); do \
|
|
|
GTEST_TOTAL_SHARDS=$(SHARDS) GTEST_SHARD_INDEX=$$i \
|
|
GTEST_TOTAL_SHARDS=$(SHARDS) GTEST_SHARD_INDEX=$$i \
|
|
|
LSAN_OPTIONS=suppressions=lsan_suppressions.txt \
|
|
LSAN_OPTIONS=suppressions=lsan_suppressions.txt \
|
|
|
$(SETARCH) ./$(1) --gtest_color=yes > $(1)_shard_$$i.log 2>&1 & \
|
|
$(SETARCH) ./$(1) --gtest_color=yes > $(1)_shard_$$i.log 2>&1 & \
|
|
|
|
|
+ pids="$$pids $$!"; \
|
|
|
|
|
+ done; \
|
|
|
|
|
+ rc=0; \
|
|
|
|
|
+ for pid in $$pids; do \
|
|
|
|
|
+ if ! wait $$pid; then rc=1; fi; \
|
|
|
done; \
|
|
done; \
|
|
|
- wait; \
|
|
|
|
|
for i in $$(seq 0 $$(($(SHARDS) - 1))); do \
|
|
for i in $$(seq 0 $$(($(SHARDS) - 1))); do \
|
|
|
- if ! grep -q "\[ PASSED \]" $(1)_shard_$$i.log; then \
|
|
|
|
|
|
|
+ log=$(1)_shard_$$i.log; \
|
|
|
|
|
+ if grep -q "\[ PASSED \]" $$log && ! grep -q "\[ FAILED \]" $$log; then \
|
|
|
|
|
+ passed=$$(grep "\[ PASSED \]" $$log); \
|
|
|
|
|
+ echo "Shard $$i: $$passed"; \
|
|
|
|
|
+ else \
|
|
|
echo "=== Shard $$i FAILED ==="; \
|
|
echo "=== Shard $$i FAILED ==="; \
|
|
|
- cat $(1)_shard_$$i.log; \
|
|
|
|
|
|
|
+ cat $$log; \
|
|
|
fail=1; \
|
|
fail=1; \
|
|
|
- else \
|
|
|
|
|
- passed=$$(grep "\[ PASSED \]" $(1)_shard_$$i.log); \
|
|
|
|
|
- echo "Shard $$i: $$passed"; \
|
|
|
|
|
fi; \
|
|
fi; \
|
|
|
done; \
|
|
done; \
|
|
|
- if [ $$fail -ne 0 ]; then exit 1; fi; \
|
|
|
|
|
|
|
+ if [ $$fail -ne 0 ] || [ $$rc -ne 0 ]; then exit 1; fi; \
|
|
|
echo "All shards passed."
|
|
echo "All shards passed."
|
|
|
endef
|
|
endef
|
|
|
|
|
|