Skip to content

Commit 13be7f9

Browse files
committed
More pool test fixes
1 parent 10ae2d4 commit 13be7f9

File tree

4 files changed

+64
-42
lines changed

4 files changed

+64
-42
lines changed

src/doctest_setup.rs

Lines changed: 52 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -11,139 +11,152 @@ cfg_if::cfg_if! {
1111
AsyncPgConnection::establish(&connection_url).await.unwrap()
1212
}
1313

14+
async fn clear_tables(connection: &mut AsyncPgConnection) {
15+
diesel::sql_query("DROP TABLE IF EXISTS users CASCADE").execute(connection).await.unwrap();
16+
diesel::sql_query("DROP TABLE IF EXISTS animals CASCADE").execute(connection).await.unwrap();
17+
diesel::sql_query("DROP TABLE IF EXISTS posts CASCADE").execute(connection).await.unwrap();
18+
diesel::sql_query("DROP TABLE IF EXISTS comments CASCADE").execute(connection).await.unwrap();
19+
diesel::sql_query("DROP TABLE IF EXISTS brands CASCADE").execute(connection).await.unwrap();
20+
}
21+
1422
async fn connection_no_data() -> AsyncPgConnection {
1523
let mut connection = connection_no_transaction().await;
1624
connection.begin_test_transaction().await.unwrap();
17-
diesel::sql_query("DROP TABLE IF EXISTS users CASCADE").execute(&mut connection).await.unwrap();
18-
diesel::sql_query("DROP TABLE IF EXISTS animals CASCADE").execute(&mut connection).await.unwrap();
19-
diesel::sql_query("DROP TABLE IF EXISTS posts CASCADE").execute(&mut connection).await.unwrap();
20-
diesel::sql_query("DROP TABLE IF EXISTS comments CASCADE").execute(&mut connection).await.unwrap();
21-
diesel::sql_query("DROP TABLE IF EXISTS brands CASCADE").execute(&mut connection).await.unwrap();
22-
25+
clear_tables(&mut connection).await;
2326
connection
2427
}
2528

26-
#[allow(dead_code)]
27-
async fn establish_connection() -> AsyncPgConnection {
28-
let mut connection = connection_no_data().await;
29+
async fn create_tables(connection: &mut AsyncPgConnection) {
2930

3031
diesel::sql_query("CREATE TABLE users (
3132
id SERIAL PRIMARY KEY,
3233
name VARCHAR NOT NULL
33-
)").execute(&mut connection).await.unwrap();
34+
)").execute(connection).await.unwrap();
3435
diesel::sql_query(
3536
"INSERT INTO users (name) VALUES ('Sean'), ('Tess')"
36-
).execute(&mut connection).await.unwrap();
37+
).execute(connection).await.unwrap();
3738

3839
diesel::sql_query(
3940
"CREATE TABLE animals (
4041
id SERIAL PRIMARY KEY,
4142
species VARCHAR NOT NULL,
4243
legs INTEGER NOT NULL,
4344
name VARCHAR
44-
)").execute(&mut connection).await.unwrap();
45+
)").execute(connection).await.unwrap();
4546
diesel::sql_query(
4647
"INSERT INTO animals (species, legs, name) VALUES
4748
('dog', 4, 'Jack'),
4849
('spider', 8, null)"
49-
).execute(&mut connection)
50+
).execute(connection)
5051
.await.unwrap();
5152

5253
diesel::sql_query(
5354
"CREATE TABLE posts (
5455
id SERIAL PRIMARY KEY,
5556
user_id INTEGER NOT NULL,
5657
title VARCHAR NOT NULL
57-
)").execute(&mut connection).await.unwrap();
58+
)").execute(connection).await.unwrap();
5859
diesel::sql_query(
5960
"INSERT INTO posts (user_id, title) VALUES
6061
(1, 'My first post'),
6162
(1, 'About Rust'),
62-
(2, 'My first post too')").execute(&mut connection).await.unwrap();
63+
(2, 'My first post too')").execute(connection).await.unwrap();
6364

6465
diesel::sql_query("CREATE TABLE comments (
6566
id SERIAL PRIMARY KEY,
6667
post_id INTEGER NOT NULL,
6768
body VARCHAR NOT NULL
68-
)").execute(&mut connection).await.unwrap();
69+
)").execute(connection).await.unwrap();
6970
diesel::sql_query("INSERT INTO comments (post_id, body) VALUES
7071
(1, 'Great post'),
7172
(2, 'Yay! I am learning Rust'),
72-
(3, 'I enjoyed your post')").execute(&mut connection).await.unwrap();
73+
(3, 'I enjoyed your post')").execute(connection).await.unwrap();
7374

7475
diesel::sql_query("CREATE TABLE brands (
7576
id SERIAL PRIMARY KEY,
7677
color VARCHAR NOT NULL DEFAULT 'Green',
7778
accent VARCHAR DEFAULT 'Blue'
78-
)").execute(&mut connection).await.unwrap();
79+
)").execute(connection).await.unwrap();
80+
}
7981

82+
#[allow(dead_code)]
83+
async fn establish_connection() -> AsyncPgConnection {
84+
let mut connection = connection_no_data().await;
85+
create_tables(&mut connection).await;
8086
connection
8187
}
8288
} else if #[cfg(feature = "mysql")] {
8389
#[allow(dead_code)]
8490
type DB = diesel::mysql::Mysql;
8591

92+
async fn clear_tables(connection: &mut AsyncMysqlConnection) {
93+
diesel::sql_query("SET FOREIGN_KEY_CHECKS=0;").execute(connection).await.unwrap();
94+
diesel::sql_query("DROP TABLE IF EXISTS users CASCADE").execute(connection).await.unwrap();
95+
diesel::sql_query("DROP TABLE IF EXISTS animals CASCADE").execute(connection).await.unwrap();
96+
diesel::sql_query("DROP TABLE IF EXISTS posts CASCADE").execute(connection).await.unwrap();
97+
diesel::sql_query("DROP TABLE IF EXISTS comments CASCADE").execute(connection).await.unwrap();
98+
diesel::sql_query("DROP TABLE IF EXISTS brands CASCADE").execute(connection).await.unwrap();
99+
diesel::sql_query("SET FOREIGN_KEY_CHECKS=1;").execute(connection).await.unwrap();
100+
}
101+
86102
async fn connection_no_data() -> AsyncMysqlConnection {
87103
let connection_url = database_url_from_env("MYSQL_UNIT_TEST_DATABASE_URL");
88104
let mut connection = AsyncMysqlConnection::establish(&connection_url).await.unwrap();
89-
diesel::sql_query("SET FOREIGN_KEY_CHECKS=0;").execute(&mut connection).await.unwrap();
90-
diesel::sql_query("DROP TABLE IF EXISTS users CASCADE").execute(&mut connection).await.unwrap();
91-
diesel::sql_query("DROP TABLE IF EXISTS animals CASCADE").execute(&mut connection).await.unwrap();
92-
diesel::sql_query("DROP TABLE IF EXISTS posts CASCADE").execute(&mut connection).await.unwrap();
93-
diesel::sql_query("DROP TABLE IF EXISTS comments CASCADE").execute(&mut connection).await.unwrap();
94-
diesel::sql_query("DROP TABLE IF EXISTS brands CASCADE").execute(&mut connection).await.unwrap();
95-
diesel::sql_query("SET FOREIGN_KEY_CHECKS=1;").execute(&mut connection).await.unwrap();
96-
105+
clear_tables(&mut connection).await;
97106
connection
98107
}
99108

100-
#[allow(dead_code)]
101-
async fn establish_connection() -> AsyncMysqlConnection {
102-
let mut connection = connection_no_data().await;
103-
104-
diesel::sql_query("CREATE TABLE IF NOT EXISTS users (
109+
async fn create_tables(connection: &mut AsyncMysqlConnection) {
110+
diesel::sql_query("CREATE TABLE IF NOT EXISTS users (
105111
id INTEGER PRIMARY KEY AUTO_INCREMENT,
106112
name TEXT NOT NULL
107-
) CHARACTER SET utf8mb4").execute(&mut connection).await.unwrap();
113+
) CHARACTER SET utf8mb4").execute(connection).await.unwrap();
108114

109115

110116
diesel::sql_query("CREATE TABLE IF NOT EXISTS animals (
111117
id INTEGER PRIMARY KEY AUTO_INCREMENT,
112118
species TEXT NOT NULL,
113119
legs INTEGER NOT NULL,
114120
name TEXT
115-
) CHARACTER SET utf8mb4").execute(&mut connection).await.unwrap();
121+
) CHARACTER SET utf8mb4").execute(connection).await.unwrap();
116122

117123
diesel::sql_query("CREATE TABLE IF NOT EXISTS posts (
118124
id INTEGER PRIMARY KEY AUTO_INCREMENT,
119125
user_id INTEGER NOT NULL,
120126
title TEXT NOT NULL
121-
) CHARACTER SET utf8mb4").execute(&mut connection).await.unwrap();
127+
) CHARACTER SET utf8mb4").execute(connection).await.unwrap();
122128

