Skip to content

Implement Channel#sendAll #13525

Implement Channel#sendAll

Implement Channel#sendAll #13525

Workflow file for this run

# This file was automatically generated by sbt-github-actions using the
# githubWorkflowGenerate task. You should add and commit this file to
# your git repository. It goes without saying that you shouldn't edit
# this file by hand! Instead, if you wish to make changes, you should
# change your sbt build configuration to revise the workflow description
# to meet your needs, then regenerate this file.
name: Continuous Integration
on:
pull_request:
branches: ['**']
types: [opened, synchronize, reopened, edited, labeled]
push:
branches: ['**']
tags: [v*]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
build:
name: Build and Test
strategy:
matrix:
os: [ubuntu-latest]
scala: [2.12.17, 2.13.8, 3.2.2]
java: [graal_21.1.0@11, temurin@8]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout current branch (full)
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup GraalVM (graal_21.1.0@11)
if: matrix.java == 'graal_21.1.0@11'
uses: DeLaGuardo/setup-graalvm@5.0
with:
graalvm: 21.1.0
java: java11
- name: Setup Java (temurin@8)
if: matrix.java == 'temurin@8'
uses: actions/setup-java@v2
with:
distribution: temurin
java-version: 8
- name: Cache sbt
uses: actions/cache@v2
with:
path: |
~/.sbt
~/.ivy2/cache
~/.coursier/cache/v1
~/.cache/coursier/v1
~/AppData/Local/Coursier/Cache/v1
~/Library/Caches/Coursier/v1
key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }}
- name: Check formatting
if: matrix.scala == '2.13.8'
run: sbt ++2.13.8 fmtCheck
- name: Check that workflows are up to date
run: sbt ++${{ matrix.scala }} githubWorkflowCheck
- name: Build project
run: sbt ++${{ matrix.scala }} test
- name: Check doc generation
if: ${{ github.event_name == 'pull_request' }}
run: sbt ++2.13.8 doc
- name: Compress target directories
run: tar cf targets.tar zio-http-cli/target target zio-http/target zio-http-docs/target zio-http-benchmarks/target zio-http-example/target zio-http-testkit/target project/target
- name: Upload target directories
uses: actions/upload-artifact@v2
with:
name: target-${{ matrix.os }}-${{ matrix.scala }}-${{ matrix.java }}
path: targets.tar
publish:
name: Publish Artifacts
needs: [build]
if: github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v'))
strategy:
matrix:
os: [ubuntu-latest]
scala: [2.13.8]
java: [graal_21.1.0@11]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout current branch (full)
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup GraalVM (graal_21.1.0@11)
if: matrix.java == 'graal_21.1.0@11'
uses: DeLaGuardo/setup-graalvm@5.0
with:
graalvm: 21.1.0
java: java11
- name: Setup Java (temurin@8)
if: matrix.java == 'temurin@8'
uses: actions/setup-java@v2
with:
distribution: temurin
java-version: 8
- name: Cache sbt
uses: actions/cache@v2
with:
path: |
~/.sbt
~/.ivy2/cache
~/.coursier/cache/v1
~/.cache/coursier/v1
~/AppData/Local/Coursier/Cache/v1
~/Library/Caches/Coursier/v1
key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }}
- name: Download target directories (2.12.17)
uses: actions/download-artifact@v2
with:
name: target-${{ matrix.os }}-2.12.17-${{ matrix.java }}
- name: Inflate target directories (2.12.17)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.13.8)
uses: actions/download-artifact@v2
with:
name: target-${{ matrix.os }}-2.13.8-${{ matrix.java }}
- name: Inflate target directories (2.13.8)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (3.2.2)
uses: actions/download-artifact@v2
with:
name: target-${{ matrix.os }}-3.2.2-${{ matrix.java }}
- name: Inflate target directories (3.2.2)
run: |
tar xf targets.tar
rm targets.tar
- env:
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
CI_SONATYPE_RELEASE: ${{ secrets.CI_SONATYPE_RELEASE }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
PGP_SECRET: ${{ secrets.PGP_SECRET }}
run: sbt ++${{ matrix.scala }} ci-release
update_release_draft:
name: Release Drafter
if: ${{ github.base_ref == 'main' }}
strategy:
matrix:
os: [ubuntu-latest]
scala: [2.13.6]
java: [temurin@11]
runs-on: ${{ matrix.os }}
steps:
- uses: release-drafter/release-drafter@v5
unsafeRunScoverage:
name: Unsafe Scoverage
strategy:
matrix:
os: [ubuntu-latest]
scala: [2.13.8]
java: [temurin@11]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout current branch (full)
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Add Scoverage
id: add_plugin
run: sed -i -e '$aaddSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.9.3")' project/plugins.sbt
- name: Update Build Definition
id: update_build_definition
run: |
sed -i -e 's+(project in file("./zio-http"))+(project in file("./zio-http")).settings(coverageEnabled:=true,coverageMinimumStmtTotal:=50.0,coverageMinimumBranchTotal:=60.0)+g' build.sbt
- name: Run Coverage
id: run_coverage
run: sbt ++${{ matrix.scala }} 'coverage; project zioHttp; test; coverageReport'
- name: Push Codecov
id: push_codecov
run: 'bash <(curl -s https://codecov.io/bash)'
runBenchmarks-simple:
name: Performance Benchmarks (PlainTextBenchmarkServer)
if: ${{ github.event_name == 'pull_request'}}
strategy:
matrix:
os: [centos]
scala: [2.13.8]
java: [temurin@11]
runs-on: [ "${{ matrix.os }}", zio-http ]
steps:
- name: Clean up
id: clean_up
env:
GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}}
run: sudo rm -rf *
- uses: actions/checkout@v2
with:
path: zio-http
- uses: actions/checkout@v2
with:
repository: zio/FrameworkBenchmarks
path: FrameworkBenchMarks
- id: result
env:
GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}}
run: |
mkdir -p ./FrameworkBenchMarks/frameworks/Scala/zio-http/src/main/scala
cp ./zio-http/zio-http-example/src/main/scala/example/PlainTextBenchmarkServer.scala ./FrameworkBenchMarks/frameworks/Scala/zio-http/src/main/scala/Main.scala
cd ./FrameworkBenchMarks
sed -i "s/---COMMIT_SHA---/${{github.event.pull_request.head.repo.owner.login}}\/zio-http.git#${{github.event.pull_request.head.sha}}/g" frameworks/Scala/zio-http/build.sbt
./tfb --test zio-http | tee result
RESULT_REQUEST=$(echo $(grep -B 1 -A 17 "Concurrency: 256 for plaintext" result) | grep -oiE "requests/sec: [0-9]+.[0-9]+" | grep -oiE "[0-9]+" | head -1)
RESULT_CONCURRENCY=$(echo $(grep -B 1 -A 17 "Concurrency: 256 for plaintext" result) | grep -oiE "concurrency: [0-9]+" | grep -oiE "[0-9]+")
echo "request_per_second=$RESULT_REQUEST" >> $GITHUB_OUTPUT
echo "concurrency=$RESULT_CONCURRENCY" >> $GITHUB_OUTPUT
- if: ${{github.event.pull_request.head.repo.full_name == 'zio/zio-http'}}
uses: peter-evans/commit-comment@v2
with:
sha: ${{github.event.pull_request.head.sha}}
body: |
**🚀 :** Performance Benchmarks (PlainTextBenchmarkServer)
concurrency: ${{steps.result.outputs.concurrency}}
requests/sec: ${{steps.result.outputs.request_per_second}}
- name: Performance Report
id: perf-report
env:
REQUESTS_PER_SECOND: ${{steps.result.outputs.request_per_second}}
CONCURRENCY: ${{steps.result.outputs.concurrency}}
PERFORMANCE_FLOOR: 800000
run: |
echo "** 🚀 Performance Benchmarks (PlainTextBenchmarkServer) Report 🚀 **"
echo "$REQUESTS_PER_SECOND requests/sec for $CONCURRENCY concurrent requests"
if (( REQUESTS_PER_SECOND > PERFORMANCE_FLOOR )); then
echo "Woohoo! Performance is good! $REQUESTS_PER_SECOND requests/sec exceeds the performance floor of $PERFORMANCE_FLOOR requests/sec."
else
echo "Performance benchmark failed with $REQUESTS_PER_SECOND req/sec! Performance must exceed $PERFORMANCE_FLOOR req/sec."
exit 1
fi
runBenchmarks-effectful:
name: Performance Benchmarks (SimpleEffectBenchmarkServer)
if: ${{ github.event_name == 'pull_request'}}
strategy:
matrix:
os: [centos]
scala: [2.13.8]
java: [temurin@11]
runs-on: [ "${{ matrix.os }}", zio-http ]
steps:
- name: Clean up
id: clean_up
env:
GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}}
run: sudo rm -rf *
- uses: actions/checkout@v2
with:
path: zio-http
- uses: actions/checkout@v2
with:
repository: zio/FrameworkBenchmarks
path: FrameworkBenchMarks
- id: result
env:
GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}}
run: |
mkdir -p ./FrameworkBenchMarks/frameworks/Scala/zio-http/src/main/scala
cp ./zio-http/zio-http-example/src/main/scala/example/SimpleEffectBenchmarkServer.scala ./FrameworkBenchMarks/frameworks/Scala/zio-http/src/main/scala/Main.scala
cd ./FrameworkBenchMarks
sed -i "s/---COMMIT_SHA---/${{github.event.pull_request.head.repo.owner.login}}\/zio-http.git#${{github.event.pull_request.head.sha}}/g" frameworks/Scala/zio-http/build.sbt
./tfb --test zio-http | tee result
RESULT_REQUEST=$(echo $(grep -B 1 -A 17 "Concurrency: 256 for plaintext" result) | grep -oiE "requests/sec: [0-9]+.[0-9]+" | grep -oiE "[0-9]+" | head -1)
RESULT_CONCURRENCY=$(echo $(grep -B 1 -A 17 "Concurrency: 256 for plaintext" result) | grep -oiE "concurrency: [0-9]+" | grep -oiE "[0-9]+")
echo "request_per_second=$RESULT_REQUEST" >> $GITHUB_OUTPUT
echo "concurrency=$RESULT_CONCURRENCY" >> $GITHUB_OUTPUT
- if: ${{github.event.pull_request.head.repo.full_name == 'zio/zio-http'}}
uses: peter-evans/commit-comment@v2
with:
sha: ${{github.event.pull_request.head.sha}}
body: |
**🚀 :** Performance Benchmarks (SimpleEffectBenchmarkServer)
concurrency: ${{steps.result.outputs.concurrency}}
requests/sec: ${{steps.result.outputs.request_per_second}}
- name: Performance Report
id: perf-report
env:
REQUESTS_PER_SECOND: ${{steps.result.outputs.request_per_second}}
CONCURRENCY: ${{steps.result.outputs.concurrency}}
PERFORMANCE_FLOOR: 500000
run: |
echo "** 🚀 Performance Benchmarks (SimpleEffectBenchmarkServer) Report 🚀 **"
echo "$REQUESTS_PER_SECOND requests/sec for $CONCURRENCY concurrent requests"
if (( REQUESTS_PER_SECOND > PERFORMANCE_FLOOR )); then
echo "Woohoo! Performance is good! $REQUESTS_PER_SECOND requests/sec exceeds the performance floor of $PERFORMANCE_FLOOR requests/sec."
else
echo "Performance benchmark failed with $REQUESTS_PER_SECOND req/sec! Performance must exceed $PERFORMANCE_FLOOR req/sec."
exit 1
fi
Jmh_publish:
name: Jmh Publish
if: ${{ github.event.label.name == 'run jmh' && github.event_name == 'pull_request' }}
strategy:
matrix:
os: [ubuntu-latest]
scala: [2.13.8]
java: [temurin@11]
runs-on: ${{ matrix.os }}
steps:
- name: Format Output
id: fomat_output
run: |
cat parsed_Current.txt parsed_Main.txt | sort -u > c.txt
while IFS= read -r line; do
if grep -q "$line" Current.txt
then
grep "$line" Current.txt | sed 's/^.*: //' >> finalCurrent.txt;
else
echo "" >> finalCurrent.txt;
fi
if grep -q "$line" Main.txt
then
grep "$line" Main.txt | sed 's/^.*: //' >> finalMain.txt;
else
echo "" >> finalMain.txt;
fi
done < c.txt
paste -d '|' c.txt finalCurrent.txt finalMain.txt > FinalOutput.txt
sed -i -e 's/^/|/' FinalOutput.txt
sed -i -e 's/$/|/' FinalOutput.txt
body=$(cat FinalOutput.txt)
body="${body//'%'/'%25'}"
body="${body//$'\n'/'%0A'}"
body="${body//$'\r'/'%0D'}"
echo $body
echo ::set-output name=body::$(echo $body)
- uses: peter-evans/commit-comment@v1
with:
sha: ${{github.sha}}
body: |
**🚀 Jmh Benchmark:**
|Name |Current| Main|
|-----|----| ----|
${{steps.fomat_output.outputs.body}}