mirror of
https://github.com/fluencelabs/sqlite-wasm-connector
synced 2025-06-13 07:21:22 +00:00
Add a stress test
This commit is contained in:
30
tests/lib.rs
30
tests/lib.rs
@ -2,6 +2,7 @@ extern crate sqlite;
|
|||||||
extern crate temporary;
|
extern crate temporary;
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
use std::thread;
|
||||||
use temporary::Directory;
|
use temporary::Directory;
|
||||||
|
|
||||||
macro_rules! ok(
|
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) {
|
fn setup() -> (PathBuf, Directory) {
|
||||||
let directory = ok!(Directory::new("sqlite"));
|
let directory = ok!(Directory::new("sqlite"));
|
||||||
(directory.path().join("database.sqlite3"), directory)
|
(directory.path().join("database.sqlite3"), directory)
|
||||||
|
Reference in New Issue
Block a user