From db2b43dc73c3d83c5acacf4e8e6abac7d240a4c8 Mon Sep 17 00:00:00 2001 From: Stephanie You Date: Thu, 18 May 2023 15:29:30 -0700 Subject: [PATCH] finalize rust mysql client integration test --- integration-tests/MySQLDockerfile | 4 + .../mysql-client-tests.bats | 1 - .../mysql-client-tests/rust/Cargo.toml | 2 +- .../rust/src/mysql_connector_test.rs | 86 +++++++------------ 4 files changed, 34 insertions(+), 59 deletions(-) diff --git a/integration-tests/MySQLDockerfile b/integration-tests/MySQLDockerfile index ca677f0032..03fa8124b0 100644 --- a/integration-tests/MySQLDockerfile +++ b/integration-tests/MySQLDockerfile @@ -140,5 +140,9 @@ RUN go build -o /usr/local/bin/dolt ./cmd/dolt COPY mysql-client-tests /mysql-client-tests COPY mysql-client-tests/mysql-client-tests-entrypoint.sh /mysql-client-tests/entrypoint.sh +# install rust dependencies +WORKDIR /mysql-client-tests/rust +RUN cargo build --config net.git-fetch-with-cli=true + WORKDIR /mysql-client-tests ENTRYPOINT ["/mysql-client-tests/entrypoint.sh"] diff --git a/integration-tests/mysql-client-tests/mysql-client-tests.bats b/integration-tests/mysql-client-tests/mysql-client-tests.bats index 2f8826f777..a04ac973c1 100644 --- a/integration-tests/mysql-client-tests/mysql-client-tests.bats +++ b/integration-tests/mysql-client-tests/mysql-client-tests.bats @@ -164,7 +164,6 @@ EOF" -m "postgres" @test "rust mysql.connector client" { cd $BATS_TEST_DIRNAME/rust - cargo build cargo run --bin mysql_connector_test $USER $PORT $REPO_NAME } diff --git a/integration-tests/mysql-client-tests/rust/Cargo.toml b/integration-tests/mysql-client-tests/rust/Cargo.toml index 493e15e101..62e97638d6 100644 --- a/integration-tests/mysql-client-tests/rust/Cargo.toml +++ b/integration-tests/mysql-client-tests/rust/Cargo.toml @@ -2,7 +2,7 @@ name = "mysql_connector_test" version = "0.0.1" -# edition = "2018" +edition = "2018" [dependencies] mysql = "*" diff --git a/integration-tests/mysql-client-tests/rust/src/mysql_connector_test.rs b/integration-tests/mysql-client-tests/rust/src/mysql_connector_test.rs index b36464ed9b..8cecb9d40e 100644 --- a/integration-tests/mysql-client-tests/rust/src/mysql_connector_test.rs +++ b/integration-tests/mysql-client-tests/rust/src/mysql_connector_test.rs @@ -1,5 +1,5 @@ -//use mysql::*; -//use mysql::prelude::*; +use mysql::Row; +use mysql::prelude::*; use std::env; use std::process::exit; @@ -10,65 +10,37 @@ fn main() { let db = &args[3]; let url = format!("mysql://{}@127.0.0.1:{}/{}", user, port, db); - //let pool = Pool::new(url).unwrap(); - //let mut conn = pool.get_conn().unwrap(); - println!("USER: {}", user); - println!("PORT: {}", port); - println!("DB: {}", db); - println!("URL: {}", url); + let connection_opts = mysql::Opts::from_url(&url).unwrap(); + let pool = mysql::Pool::new(connection_opts).unwrap(); + let mut conn = pool.get_conn().unwrap(); - exit(0) -} + let queries: Vec<(&str, usize)> = [ + ("create table test (pk int, `value` int, primary key(pk))", 0), + ("describe test", 2), + ("insert into test (pk, `value`) values (0,0)", 0), + ("select * from test", 1), + ("call dolt_add('-A');", 1), + ("call dolt_commit('-m', 'my commit')", 1), + ("call dolt_checkout('-b', 'mybranch')", 1), + ("insert into test (pk, `value`) values (1,1)", 0), + ("call dolt_commit('-a', '-m', 'my commit2')", 1), + ("call dolt_checkout('main')", 1), + ("call dolt_merge('mybranch')", 1), + ("select COUNT(*) FROM dolt_log", 1) + ].to_vec(); -/* -use std::collections::HashMap; - - -// queries -const QUERY_RESPONSE: HashMap<&str, i32> = HashMap::from([ -("create table test (pk int, `value` int, primary key(pk))", 0), -("describe test", 3), -("insert into test (pk, `value`) values (0,0)", 1), -("select * from test", 1), -("call dolt_add('-A');", 1), -("call dolt_commit('-m', 'my commit')", 1), -("call dolt_checkout('-b', 'mybranch')", 1), -("insert into test (pk, `value`) values (1,1)", 1), -("call dolt_commit('-a', '-m', 'my commit2')", 1), -("call dolt_checkout('main')", 1), -("call dolt_merge('mybranch')", 1), -("select COUNT(*) FROM dolt_log", 1) -]); - -fn main() { - // get CL args - let args: Vec = env::args().collect(); - let user = &args[1]; - let port = &args[2]; - let db = &args[3]; - - // open connection - let client = HashMap::from([ - ("user", user), - ("host", "127.0.0.1"), - ("port", port), - ("db_name", db) - ]); - let mut builder = OptsBuilder::new().from_hash_map(client); - //let url = "mysql://" + user + "@localhost:127.0.0.1/" + db; - //let pool = Pool::new(url).unwrap(); - let mut conn = builder.get_conn().unwrap(); - - // for query in query_response...execute query - for (query, exp_result) in QUERY_RESPONSE.iter() { - let result = conn.query_map(query); - if result != exp_result { + for (query, expected) in queries.into_iter() { + let result = conn.query(query); + let response : Vec = result.expect("Error: bad response"); + println!("{:?}", response); + if response.len() != expected { + println!("LENGTH: {}", response.len()); println!("QUERY: {}", query); - println!("EXPECTED: {}", exp_result); - println!("RESULT: {}", result); + println!("EXPECTED: {}", expected); + println!("RESULT: {:?}", response); exit(1) } } - exit(0) -}*/ \ No newline at end of file + exit(0) +} \ No newline at end of file