@@ -13,6 +13,7 @@ pub struct Settings {
1313 pub port : u16 ,
1414 pub debug : bool ,
1515 pub log_level : String ,
16+ pub upstream_http_timeout_secs : u64 ,
1617 pub access_log_file : String ,
1718 pub moderation_log_file : String ,
1819 pub training_log_file : String ,
@@ -47,6 +48,10 @@ impl Settings {
4748 . unwrap_or ( 8000 ) ,
4849 debug : parse_bool_env ( "DEBUG" , true ) ,
4950 log_level : env:: var ( "LOG_LEVEL" ) . unwrap_or_else ( |_| "INFO" . to_string ( ) ) ,
51+ upstream_http_timeout_secs : env:: var ( "UPSTREAM_HTTP_TIMEOUT_SECS" )
52+ . ok ( )
53+ . and_then ( |v| v. parse ( ) . ok ( ) )
54+ . unwrap_or ( 60 ) ,
5055 access_log_file : env:: var ( "ACCESS_LOG_FILE" )
5156 . unwrap_or_else ( |_| "logs/access.log" . to_string ( ) ) ,
5257 moderation_log_file : env:: var ( "MODERATION_LOG_FILE" )
@@ -108,12 +113,14 @@ mod tests {
108113 fn settings_default_training_rpc_uses_unix_socket ( ) {
109114 let _guard = env_test_lock ( ) . lock ( ) . expect ( "env test lock" ) ;
110115 let root_dir = PathBuf :: from ( "/tmp/prismguard-config-defaults" ) ;
116+ std:: env:: remove_var ( "UPSTREAM_HTTP_TIMEOUT_SECS" ) ;
111117 std:: env:: remove_var ( "TRAINING_DATA_RPC_ENABLED" ) ;
112118 std:: env:: remove_var ( "TRAINING_DATA_RPC_TRANSPORT" ) ;
113119 std:: env:: remove_var ( "TRAINING_DATA_RPC_UNIX_SOCKET" ) ;
114120
115121 let settings = Settings :: load ( & root_dir) . expect ( "load settings" ) ;
116122
123+ assert_eq ! ( settings. upstream_http_timeout_secs, 60 ) ;
117124 assert ! ( settings. training_data_rpc_enabled) ;
118125 assert_eq ! ( settings. training_data_rpc_transport, "unix" ) ;
119126 assert_eq ! (
@@ -126,16 +133,19 @@ mod tests {
126133 fn settings_can_override_training_rpc_env ( ) {
127134 let _guard = env_test_lock ( ) . lock ( ) . expect ( "env test lock" ) ;
128135 let root_dir = PathBuf :: from ( "/tmp/prismguard-config-overrides" ) ;
136+ std:: env:: set_var ( "UPSTREAM_HTTP_TIMEOUT_SECS" , "300" ) ;
129137 std:: env:: set_var ( "TRAINING_DATA_RPC_ENABLED" , "0" ) ;
130138 std:: env:: set_var ( "TRAINING_DATA_RPC_TRANSPORT" , "tcp" ) ;
131139 std:: env:: set_var ( "TRAINING_DATA_RPC_UNIX_SOCKET" , "/tmp/custom.sock" ) ;
132140
133141 let settings = Settings :: load ( & root_dir) . expect ( "load settings" ) ;
134142
143+ assert_eq ! ( settings. upstream_http_timeout_secs, 300 ) ;
135144 assert ! ( !settings. training_data_rpc_enabled) ;
136145 assert_eq ! ( settings. training_data_rpc_transport, "tcp" ) ;
137146 assert_eq ! ( settings. training_data_rpc_unix_socket, "/tmp/custom.sock" ) ;
138147
148+ std:: env:: remove_var ( "UPSTREAM_HTTP_TIMEOUT_SECS" ) ;
139149 std:: env:: remove_var ( "TRAINING_DATA_RPC_ENABLED" ) ;
140150 std:: env:: remove_var ( "TRAINING_DATA_RPC_TRANSPORT" ) ;
141151 std:: env:: remove_var ( "TRAINING_DATA_RPC_UNIX_SOCKET" ) ;
0 commit comments