Skip to content

Commit 032da0f

Browse files
authored
Merge pull request #41 from utopia-php/feat-ci
Add automated tests
2 parents 32b6f84 + 167533c commit 032da0f

File tree

13 files changed

+110
-39
lines changed

13 files changed

+110
-39
lines changed

.github/workflows/phpstan.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: "CodeQL"
2+
3+
on: [ pull_request ]
4+
jobs:
5+
lint:
6+
name: CodeQL
7+
runs-on: ubuntu-latest
8+
9+
steps:
10+
- name: Checkout repository
11+
uses: actions/checkout@v4
12+
with:
13+
fetch-depth: 2
14+
15+
- run: git checkout HEAD^2
16+
17+
- name: Run CodeQL
18+
run: |
19+
docker run --rm -v $PWD:/app composer sh -c \
20+
"composer install --profile --ignore-platform-reqs && composer check"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99

1010
steps:
1111
- name: Checkout repository
12-
uses: actions/checkout@v3
12+
uses: actions/checkout@v4
1313
with:
1414
fetch-depth: 2
1515

.github/workflows/tests.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: "Tests"
2+
3+
concurrency:
4+
group: ${{ github.workflow }}-${{ github.ref }}
5+
cancel-in-progress: true
6+
7+
on: [pull_request]
8+
9+
jobs:
10+
adapter_test:
11+
name: Adapter Tests
12+
runs-on: ubuntu-latest
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
adapter:
17+
[
18+
AMQP,
19+
SwooleRedisCluster,
20+
Swoole,
21+
Workerman,
22+
]
23+
24+
steps:
25+
- name: checkout
26+
uses: actions/checkout@v4
27+
28+
- name: Load and Start Services
29+
run: |
30+
docker compose build
31+
docker compose up -d
32+
sleep 10
33+
34+
- name: Run Tests
35+
run: docker compose exec -T tests vendor/bin/phpunit /usr/local/src/tests/Queue/E2E/Adapter/${{matrix.adapter}}Test.php --debug

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@ COPY . .
1919

2020
COPY --from=composer /usr/local/src/vendor /usr/local/src/vendor
2121

22-
CMD ["sleep","3600"]
22+
CMD ["tail", "-f", "/dev/null"]

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
},
2020
"scripts":{
2121
"test": "phpunit",
22-
"analyse": "vendor/bin/phpstan analyse",
22+
"check": "vendor/bin/phpstan analyse",
2323
"format": "vendor/bin/pint",
2424
"lint": "vendor/bin/pint --test"
2525
},

docker-compose.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
version: '3.1'
2-
31
services:
42
tests:
53
container_name: tests
64
build: .
7-
command:
8-
- vendor/bin/phpunit
9-
- tests
105
volumes:
11-
- ./:/usr/local/src
6+
- ./src:/usr/local/src/src
7+
- ./tests:/usr/local/src/tests
128
depends_on:
139
- swoole
1410
- swoole-amqp
@@ -20,7 +16,8 @@ services:
2016
build: ./tests/Queue/servers/Swoole/.
2117
command: php /usr/src/code/tests/Queue/servers/Swoole/worker.php
2218
volumes:
23-
- ./:/usr/src/code
19+
- ./src:/usr/local/src/src
20+
- ./tests:/usr/local/src/tests
2421
depends_on:
2522
- redis
2623

@@ -29,7 +26,8 @@ services:
2926
build: ./tests/Queue/servers/SwooleRedisCluster/.
3027
command: php /usr/src/code/tests/Queue/servers/SwooleRedisCluster/worker.php
3128
volumes:
32-
- ./:/usr/src/code
29+
- ./src:/usr/local/src/src
30+
- ./tests:/usr/local/src/tests
3331
depends_on:
3432
redis-cluster-0:
3533
condition: service_healthy
@@ -39,7 +37,8 @@ services:
3937
build: ./tests/Queue/servers/AMQP/.
4038
command: php /usr/src/code/tests/Queue/servers/AMQP/worker.php
4139
volumes:
42-
- ./:/usr/src/code
40+
- ./src:/usr/local/src/src
41+
- ./tests:/usr/local/src/tests
4342
depends_on:
4443
amqp:
4544
condition: service_healthy
@@ -49,7 +48,8 @@ services:
4948
build: ./tests/Queue/servers/Workerman/.
5049
command: php /usr/src/code/tests/Queue/servers/Workerman/worker.php start
5150
volumes:
52-
- ./:/usr/src/code
51+
- ./src:/usr/local/src/src
52+
- ./tests:/usr/local/src/tests
5353
depends_on:
5454
- redis
5555

