Skip to content

Commit 488c44c

Browse files
committed
test: Add unit test for metrics_identifier()
1 parent 234e2c1 commit 488c44c

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

stackslib/src/net/httpcore.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,11 @@ impl StacksHttpRequest {
552552
self.send(&mut ret)?;
553553
Ok(ret)
554554
}
555+
556+
#[cfg(test)]
557+
pub fn get_response_handler_index(&self) -> Option<usize> {
558+
self.response_handler_index
559+
}
555560
}
556561

557562
/// A received HTTP response (fully decoded in RAM)

stackslib/src/net/tests/httpcore.rs

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,3 +1050,70 @@ fn test_http_parse_proof_request_query() {
10501050
.get_with_proof();
10511051
assert!(proof_req);
10521052
}
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&param2=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

Comments
 (0)