Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split unit test and unit race into 2 components #15734

Merged
merged 5 commits into from
Apr 18, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/unit_race.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ env:
jobs:

build:
name: Unit Test (Race)
name: Unit Test (Non_Evalengine_Race)
GuptaManan100 marked this conversation as resolved.
Show resolved Hide resolved
runs-on: gh-hosted-runners-16cores-1
steps:
- name: Skip CI
Expand Down Expand Up @@ -130,6 +130,7 @@ jobs:
# which musn't be more than 107 characters long.
export VTDATAROOT="/tmp/"
export NOVTADMINBUILD=1
export VT_EVALENGINE_TEST="-1"

eatmydata -- make unit_test_race | tee -a output.txt | go-junit-report -set-exit-code > report.xml

Expand Down
146 changes: 146 additions & 0 deletions .github/workflows/unit_race_evalengine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
name: unit_race_evalengine
on: [push, pull_request]
concurrency:
group: format('{0}-{1}', ${{ github.ref }}, 'unit_race_evalengine')
cancel-in-progress: true

permissions: read-all

env:
LAUNCHABLE_ORGANIZATION: "vitess"
LAUNCHABLE_WORKSPACE: "vitess-app"
GITHUB_PR_HEAD_SHA: "${{ github.event.pull_request.head.sha }}"

jobs:

build:
name: Unit Test (Evalengine_Race)
runs-on: gh-hosted-runners-16cores-1
steps:
- name: Skip CI
run: |
if [[ "${{contains( github.event.pull_request.labels.*.name, 'Skip CI')}}" == "true" ]]; then
echo "skipping CI due to the 'Skip CI' label"
exit 1
fi

- name: Check if workflow needs to be skipped
id: skip-workflow
run: |
skip='false'
if [[ "${{github.event.pull_request}}" == "" ]] && [[ "${{github.ref}}" != "refs/heads/main" ]] && [[ ! "${{github.ref}}" =~ ^refs/heads/release-[0-9]+\.[0-9]$ ]] && [[ ! "${{github.ref}}" =~ "refs/tags/.*" ]]; then
skip='true'
fi
echo Skip ${skip}
echo "skip-workflow=${skip}" >> $GITHUB_OUTPUT

PR_DATA=$(curl \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}")
draft=$(echo "$PR_DATA" | jq .draft -r)
echo "is_draft=${draft}" >> $GITHUB_OUTPUT

- name: Check out code
if: steps.skip-workflow.outputs.skip-workflow == 'false'
uses: actions/checkout@v4

- name: Check for changes in relevant files
if: steps.skip-workflow.outputs.skip-workflow == 'false'
uses: dorny/paths-filter@v3.0.1
id: changes
with:
token: ''
filters: |
unit_tests:
- 'go/**'
- 'test.go'
- 'Makefile'
- 'build.env'
- 'go.sum'
- 'go.mod'
- 'proto/*.proto'
- 'tools/**'
- 'config/**'
- 'bootstrap.sh'
- '.github/workflows/unit_race_evalengine.yml'

- name: Set up Go
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
uses: actions/setup-go@v5
with:
go-version: 1.22.2

- name: Set up python
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
uses: actions/setup-python@v5

- name: Tune the OS
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
run: |
sudo sysctl -w net.ipv4.ip_local_port_range="22768 65535"

- name: Get dependencies
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
run: |
export DEBIAN_FRONTEND="noninteractive"
sudo apt-get -qq update

# mysql80
sudo apt-get -qq install -y mysql-server mysql-client

sudo apt-get -qq install -y make unzip g++ curl git wget ant openjdk-11-jdk eatmydata
sudo service mysql stop
sudo bash -c "echo '/usr/sbin/mysqld { }' > /etc/apparmor.d/usr.sbin.mysqld" # https://bugs.launchpad.net/ubuntu/+source/mariadb-10.1/+bug/1806263
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile"

mkdir -p dist bin
curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist
mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/

go mod download
go install golang.org/x/tools/cmd/goimports@latest

# install JUnit report formatter
go install github.com/vitessio/go-junit-report@HEAD

