Skip to content

PoC: Add load simulator #3283

PoC: Add load simulator

PoC: Add load simulator #3283

Workflow file for this run

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