11// Test script to verify OpenDAL storage configuration 
22use  std:: path:: Path ; 
33
4- fn  main ( )  { 
5-     println ! ( "Testing OpenDAL storage configuration..." ) ; 
6-     
4+ #[ test]  
5+ fn  test_storage_config_default ( )  { 
76    // Test default configuration 
87    let  default_config = atomic_lib:: StorageConfig :: default ( ) ; 
9-     println ! ( "Default config: {:?}" ,  default_config) ; 
108    assert_eq ! ( default_config. enabled_backends,  vec![ "sled" . to_string( ) ,  "dashmap" . to_string( ) ] ) ; 
119    assert_eq ! ( default_config. prefer_memory,  false ) ; 
12-     
10+     assert ! ( default_config. rocksdb_path. is_none( ) ) ; 
11+     assert ! ( default_config. redb_path. is_none( ) ) ; 
12+     assert ! ( default_config. fs_path. is_none( ) ) ; 
13+ } 
14+ 
15+ #[ test]  
16+ fn  test_storage_config_custom ( )  { 
1317    // Test custom configuration 
1418    let  custom_config = atomic_lib:: StorageConfig  { 
15-         enabled_backends :  vec ! [ "dashmap" . to_string( ) ,  "rocksdb " . to_string( ) ] , 
19+         enabled_backends :  vec ! [ "dashmap" . to_string( ) ,  "sled " . to_string( ) ] , 
1620        prefer_memory :  true , 
1721        rocksdb_path :  Some ( Path :: new ( "/tmp/rocksdb" ) . to_path_buf ( ) ) , 
22+         redb_path :  Some ( Path :: new ( "/tmp/redb" ) . to_path_buf ( ) ) , 
23+         fs_path :  Some ( Path :: new ( "/tmp/fs" ) . to_path_buf ( ) ) , 
24+     } ; 
25+     
26+     assert_eq ! ( custom_config. enabled_backends,  vec![ "dashmap" . to_string( ) ,  "sled" . to_string( ) ] ) ; 
27+     assert ! ( custom_config. prefer_memory) ; 
28+     assert_eq ! ( custom_config. rocksdb_path,  Some ( Path :: new( "/tmp/rocksdb" ) . to_path_buf( ) ) ) ; 
29+     assert_eq ! ( custom_config. redb_path,  Some ( Path :: new( "/tmp/redb" ) . to_path_buf( ) ) ) ; 
30+     assert_eq ! ( custom_config. fs_path,  Some ( Path :: new( "/tmp/fs" ) . to_path_buf( ) ) ) ; 
31+ } 
32+ 
33+ #[ test]  
34+ fn  test_db_init_with_custom_config ( )  { 
35+     // Test DB initialization with custom config 
36+     let  tmp_dir_path = ".temp/db/test_storage_config" ; 
37+     let  _try_remove_existing = std:: fs:: remove_dir_all ( & tmp_dir_path) ; 
38+     std:: fs:: create_dir_all ( & tmp_dir_path) . unwrap ( ) ; 
39+     
40+     let  custom_config = atomic_lib:: StorageConfig  { 
41+         enabled_backends :  vec ! [ "sled" . to_string( ) ,  "dashmap" . to_string( ) ] , 
42+         prefer_memory :  false , 
43+         rocksdb_path :  None , 
1844        redb_path :  None , 
1945        fs_path :  None , 
2046    } ; 
21-     println ! ( "Custom config: {:?}" ,  custom_config) ; 
2247
23-     // Test DB initialization with config 
24-     let  temp_dir = tempfile:: tempdir ( ) . unwrap ( ) ; 
2548    let  result = atomic_lib:: Db :: init_with_config ( 
26-         temp_dir . path ( ) , 
49+         Path :: new ( & tmp_dir_path ) , 
2750        "http://localhost" . to_string ( ) , 
2851        custom_config, 
2952    ) ; 
3053
31-     match  result { 
32-         Ok ( _)  => println ! ( "✓ DB initialized successfully with custom config" ) , 
33-         Err ( e)  => println ! ( "✗ Failed to initialize DB: {}" ,  e) , 
34-     } 
54+     assert ! ( result. is_ok( ) ,  "Failed to initialize DB with custom config: {:?}" ,  result. err( ) ) ; 
55+     
56+     // Clean up 
57+     let  _cleanup = std:: fs:: remove_dir_all ( & tmp_dir_path) ; 
58+ } 
59+ 
60+ #[ test]  
61+ fn  test_db_init_with_prefer_memory ( )  { 
62+     // Test DB initialization with prefer_memory option 
63+     let  tmp_dir_path = ".temp/db/test_storage_prefer_memory" ; 
64+     let  _try_remove_existing = std:: fs:: remove_dir_all ( & tmp_dir_path) ; 
65+     std:: fs:: create_dir_all ( & tmp_dir_path) . unwrap ( ) ; 
66+     
67+     let  memory_config = atomic_lib:: StorageConfig  { 
68+         enabled_backends :  vec ! [ "dashmap" . to_string( ) ,  "sled" . to_string( ) ] , 
69+         prefer_memory :  true , 
70+         rocksdb_path :  None , 
71+         redb_path :  None , 
72+         fs_path :  None , 
73+     } ; 
74+     
75+     let  result = atomic_lib:: Db :: init_with_config ( 
76+         Path :: new ( & tmp_dir_path) , 
77+         "http://localhost" . to_string ( ) , 
78+         memory_config, 
79+     ) ; 
80+     
81+     assert ! ( result. is_ok( ) ,  "Failed to initialize DB with prefer_memory config: {:?}" ,  result. err( ) ) ; 
3582
36-     println ! ( "All tests passed!" ) ; 
83+     // Clean up 
84+     let  _cleanup = std:: fs:: remove_dir_all ( & tmp_dir_path) ; 
3785} 
0 commit comments