Skip to content

Commit

Permalink
test: build concurrencies, hashes
Browse files Browse the repository at this point in the history
  • Loading branch information
erikburt committed Nov 14, 2024
1 parent 5a602f6 commit 54aaab9
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 47 deletions.
61 changes: 20 additions & 41 deletions .github/workflows/cache-test-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,45 +7,17 @@ on:

jobs:

build-test-binaries:
runs-on: ubuntu22.04-32cores-128GB
env:
# We explicitly have this env var not be "CL_DATABASE_URL" to avoid having it be used by core related tests
# when they should not be using it, while still allowing us to DRY up the setup
DB_URL: postgresql://postgres:postgres@localhost:5432/chainlink_test?sslmode=disable
steps:
- name: Checkout the repo
uses: actions/[email protected]

- name: Change Modtime of Files (cache optimization)
shell: bash
run: |
find . -type f,d -exec touch -r {} -d '1970-01-01T00:00:01' {} \; || true
- name: Setup Go
uses: ./.github/actions/setup-go
with:
restore-build-cache-only: true
# piggy back on go_core_tests for caching
build-cache-version: 'go_core_tests'

- name: Build Test Binaries
shell: bash
env:
OUTPUT_FILE: ./output.txt
USE_TEE: false
CL_DATABASE_URL: ${{ env.DB_URL }}
run: |
./tools/bin/build-test-binaries
- name: Debug testsout
shell: bash
run: |
ls -lah ./testsout
du -ch ./testsout
build-test-binaries-concurrent:
runs-on: ubuntu22.04-32cores-128GB

Check failure on line 11 in .github/workflows/cache-test-binaries.yml

View workflow job for this annotation

GitHub Actions / Validate Workflow Changes

1. This Ubuntu runner is 8-16 more expensive than a base Ubuntu runner. Consider using a smaller Ubuntu runner. (runner-ubuntu / error)
strategy:
fail-fast: false
matrix:
type:
- concurrency: 4
- concurrency: 8
- concurrency: 16
- concurrency: 32
name: Build Test Binaries (${{ matrix.type.concurrency }})
env:
# We explicitly have this env var not be "CL_DATABASE_URL" to avoid having it be used by core related tests
# when they should not be using it, while still allowing us to DRY up the setup
Expand All @@ -69,14 +41,21 @@ jobs:
- name: Build Test Binaries
shell: bash
env:
OUTPUT_FILE: ./output.txt
USE_TEE: false
CL_DATABASE_URL: ${{ env.DB_URL }}
BUILD_CONCURRENCY: ${{ matrix.type.concurrency }}
run: |
./tools/bin/build-test-binaries-with-concurrency
- name: Debug testsout
shell: bash
run: |
ls -lah ./testsout
du -ch ./testsout
# ls -lah ./testsout
# du -ch ./testsout
# Hash each file in the output directory and print the filename and hash
echo "Hashing compiled test binaries:"
for file in testsout/*; do
if [[ -f "$file" ]]; then
hash=$(sha256sum "$file" | awk '{ print $1 }')
echo "File: $file, SHA256 Hash: $hash"
fi
done
9 changes: 3 additions & 6 deletions tools/bin/build-test-binaries-with-concurrency
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@
# Directory to store compiled test binaries
mkdir -p testsout

TOOLS_PATH=${TOOLS_PATH:-"./tools"}
GO_LDFLAGS=$(bash ${TOOLS_PATH}/bin/ldflags)

# Find all packages with tests recursively
testable_packages=$(go list ./... | grep -vE '/vendor|/testsout')

# Set the concurrency limits
build_concurrency=4
BUILD_CONCURRENCY=${BUILD_CONCURRENCY:-"4"}
# run_concurrency=4
build_jobs=0
# run_jobs=0
Expand All @@ -21,13 +18,13 @@ for pkg in $testable_packages; do

# Compile test binary in the background
echo "Compiling test for package $pkg"
go test -c -o "$output_file" -ldflags "$GO_LDFLAGS" -tags integration -vet=off "$pkg" &
go test -c -o "$output_file" -vet=off "$pkg" &

# Increment the build job count
build_jobs=$((build_jobs + 1))

# If we've reached the build concurrency limit, wait for any job to finish
if [[ $build_jobs -ge $build_concurrency ]]; then
if [[ $build_jobs -ge $BUILD_CONCURRENCY ]]; then
wait -n
build_jobs=$((build_jobs - 1))
fi
Expand Down

0 comments on commit 54aaab9

Please sign in to comment.