Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6485aed

Browse files
authored
Respect env var overrides for db credentials in tests (vapor#185)
* Respect env var overrides for db credentials in tests * Apply CI improvements from postgres-nio * Oops, a little too much copy pasta for dinner * Attempt to fix timeout in macOS tests
1 parent 0b7a43c commit 6485aed

File tree

2 files changed

+89
-86
lines changed

2 files changed

+89
-86
lines changed

‎.github/workflows/test.yml‎

Lines changed: 85 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,112 @@
11
name: test
2-
on:
3-
pull_request:
4-
push:
5-
branches:
6-
- main
2+
on: [ 'pull_request' ]
3+
74
jobs:
85
linux:
9-
runs-on: ubuntu-latest
106
strategy:
117
fail-fast: false
128
matrix:
13-
runner:
14-
- swift:5.2-xenial
15-
- swift:5.2-bionic
16-
- swift:5.2-focal
17-
- swift:5.2-centos7
18-
- swift:5.2-centos8
19-
- swift:5.2-amazonlinux2
20-
- swift:5.3-xenial
21-
- swift:5.3-bionic
22-
- swift:5.3-focal
23-
- swift:5.3-centos7
24-
- swift:5.3-centos8
25-
- swift:5.3-amazonlinux2
26-
- swift:5.4-bionic
27-
- swift:5.4-focal
28-
- swift:5.4-centos7
29-
- swift:5.4-centos8
30-
- swift:5.4-amazonlinux2
31-
- swiftlang/swift:nightly-5.5-focal
32-
- swiftlang/swift:nightly-5.5-centos8
33-
- swiftlang/swift:nightly-5.5-amazonlinux2
34-
- swiftlang/swift:nightly-main-focal
35-
- swiftlang/swift:nightly-main-centos8
36-
- swiftlang/swift:nightly-main-amazonlinux2
37-
dbimage:
38-
- postgres:11
39-
- postgres:12
9+
dbimage:
10+
- postgres:14
4011
- postgres:13
41-
container: ${{ matrix.runner }}
12+
- postgres:12
13+
- postgres:11
14+
dbauth:
15+
- trust
16+
- md5
17+
- scram-sha-256
18+
swiftver:
19+
- swift:5.2
20+
- swift:5.5
21+
- swiftlang/swift:nightly-main
22+
swiftos:
23+
- focal
24+
container: ${{ format('{0}-{1}', matrix.swiftver, matrix.swiftos) }}
25+
runs-on: ubuntu-latest
26+
env:
27+
LOG_LEVEL: debug
28+
POSTGRES_DB: 'vapor_database'
29+
POSTGRES_DATABASE: 'vapor_database'
30+
POSTGRES_DATABASE_A: 'vapor_database'
31+
POSTGRES_DATABASE_B: 'vapor_database'
32+
POSTGRES_USER: 'vapor_username'
33+
POSTGRES_USERNAME: 'vapor_username'
34+
POSTGRES_USERNAME_A: 'vapor_username'
35+
POSTGRES_USERNAME_B: 'vapor_username'
36+
POSTGRES_PASSWORD: 'vapor_password'
37+
POSTGRES_PASSWORD_A: 'vapor_password'
38+
POSTGRES_PASSWORD_B: 'vapor_password'
39+
POSTGRES_HOSTNAME_A: 'psql-a'
40+
POSTGRES_HOSTNAME_B: 'psql-b'
41+
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }}
4242
services:
43-
postgres-a:
43+
psql-a:
4444
image: ${{ matrix.dbimage }}
45-
env:
46-
POSTGRES_USER: vapor_username
47-
POSTGRES_PASSWORD: vapor_password
48-
POSTGRES_DB: vapor_database
49-
postgres-b:
45+
env:
46+
POSTGRES_USER: 'vapor_username'
47+
POSTGRES_DB: 'vapor_database'
48+
POSTGRES_PASSWORD: 'vapor_password'
49+
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }}
50+
POSTGRES_INITDB_ARGS: --auth-host=${{ matrix.dbauth }}
51+
psql-b:
5052
image: ${{ matrix.dbimage }}
5153
env:
52-
POSTGRES_USER: vapor_username
53-
POSTGRES_PASSWORD: vapor_password
54-
POSTGRES_DB: vapor_database
55-
env:
56-
POSTGRES_HOSTNAME_A: postgres-a
57-
POSTGRES_HOSTNAME_B: postgres-b
58-
LOG_LEVEL: info
54+
POSTGRES_USER: 'vapor_username'
55+
POSTGRES_DB: 'vapor_database'
56+
POSTGRES_PASSWORD: 'vapor_password'
57+
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }}
58+
POSTGRES_INITDB_ARGS: --auth-host=${{ matrix.dbauth }}
5959
steps:
60-
- name: Workaround SPM incompatibility with old Git on CentOS 7
61-
if: ${{ contains(matrix.runner, 'centos7') }}
62-
run: |
63-
yum install -y make libcurl-devel
64-
git clone https://github.com/git/git -bv2.28.0 --depth 1 && cd git
65-
make prefix=/usr -j all install NO_OPENSSL=1 NO_EXPAT=1 NO_TCLTK=1 NO_GETTEXT=1 NO_PERL=1
66-
- name: Checkout code
60+
- name: Check out package
6761
uses: actions/checkout@v2
68-
- name: Run tests with Thread Sanitizer
69-
run: swift test --enable-test-discovery --sanitize=thread
70-
macOS:
62+
- name: Run unit tests
63+
run: swift test --enable-test-discovery
64+
65+
macos-all:
7166
strategy:
7267
fail-fast: false
7368
matrix:
74-
include:
75-
- formula: postgresql@11
76-
datadir: postgresql@11
77-
- formula: postgresql@12
78-
datadir: postgres
69+
dbimage:
70+
- postgresql@14
71+
- postgresql@13
72+
dbauth:
73+
- scram-sha-256
7974
xcode:
80-
- latest
8175
- latest-stable
76+
- latest
77+
runs-on: macos-11
8278
env:
83-
POSTGRES_DATABASE_A: vapor_database_a
84-
POSTGRES_DATABASE_B: vapor_database_b
85-
runs-on: macos-latest
79+
LOG_LEVEL: debug
80+
POSTGRES_HOSTNAME_A: 127.0.0.1
81+
POSTGRES_HOSTNAME_B: 127.0.0.1
82+
POSTGRES_USERNAME_A: 'vapor_username'
83+
POSTGRES_USERNAME_B: 'vapor_username'
84+
POSTGRES_PASSWORD_A: 'vapor_password'
85+
POSTGRES_PASSWORD_B: 'vapor_password'
86+
POSTGRES_DATABASE_A: 'vapor_database_a'
87+
POSTGRES_DATABASE_B: 'vapor_database_b'
88+
POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }}
8689
steps:
8790
- name: Select latest available Xcode
8891
uses: maxim-lobanov/setup-xcode@v1
89-
with:
92+
with:
9093
xcode-version: ${{ matrix.xcode }}
91-
- name: Replace Postgres install and start server
94+
- name: Install Postgres, setup DB and auth, and wait for server start
9295
run: |
93-
brew uninstall --force postgresql php && rm -rf /usr/local/{etc,var}/{postgres,pg}*
94-
brew install ${{ matrix.formula }} && brew link --force ${{ matrix.formula }}
95-
initdb --locale=C -E UTF-8 $(brew --prefix)/var/${{ matrix.datadir }}
96-
brew services start ${{ matrix.formula }}
97-
- name: Wait for server to be ready
98-
run: until pg_isready; do sleep 1; done
96+
export PATH="$(brew --prefix)/opt/${{ matrix.dbimage }}/bin:$PATH" PGDATA=/tmp/vapor-postgres-test PGUSER=postgres
97+
brew install ${{ matrix.dbimage }}
98+
initdb --locale=C --auth-host ${{ matrix.dbauth }} --username=postgres --pwfile=<(echo postgres)
99+
pg_ctl start --wait
100+
psql postgres <<<"CREATE ROLE $POSTGRES_USERNAME_A LOGIN PASSWORD '$POSTGRES_PASSWORD_A';"
101+
psql postgres <<<"CREATE ROLE $POSTGRES_USERNAME_B LOGIN PASSWORD '$POSTGRES_PASSWORD_B';"
102+
psql postgres <<<"CREATE DATABASE $POSTGRES_DATABASE_A OWNER = $POSTGRES_USERNAME_A;"
103+
psql postgres <<<"CREATE DATABASE $POSTGRES_DATABASE_B OWNER = $POSTGRES_USERNAME_B;"
104+
psql $POSTGRES_DATABASE_A <<<"ALTER SCHEMA public OWNER TO $POSTGRES_USERNAME_A;"
105+
psql $POSTGRES_DATABASE_B <<<"ALTER SCHEMA public OWNER TO $POSTGRES_USERNAME_B;"
99106
timeout-minutes: 2
100-
- name: Setup users and databases for Postgres
101-
run: |
102-
createuser --createdb --login vapor_username
103-
for db in vapor_database_{a,b}; do
104-
createdb -Ovapor_username $db && psql $db <<<"ALTER SCHEMA public OWNER TO vapor_username;"
105-
done
106107
- name: Checkout code
107108
uses: actions/checkout@v2
108-
- name: Run tests with Thread Sanitizer
109-
run: swift test --enable-test-discovery --sanitize=thread
109+
- name: Run all tests
110+
run: |
111+
swift test --enable-test-discovery -Xlinker -rpath \
112+
-Xlinker $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.5/macosx