- name: Run make tools
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
run: |
make tools

- name: Setup launchable dependencies
if: steps.skip-workflow.outputs.is_draft == 'false' && steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' && github.base_ref == 'main'
run: |
# Get Launchable CLI installed. If you can, make it a part of the builder image to speed things up
pip3 install --user launchable~=1.0 > /dev/null

# verify that launchable setup is all correct.
launchable verify || true

# Tell Launchable about the build you are producing and testing
launchable record build --name "$GITHUB_RUN_ID" --no-commit-collection --source .

- name: unit_race_evalengine
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
timeout-minutes: 45
run: |
# We set the VTDATAROOT to the /tmp folder to reduce the file path of mysql.sock file
# which musn't be more than 107 characters long.
export VTDATAROOT="/tmp/"
export NOVTADMINBUILD=1
export VT_EVALENGINE_TEST="1"

eatmydata -- make unit_test_race | tee -a output.txt | go-junit-report -set-exit-code > report.xml

- name: Print test output and Record test result in launchable if PR is not a draft
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true' && always()
run: |
if [[ "${{steps.skip-workflow.outputs.is_draft}}" == "false" ]]; then
# send recorded tests to launchable
launchable record tests --build "$GITHUB_RUN_ID" go-test . || true
fi

# print test output
cat output.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"

name: Unit Test (mysql57)
name: Unit Test (evalengine_mysql57)
on: [push, pull_request]
concurrency:
group: format('{0}-{1}', ${{ github.ref }}, 'Unit Test (mysql57)')
group: format('{0}-{1}', ${{ github.ref }}, 'Unit Test (evalengine_mysql57)')
cancel-in-progress: true

permissions: read-all
Expand All @@ -15,7 +15,7 @@ env:

jobs:
test:
name: Unit Test (mysql57)
name: Unit Test (evalengine_mysql57)
runs-on: gh-hosted-runners-4cores-1

steps:
Expand Down Expand Up @@ -65,7 +65,7 @@ jobs:
- 'tools/**'
- 'config/**'
- 'bootstrap.sh'
- '.github/workflows/unit_test_mysql57.yml'
- '.github/workflows/unit_test_evalengine_mysql57.yml'

- name: Set up Go
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
Expand Down Expand Up @@ -156,6 +156,8 @@ jobs:
export VTDATAROOT="/tmp/"

export NOVTADMINBUILD=1
export VT_EVALENGINE_TEST="1"

eatmydata -- make unit_test | tee -a output.txt | go-junit-report -set-exit-code > report.xml

- name: Print test output and Record test result in launchable if PR is not a draft
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# DO NOT MODIFY: THIS FILE IS GENERATED USING "make generate_ci_workflows"

name: Unit Test (mysql80)
name: Unit Test (evalengine_mysql80)
on: [push, pull_request]
concurrency:
group: format('{0}-{1}', ${{ github.ref }}, 'Unit Test (mysql80)')
group: format('{0}-{1}', ${{ github.ref }}, 'Unit Test (evalengine_mysql80)')
cancel-in-progress: true

permissions: read-all
Expand All @@ -15,7 +15,7 @@ env:

jobs:
test:
name: Unit Test (mysql80)
name: Unit Test (evalengine_mysql80)
runs-on: gh-hosted-runners-4cores-1

steps:
Expand Down Expand Up @@ -65,7 +65,7 @@ jobs:
- 'tools/**'
- 'config/**'
- 'bootstrap.sh'
- '.github/workflows/unit_test_mysql80.yml'
- '.github/workflows/unit_test_evalengine_mysql80.yml'

- name: Set up Go
if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.unit_tests == 'true'
Expand Down Expand Up @@ -153,6 +153,8 @@ jobs:
export VTDATAROOT="/tmp/"

export NOVTADMINBUILD=1
export VT_EVALENGINE_TEST="1"

eatmydata -- make unit_test | tee -a output.txt | go-junit-report -set-exit-code > report.xml

- name: Print test output and Record test result in launchable if PR is not a draft
Expand Down
Loading
Loading