@@ -158,60 +158,27 @@ for path in `find 'packages' \
158158 fi
159159done
160160
161- if [ -n " $PACKAGES_TO_TEST " ]; then
162- export -f run_package_test
163- export system_test_script PROJECT_ROOT KOKORO_GFILE_DIR
164-
165- # 1. DYNAMIC ROUTING: Automatically detect which packages are CPU hogs by checking if they install pytest-xdist or hardcode workers
166- LIGHT_TO_TEST=" "
167- HEAVY_TO_TEST=" "
168- for pkg in $PACKAGES_TO_TEST ; do
169- if grep -qE " pytest-xdist|-n=auto|-n=[0-9]+" " packages/$pkg /noxfile.py" " packages/$pkg /setup.py" 2> /dev/null; then
170- HEAVY_TO_TEST=" $HEAVY_TO_TEST $pkg "
171- else
172- LIGHT_TO_TEST=" $LIGHT_TO_TEST $pkg "
173- fi
174- done
175-
176- # 2. PARALLEL LANE (Live Streaming): Run light packages with a parallel job queue.
177- # We prefix every line with the package name so output streams LIVE and remains readable.
178- if [ -n " $LIGHT_TO_TEST " ]; then
179- echo " ============================================================"
180- echo " Running Lightweight Packages in Parallel (4 workers max)"
181- echo " ============================================================"
182- for pkg in $LIGHT_TO_TEST ; do
183- (
184- timeout 15m bash -c " run_package_test \" $pkg \" < /dev/null" 2>&1 | awk -v prefix=" [$pkg ]" ' {print prefix, $0}'
185- if [ ${PIPESTATUS[0]} -ne 0 ]; then touch " .failed_$pkg " ; fi
186- ) &
187- # Limit parallel background jobs to 4
188- while [ $( jobs -r | wc -l) -ge 4 ]; do sleep 1; done
189- done
190- wait # Wait for all parallel jobs to finish
191- fi
192-
193- # 3. SEQUENTIAL VIP LANE: Run heavy packages one-by-one so they have 100% of the VM resources.
194- if [ -n " $HEAVY_TO_TEST " ]; then
195- echo " ============================================================"
196- echo " Running CPU-Intensive Packages Sequentially"
197- echo " ============================================================"
198- for pkg in $HEAVY_TO_TEST ; do
199- if [ -n " $pkg " ]; then
200- echo " [$pkg ] Starting sequential execution..."
201- timeout 25m bash -c " run_package_test \" $pkg \" < /dev/null" 2>&1 | awk -v prefix=" [$pkg ]" ' {print prefix, $0}'
202- if [ ${PIPESTATUS[0]} -ne 0 ]; then touch " .failed_$pkg " ; fi
203- fi
204- done
205- fi
161+ if [ -z " $PACKAGE_NAME " ]; then
162+ echo " Error: PACKAGE_NAME environment variable is not set."
163+ echo " This script expects to be run in a Kokoro Matrix where PACKAGE_NAME is injected."
164+ exit 1
165+ fi
206166
207- # 4. FAIL STATE EVALUATION
208- for failed_marker in .failed_* ; do
209- if [ -f " $failed_marker " ]; then
210- failed_pkg=" ${failed_marker# .failed_} "
211- echo " --- FAILED: $failed_pkg ---"
212- RETVAL=1
213- fi
214- done
167+ if [[ " $PACKAGES_TO_TEST " =~ " $PACKAGE_NAME " ]]; then
168+ echo " ============================================================"
169+ echo " Package $PACKAGE_NAME was modified. Running system tests..."
170+ echo " ============================================================"
171+ export system_test_script PROJECT_ROOT KOKORO_GFILE_DIR
172+
173+ # Run the system test natively. It gets 100% of this VM's CPU.
174+ run_package_test " $PACKAGE_NAME "
175+ RETVAL=$?
176+ else
177+ echo " ============================================================"
178+ echo " Package $PACKAGE_NAME was not modified in this PR."
179+ echo " Fast-Failing: Exiting early to save Google compute quota."
180+ echo " ============================================================"
181+ exit 0
215182fi
216183
217184exit ${RETVAL}
0 commit comments