‎Tests/FluentPostgresDriverTests/FluentPostgresDriverTests.swift‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ final class FluentPostgresDriverTests: XCTestCase {
136136
let configuration = PostgresConfiguration(
137137
hostname: env("POSTGRES_HOSTNAME_A") ?? "localhost",
138138
port: env("POSTGRES_PORT_A").flatMap(Int.init) ?? PostgresConfiguration.ianaPortNumber,
139-
username: "vapor_username",
140-
password: "vapor_password",
139+
username: env("POSTGRES_USERNAME_A")??"vapor_username",
140+
password: env("POSTGRES_PASSWORD_A")??"vapor_password",
141141
database: env("POSTGRES_DATABASE_A") ?? "vapor_database"
142142
)
143143
self.dbs.use(.postgres(
@@ -198,8 +198,8 @@ final class FluentPostgresDriverTests: XCTestCase {
198198
self.threadPool = NIOThreadPool(numberOfThreads: System.coreCount)
199199
self.dbs = Databases(threadPool: threadPool, on: self.eventLoopGroup)
200200

201-
self.dbs.use(.postgres(configuration: aConfig), as: .a)
202-
self.dbs.use(.postgres(configuration: bConfig), as: .b)
201+
self.dbs.use(.postgres(configuration: aConfig, connectionPoolTimeout:.seconds(30)), as: .a)
202+
self.dbs.use(.postgres(configuration: bConfig, connectionPoolTimeout:.seconds(30)), as: .b)
203203

204204
let a = self.dbs.database(.a, logger: Logger(label: "test.fluent.a"), on: self.eventLoopGroup.next())
205205
_ = try (a as! PostgresDatabase).query("drop schema public cascade").wait()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /