diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c8a88a43b..ffa601f0a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,9 +20,9 @@ jobs: strategy: fail-fast: false matrix: - php: [ 56, 70, 71, 72, 73, 74 ] + php: [ '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0' ] steps: - name: Checkout uses: actions/checkout@v2 - name: PHP Unit tests for PHP ${{ matrix.php }} - run: make test${{ matrix.php }} + run: make test v=${{ matrix.php }} diff --git a/Makefile b/Makefile index 58391f5b3..ba996b739 100644 --- a/Makefile +++ b/Makefile @@ -1,62 +1,26 @@ -build: +help: ## Display help information + @fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##//' + +build: ## Build an image from a docker-compose file. Params: {{ v=5.6 }}. Default latest PHP 5.6 @cp -n .env.example .env - docker-compose pull - docker-compose build --pull + PHP_VERSION=$(filter-out $@,$(v)) docker-compose up -d --build -test: test74 test73 test72 test71 test70 test56 -test74: - docker-compose build --pull php74 - docker-compose run php74 vendor/bin/phpunit --colors=always -v --debug - docker-compose down -test73: - docker-compose build --pull php73 - docker-compose run php73 vendor/bin/phpunit --colors=always -v --debug - docker-compose down -test72: - make clean - docker-compose build --no-cache --pull php72 - docker-compose run php72 vendor/bin/phpunit --colors=always -v --debug - docker-compose down -test71: - docker-compose build --pull php71 - docker-compose run php71 vendor/bin/phpunit --colors=always -v --debug - docker-compose down -test70: - make clean - docker-compose build --pull php70 - docker-compose run php70 vendor/bin/phpunit --colors=always -v --debug - docker-compose down -test56: - docker-compose build --pull php56 - docker-compose run php56 vendor/bin/phpunit --colors=always -v --debug - docker-compose down +test: ## Run tests. Params: {{ v=5.6 }}. Default latest PHP 5.6 + PHP_VERSION=$(filter-out $@,$(v)) docker-compose build --pull yii2-queue-php + PHP_VERSION=$(filter-out $@,$(v)) docker-compose run yii2-queue-php vendor/bin/phpunit --colors=always -v --debug + make down -benchmark: benchmark74 benchmark73 benchmark72 benchmark71 benchmark70 benchmark56 -benchmark74: - docker-compose build --pull php74 - docker-compose run php74 tests/yii benchmark/waiting - docker-compose down -benchmark73: - docker-compose build --pull php73 - docker-compose run php73 tests/yii benchmark/waiting - docker-compose down -benchmark72: - docker-compose build --pull php72 - docker-compose run php72 tests/yii benchmark/waiting - docker-compose down -benchmark71: - docker-compose build --pull php71 - docker-compose run php71 tests/yii benchmark/waiting - docker-compose down -benchmark70: - docker-compose build --pull php70 - docker-compose run php70 tests/yii benchmark/waiting - docker-compose down -benchmark56: - docker-compose build --pull php56 - docker-compose run php56 tests/yii benchmark/waiting +down: ## Stop and remove containers, networks docker-compose down +benchmark: ## Run benchmark. Params: {{ v=5.6 }}. Default latest PHP 5.6 + PHP_VERSION=$(filter-out $@,$(v)) docker-compose build --pull yii2-queue-php + PHP_VERSION=$(filter-out $@,$(v)) docker-compose run yii2-queue-php tests/yii benchmark/waiting + make down + +sh: ## Enter the container with the application + docker exec -it yii2-queue-php bash + check-cs: docker-compose build php72 docker-compose run php72 php-cs-fixer fix --diff --dry-run diff --git a/composer.json b/composer.json index c502b54d8..200893e77 100644 --- a/composer.json +++ b/composer.json @@ -21,16 +21,17 @@ "symfony/process": "^3.3||^4.0||^5.0||^6.0" }, "require-dev": { - "yiisoft/yii2-redis": "*", - "php-amqplib/php-amqplib": "*", - "enqueue/amqp-lib": "^0.8||^0.9.10", - "pda/pheanstalk": "v3.*", + "yiisoft/yii2-redis": "~2.0.0", + "php-amqplib/php-amqplib": "^2.8.0||^3.0.0", + "enqueue/amqp-lib": "^0.8||^0.9.10||^0.10.0", + "pda/pheanstalk": "~3.2.1", "opis/closure": "*", - "yiisoft/yii2-debug": "*", - "yiisoft/yii2-gii": "*", - "phpunit/phpunit": "~4.4", + "yiisoft/yii2-debug": "~2.1.0", + "yiisoft/yii2-gii": "~2.2.0", + "phpunit/phpunit": "4.8.34", "aws/aws-sdk-php": ">=2.4", - "enqueue/stomp": "^0.8.39" + "enqueue/stomp": "^0.8.39||^0.10.0", + "cweagans/composer-patches": "^1.7" }, "suggest": { "ext-pcntl": "Need for process signals.", @@ -62,9 +63,25 @@ "tests\\": "tests" } }, + "config": { + "allow-plugins": { + "yiisoft/yii2-composer": true, + "cweagans/composer-patches": true + } + }, "extra": { "branch-alias": { "dev-master": "2.x-dev" + }, + "composer-exit-on-patch-failure": true, + "patches": { + "phpunit/phpunit-mock-objects": { + "Fix PHP 7 and 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_mock_objects.patch" + }, + "phpunit/phpunit": { + "Fix PHP 7 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php7.patch", + "Fix PHP 8 compatibility": "https://yiisoft.github.io/phpunit-patches/phpunit_php8.patch" + } } }, "repositories": [ @@ -72,10 +89,5 @@ "type": "composer", "url": "https://asset-packagist.org" } - ], - "config": { - "allow-plugins": { - "yiisoft/yii2-composer": true - } - } + ] } diff --git a/src/drivers/amqp_interop/Queue.php b/src/drivers/amqp_interop/Queue.php index 23383c4c0..72809608f 100644 --- a/src/drivers/amqp_interop/Queue.php +++ b/src/drivers/amqp_interop/Queue.php @@ -42,7 +42,7 @@ class Queue extends CliQueue const ENQUEUE_AMQP_BUNNY = 'enqueue/amqp-bunny'; /** - * The connection to the borker could be configured as an array of options + * The connection to the broker could be configured as an array of options * or as a DSN string like amqp:, amqps:, amqps://user:pass@localhost:1000/vhost. * * @var string diff --git a/tests/TestCase.php b/tests/TestCase.php index a842ede51..acd2c1101 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -7,13 +7,11 @@ namespace tests; -use PHPUnit\Framework\TestCase as BaseTestCase; - /** * Base Test Case. * * @author Roman Zhuravlev */ -abstract class TestCase extends BaseTestCase +abstract class TestCase extends \PHPUnit_Framework_TestCase { } diff --git a/tests/docker-compose.yml b/tests/docker-compose.yml index 6ad0c03ae..2b7000c6a 100644 --- a/tests/docker-compose.yml +++ b/tests/docker-compose.yml @@ -1,18 +1,19 @@ version: "3.5" services: - # https://docs.docker.com/samples/library/php/ - php73: + # https://hub.docker.com/_/php/ + yii2-queue-php: + container_name: yii2-queue-php build: context: .. - dockerfile: tests/docker/php/7.3/Dockerfile + dockerfile: tests/docker/php/${PHP_VERSION:-5.6}/Dockerfile volumes: - - ./runtime/.composer73:/root/.composer + - ./runtime/.composer:/root/.composer - ..:/code - dns: &php_dns + dns: - 8.8.8.8 - 4.4.4.4 - environment: &php_environment + environment: MYSQL_HOST: mysql MYSQL_USER: yii2_queue_test MYSQL_PASSWORD: yii2_queue_test @@ -38,7 +39,7 @@ services: AWS_SQS_FIFO_ENABLED: ${AWS_SQS_FIFO_ENABLED} AWS_SQS_FIFO_URL: ${AWS_SQS_FIFO_URL} AWS_SQS_FIFO_MESSAGE_GROUP_ID: ${AWS_SQS_FIFO_MESSAGE_GROUP_ID} - depends_on: &php_depends_on + depends_on: - mysql - postgres - redis @@ -48,64 +49,8 @@ services: - activemq networks: net: {} - php72: - build: - context: .. - dockerfile: tests/docker/php/7.2/Dockerfile - volumes: - - ./runtime/.composer72:/root/.composer - dns: *php_dns - environment: *php_environment - depends_on: *php_depends_on - networks: - net: {} - php71: - build: - context: .. - dockerfile: tests/docker/php/7.1/Dockerfile - volumes: - - ./runtime/.composer71:/root/.composer - dns: *php_dns - environment: *php_environment - depends_on: *php_depends_on - networks: - net: {} - php70: - build: - context: .. - dockerfile: tests/docker/php/7.0/Dockerfile - volumes: - - ./runtime/.composer70:/root/.composer - dns: *php_dns - environment: *php_environment - depends_on: *php_depends_on - networks: - net: {} - php56: - build: - context: .. - dockerfile: tests/docker/php/5.6/Dockerfile - volumes: - - ./runtime/.composer56:/root/.composer - - ..:/code - dns: *php_dns - environment: *php_environment - depends_on: *php_depends_on - networks: - net: {} - php74: - build: - context: .. - dockerfile: tests/docker/php/7.4/Dockerfile - volumes: - - ./runtime/.composer74:/root/.composer - dns: *php_dns - environment: *php_environment - depends_on: *php_depends_on - networks: - net: { } - # https://docs.docker.com/samples/library/mysql/ + # https://hub.docker.com/_/mysql/ mysql: image: mysql:5.7 ports: @@ -118,7 +63,7 @@ services: networks: net: {} - # https://docs.docker.com/samples/library/postgres/ + # https://hub.docker.com/_/postgres/ postgres: image: postgres:10.4 ports: @@ -130,7 +75,7 @@ services: networks: net: {} - # https://docs.docker.com/samples/library/redis/ + # https://hub.docker.com/_/redis/ redis: image: redis:4.0 ports: diff --git a/tests/docker/php/7.0/Dockerfile b/tests/docker/php/7.0/Dockerfile index 48dc2e5c4..7c2902e46 100644 --- a/tests/docker/php/7.0/Dockerfile +++ b/tests/docker/php/7.0/Dockerfile @@ -13,7 +13,7 @@ RUN apt update -qq \ RUN apt-get update \ && apt-get install -y unzip curl zlib1g-dev libicu-dev libpq-dev libgearman-dev -RUN docker-php-ext-install zip intl pcntl bcmath pdo_mysql pdo_pgsql +RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql RUN pecl install igbinary \ && docker-php-ext-enable igbinary diff --git a/tests/docker/php/7.1/Dockerfile b/tests/docker/php/7.1/Dockerfile index f392242fd..722716415 100644 --- a/tests/docker/php/7.1/Dockerfile +++ b/tests/docker/php/7.1/Dockerfile @@ -3,7 +3,7 @@ FROM php:7.1-cli RUN apt-get update \ && apt-get install -y unzip curl zlib1g-dev libicu-dev libpq-dev libgearman-dev -RUN docker-php-ext-install zip intl pcntl bcmath pdo_mysql pdo_pgsql +RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql RUN pecl install igbinary \ && docker-php-ext-enable igbinary diff --git a/tests/docker/php/7.2/Dockerfile b/tests/docker/php/7.2/Dockerfile index efbf55a3c..c2ed7bdae 100644 --- a/tests/docker/php/7.2/Dockerfile +++ b/tests/docker/php/7.2/Dockerfile @@ -1,9 +1,9 @@ FROM php:7.2-cli RUN apt-get update \ - && apt-get install -y unzip bzip2 libbz2-dev curl zlib1g-dev libicu-dev libpq-dev libgearman-dev + && apt-get install -y unzip libbz2-dev curl zlib1g-dev libicu-dev libpq-dev libgearman-dev -RUN docker-php-ext-install bz2 zip intl pcntl bcmath pdo_mysql pdo_pgsql +RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql RUN pecl install igbinary \ && docker-php-ext-enable igbinary diff --git a/tests/docker/php/7.3/Dockerfile b/tests/docker/php/7.3/Dockerfile index 59e2db241..b5c045791 100644 --- a/tests/docker/php/7.3/Dockerfile +++ b/tests/docker/php/7.3/Dockerfile @@ -3,7 +3,7 @@ FROM php:7.3-cli RUN apt-get update \ && apt-get install -y unzip curl zlib1g-dev libzip-dev libicu-dev libpq-dev libgearman-dev -RUN docker-php-ext-install zip intl pcntl bcmath pdo_mysql pdo_pgsql +RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql RUN pecl install igbinary \ && docker-php-ext-enable igbinary diff --git a/tests/docker/php/7.4/Dockerfile b/tests/docker/php/7.4/Dockerfile index ee0b3456a..a60bebafe 100644 --- a/tests/docker/php/7.4/Dockerfile +++ b/tests/docker/php/7.4/Dockerfile @@ -3,7 +3,7 @@ FROM php:7.4-cli RUN apt-get update \ && apt-get install -y unzip curl zlib1g-dev libzip-dev libicu-dev libpq-dev libgearman-dev -RUN docker-php-ext-install zip intl pcntl bcmath pdo_mysql pdo_pgsql +RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql RUN pecl install igbinary gearman \ && docker-php-ext-enable igbinary gearman diff --git a/tests/docker/php/8.0/Dockerfile b/tests/docker/php/8.0/Dockerfile new file mode 100644 index 000000000..8a349d5ad --- /dev/null +++ b/tests/docker/php/8.0/Dockerfile @@ -0,0 +1,17 @@ +FROM --platform=linux/amd64 php:8.0.28-cli + +RUN apt-get update \ + && apt-get install -y unzip curl zlib1g-dev libzip-dev libicu-dev libpq-dev libgearman-dev + +RUN docker-php-ext-install zip pcntl bcmath pdo_mysql intl pdo_pgsql sockets +RUN pecl install igbinary gearman +RUN docker-php-ext-enable igbinary gearman + +COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer +COPY --from=cytopia/php-cs-fixer:latest /usr/bin/php-cs-fixer /usr/local/bin/php-cs-fixer + +COPY . /code +WORKDIR /code + +ENTRYPOINT ["tests/docker/php/entrypoint.sh"] +CMD ["sleep", "infinity"] diff --git a/tests/drivers/CliTestCase.php b/tests/drivers/CliTestCase.php index 0b0c13414..40870565d 100644 --- a/tests/drivers/CliTestCase.php +++ b/tests/drivers/CliTestCase.php @@ -33,7 +33,10 @@ protected function runProcess($cmd) $process->mustRun(); $error = $process->getErrorOutput(); - $this->assertEmpty($error, "Can not execute '$cmd' command:\n$error"); + $this->assertEmpty( + $error, + "Can not execute " . implode($cmd) . " command:\n$error" + ); } /**