36 lines
1.3 KiB
Rust
36 lines
1.3 KiB
Rust
use aster_storage::{Storage, StorageConfig};
|
|
|
|
/// Run explicitly against a disposable database; never silently skip a missing URL.
|
|
#[tokio::test]
|
|
#[ignore = "requires ASTER_TEST_POSTGRES_URL pointing to a test PostgreSQL database"]
|
|
async fn postgres_roundtrip_and_reconnect() {
|
|
let url = std::env::var("ASTER_TEST_POSTGRES_URL")
|
|
.expect("set ASTER_TEST_POSTGRES_URL to a disposable PostgreSQL database");
|
|
let config = StorageConfig::from_values(Some(&url), None).unwrap();
|
|
let store = Storage::connect(&config).await.unwrap();
|
|
assert_eq!(store.backend_name(), "postgresql");
|
|
store.ping().await.unwrap();
|
|
let key = format!(
|
|
"test.{}.{}",
|
|
std::process::id(),
|
|
std::time::SystemTime::now()
|
|
.duration_since(std::time::UNIX_EPOCH)
|
|
.unwrap()
|
|
.as_nanos()
|
|
);
|
|
assert_eq!(store.get(&key).await.unwrap(), None);
|
|
store.put(&key, "你好 ' ; $1").await.unwrap();
|
|
assert_eq!(
|
|
store.get(&key).await.unwrap().as_deref(),
|
|
Some("你好 ' ; $1")
|
|
);
|
|
store.put(&key, "updated").await.unwrap();
|
|
store.close().await;
|
|
let reopened = Storage::connect(&config).await.unwrap();
|
|
assert_eq!(
|
|
reopened.get(&key).await.unwrap().as_deref(),
|
|
Some("updated")
|
|
);
|
|
reopened.close().await;
|
|
}
|