PoC: Add load simulator #3283
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
name: CI | |
on: | |
pull_request: | |
paths: | |
- Makefile | |
- 'src/**' | |
- 'spec/**' | |
- 'shard.*' | |
- 'static/**' | |
- 'views/**' | |
- '.github/workflows/ci.yml' | |
- 'build/build_docs_in_ci' | |
- 'openapi/**' | |
push: | |
branches: | |
- main | |
paths: | |
- Makefile | |
- 'src/**' | |
- 'spec/**' | |
- 'shard.*' | |
- 'static/**' | |
- 'views/**' | |
- '.github/workflows/ci.yml' | |
- 'build/build_docs_in_ci' | |
- 'openapi/**' | |
jobs: | |
format: | |
name: Format check | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
container: 84codes/crystal:latest-ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- run: crystal tool format --check | |
lint: | |
name: Lint check | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
container: 84codes/crystal:latest-ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Checkout ameba | |
uses: actions/checkout@v3 | |
with: | |
repository: crystal-ameba/ameba | |
path: ameba | |
- name: Build ameba | |
run: make -C ameba | |
- name: Run ameba | |
run: ameba/bin/ameba | |
js-lint: | |
name: Lint javascript | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: latest | |
- name: Setup node | |
run: npm install -g standard | |
- name: Run standard | |
run: standard static/js | |
api-lint: | |
name: Lint and build HTTP API documentation | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Lint and build HTTP API documentation | |
run: make docs | |
spec: | |
name: Spec | |
runs-on: ubuntu-latest | |
container: 84codes/crystal:latest-ubuntu-20.04 | |
steps: | |
- name: Print Crystal version | |
run: crystal -v | |
- name: Install dependencies | |
run: apt-get update && apt-get install -y liblz4-dev | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Spec | |
run: make test | |
spec_osx: | |
name: Spec OS X | |
runs-on: macos-13 | |
steps: | |
- name: Install Crystal | |
run: brew install crystal | |
env: | |
HOMEBREW_NO_AUTO_UPDATE: 0 | |
- run: crystal --version | |
- uses: actions/checkout@v3 | |
- name: Spec | |
run: make test | |
compile: | |
name: Compile LavinMQ | |
runs-on: ubuntu-latest | |
container: 84codes/crystal:latest-ubuntu-20.04 | |
steps: | |
- name: Install dependencies | |
run: apt-get update && apt-get install -y liblz4-dev | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Build lavinmq | |
run: make -j bin/lavinmq bin/lavinmqctl DOCS= CRYSTAL_FLAGS=-Dbake_static | |
- name: Print build info | |
run: bin/lavinmq --build-info | |
- name: Upload bin/ | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bin | |
path: bin/ | |
java-client-test: | |
name: RabbitMQ java client test | |
runs-on: ubuntu-20.04 | |
needs: compile | |
continue-on-error: true | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y make libevent-2.1-7 openjdk-13-jre-headless liblz4-1 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bin | |
path: bin | |
- name: Run LavinMQ in background | |
run: | | |
chmod +x bin/* | |
bin/lavinmq --data-dir=/tmp/amqp --bind=:: & | |
- name: Clone java client | |
uses: actions/checkout@v3 | |
with: | |
repository: cloudamqp/rabbitmq-java-client | |
ref: lavinmq-compatible-tests | |
path: rabbitmq-java-client | |
- name: Run java tests (allowed to fail) | |
id: test | |
run: | | |
cd rabbitmq-java-client | |
make deps | |
./mvnw -q verify -P '!setup-test-cluster' -Dit.test=FunctionalTestSuite -Drabbitmqctl.bin=../bin/lavinmqctl | |
bunny-test: | |
name: Bunny client test | |
runs-on: ubuntu-20.04 | |
needs: compile | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libevent-dev liblz4-1 | |
- name: Checkout LavinMQ for bunny_definitions.json | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bin | |
path: bin | |
- name: Run LavinMQ in background | |
run: | | |
chmod +x bin/lavinmq | |
bin/lavinmq --data-dir /tmp/amqp & | |
- name: Import definitions | |
run: | | |
chmod +x bin/lavinmqctl | |
bin/lavinmqctl import_definitions .github/bunny_definitions.json | |
- name: Clone Bunny | |
uses: actions/checkout@v3 | |
with: | |
repository: ruby-amqp/bunny | |
path: bunny | |
fetch-depth: 0 | |
ref: "2.17.0" | |
- name: Setup ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
working-directory: bunny | |
ruby-version: 2.7.2 | |
bundler-cache: true | |
- name: Run specs | |
run: | | |
cd bunny | |
bundle exec rspec \ | |
--pattern "spec/*/integration/*_spec.rb, spec/issues/*_spec.rb" \ | |
--exclude-pattern "**/*/tls_*, **/*/connection_recovery_*" | |
ruby-http-api-test: | |
name: RabbitMQ HTTP API Ruby client test | |
runs-on: ubuntu-20.04 | |
needs: compile | |
continue-on-error: true | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bin | |
path: bin | |
- name: Run LavinMQ in background | |
run: | | |
chmod +x bin/lavinmq | |
bin/lavinmq --data-dir /tmp/amqp & | |
- name: Clone HTTP API client | |
uses: actions/checkout@v3 | |
with: | |
repository: cloudamqp/rabbitmq_http_api_client | |
token: ${{ secrets.PRIVATE_REPO_ACCESS }} | |
path: rabbitmq_http_api_client | |
- name: Setup ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
working-directory: rabbitmq_http_api_client | |
ruby-version: 2.7.1 | |
bundler-cache: true | |
- name: Run specs | |
run: | | |
cd rabbitmq_http_api_client | |
bundle exec rspec | |
go-http-api-test: | |
name: RabbitMQ HTTP API Go client test | |
runs-on: ubuntu-20.04 | |
needs: compile | |
continue-on-error: true | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bin | |
path: bin | |
- name: Run LavinMQ in background | |
run: | | |
chmod +x bin/lavinmq | |
bin/lavinmq --data-dir /tmp/amqp & | |
- name: Install Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: 1.15.2 | |
- name: Clone http client | |
uses: actions/checkout@v3 | |
with: | |
repository: cloudamqp/rabbit-hole | |
token: ${{ secrets.PRIVATE_REPO_ACCESS }} | |
path: rabbit-hole | |
- name: Run specs | |
run: | | |
cd rabbit-hole | |
go test -v ./... | |
release-mode-test: | |
name: Test in release mode | |
runs-on: ubuntu-20.04 | |
needs: compile | |
continue-on-error: true | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: bin | |
path: bin | |
- name: Run LavinMQ in background | |
run: | | |
chmod +x bin/lavinmq | |
bin/lavinmq --data-dir /tmp/amqp & | |
- name: Test the static HTTP controller | |
run: ./extras/static_requests.sh |