-
Notifications
You must be signed in to change notification settings - Fork 0
Type preamble handler test cases and stabilise runtime readiness #301
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
6fcc9e2
0647347
8a22dff
0030b19
040e81e
b3c9173
2556709
7ce783a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -16,14 +16,24 @@ use std::{ | |||||||||||||||||||||||||||||||||||||||||||||||
| use rstest::rstest; | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| use super::*; | ||||||||||||||||||||||||||||||||||||||||||||||||
| use crate::server::test_util::{ | ||||||||||||||||||||||||||||||||||||||||||||||||
| TestPreamble, | ||||||||||||||||||||||||||||||||||||||||||||||||
| bind_server, | ||||||||||||||||||||||||||||||||||||||||||||||||
| factory, | ||||||||||||||||||||||||||||||||||||||||||||||||
| free_listener, | ||||||||||||||||||||||||||||||||||||||||||||||||
| listener_addr, | ||||||||||||||||||||||||||||||||||||||||||||||||
| server_with_preamble, | ||||||||||||||||||||||||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||||||||||||||||||||||||
| use bincode::error::DecodeError; | ||||||||||||||||||||||||||||||||||||||||||||||||
| use crate::server::{ | ||||||||||||||||||||||||||||||||||||||||||||||||
| test_util::{ | ||||||||||||||||||||||||||||||||||||||||||||||||
| TestPreamble, | ||||||||||||||||||||||||||||||||||||||||||||||||
| bind_server, | ||||||||||||||||||||||||||||||||||||||||||||||||
| factory, | ||||||||||||||||||||||||||||||||||||||||||||||||
| free_listener, | ||||||||||||||||||||||||||||||||||||||||||||||||
| listener_addr, | ||||||||||||||||||||||||||||||||||||||||||||||||
| server_with_preamble, | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| BackoffConfig, | ||||||||||||||||||||||||||||||||||||||||||||||||
| use tokio::net::{TcpListener, TcpStream}; | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+20
to
+31
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix syntax error: close the grouped use import. The grouped import starting at Line 20 is not closed, causing a compile error. Terminate the block before the next use. use crate::server::{
test_util::{
TestPreamble,
bind_server,
factory,
free_listener,
listener_addr,
server_with_preamble,
},
- BackoffConfig,
- use tokio::net::{TcpListener, TcpStream};
+ BackoffConfig,
+};
+use tokio::net::{TcpListener, TcpStream};📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents
Owner
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @coderabbitai new GitHub issue, please
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chainI'll create a GitHub issue for the syntax error in the grouped use import. @leynos I've created a GitHub issue for the syntax error in the grouped use import. The issue has been assigned to you and includes the details of the problem along with the expected fix. 🏁 Script executed: Length of output: 1013 @leynos Perfect! I've successfully created GitHub issue #312 for the syntax error in the grouped use import. The issue has been assigned to you and includes:
The issue is now ready for you to address when convenient. 🧬 Code Graph Analysis Results
|
||||||||||||||||||||||||||||||||||||||||||||||||
| #[derive(Clone, Copy, Debug, PartialEq, Eq)] | ||||||||||||||||||||||||||||||||||||||||||||||||
| enum PreambleHandlerKind { | ||||||||||||||||||||||||||||||||||||||||||||||||
| Success, | ||||||||||||||||||||||||||||||||||||||||||||||||
| Failure, | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| fn expected_default_worker_count() -> usize { | ||||||||||||||||||||||||||||||||||||||||||||||||
| // Mirror the default worker logic to keep tests aligned with `WireframeServer::new`. | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -96,37 +106,61 @@ async fn test_local_addr_after_bind( | |||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| #[rstest] | ||||||||||||||||||||||||||||||||||||||||||||||||
| #[case("success")] | ||||||||||||||||||||||||||||||||||||||||||||||||
| #[case("failure")] | ||||||||||||||||||||||||||||||||||||||||||||||||
| #[case::success(PreambleHandlerKind::Success)] | ||||||||||||||||||||||||||||||||||||||||||||||||
| #[case::failure(PreambleHandlerKind::Failure)] | ||||||||||||||||||||||||||||||||||||||||||||||||
| #[tokio::test] | ||||||||||||||||||||||||||||||||||||||||||||||||
| async fn test_preamble_handler_registration( | ||||||||||||||||||||||||||||||||||||||||||||||||
| factory: impl Fn() -> WireframeApp + Send + Sync + Clone + 'static, | ||||||||||||||||||||||||||||||||||||||||||||||||
| #[case] handler_type: &str, | ||||||||||||||||||||||||||||||||||||||||||||||||
| #[case] handler: PreambleHandlerKind, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let counter = Arc::new(AtomicUsize::new(0)); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let c = counter.clone(); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| let server = server_with_preamble(factory); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = match handler_type { | ||||||||||||||||||||||||||||||||||||||||||||||||
| "success" => server.on_preamble_decode_success(move |_p: &TestPreamble, _| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = match handler { | ||||||||||||||||||||||||||||||||||||||||||||||||
| PreambleHandlerKind::Success => server.on_preamble_decode_success(move |_p: &TestPreamble, _| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let c = c.clone(); | ||||||||||||||||||||||||||||||||||||||||||||||||
| Box::pin(async move { | ||||||||||||||||||||||||||||||||||||||||||||||||
| c.fetch_add(1, Ordering::SeqCst); | ||||||||||||||||||||||||||||||||||||||||||||||||
| Ok(()) | ||||||||||||||||||||||||||||||||||||||||||||||||
| }) | ||||||||||||||||||||||||||||||||||||||||||||||||
| }), | ||||||||||||||||||||||||||||||||||||||||||||||||
| "failure" => server.on_preamble_decode_failure(move |_err: &DecodeError| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| PreambleHandlerKind::Failure => server.on_preamble_decode_failure(move |_err: &DecodeError| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| c.fetch_add(1, Ordering::SeqCst); | ||||||||||||||||||||||||||||||||||||||||||||||||
| }), | ||||||||||||||||||||||||||||||||||||||||||||||||
| _ => panic!("Invalid handler type"), | ||||||||||||||||||||||||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(counter.load(Ordering::SeqCst), 0); | ||||||||||||||||||||||||||||||||||||||||||||||||
| match handler_type { | ||||||||||||||||||||||||||||||||||||||||||||||||
| "success" => assert!(server.on_preamble_success.is_some()), | ||||||||||||||||||||||||||||||||||||||||||||||||
| "failure" => assert!(server.on_preamble_failure.is_some()), | ||||||||||||||||||||||||||||||||||||||||||||||||
| _ => unreachable!(), | ||||||||||||||||||||||||||||||||||||||||||||||||
| match handler { | ||||||||||||||||||||||||||||||||||||||||||||||||
|
leynos marked this conversation as resolved.
|
||||||||||||||||||||||||||||||||||||||||||||||||
| PreambleHandlerKind::Success => { | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert!(server.on_preamble_success.is_some()); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let handler = server | ||||||||||||||||||||||||||||||||||||||||||||||||
| .on_preamble_success | ||||||||||||||||||||||||||||||||||||||||||||||||
| .as_ref() | ||||||||||||||||||||||||||||||||||||||||||||||||
| .expect("success handler missing"); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let listener = TcpListener::bind("127.0.0.1:0") | ||||||||||||||||||||||||||||||||||||||||||||||||
| .await | ||||||||||||||||||||||||||||||||||||||||||||||||
| .expect("bind listener"); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let addr = listener.local_addr().expect("listener addr"); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let _client = TcpStream::connect(addr) | ||||||||||||||||||||||||||||||||||||||||||||||||
| .await | ||||||||||||||||||||||||||||||||||||||||||||||||
| .expect("client connect failed"); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let (mut stream, _) = listener.accept().await.expect("accept stream"); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let preamble = TestPreamble { id: 0, message: String::new() }; | ||||||||||||||||||||||||||||||||||||||||||||||||
| handler(&preamble, &mut stream) | ||||||||||||||||||||||||||||||||||||||||||||||||
| .await | ||||||||||||||||||||||||||||||||||||||||||||||||
| .expect("handler failed"); | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
| PreambleHandlerKind::Failure => { | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert!(server.on_preamble_failure.is_some()); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let handler = server | ||||||||||||||||||||||||||||||||||||||||||||||||
| .on_preamble_failure | ||||||||||||||||||||||||||||||||||||||||||||||||
| .as_ref() | ||||||||||||||||||||||||||||||||||||||||||||||||
| .expect("failure handler missing"); | ||||||||||||||||||||||||||||||||||||||||||||||||
| handler(&DecodeError::UnexpectedEnd); | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(counter.load(Ordering::SeqCst), 1); | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| #[rstest] | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -204,11 +238,12 @@ async fn test_bind_to_multiple_addresses( | |||||||||||||||||||||||||||||||||||||||||||||||
| fn test_accept_backoff_configuration( | ||||||||||||||||||||||||||||||||||||||||||||||||
| factory: impl Fn() -> WireframeApp + Send + Sync + Clone + 'static, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let initial = Duration::from_millis(5); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let max = Duration::from_millis(500); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_backoff(initial, max); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.initial_delay, initial); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.max_delay, max); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let cfg = BackoffConfig { | ||||||||||||||||||||||||||||||||||||||||||||||||
| initial_delay: Duration::from_millis(5), | ||||||||||||||||||||||||||||||||||||||||||||||||
| max_delay: Duration::from_millis(500), | ||||||||||||||||||||||||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_backoff(cfg); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config, cfg); | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| /// Behaviour test verifying exponential delay doubling and capping. | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -264,7 +299,8 @@ fn test_accept_initial_delay_configuration( | |||||||||||||||||||||||||||||||||||||||||||||||
| factory: impl Fn() -> WireframeApp + Send + Sync + Clone + 'static, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let delay = Duration::from_millis(20); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_initial_delay(delay); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let cfg = BackoffConfig { initial_delay: delay, ..BackoffConfig::default() }; | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_backoff(cfg); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.initial_delay, delay); | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -273,21 +309,29 @@ fn test_accept_max_delay_configuration( | |||||||||||||||||||||||||||||||||||||||||||||||
| factory: impl Fn() -> WireframeApp + Send + Sync + Clone + 'static, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let delay = Duration::from_millis(2000); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_max_delay(delay); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let cfg = BackoffConfig { max_delay: delay, ..BackoffConfig::default() }; | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_backoff(cfg); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.max_delay, delay); | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| #[rstest] | ||||||||||||||||||||||||||||||||||||||||||||||||
| fn test_backoff_validation(factory: impl Fn() -> WireframeApp + Send + Sync + Clone + 'static) { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory.clone()).accept_initial_delay(Duration::ZERO); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory.clone()) | ||||||||||||||||||||||||||||||||||||||||||||||||
| .accept_backoff(BackoffConfig { initial_delay: Duration::ZERO, ..BackoffConfig::default() }); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!( | ||||||||||||||||||||||||||||||||||||||||||||||||
| server.backoff_config.initial_delay, | ||||||||||||||||||||||||||||||||||||||||||||||||
| Duration::from_millis(1) | ||||||||||||||||||||||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory) | ||||||||||||||||||||||||||||||||||||||||||||||||
| .accept_initial_delay(Duration::from_millis(100)) | ||||||||||||||||||||||||||||||||||||||||||||||||
| .accept_max_delay(Duration::from_millis(50)); | ||||||||||||||||||||||||||||||||||||||||||||||||
| .accept_backoff(BackoffConfig { | ||||||||||||||||||||||||||||||||||||||||||||||||
| initial_delay: Duration::from_millis(100), | ||||||||||||||||||||||||||||||||||||||||||||||||
| max_delay: Duration::from_millis(50), | ||||||||||||||||||||||||||||||||||||||||||||||||
| }); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!( | ||||||||||||||||||||||||||||||||||||||||||||||||
| server.backoff_config.initial_delay, | ||||||||||||||||||||||||||||||||||||||||||||||||
| Duration::from_millis(50) | ||||||||||||||||||||||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.max_delay, Duration::from_millis(100)); | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -305,24 +349,33 @@ fn test_backoff_default_values(factory: impl Fn() -> WireframeApp + Send + Sync | |||||||||||||||||||||||||||||||||||||||||||||||
| fn test_initial_delay_exceeds_default_max( | ||||||||||||||||||||||||||||||||||||||||||||||||
| factory: impl Fn() -> WireframeApp + Send + Sync + Clone + 'static, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_initial_delay(Duration::from_secs(2)); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.initial_delay, Duration::from_secs(2)); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let cfg = BackoffConfig { | ||||||||||||||||||||||||||||||||||||||||||||||||
| initial_delay: Duration::from_secs(2), | ||||||||||||||||||||||||||||||||||||||||||||||||
| max_delay: Duration::from_secs(1), | ||||||||||||||||||||||||||||||||||||||||||||||||
| }; | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_backoff(cfg); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.initial_delay, Duration::from_secs(1)); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.max_delay, Duration::from_secs(2)); | ||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| #[rstest] | ||||||||||||||||||||||||||||||||||||||||||||||||
| fn test_accept_backoff_parameter_swapping( | ||||||||||||||||||||||||||||||||||||||||||||||||
| factory: impl Fn() -> WireframeApp + Send + Sync + Clone + 'static, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory.clone()) | ||||||||||||||||||||||||||||||||||||||||||||||||
| .accept_backoff(Duration::from_millis(5), Duration::from_millis(1)); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory.clone()).accept_backoff(BackoffConfig { | ||||||||||||||||||||||||||||||||||||||||||||||||
| initial_delay: Duration::from_millis(5), | ||||||||||||||||||||||||||||||||||||||||||||||||
| max_delay: Duration::from_millis(1), | ||||||||||||||||||||||||||||||||||||||||||||||||
| }); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!( | ||||||||||||||||||||||||||||||||||||||||||||||||
| server.backoff_config.initial_delay, | ||||||||||||||||||||||||||||||||||||||||||||||||
| Duration::from_millis(1) | ||||||||||||||||||||||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!(server.backoff_config.max_delay, Duration::from_millis(5)); | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_backoff(Duration::ZERO, Duration::ZERO); | ||||||||||||||||||||||||||||||||||||||||||||||||
| let server = WireframeServer::new(factory).accept_backoff(BackoffConfig { | ||||||||||||||||||||||||||||||||||||||||||||||||
| initial_delay: Duration::ZERO, | ||||||||||||||||||||||||||||||||||||||||||||||||
| max_delay: Duration::ZERO, | ||||||||||||||||||||||||||||||||||||||||||||||||
| }); | ||||||||||||||||||||||||||||||||||||||||||||||||
| assert_eq!( | ||||||||||||||||||||||||||||||||||||||||||||||||
| server.backoff_config.initial_delay, | ||||||||||||||||||||||||||||||||||||||||||||||||
| Duration::from_millis(1) | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick (assertive)
Use -ize spelling per en-GB-oxendict style.
Adopt -ize spelling in prose while keeping the method name as-is.
📝 Committable suggestion
🧰 Tools
🪛 LanguageTool
[style] ~24-~24: Would you like to use the Oxford spelling “normalizes”? The spelling ‘normalises’ is also correct.
Context: ...ng a
BackoffConfigvalue. The builder normalises the supplied configuration via `Backoff...(OXFORD_SPELLING_Z_NOT_S)
[style] ~24-~24: Would you like to use the Oxford spelling “normalized”? The spelling ‘normalised’ is also correct.
Context: ...rmalises the supplied configuration via
BackoffConfig::normalised, so out-of-range values are adjusted r...(OXFORD_SPELLING_Z_NOT_S)
🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@coderabbitai new GitHub issue, please
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
@leynos I'll create a GitHub issue to track the spelling consistency fix.
🏁 Script executed:
Length of output: 822
Perfect! I've created GitHub issue #313 to track the spelling consistency fix. The issue documents the need to change "normalises" to "normalizes" in the documentation prose while keeping the method name
BackoffConfig::normalisedunchanged.The issue has been assigned to you and includes all the relevant context and references to this PR discussion.