-
Notifications
You must be signed in to change notification settings - Fork 42
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2078 from skalenetwork/feature/2031-run-all-tests…
…-nightly #2031 run all tests nightly for open prs
- Loading branch information
Showing
3 changed files
with
345 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
name: Run nightly tests | ||
|
||
on: | ||
schedule: | ||
- cron: '0 0 * * *' | ||
|
||
workflow_dispatch: | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
jobs: | ||
identify-prs: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
pr-data: ${{ steps.get-prs.outputs.pr-data }} | ||
steps: | ||
- name: Identify Open Non-Draft PRs with Recent Commits | ||
id: get-prs | ||
uses: actions/github-script@v6 | ||
with: | ||
script: | | ||
const oneDayAgo = new Date(); | ||
oneDayAgo.setDate(oneDayAgo.getDate() - 1); | ||
const prs = await github.rest.pulls.list({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
state: 'open', | ||
}); | ||
const filteredPRs = []; | ||
for (const pr of prs.data) { | ||
if (pr.draft) continue; | ||
const commits = await github.rest.pulls.listCommits({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
pull_number: pr.number, | ||
}); | ||
const recentCommits = commits.data.filter(commit => { | ||
const commitDate = new Date(commit.commit.author.date); | ||
return commitDate >= oneDayAgo; | ||
}); | ||
if (recentCommits.length > 0) { | ||
filteredPRs.push({ branch: pr.head.ref, sha: pr.head.sha, number: pr.number }); | ||
} | ||
} | ||
console.log("Filtered PRs:", filteredPRs); | ||
core.setOutput('pr-data', JSON.stringify(filteredPRs)); | ||
run-all-tests: | ||
needs: [identify-prs] | ||
if: ${{ needs.identify-prs.outputs.pr-data != '[]' && needs.identify-prs.outputs.pr-data != '' }} | ||
strategy: | ||
matrix: | ||
pr: ${{fromJson(needs.identify-prs.outputs.pr-data)}} | ||
uses: ./.github/workflows/test-all.yml | ||
with: | ||
branch_name: ${{ matrix.pr.branch }} | ||
sha: ${{ matrix.pr.sha }} | ||
secrets: | ||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | ||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,277 @@ | ||
name: Build skaled and run all tests | ||
on: | ||
workflow_call: | ||
inputs: | ||
branch_name: | ||
type: string | ||
description: 'Branch name' | ||
required: true | ||
sha: | ||
type: string | ||
description: 'SHA' | ||
required: true | ||
secrets: | ||
DOCKER_USERNAME: | ||
required: true | ||
DOCKER_PASSWORD: | ||
required: true | ||
defaults: | ||
run: | ||
shell: bash | ||
jobs: | ||
testAll: | ||
runs-on: self-hosted | ||
env: | ||
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | ||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | ||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | ||
NO_ULIMIT_CHECK: 1 | ||
ccache_compress: 'true' | ||
ccache_compresslevel: 9 | ||
steps: | ||
- name: Extract repo name | ||
run: echo ::set-env name=REPOSITORY_NAME::$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}') | ||
shell: bash | ||
env: | ||
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | ||
- name: checkout | ||
uses: actions/checkout@v2 | ||
with: | ||
ref: ${{ inputs.branch_name }} | ||
- name: Cache apt packages | ||
uses: actions/cache@v2 | ||
with: | ||
path: | | ||
/var/cache/apt/archives | ||
key: ${{ runner.os }}-apt-cache | ||
ttl: 1000000 # purge cache every 1000000 seconds (10 days). This is to pull updated packages | ||
- name: update apt | ||
run: | | ||
sudo add-apt-repository ppa:ubuntu-toolchain-r/test || true | ||
sudo apt-get update || true | ||
- name: install packages | ||
run: | | ||
sudo apt-get -y remove libzmq* || true | ||
sudo apt-get -y install software-properties-common gcc-11 g++-11 || true | ||
- name: Use g++-11 and gcov-11 by default | ||
run: | | ||
echo "Updating all needed alternatives" | ||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11 | ||
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11 | ||
sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-11 11 | ||
sudo update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-11 11 | ||
sudo update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-11 11 | ||
echo "Checking alternative for gcc" | ||
which gcc | ||
gcc --version | ||
echo "Checking alternative for g++" | ||
which g++ | ||
g++ --version | ||
echo "Checking alternative for gcov" | ||
which gcov | ||
gcov --version | ||
echo "Checking alternative for gcov-dump" | ||
which gcov-dump | ||
gcov-dump --version | ||
echo "Checking alternative for gcov-tool" | ||
which gcov-tool | ||
gcov-tool --version | ||
- name: Get newest lcov | ||
run: | | ||
# sudo apt-get install libcapture-tiny-perl | ||
echo "Removing previous lcov version..." | ||
sudo apt-get remove lcov || true | ||
echo "Installing newest lcov version..." | ||
rm -rf newer_lcov || true | ||
mkdir newer_lcov | ||
cd newer_lcov | ||
git clone https://github.com/linux-test-project/lcov --recursive --recurse-submodules | ||
cd lcov | ||
git checkout 92e2121 | ||
sudo make install | ||
cd .. | ||
cd .. | ||
echo "Checking installed lcov version..." | ||
which lcov | ||
lcov --version | ||
- name: Submodule update | ||
run: | | ||
rm -rf ./libconsensus || true | ||
ls -1 | ||
git submodule update --init --recursive | ||
- name: Prepare ccache timestamp | ||
id: ccache_cache_timestamp | ||
shell: cmake -P {0} | ||
run: | | ||
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) | ||
message("::set-output name=timestamp::${current_date}") | ||
- name: Ccache cache files | ||
uses: actions/[email protected] | ||
with: | ||
path: .ccache | ||
key: ${ { matrix.config.name } }-ccache-${ { steps.ccache_cache_timestamp.outputs.timestamp } } | ||
restore-keys: | | ||
${ { matrix.config.name } }-ccache- | ||
- name: Update gcc-11 | ||
run: | | ||
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11 | ||
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11 | ||
- name: Configure ccache cache size, zero ccache counters and print ccache stats before start | ||
run: | | ||
ccache --max-size=15G | ||
ccache -z | ||
ccache --show-stats | ||
- name: Build dependencies | ||
run: | | ||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
export CC=gcc-11 | ||
export CXX=g++-11 | ||
export TARGET=all | ||
export CMAKE_BUILD_TYPE=Debug | ||
cd deps | ||
#######################################./clean.sh | ||
rm -f ./libwebsockets-from-git.tar.gz | ||
./build.sh DEBUG=1 PARALLEL_COUNT=$(nproc) | ||
cd .. | ||
- name: Configure all | ||
run: | | ||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
export CC=gcc-11 | ||
export CXX=g++-11 | ||
export TARGET=all | ||
export CMAKE_BUILD_TYPE=Debug | ||
mkdir -p build | ||
cd build | ||
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE .. | ||
cd .. | ||
- name: Print ccache stats for deps | ||
run: | | ||
ccache --show-stats | ||
- name: Build all | ||
run: | | ||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
export CC=gcc-11 | ||
export CXX=g++-11 | ||
export TARGET=all | ||
export CMAKE_BUILD_TYPE=Debug | ||
cd build | ||
make testeth -j$(nproc) | ||
cd .. | ||
- name: Print ccache stats after full build | ||
run : | | ||
ccache --show-stats | ||
- name: Testeth all verbosity 4 | ||
id: TestCore | ||
run : | | ||
cd build/test | ||
export NO_NTP_CHECK=1 | ||
export NO_ULIMIT_CHECK=1 | ||
function run_test() { ./testeth --report_level=detailed -t "$1" -- --all --verbosity 4; } | ||
run_test boostTests | ||
run_test CommonJSTests | ||
run_test FixedHashTests | ||
run_test RangeMaskTest | ||
run_test Crypto | ||
run_test LibSnark | ||
run_test commonjs | ||
run_test KeyManagerTests | ||
run_test TransitionTests | ||
run_test TransactionTests | ||
run_test VMTests | ||
run_test LevelDBTests | ||
run_test CoreLibTests | ||
run_test RlpTests | ||
run_test SharedSpaceTests | ||
run_test EthashTests | ||
run_test SealEngineTests | ||
run_test DifficultyTests | ||
run_test BlockSuite | ||
run_test BlockChainMainNetworkSuite | ||
run_test BlockChainFrontierSuite | ||
run_test BlockQueueSuite | ||
run_test ClientBase | ||
run_test EstimateGas | ||
run_test getHistoricNodesData | ||
run_test ExtVmSuite | ||
run_test GasPricer | ||
run_test BasicTests | ||
run_test InstanceMonitorSuite | ||
run_test PrecompiledTests | ||
run_test SkaleHostSuite | ||
run_test StateUnitTests | ||
run_test libethereum | ||
run_test TransactionQueueSuite | ||
run_test LegacyVMSuite | ||
run_test SkaleInterpreterSuite | ||
run_test SnapshotSigningTestSuite | ||
run_test SkUtils | ||
run_test BCGeneralStateTests | ||
run_test BlockChainTests | ||
run_test BlockChainTestSuite | ||
run_test GeneralStateTests | ||
run_test TestHelperSuite | ||
run_test LevelDBHashBase | ||
run_test memDB | ||
run_test OverlayDBTests | ||
run_test AccountHolderTest | ||
run_test ClientTests | ||
run_test JsonRpcSuite | ||
run_test SingleConsensusTests | ||
run_test ConsensusTests | ||
sudo NO_ULIMIT_CHECK=1 NO_NTP_CHECK=1 ./testeth -t BtrfsTestSuite -- --all --verbosity 4 | ||
sudo NO_ULIMIT_CHECK=1 NO_NTP_CHECK=1 ./testeth -t HashSnapshotTestSuite -- --all --verbosity 4 | ||
sudo NO_ULIMIT_CHECK=1 NO_NTP_CHECK=1 ./testeth -t ClientSnapshotsSuite -- --all --verbosity 4 | ||
cd .. | ||
continue-on-error: true | ||
|
||
- name: Configure all as historic | ||
run: | | ||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
export CC=gcc-11 | ||
export CXX=g++-11 | ||
export TARGET=all | ||
export CMAKE_BUILD_TYPE=Debug | ||
mkdir -p build_historic | ||
cd build_historic | ||
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DHISTORIC_STATE=1 .. | ||
cd .. | ||
- name: Build all historic | ||
run: | | ||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | ||
export CC=gcc-11 | ||
export CXX=g++-11 | ||
export TARGET=all | ||
export CMAKE_BUILD_TYPE=Debug | ||
cd build_historic | ||
make testeth -j$(nproc) | ||
cd .. | ||
- name: Print ccache stats after full historic build | ||
run : | | ||
ccache --show-stats | ||
- name: Testeth historic | ||
id: TestHistoric | ||
run : | | ||
cd build_historic/test | ||
export NO_NTP_CHECK=1 | ||
export NO_ULIMIT_CHECK=1 | ||
./testeth -t JsonRpcSuite -- --all --verbosity 4 | ||
continue-on-error: true | ||
- name: Update PR Status | ||
uses: actions/github-script@v6 | ||
with: | ||
script: | | ||
const state = '${{ steps.testCore.outcome }}' === 'success' ? ('${{ steps.testHistoric.outcome }}' === 'success' ? 'success' : 'failure') : 'failure'; | ||
await github.rest.repos.createCommitStatus({ | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
sha: '${{ inputs.sha }}', | ||
state, | ||
context: 'Nightly tests', | ||
description: state === 'success' ? 'Nightly tests passed' : 'Nightly tests failed', | ||
target_url: `https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}` | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters