From 93cab2a197c9d92720b07cd77ca2c2e0626937c8 Mon Sep 17 00:00:00 2001 From: Ryan Leckey Date: Sun, 12 Jul 2020 05:02:40 -0700 Subject: [PATCH] test: more pool usage adjustments --- sqlx-bench/benches/pg_pool.rs | 25 +++++++++++++------------ sqlx-core/src/mysql/mod.rs | 3 +++ src/lib.rs | 3 ++- tests/mssql/mssql.rs | 2 +- tests/mysql/mysql.rs | 7 ++++--- tests/sqlite/describe.rs | 5 +++-- tests/sqlite/sqlite.db | Bin 36864 -> 36864 bytes tests/sqlite/sqlite.rs | 7 ++++--- 8 files changed, 30 insertions(+), 22 deletions(-) diff --git a/sqlx-bench/benches/pg_pool.rs b/sqlx-bench/benches/pg_pool.rs index 0c0d0221..487048a0 100644 --- a/sqlx-bench/benches/pg_pool.rs +++ b/sqlx-bench/benches/pg_pool.rs @@ -1,6 +1,7 @@ use criterion::{criterion_group, criterion_main, Bencher, Criterion}; use sqlx::PgPool; +use sqlx::postgres::PgPoolOptions; use std::time::{Duration, Instant}; fn bench_pgpool_acquire(c: &mut Criterion) { @@ -23,18 +24,18 @@ fn bench_pgpool_acquire(c: &mut Criterion) { fn do_bench_acquire(b: &mut Bencher, concurrent: u32, fair: bool) { let pool = sqlx_rt::block_on( - PgPool::builder() - // we don't want timeouts because we want to see how the pool degrades - .connect_timeout(Duration::from_secs(3600)) - // force the pool to start full - .min_connections(50) - .max_connections(50) - // we're not benchmarking `ping()` - .test_before_acquire(false) - .__fair(fair) - .build( - &dotenv::var("DATABASE_URL").expect("DATABASE_URL must be set to run benchmarks"), - ), + PgPoolOptions::new( + &dotenv::var("DATABASE_URL").expect("DATABASE_URL must be set to run benchmarks"), + ) + // we don't want timeouts because we want to see how the pool degrades + .connect_timeout(Duration::from_secs(3600)) + // force the pool to start full + .min_connections(50) + .max_connections(50) + // we're not benchmarking `ping()` + .test_before_acquire(false) + .__fair(fair) + .connect(), ) .expect("failed to open PgPool"); diff --git a/sqlx-core/src/mysql/mod.rs b/sqlx-core/src/mysql/mod.rs index 95cdfa02..fd692e8d 100644 --- a/sqlx-core/src/mysql/mod.rs +++ b/sqlx-core/src/mysql/mod.rs @@ -31,6 +31,9 @@ pub use value::{MySqlValue, MySqlValueFormat, MySqlValueRef}; /// An alias for [`Pool`][crate::pool::Pool], specialized for MySQL. pub type MySqlPool = crate::pool::Pool; +/// An alias for [`PoolOptions`][crate::pool::PoolOptions], specialized for MySQL. +pub type MySqlPoolOptions = crate::pool::PoolOptions; + // NOTE: required due to the lack of lazy normalization impl_into_arguments_for_arguments!(MySqlArguments); impl_executor_for_pool_connection!(MySql, MySqlConnection, MySqlRow); diff --git a/src/lib.rs b/src/lib.rs index 20ce4d0e..7885e073 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,7 +3,7 @@ pub use sqlx_core::acquire::Acquire; pub use sqlx_core::arguments::{Arguments, IntoArguments}; pub use sqlx_core::column::Column; -pub use sqlx_core::connection::Connection; +pub use sqlx_core::connection::{ConnectOptions, Connection}; pub use sqlx_core::database::{self, Database}; pub use sqlx_core::executor::{Execute, Executor}; pub use sqlx_core::from_row::FromRow; @@ -124,6 +124,7 @@ pub mod query { /// Convenience re-export of common traits. pub mod prelude { pub use super::Acquire; + pub use super::ConnectOptions; pub use super::Connection; pub use super::Executor; pub use super::FromRow; diff --git a/tests/mssql/mssql.rs b/tests/mssql/mssql.rs index 0aeb4dfb..2c286a8d 100644 --- a/tests/mssql/mssql.rs +++ b/tests/mssql/mssql.rs @@ -1,6 +1,6 @@ use futures::TryStreamExt; use sqlx::mssql::Mssql; -use sqlx::{Connect, Connection, Executor, MssqlConnection, Row}; +use sqlx::{Connection, Executor, MssqlConnection, Row}; use sqlx_core::mssql::MssqlRow; use sqlx_test::new; diff --git a/tests/mysql/mysql.rs b/tests/mysql/mysql.rs index 50efe654..8cf73989 100644 --- a/tests/mysql/mysql.rs +++ b/tests/mysql/mysql.rs @@ -1,5 +1,5 @@ use futures::TryStreamExt; -use sqlx::mysql::{MySql, MySqlPool, MySqlRow}; +use sqlx::mysql::{MySql, MySqlPool, MySqlPoolOptions, MySqlRow}; use sqlx::{Connection, Executor, Row}; use sqlx_test::new; @@ -73,13 +73,14 @@ CREATE TEMPORARY TABLE users (id INTEGER PRIMARY KEY); Ok(()) } + #[sqlx_macros::test] async fn it_executes_with_pool() -> anyhow::Result<()> { - let pool: MySqlPool = MySqlPool::builder() + let pool: MySqlPool = MySqlPoolOptions::new(&dotenv::var("DATABASE_URL")?)? .min_connections(2) .max_connections(2) .test_before_acquire(false) - .build(&dotenv::var("DATABASE_URL")?) + .connect() .await?; let rows = pool.fetch_all("SELECT 1; SELECT 2").await?; diff --git a/tests/sqlite/describe.rs b/tests/sqlite/describe.rs index 4f420e6d..605c1850 100644 --- a/tests/sqlite/describe.rs +++ b/tests/sqlite/describe.rs @@ -1,7 +1,8 @@ use sqlx::error::DatabaseError; use sqlx::sqlite::{SqliteConnectOptions, SqliteError}; +use sqlx::ConnectOptions; use sqlx::{sqlite::Sqlite, Column, Executor}; -use sqlx::{Connect, SqliteConnection, TypeInfo}; +use sqlx::{SqliteConnection, TypeInfo}; use sqlx_test::new; use std::env; @@ -159,7 +160,7 @@ async fn it_describes_insert_with_read_only() -> anyhow::Result<()> { let mut options: SqliteConnectOptions = env::var("DATABASE_URL")?.parse().unwrap(); options = options.read_only(true); - let mut conn = SqliteConnection::connect_with(&options).await?; + let mut conn = options.connect().await?; let d = conn .describe("INSERT INTO tweet (id, text) VALUES (2, 'Hello')") diff --git a/tests/sqlite/sqlite.db b/tests/sqlite/sqlite.db index 0dddba468b1b51f0eaac33bd70121aad5cf1f4a5..ac649928f148842ec978077714c4e6a78b70629c 100644 GIT binary patch delta 105 zcmZozz|^pSX#{=-2o(`$G^G2e}V%5Kzt3U diff --git a/tests/sqlite/sqlite.rs b/tests/sqlite/sqlite.rs index 44bc9cd5..f38431f8 100644 --- a/tests/sqlite/sqlite.rs +++ b/tests/sqlite/sqlite.rs @@ -1,6 +1,7 @@ use futures::TryStreamExt; +use sqlx::sqlite::SqlitePoolOptions; use sqlx::{ - query, sqlite::Sqlite, sqlite::SqliteRow, Connect, Connection, Executor, Row, SqliteConnection, + query, sqlite::Sqlite, sqlite::SqliteRow, Connection, Executor, Row, SqliteConnection, SqlitePool, }; use sqlx_test::new; @@ -126,11 +127,11 @@ async fn it_fetches_in_loop() -> anyhow::Result<()> { #[sqlx_macros::test] async fn it_executes_with_pool() -> anyhow::Result<()> { - let pool: SqlitePool = SqlitePool::builder() + let pool: SqlitePool = SqlitePoolOptions::new(&dotenv::var("DATABASE_URL")?)? .min_connections(2) .max_connections(2) .test_before_acquire(false) - .build(&dotenv::var("DATABASE_URL")?) + .connect() .await?; let rows = pool.fetch_all("SELECT 1; SElECT 2").await?;