Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move generative tests to github from travis
- Loading branch information
Showing
60 changed files
with
344 additions
and
295 deletions.
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,231 @@ | ||
name: Faucet Tests | ||
|
||
on: [push, pull_request] | ||
|
||
env: | ||
FAUCET_TEST_IMG: "faucet/tests" | ||
SHARDARGS: "--privileged --sysctl net.ipv6.conf.all.disable_ipv6=0 --ulimit core=99999999999:99999999999 -v /var/local/lib/docker:/var/lib/docker" | ||
FILES_CHANGED: "all" | ||
CODECHECK_PY_VER: 3.6 | ||
MATRIX_SHARDS: 12 | ||
|
||
jobs: | ||
|
||
unit-tests: | ||
name: Faucet unit tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
python-version: [3.5, 3.6, 3.7, 3.8] | ||
steps: | ||
- name: Checkout source | ||
uses: actions/checkout@v2 | ||
- if: ${{ github.event.before != '0000000000000000000000000000000000000000' }} | ||
name: Get file changes | ||
id: file_changes | ||
uses: trilom/file-changes-action@v1.2.4 | ||
with: | ||
output: ' ' | ||
- if: ${{ steps.file_changes.outputs.files }} | ||
name: Compare file changes | ||
run: | | ||
FILES_CHANGED="${{ steps.file_changes.outputs.files }}" | ||
PY_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E ".py$" | tr '\n' ' ') | ||
RQ_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "requirements(.*)txt$" | tr '\n' ' ') | ||
DOC_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "docs/**" | tr '\n' ' ') | ||
echo "Files changed: ${FILES_CHANGED}" | ||
echo "Python code changed: ${PY_FILES_CHANGED}" | ||
echo "Requirement changes: ${RQ_FILES_CHANGED}" | ||
echo "Documentation changes: ${DOC_FILES_CHANGED}" | ||
echo ::set-env name=FILES_CHANGED::${FILES_CHANGED} | ||
echo ::set-env name=PY_FILES_CHANGED::${PY_FILES_CHANGED} | ||
echo ::set-env name=RQ_FILES_CHANGED::${RQ_FILES_CHANGED} | ||
echo ::set-env name=DOC_FILES_CHANGED::${DOC_FILES_CHANGED} | ||
- name: Set up python-${{ matrix.python-version }} | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
- name: Install dependencies | ||
run: | | ||
echo "${{ github.head_ref }}" | ||
echo "${{ github.base_ref }}" | ||
echo "${GITHUB_REF}" | ||
echo "${GITHUB_HEAD_REF}" | ||
echo "${GITHUB_BASE_REF}" | ||
echo "${{ github.event.before }}" | ||
./docker/pip_deps.sh | ||
pip3 install ./ | ||
pip3 show faucet | ||
- name: Running unit tests | ||
run: ./tests/run_unit_tests.sh || exit 1 | ||
- if: ${{ matrix.python-version == env.CODECHECK_PY_VER }} | ||
name: Upload codecov | ||
uses: codecov/codecov-action@v1.0.7 | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.RQ_FILES_CHANGED || env.PY_FILES_CHANGED }} | ||
name: Pytype | ||
run: | | ||
cd ./tests/codecheck || exit 1 | ||
if [[ "${{ env.FILES_CHANGED }}" == "all" || ! -z "${{ env.RQ_FILES_CHANGED }}" ]]; then | ||
echo "Running pytype on everything" | ||
./pytype.sh || exit 1 | ||
else | ||
echo "Running pytype on PY_FILES_CHANGED" | ||
./pytype.sh ${{ env.PY_FILES_CHANGED }} || exit 1 | ||
fi | ||
codecheck: | ||
name: Code check | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout source | ||
uses: actions/checkout@v2 | ||
with: | ||
fetch-depth: 0 | ||
- if: ${{ github.event.before != '0000000000000000000000000000000000000000' }} | ||
name: Get file changes | ||
id: file_changes | ||
uses: trilom/file-changes-action@v1.2.4 | ||
with: | ||
output: ' ' | ||
- if: ${{ steps.file_changes.outputs.files }} | ||
name: Compare file changes | ||
run: | | ||
FILES_CHANGED="${{ steps.file_changes.outputs.files }}" | ||
PY_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E ".py$" | tr '\n' ' ') | ||
RQ_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "requirements(.*)txt$" | tr '\n' ' ') | ||
DOC_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "docs/**" | tr '\n' ' ') | ||
echo "Files changed: ${FILES_CHANGED}" | ||
echo "Python code changed: ${PY_FILES_CHANGED}" | ||
echo "Requirement changes: ${RQ_FILES_CHANGED}" | ||
echo "Documentation changes: ${DOC_FILES_CHANGED}" | ||
echo ::set-env name=FILES_CHANGED::${FILES_CHANGED} | ||
echo ::set-env name=PY_FILES_CHANGED::${PY_FILES_CHANGED} | ||
echo ::set-env name=RQ_FILES_CHANGED::${RQ_FILES_CHANGED} | ||
echo ::set-env name=DOC_FILES_CHANGED::${DOC_FILES_CHANGED} | ||
- name: Set up python-${{ env.CODECHECK_PY_VER }} | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: ${{ env.CODECHECK_PY_VER }} | ||
- name: Install dependencies | ||
run: | | ||
./docker/pip_deps.sh | ||
- if: ${{ env.DOC_FILES_CHANGED }} | ||
name: Build docs | ||
run: | | ||
cd ./docs || exit 1 | ||
sudo apt-get install librsvg2-bin || exit 1 | ||
make html || exit 1 | ||
rm -rf _build | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED }} | ||
name: Pylint | ||
run: | | ||
cd ./tests/codecheck || exit 1 | ||
./pylint.sh ${{ env.PY_FILES_CHANGED }} || exit 1 | ||
integration-tests: | ||
name: Faucet integration tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
MATRIX_SHARD: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] | ||
steps: | ||
- name: Checkout source | ||
uses: actions/checkout@v2 | ||
- if: ${{ github.event.before != '0000000000000000000000000000000000000000' }} | ||
name: Get file changes | ||
id: file_changes | ||
uses: trilom/file-changes-action@v1.2.4 | ||
with: | ||
output: ' ' | ||
- if: ${{ steps.file_changes.outputs.files }} | ||
name: Compare file changes | ||
run: | | ||
FILES_CHANGED="${{ steps.file_changes.outputs.files }}" | ||
PY_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E ".py$" | tr '\n' ' ') | ||
RQ_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "requirements(.*)txt$" | tr '\n' ' ') | ||
DOC_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "docs/**" | tr '\n' ' ') | ||
echo "Files changed: ${FILES_CHANGED}" | ||
echo "Python code changed: ${PY_FILES_CHANGED}" | ||
echo "Requirement changes: ${RQ_FILES_CHANGED}" | ||
echo "Documentation changes: ${DOC_FILES_CHANGED}" | ||
echo ::set-env name=FILES_CHANGED::${FILES_CHANGED} | ||
echo ::set-env name=PY_FILES_CHANGED::${PY_FILES_CHANGED} | ||
echo ::set-env name=RQ_FILES_CHANGED::${RQ_FILES_CHANGED} | ||
echo ::set-env name=DOC_FILES_CHANGED::${DOC_FILES_CHANGED} | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED || env.RQ_FILES_CHANGED }} | ||
name: Shard out tests | ||
run: | | ||
ALLTESTFILES="tests/integration/mininet_tests.py tests/integration/mininet_multidp_tests.py clib/clib_mininet_tests.py" | ||
ALLTESTS=$(grep -E -o "^class (Faucet[a-zA-Z0-9]+Test)" ${ALLTESTFILES} | cut -f2 -d" " | sort) | ||
declare -A sharded | ||
function shard { | ||
work=$1 | ||
workers=$2 | ||
i=0 | ||
for shard in $work ; do | ||
i=$(( i % workers )) | ||
sharded[$i]="${sharded[$i]} $shard" | ||
i=$(( i + 1 )) | ||
done | ||
} | ||
shard "$ALLTESTS" ${{ env.MATRIX_SHARDS }} | ||
FAUCET_TESTS="-din ${sharded[${{ matrix.MATRIX_SHARD }}]}" | ||
echo ::set-env name=FAUCET_TESTS::${FAUCET_TESTS} | ||
- if: ${{ env.FAUCET_TESTS }} | ||
name: Build docker | ||
run: docker build --pull -t ${FAUCET_TEST_IMG} -f Dockerfile.tests . || exit 1 | ||
- if: ${{ env.FAUCET_TESTS }} | ||
name: Setup docker | ||
run: | | ||
ulimit -c unlimited | ||
echo '/var/tmp/core.%h.%e.%t' | sudo tee /proc/sys/kernel/core_pattern | ||
sudo modprobe openvswitch | ||
sudo modprobe ebtables | ||
- if: ${{ env.FAUCET_TESTS }} | ||
name: Run docker | ||
run: sudo docker run ${SHARDARGS} -v $HOME/.cache/pip:/var/tmp/pip-cache -e FAUCET_TESTS="${FAUCET_TESTS}" -t ${FAUCET_TEST_IMG} || exit 1 | ||
- name: Detect core dumps | ||
run: if [ ls -1 /var/tmp/core* > /dev/null 2>&1 ]; then exit 1; fi | ||
|
||
sanity-testing: | ||
name: Faucet Sanity Tests | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout source | ||
uses: actions/checkout@v2 | ||
- if: ${{ github.event.before != '0000000000000000000000000000000000000000' }} | ||
name: Get file changes | ||
id: file_changes | ||
uses: trilom/file-changes-action@v1.2.4 | ||
with: | ||
output: ' ' | ||
- if: ${{ steps.file_changes.outputs.files }} | ||
name: Compare file changes | ||
run: | | ||
FILES_CHANGED="${{ steps.file_changes.outputs.files }}" | ||
PY_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E ".py$" | tr '\n' ' ') | ||
RQ_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "requirements(.*)txt$" | tr '\n' ' ') | ||
DOC_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "docs/**" | tr '\n' ' ') | ||
echo "Files changed: ${FILES_CHANGED}" | ||
echo "Python code changed: ${PY_FILES_CHANGED}" | ||
echo "Requirement changes: ${RQ_FILES_CHANGED}" | ||
echo "Documentation changes: ${DOC_FILES_CHANGED}" | ||
echo ::set-env name=FILES_CHANGED::${FILES_CHANGED} | ||
echo ::set-env name=PY_FILES_CHANGED::${PY_FILES_CHANGED} | ||
echo ::set-env name=RQ_FILES_CHANGED::${RQ_FILES_CHANGED} | ||
echo ::set-env name=DOC_FILES_CHANGED::${DOC_FILES_CHANGED} | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED || env.RQ_FILES_CHANGED }} | ||
name: Setup docker test requirements | ||
run: | | ||
ulimit -c unlimited | ||
echo '/var/tmp/core.%h.%e.%t' | sudo tee /proc/sys/kernel/core_pattern | ||
sudo modprobe openvswitch | ||
sudo modprobe ebtables | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED || env.RQ_FILES_CHANGED }} | ||
name: Build docker | ||
run: docker build --pull -t ${FAUCET_TEST_IMG} -f Dockerfile.tests . || exit 1 | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED || env.RQ_FILES_CHANGED }} | ||
name: Run docker | ||
run: sudo docker run ${SHARDARGS} -v $HOME/.cache/pip:/var/tmp/pip-cache -e FAUCET_TESTS="-ni FaucetSanityTest FaucetStackStringOfDPUntaggedTest" -e HWTESTS="1" -t ${FAUCET_TEST_IMG} || exit 1 | ||
- name: Detect core dumps | ||
run: if [ ls -1 /var/tmp/core* > /dev/null 2>&1 ]; then exit 1; fi |
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,59 @@ | ||
name: Faucet Tests | ||
|
||
on: | ||
schedule: | ||
- cron: '* 0 * * *' | ||
|
||
env: | ||
FAUCET_TEST_IMG: "faucet/tests" | ||
SHARDARGS: "--privileged --sysctl net.ipv6.conf.all.disable_ipv6=0 --ulimit core=99999999999:99999999999 -v /var/local/lib/docker:/var/lib/docker" | ||
FILES_CHANGED: "all" | ||
CODECHECK_PY_VER: 3.6 | ||
|
||
jobs: | ||
|
||
generative-testing: | ||
name: Faucet Generative Tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
MATRIX_SHARD: [--generative_unit, --generative_integration] | ||
steps: | ||
- name: Checkout source | ||
uses: actions/checkout@v2 | ||
- if: ${{ github.event.before != '0000000000000000000000000000000000000000' }} | ||
name: Get file changes | ||
id: file_changes | ||
uses: trilom/file-changes-action@v1.2.4 | ||
with: | ||
output: ' ' | ||
- if: ${{ steps.file_changes.outputs.files }} | ||
name: Compare file changes | ||
run: | | ||
FILES_CHANGED="${{ steps.file_changes.outputs.files }}" | ||
PY_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E ".py$" | tr '\n' ' ') | ||
RQ_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "requirements(.*)txt$" | tr '\n' ' ') | ||
DOC_FILES_CHANGED=$(echo "${{ steps.file_changes.outputs.files }}" | tr ' ' '\n' | grep -E "docs/**" | tr '\n' ' ') | ||
echo "Files changed: ${FILES_CHANGED}" | ||
echo "Python code changed: ${PY_FILES_CHANGED}" | ||
echo "Requirement changes: ${RQ_FILES_CHANGED}" | ||
echo "Documentation changes: ${DOC_FILES_CHANGED}" | ||
echo ::set-env name=FILES_CHANGED::${FILES_CHANGED} | ||
echo ::set-env name=PY_FILES_CHANGED::${PY_FILES_CHANGED} | ||
echo ::set-env name=RQ_FILES_CHANGED::${RQ_FILES_CHANGED} | ||
echo ::set-env name=DOC_FILES_CHANGED::${DOC_FILES_CHANGED} | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED || env.RQ_FILES_CHANGED }} | ||
name: Setup docker test requirements | ||
run: | | ||
ulimit -c unlimited | ||
echo '/var/tmp/core.%h.%e.%t' | sudo tee /proc/sys/kernel/core_pattern | ||
sudo modprobe openvswitch | ||
sudo modprobe ebtables | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED || env.RQ_FILES_CHANGED }} | ||
name: Build docker | ||
run: docker build --pull -t ${FAUCET_TEST_IMG} -f Dockerfile.tests . || exit 1 | ||
- if: ${{ env.FILES_CHANGED == 'all' || env.PY_FILES_CHANGED || env.RQ_FILES_CHANGED }} | ||
name: Run docker | ||
run: sudo docker run ${SHARDARGS} -v $HOME/.cache/pip:/var/tmp/pip-cache -e FAUCET_TESTS="${{ matrix.MATRIX_SHARD }}" -t ${FAUCET_TEST_IMG} || exit 1 | ||
- name: Detect core dumps | ||
run: if [ ls -1 /var/tmp/core* > /dev/null 2>&1 ]; then exit 1; fi |
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
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
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
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
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
Oops, something went wrong.