123129
diesel::sql_query("CREATE TABLE IF NOT EXISTS comments (
124130
id INTEGER PRIMARY KEY AUTO_INCREMENT,
125131
post_id INTEGER NOT NULL,
126132
body TEXT NOT NULL
127-
) CHARACTER SET utf8mb4").execute(&mut connection).await.unwrap();
133+
) CHARACTER SET utf8mb4").execute(connection).await.unwrap();
128134
diesel::sql_query("CREATE TABLE IF NOT EXISTS brands (
129135
id INTEGER PRIMARY KEY AUTO_INCREMENT,
130136
color VARCHAR(255) NOT NULL DEFAULT 'Green',
131137
accent VARCHAR(255) DEFAULT 'Blue'
132-
)").execute(&mut connection).await.unwrap();
138+
)").execute(connection).await.unwrap();
133139

134140
connection.begin_test_transaction().await.unwrap();
135141
diesel::sql_query("INSERT INTO users (name) VALUES ('Sean'), ('Tess')").execute(&mut connection).await.unwrap();
136142
diesel::sql_query("INSERT INTO posts (user_id, title) VALUES
137143
(1, 'My first post'),
138144
(1, 'About Rust'),
139-
(2, 'My first post too')").execute(&mut connection).await.unwrap();
145+
(2, 'My first post too')").execute(connection).await.unwrap();
140146
diesel::sql_query("INSERT INTO comments (post_id, body) VALUES
141147
(1, 'Great post'),
142148
(2, 'Yay! I am learning Rust'),
143-
(3, 'I enjoyed your post')").execute(&mut connection).await.unwrap();
149+
(3, 'I enjoyed your post')").execute(connection).await.unwrap();
144150
diesel::sql_query("INSERT INTO animals (species, legs, name) VALUES
145151
('dog', 4, 'Jack'),
146-
('spider', 8, null)").execute(&mut connection).await.unwrap();
152+
('spider', 8, null)").execute(connection).await.unwrap();
153+
154+
}
155+
156+
#[allow(dead_code)]
157+
async fn establish_connection() -> AsyncMysqlConnection {
158+
let mut connection = connection_no_data().await;
159+
create_tables(&mut connection).await;
147160

148161

149162
connection

src/pooled_connection/bb8.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
//!
1010
//! # #[tokio::main(flavor = "current_thread")]
1111
//! # async fn main() {
12-
//! # establish_connection().await;
1312
//! # run_test().await.unwrap();
1413
//! # }
1514
//! #
@@ -32,6 +31,10 @@
3231
//! # let config = get_config();
3332
//! let pool = Pool::builder().build(config).await?;
3433
//! let mut conn = pool.get().await?;
34+
//! # conn.begin_test_transaction();
35+
//! # clear_tables(&mut **conn);
36+
//! # create_tables(&mut **conn);
37+
//! # conn.begin_test_transaction();
3538
//! let res = users.load::<(i32, String)>(&mut conn).await?;
3639
//! # Ok(())
3740
//! # }

src/pooled_connection/deadpool.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
//!
1010
//! # #[tokio::main(flavor = "current_thread")]
1111
//! # async fn main() {
12-
//! # establish_connection().await;
1312
//! # run_test().await.unwrap();
1413
//! # }
1514
//! #
@@ -32,6 +31,10 @@
3231
//! # let config = get_config();
3332
//! let pool = Pool::builder(config).build()?;
3433
//! let mut conn = pool.get().await?;
34+
//! # conn.begin_test_transaction();
35+
//! # clear_tables(&mut **conn);
36+
//! # create_tables(&mut **conn);
37+
//! # conn.begin_test_transaction();
3538
//! let res = users.load::<(i32, String)>(&mut conn).await?;
3639
//! # Ok(())
3740
//! # }

src/pooled_connection/mobc.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
//!
1010
//! # #[tokio::main(flavor = "current_thread")]
1111
//! # async fn main() {
12-
//! # establish_connection().await;
1312
//! # run_test().await.unwrap();
1413
//! # }
1514
//! #
@@ -32,6 +31,10 @@
3231
//! # let config = get_config();
3332
//! let pool = Pool::new(config);
3433
//! let mut conn = pool.get().await?;
34+
//! # conn.begin_test_transaction();
35+
//! # clear_tables(&mut **conn);
36+
//! # create_tables(&mut **conn);
37+
//! # conn.begin_test_transaction();
3538
//! let res = users.load::<(i32, String)>(&mut conn).await?;
3639
//! # Ok(())
3740
//! # }

0 commit comments

Comments
 (0)