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; }