File tree Expand file tree Collapse file tree 3 files changed +35
-1
lines changed
objectstore-service/src/backend Expand file tree Collapse file tree 3 files changed +35
-1
lines changed Original file line number Diff line number Diff line change @@ -149,6 +149,22 @@ def test_full_cycle_uncompressed(server_url: str) -> None:
149149 assert decompressed_data == data
150150
151151
152+ def test_full_cycle_structured_key (server_url : str ) -> None :
153+ client = Client (server_url )
154+ test_usecase = Usecase (
155+ "test-usecase" ,
156+ expiration_policy = TimeToLive (timedelta (days = 1 )),
157+ )
158+
159+ session = client .session (test_usecase , org = 42 , project = 1337 )
160+
161+ object_key = session .put (b"test data" , key = "1/shard-0.json" )
162+ assert object_key == "1/shard-0.json"
163+
164+ retrieved = session .get (object_key )
165+ assert retrieved .payload .read () == b"test data"
166+
167+
152168def test_connect_timeout () -> None :
153169 # this server accepts the connection
154170 # (even though the backlog is 0 and we never call `accept`),
Original file line number Diff line number Diff line change @@ -88,6 +88,24 @@ async fn stores_under_given_key() {
8888 assert_eq ! ( stored_id, "test-key123!!" ) ;
8989}
9090
91+ #[ tokio:: test]
92+ async fn stores_structured_keys ( ) {
93+ let server = TestServer :: new ( ) . await ;
94+
95+ let client = Client :: builder ( server. url ( "/" ) ) . build ( ) . unwrap ( ) ;
96+ let usecase = Usecase :: new ( "usecase" ) ;
97+ let session = client. session ( usecase. for_project ( 12345 , 1337 ) ) . unwrap ( ) ;
98+
99+ let body = "oh hai!" ;
100+ let request = session. put ( body) . key ( "1/shard-0.json" ) ;
101+ let stored_id = request. send ( ) . await . unwrap ( ) . key ;
102+ assert_eq ! ( stored_id, "1/shard-0.json" ) ;
103+
104+ let response = session. get ( & stored_id) . send ( ) . await . unwrap ( ) . unwrap ( ) ;
105+ let received = response. payload ( ) . await . unwrap ( ) ;
106+ assert_eq ! ( received, body) ;
107+ }
108+
91109#[ tokio:: test]
92110async fn overwrites_existing_key ( ) {
93111 let server = TestServer :: new ( ) . await ;
Original file line number Diff line number Diff line change @@ -37,8 +37,8 @@ impl Backend for LocalFsBackend {
3737 metadata : & Metadata ,
3838 stream : PayloadStream ,
3939 ) -> anyhow:: Result < ( ) > {
40- tracing:: debug!( "Writing to local_fs backend" ) ;
4140 let path = self . path . join ( id. as_storage_path ( ) . to_string ( ) ) ;
41+ tracing:: debug!( path=%path. display( ) , "Writing to local_fs backend" ) ;
4242 tokio:: fs:: create_dir_all ( path. parent ( ) . unwrap ( ) ) . await ?;
4343 let file = OpenOptions :: new ( )
4444 . create ( true )
You can’t perform that action at this time.
0 commit comments