@@ -115,5 +115,5 @@ services:
115115
RABBITMQ_DEFAULT_PASS: amqp
116116
RABBITMQ_DEFAULT_VHOST: "/"
117117
healthcheck:
118-
test: [ "CMD", "rabbitmqctl", "node_health_check"]
118+
test: [ "CMD", "rabbitmqctl", "node_health_check" ]
119119
start_interval: 1s

src/Queue/Broker/AMQP.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public function consume(Queue $queue, callable $messageCallback, callable $succe
7676
try {
7777
$nextMessage = json_decode($amqpMessage->getBody(), associative: true) ?? false;
7878
if (!$nextMessage) {
79-
$amqpMessage->nack(requeue: false);
79+
$amqpMessage->nack();
8080
return;
8181
}
8282

@@ -92,10 +92,10 @@ public function consume(Queue $queue, callable $messageCallback, callable $succe
9292
$successCallback($message);
9393
} catch (Retryable $e) {
9494
$amqpMessage->nack(requeue: true);
95-
$errorCallback($message, $e);
95+
$errorCallback($message ?? null, $e);
9696
} catch (\Throwable $th) {
9797
$amqpMessage->nack(requeue: false);
98-
$errorCallback($message, $th);
98+
$errorCallback($message ?? null, $th);
9999
}
100100
};
101101

@@ -149,7 +149,7 @@ public function enqueue(Queue $queue, array $payload): bool
149149
return true;
150150
}
151151

152-
public function retry(Queue $queue, int $limit = null): void
152+
public function retry(Queue $queue, ?int $limit = null): void
153153
{
154154
// This is a no-op for AMQP
155155
}

src/Queue/Broker/Redis.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public function enqueue(Queue $queue, array $payload): bool
109109
* Take all jobs from the failed queue and re-enqueue them.
110110
* @param int|null $limit The amount of jobs to retry
111111
*/
112-
public function retry(Queue $queue, int $limit = null): void
112+
public function retry(Queue $queue, ?int $limit = null): void
113113
{
114114
$start = \time();
115115
$processed = 0;

src/Queue/Connection/RedisCluster.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ public function remove(string $key): bool
110110

111111
public function move(string $queue, string $destination): bool
112112
{
113-
return $this->getRedis()->move($queue, $destination);
113+
// Move is not supported for Redis Cluster
114+
return false;
114115
}
115116

116117
public function setArray(string $key, array $value): bool
@@ -160,7 +161,7 @@ public function ping(): bool
160161
}
161162

162163
return true;
163-
} catch (Exception $e) {
164+
} catch (\Throwable) {
164165
return false;
165166
}
166167
}

src/Queue/Consumer.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,20 @@ interface Consumer
99
{
1010
/**
1111
* @param Queue $queue
12-
* @param callable(Message $message): Commit|NoCommit|mixed $messageCallback
12+
* @param callable(Message $message): (Commit|NoCommit|mixed) $messageCallback
1313
* @param callable(Message $message): void $successCallback
1414
* @param callable(Message $message, \Throwable $th): void $errorCallback
1515
* @return void
1616
*/
17-
public function consume(Queue $queue, callable $messageCallback, callable $successCallback, callable $errorCallback): void;
17+
public function consume(
18+
Queue $queue,
19+
callable $messageCallback,
20+
callable $successCallback,
21+
callable $errorCallback
22+
): void;
1823

1924
/**
20-
* Closes the consumer and free's any underlying resources.
25+
* Closes the consumer and frees any underlying resources.
2126
*/
2227
public function close(): void;
2328
}

0 commit comments

Comments
 (0)