From 52b5a20e87c58335d4e19b14bd6490bcdd496f0e Mon Sep 17 00:00:00 2001 From: Razvan Aurariu <38325118+rzv-me@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:43:52 +0200 Subject: [PATCH 1/4] Fix CacheSequenceResolver@next() to work with compression & serialization on Redis Code is now compatible with Compression and Serialization for redis. The implementation is the same as Laravel used for RateLimiting using Redis. https://github.com/laravel/framework/blob/5d477f9a4080c1cdd43edd05ec4df61c738e0f8d/src/Illuminate/Cache/RateLimiter.php#L161 --- .../CacheSequenceResolver.php | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/SequenceResolvers/CacheSequenceResolver.php b/src/SequenceResolvers/CacheSequenceResolver.php index 210bd10..3927c65 100644 --- a/src/SequenceResolvers/CacheSequenceResolver.php +++ b/src/SequenceResolvers/CacheSequenceResolver.php @@ -15,9 +15,28 @@ public function __construct( public function next(int $timestamp): int { $key = "glhd-bits-seq:{$timestamp}"; + + $this->withoutSerializationOrCompression( + fn () => $this->cache->add($key, 0, now()->addSeconds(10)) + ); + + return $this->cache->increment($key) - 1; + } + + protected function withoutSerializationOrCompression(callable $callback) + { + $store = $this->cache->getStore(); - $this->cache->add($key, 0, now()->addSeconds(10)); + if (! $store instanceof RedisStore) { + return $callback(); + } - return $this->cache->increment($key) - 1; + $connection = $store->connection(); + + if (! $connection instanceof PhpRedisConnection) { + return $callback(); + } + + return $connection->withoutSerializationOrCompression($callback); } } From b8860e16704463dcf28daf2f9db5570988279892 Mon Sep 17 00:00:00 2001 From: Chris Morrell Date: Tue, 4 Mar 2025 11:28:10 -0500 Subject: [PATCH 2/4] Prep for Laravel 12 --- .github/workflows/coverage.yml | 22 ++++++++++++---------- .github/workflows/php-cs-fixer.yml | 26 +++++++++++++++++--------- .github/workflows/phpunit.yml | 30 ++++++++---------------------- .idea/blade.xml | 4 ++++ .idea/laravel-idea.xml | 5 +++++ .idea/php-test-framework.xml | 15 --------------- composer.json | 8 ++++---- 7 files changed, 50 insertions(+), 60 deletions(-) delete mode 100644 .idea/php-test-framework.xml diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index ae92375..68578f2 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -13,36 +13,38 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.2 + php-version: 8.3 extensions: dom, curl, libxml, mbstring, zip, pcntl, bcmath, intl, iconv coverage: pcov + - name: Get composer cache directory + id: composer-cache + run: | + echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + - name: Cache dependencies - uses: actions/cache@v2 + uses: actions/cache@v4 with: - path: | - vendor - ${{ steps.composer-cache-files-dir.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('composer.json') }} + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies env: COMPOSER_DISCARD_CHANGES: true - run: composer require --no-progress --no-interaction --prefer-dist --update-with-all-dependencies "laravel/framework:10.*" "orchestra/testbench:8.*" + run: composer require --no-progress --no-interaction --prefer-dist --update-with-all-dependencies "laravel/framework:^11.0" - name: Run and publish code coverage - uses: paambaati/codeclimate-action@v2.4.0 + uses: paambaati/codeclimate-action@v9.0 env: CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} with: coverageCommand: vendor/bin/phpunit --coverage-clover ${{ github.workspace }}/clover.xml - debug: true coverageLocations: "${{github.workspace}}/clover.xml:clover" diff --git a/.github/workflows/php-cs-fixer.yml b/.github/workflows/php-cs-fixer.yml index 0cbde27..605dd6b 100644 --- a/.github/workflows/php-cs-fixer.yml +++ b/.github/workflows/php-cs-fixer.yml @@ -1,6 +1,10 @@ name: Code Style -on: [ pull_request, push ] +on: + push: + branches: + - main + pull_request: jobs: coverage: @@ -10,28 +14,32 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.1 + php-version: 8.3 extensions: dom, curl, libxml, mbstring, zip, pcntl, bcmath, intl, iconv + coverage: none + + - name: Get composer cache directory + id: composer-cache + run: | + echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v2 + uses: actions/cache@v4 with: - path: | - vendor - ${{ steps.composer-cache-files-dir.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('composer.json') }} + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies env: COMPOSER_DISCARD_CHANGES: true - run: composer require --no-progress --no-interaction --prefer-dist --update-with-all-dependencies "laravel/framework:9.*" "orchestra/testbench:7.*" + run: composer require --no-progress --no-interaction --prefer-dist --update-with-all-dependencies "laravel/framework:^11.0" - name: Run PHP CS Fixer run: ./vendor/bin/php-cs-fixer fix --diff --dry-run diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index 3147605..9877e3d 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -12,19 +12,9 @@ jobs: strategy: matrix: - php: [ 8.1, 8.2, 8.3 ] - laravel: [ 9.*, 10.*, 11.* ] + php: [ 8.2, 8.3, 8.4 ] + laravel: [ 10.*, 11.*, 12.* ] dependency-version: [ stable, lowest ] - include: - - laravel: 9.* - testbench: ^7.22 - - laravel: 10.* - testbench: 8.* - - laravel: 11.* - testbench: 9.x-dev - exclude: - - php: 8.1 - laravel: 11.* timeout-minutes: 10 @@ -42,25 +32,21 @@ jobs: tools: composer:v2 - name: Register composer cache directory - id: composer-cache-files-dir + id: composer-cache run: | echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: - path: | - vendor - ${{ steps.composer-cache-files-dir.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('composer.json') }} + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: | ${{ runner.os }}-composer- - name: Install dependencies - run: composer require --no-interaction --prefer-dist --no-update "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" - - - name: Set dependency version - run: composer update --no-interaction --prefer-dist --with-all-dependencies --prefer-${{ matrix.dependency-version }} + run: | + composer require --no-interaction --prefer-dist --prefer-${{ matrix.dependency-version }} --update-with-all-dependencies "laravel/framework:${{ matrix.laravel }}" - name: Execute tests run: vendor/bin/phpunit diff --git a/.idea/blade.xml b/.idea/blade.xml index a07eb08..4d7141c 100644 --- a/.idea/blade.xml +++ b/.idea/blade.xml @@ -57,6 +57,7 @@ + @@ -81,6 +82,7 @@ + @@ -99,6 +101,7 @@ + @@ -112,6 +115,7 @@ + diff --git a/.idea/laravel-idea.xml b/.idea/laravel-idea.xml index 9a470fd..d8e17dd 100644 --- a/.idea/laravel-idea.xml +++ b/.idea/laravel-idea.xml @@ -1,5 +1,10 @@ + + +