Skip to content

Commit 72f4958

Browse files
committed
Test package with PostgreSQL
1 parent 48d756b commit 72f4958

File tree

7 files changed

+31
-106
lines changed

7 files changed

+31
-106
lines changed

.github/workflows/run-tests.yml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ jobs:
1111

1212
strategy:
1313
matrix:
14+
db: ['mysql', 'pgsql']
1415
payload:
1516
- { queue: 'github-actions-laravel9-php81', laravel: '9.*', php: '8.1', 'testbench': '7.*'}
1617
- { queue: 'github-actions-laravel9-php80', laravel: '9.*', php: '8.0', 'testbench': '7.*'}
@@ -22,7 +23,7 @@ jobs:
2223
- { queue: 'github-actions-laravel6-php80', laravel: '6.*', php: '8.0', 'testbench': '4.*' }
2324
- { queue: 'github-actions-laravel6-php74', laravel: '6.*', php: '7.4', 'testbench': '4.*' }
2425

25-
name: PHP ${{ matrix.payload.php }} - Laravel ${{ matrix.payload.laravel }}
26+
name: PHP ${{ matrix.payload.php }} - Laravel ${{ matrix.payload.laravel }} - DB ${{ matrix.db }}
2627

2728
steps:
2829
- name: Checkout code
@@ -35,23 +36,24 @@ jobs:
3536
extensions: mbstring, dom, fileinfo
3637
coverage: none
3738

38-
- name: Set up MySQL
39+
- name: Set up MySQL and PostgreSQL
3940
run: |
40-
sudo /etc/init.d/mysql start
41-
mysql -e 'CREATE DATABASE test;' -uroot -proot
42-
41+
MYSQL_PORT=3307 POSTGRES_PORT=5432 docker compose up ${{ matrix.db }} -d
4342
- name: Install dependencies
4443
run: |
4544
composer require "laravel/framework:${{ matrix.payload.laravel }}" "orchestra/testbench:${{ matrix.payload.testbench }}" --no-interaction --no-update
4645
composer update --prefer-stable --prefer-dist --no-interaction --no-suggest
46+
if [ "${{ matrix.db }}" = "mysql" ]; then
47+
while ! mysqladmin ping --host=127.0.0.1 --user=cloudtasks --port=3307 --password=cloudtasks --silent; do
48+
echo "Waiting for MySQL..."
49+
sleep 1
50+
done
51+
else
52+
echo "Not waiting for MySQL."
53+
fi
4754
- name: Execute tests
4855
env:
49-
CI_DB_DRIVER: mysql
50-
CI_DB_HOST: 127.0.0.1
51-
CI_DB_PORT: 3306
52-
CI_DB_DATABASE: test
53-
CI_DB_USERNAME: root
54-
CI_DB_PASSWORD: root
56+
DB_DRIVER: ${{ matrix.db }}
5557
CI_CLOUD_TASKS_PROJECT_ID: ${{ secrets.CI_CLOUD_TASKS_PROJECT_ID }}
5658
CI_CLOUD_TASKS_QUEUE: ${{ secrets.CI_CLOUD_TASKS_QUEUE }}
5759
CI_CLOUD_TASKS_LOCATION: ${{ secrets.CI_CLOUD_TASKS_LOCATION }}

docker-compose.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ services:
22
mysql:
33
image: mysql:8
44
ports:
5-
- 3306:3306
5+
- '${MYSQL_PORT:-3307}:3306'
66
environment:
7-
MYSQL_ROOT_PASSWORD: 'my-secret-pw'
7+
MYSQL_USER: 'cloudtasks'
8+
MYSQL_PASSWORD: 'cloudtasks'
89
MYSQL_DATABASE: 'cloudtasks'
9-
postgres:
10+
MYSQL_ROOT_PASSWORD: 'root'
11+
pgsql:
1012
image: postgres:14
1113
ports:
12-
- 5432:5432
14+
- '${POSTGRES_PORT:-5432}:5432'
1315
environment:
14-
POSTGRES_PASSWORD: 'my-secret-pw'
16+
POSTGRES_USER: 'cloudtasks'
17+
POSTGRES_PASSWORD: 'cloudtasks'
1518
POSTGRES_DB: 'cloudtasks'

phpunit.xml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@
2424
<env name="MAIL_DRIVER" value="log"/>
2525
<env name="GOOGLE_APPLICATION_CREDENTIALS" value="./tests/Support/gcloud-key-valid.json" />
2626
<env name="QUEUE_DRIVER" value="cloudtasks"/>
27-
<env name="DB_CONNECTION" value="mysql" />
28-
<env name="DB_HOST" value="127.0.0.1" />
29-
<env name="DB_PORT" value="3306" />
30-
<env name="DB_USERNAME" value="root" />
31-
<env name="DB_PASSWORD" value="my-secret-pw" />
32-
<env name="DB_DATABASE" value="cloudtasks" />
27+
<env name="DB_DRIVER" value="mysql" />
3328
</php>
3429
</phpunit>

setup-test-env.php

Lines changed: 0 additions & 76 deletions
This file was deleted.

tests/CloudTasksApiTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public function test_create_task()
8888

8989
// Assert
9090
$this->assertMatchesRegularExpression(
91-
'/projects\/' . env('CI_CLOUD_TASKS_PROJECT_ID') . '\/locations\/' . env('CI_CLOUD_TASKS_LOCATION') . '\/queues\/' . env('CI_CLOUD_TASKS_QUEUE') . '\/tasks\/\d{19,}$/',
91+
'/projects\/' . env('CI_CLOUD_TASKS_PROJECT_ID') . '\/locations\/' . env('CI_CLOUD_TASKS_LOCATION') . '\/queues\/' . env('CI_CLOUD_TASKS_QUEUE') . '\/tasks\/\d+$/',
9292
$taskName
9393
);
9494
}

tests/TaskHandlerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ public function test_max_attempts_in_combination_with_retry_until()
241241
->setMaxAttempts(3)
242242
->setMaxRetryDuration(new Duration(['seconds' => 3]))
243243
);
244-
CloudTasksApi::partialMock()->shouldReceive('getRetryUntilTimestamp')->andReturn(time() + 1)->byDefault();
244+
CloudTasksApi::partialMock()->shouldReceive('getRetryUntilTimestamp')->andReturn(time() + 10)->byDefault();
245245

246246
$job = $this->dispatch(new FailingJob());
247247

tests/TestCase.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,14 @@ protected function getEnvironmentSetUp($app)
6666
}
6767

6868
$app['config']->set('database.default', 'testbench');
69+
$port = env('DB_DRIVER') === 'mysql' ? 3307 : 5432;
6970
$app['config']->set('database.connections.testbench', [
70-
'driver' => 'mysql',
71-
'host' => env('CI_DB_HOST', env('DB_HOST')),
72-
'port' => env('CI_DB_PORT', env('DB_PORT')),
73-
'database' => env('CI_DB_DATABASE', env('DB_DATABASE')),
74-
'username' => env('CI_DB_USERNAME', env('DB_USERNAME')),
75-
'password' => env('CI_DB_PASSWORD', env('DB_PASSWORD')),
71+
'driver' => env('DB_DRIVER', 'mysql'),
72+
'host' => '127.0.0.1',
73+
'port' => $port,
74+
'database' => 'cloudtasks',
75+
'username' => 'cloudtasks',
76+
'password' => 'cloudtasks',
7677
'prefix' => '',
7778
]);
7879

0 commit comments

Comments
 (0)