11#[ cfg( feature = "integration-test" ) ]
22mod test {
33 use bytes:: { Buf , BufMut , BytesMut } ;
4+ use chrono:: { Datelike , Utc } ;
45 use hdfs_native:: {
56 minidfs:: { DfsFeatures , MiniDfs } ,
67 Client , WriteOptions ,
@@ -16,7 +17,7 @@ mod test {
1617 #[ serial]
1718 async fn test_object_store ( ) -> object_store:: Result < ( ) > {
1819 let dfs = MiniDfs :: with_features ( & HashSet :: from ( [ DfsFeatures :: HA ] ) ) ;
19- let client = Client :: new ( & dfs. url ) . to_object_store_err ( ) ?;
20+ let client = Arc :: new ( Client :: new ( & dfs. url ) . to_object_store_err ( ) ?) ;
2021
2122 // Create a test file with the client directly to sanity check reads and lists
2223 let mut file = client
@@ -32,9 +33,9 @@ mod test {
3233
3334 client. mkdirs ( "/testdir" , 0o755 , true ) . await . unwrap ( ) ;
3435
35- let store = HdfsObjectStore :: new ( Arc :: new ( client) ) ;
36+ let store = HdfsObjectStore :: new ( Arc :: clone ( & client) ) ;
3637
37- test_object_store_head ( & store) . await ?;
38+ test_object_store_head ( & store, & client ) . await ?;
3839 test_object_store_list ( & store) . await ?;
3940 test_object_store_rename ( & store) . await ?;
4041 test_object_store_read ( & store) . await ?;
@@ -45,12 +46,22 @@ mod test {
4546 Ok ( ( ) )
4647 }
4748
48- async fn test_object_store_head ( store : & HdfsObjectStore ) -> object_store:: Result < ( ) > {
49+ async fn test_object_store_head (
50+ store : & HdfsObjectStore ,
51+ client : & Arc < Client > ,
52+ ) -> object_store:: Result < ( ) > {
4953 use object_store:: { path:: Path , ObjectStore } ;
5054
55+ let status = client. get_file_info ( "/testfile" ) . await . unwrap ( ) ;
56+
5157 let head = store. head ( & Path :: from ( "/testfile" ) ) . await ?;
5258 assert_eq ! ( head. location, Path :: from( "/testfile" ) ) ;
5359 assert_eq ! ( head. size, TEST_FILE_INTS * 4 ) ;
60+ assert_eq ! (
61+ head. last_modified. timestamp_millis( ) ,
62+ status. modification_time as i64
63+ ) ;
64+ assert_eq ! ( head. last_modified. year( ) , Utc :: now( ) . year( ) ) ;
5465
5566 assert ! ( store. head( & Path :: from( "/testfile2" ) ) . await . is_err( ) ) ;
5667 assert ! ( store. head( & Path :: from( "/testdir" ) ) . await . is_err( ) ) ;
0 commit comments