@@ -1050,3 +1050,70 @@ fn test_http_parse_proof_request_query() {
1050
1050
. get_with_proof ( ) ;
1051
1051
assert ! ( proof_req) ;
1052
1052
}
1053
+
1054
+ #[ test]
1055
+ fn test_metrics_identifiers ( ) {
1056
+ let convo = ConversationHttp :: new (
1057
+ "127.0.0.1:12345" . parse ( ) . unwrap ( ) ,
1058
+ None ,
1059
+ PeerHost :: DNS ( "localhost" . to_string ( ) , 12345 ) ,
1060
+ & ConnectionOptions :: default ( ) ,
1061
+ 100 ,
1062
+ 32 ,
1063
+ ) ;
1064
+
1065
+ let fixtures = vec ! [
1066
+ // Valid requests
1067
+ ( ( "GET" , "/v2/info" ) , ( "/v2/info" , true ) ) ,
1068
+ (
1069
+ ( "GET" , "/v2/info?param1=value¶m2=other_value" ) ,
1070
+ ( "/v2/info" , true ) ,
1071
+ ) ,
1072
+ (
1073
+ (
1074
+ "GET" ,
1075
+ "/v2/blocks/d8bd3c7e7cf7a9d783560a71356d3d9dbc84dc2f0c1a0001be8b141927c9d7ab" ,
1076
+ ) ,
1077
+ ( "/v2/blocks/:hash" , true ) ,
1078
+ ) ,
1079
+ // Invalid requests
1080
+ ( ( "POST" , "/v2/info" ) , ( "<err-handler-not-found>" , false ) ) ,
1081
+ ( ( "GET" , "!@#%&^$#!&^(@&+++" ) , ( "<err-url-decode>" , false ) ) ,
1082
+ (
1083
+ ( "GET" , "/some/nonexistent/endpoint" ) ,
1084
+ ( "<err-handler-not-found>" , false ) ,
1085
+ ) ,
1086
+ (
1087
+ (
1088
+ "GET" ,
1089
+ "/v2/blocks/dsviawevasigngawuqajauharpqjumzkalfuwgfkwpdhtbefgxkdhdfduskafdgh" ,
1090
+ ) ,
1091
+ ( "<err-handler-not-found>" , false ) ,
1092
+ ) ,
1093
+ ] ;
1094
+
1095
+ for ( input, output) in fixtures {
1096
+ // Destructure fixture data
1097
+ let ( verb, path_and_query_string) = input;
1098
+ let ( metrics_identifier_expected, should_have_hadler) = output;
1099
+
1100
+ // Create request from data
1101
+ let preamble = HttpRequestPreamble :: new (
1102
+ HttpVersion :: Http11 ,
1103
+ verb. to_string ( ) ,
1104
+ path_and_query_string. to_string ( ) ,
1105
+ "localhost" . to_string ( ) ,
1106
+ 12345 ,
1107
+ true ,
1108
+ ) ;
1109
+
1110
+ let mut request = StacksHttpRequest :: new ( preamble, HttpRequestContents :: new ( ) ) ;
1111
+
1112
+ let metrics_identifier = convo. metrics_identifier ( & mut request) ;
1113
+ let response_handler_index = request. get_response_handler_index ( ) ;
1114
+
1115
+ // Check that we get expected metrics identifier and request handler
1116
+ assert_eq ! ( metrics_identifier, metrics_identifier_expected) ;
1117
+ assert_eq ! ( response_handler_index. is_some( ) , should_have_hadler) ;
1118
+ }
1119
+ }
0 commit comments