mirror of
https://github.com/fluencelabs/sqlite-wasm-connector
synced 2025-03-15 06:20:50 +00:00
Add a stress test
This commit is contained in:
parent
10d99dadce
commit
9bd6db2ab5
30
tests/lib.rs
30
tests/lib.rs
@ -2,6 +2,7 @@ extern crate sqlite;
|
||||
extern crate temporary;
|
||||
|
||||
use std::path::PathBuf;
|
||||
use std::thread;
|
||||
use temporary::Directory;
|
||||
|
||||
macro_rules! ok(
|
||||
@ -55,6 +56,35 @@ fn workflow() {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn stress() {
|
||||
use sqlite::Binding::*;
|
||||
use sqlite::State;
|
||||
|
||||
let (path, _directory) = setup();
|
||||
|
||||
let database = ok!(sqlite::open(&path));
|
||||
let sql = r#"CREATE TABLE `users` (id INTEGER, name VARCHAR(255), age REAL);"#;
|
||||
ok!(database.execute(sql));
|
||||
|
||||
let guards = (0..100).map(|_| {
|
||||
let path = PathBuf::from(&path);
|
||||
thread::spawn(move || {
|
||||
let mut database = ok!(sqlite::open(&path));
|
||||
ok!(database.set_busy_handler(|_| true));
|
||||
let sql = r#"INSERT INTO `users` (id, name, age) VALUES (?, ?, ?);"#;
|
||||
let mut statement = ok!(database.prepare(sql));
|
||||
ok!(statement.bind(&[Integer(1, 1), Text(2, "Alice"), Float(3, 20.99)]));
|
||||
assert!(ok!(statement.step()) == State::Done);
|
||||
true
|
||||
})
|
||||
}).collect::<Vec<_>>();
|
||||
|
||||
for guard in guards {
|
||||
assert!(guard.join().unwrap());
|
||||
}
|
||||
}
|
||||
|
||||
fn setup() -> (PathBuf, Directory) {
|
||||
let directory = ok!(Directory::new("sqlite"));
|
||||
(directory.path().join("database.sqlite3"), directory)
|
||||
|
Loading…
x
Reference in New Issue
Block a user