ding-young commented on code in PR #16145:
URL: https://github.com/apache/datafusion/pull/16145#discussion_r2102370272


##########
datafusion/execution/src/memory_pool/pool.rs:
##########
@@ -586,42 +577,28 @@ mod tests {
         let mut r1 = new_consumer_same_name.register(&pool);
         // TODO: the insufficient_capacity_err() message is per reservation, 
not per consumer.
         // a followup PR will clarify this message "0 bytes already allocated 
for this reservation"
-        let expected = format!("Additional allocation failed with top memory 
consumers (across reservations) as:\n  foo#{}(can spill: false) consumed 10.0 
B,\n  foo#{}(can spill: false) consumed 0.0 B.\nError: Failed to allocate 
additional 150.0 B for foo with 0.0 B already allocated for this reservation - 
90.0 B remain available for the total pool", r0.consumer().id(), 
r1.consumer().id());
         let res = r1.try_grow(150);
-        assert!(
-            matches!(
-                &res,
-                Err(DataFusionError::ResourcesExhausted(ref e)) if 
e.to_string().contains(&expected)
-            ),
-            "should provide proper error for 2 consumers, instead found 
{res:?}"
-        );
+        assert!(res.is_err());
+        let error = res.unwrap_err();
+        assert_snapshot!(error.to_string(), @"Resources exhausted: Additional 
allocation failed with top memory consumers (across reservations) as: foo#0(can 
spill: false) consumed 10 bytes, foo#1(can spill: false) consumed 0 bytes. 
Error: Failed to allocate additional 150 bytes for foo with 0 bytes already 
allocated for this reservation - 90 bytes remain available for the total pool");
 
         // Test: will accumulate size changes per consumer, not per reservation
         r1.grow(20);
-        let expected = format!("Additional allocation failed with top memory 
consumers (across reservations) as:\n  foo#{}(can spill: false) consumed 20.0 
B,\n  foo#{}(can spill: false) consumed 10.0 B.\nError: Failed to allocate 
additional 150.0 B for foo with 20.0 B already allocated for this reservation - 
70.0 B remain available for the total pool", r1.consumer().id(), 
r0.consumer().id());
+
         let res = r1.try_grow(150);
-        assert!(
-            matches!(
-                &res,
-                Err(DataFusionError::ResourcesExhausted(ref e)) if 
e.to_string().contains(&expected)
-            ),
-            "should provide proper error for 2 consumers(one foo=20.0 B, 
another foo=10.0 B, available=70.0 B), instead found {res:?}"
-        );
+        assert!(res.is_err());
+        let error = res.unwrap_err();
+        assert_snapshot!(error.to_string(), @"Resources exhausted: Additional 
allocation failed with top memory consumers (across reservations) as: foo#1(can 
spill: false) consumed 20 bytes, foo#0(can spill: false) consumed 10 bytes. 
Error: Failed to allocate additional 150 bytes for foo with 20 bytes already 
allocated for this reservation - 70 bytes remain available for the total pool");
 
         // Test: different hashed consumer, (even with the same name),
         // will be recognized as different in the TrackConsumersPool
         let consumer_with_same_name_but_different_hash =
             MemoryConsumer::new(same_name).with_can_spill(true);
         let mut r2 = 
consumer_with_same_name_but_different_hash.register(&pool);
-        let expected = format!("Additional allocation failed with top memory 
consumers (across reservations) as:\n  foo#{}(can spill: false) consumed 20.0 
B,\n  foo#{}(can spill: false) consumed 10.0 B,\n  foo#{}(can spill: true) 
consumed 0.0 B.\nError: Failed to allocate additional 150.0 B for foo with 0.0 
B already allocated for this reservation - 70.0 B remain available for the 
total pool", r1.consumer().id(), r0.consumer().id(), r2.consumer().id());

Review Comment:
   For filtering some variable values in err message, you can also take a look 
at below :)
   
https://github.com/apache/datafusion/blob/67a21731ff43f1d3895b285ae6da53c1e8963142/datafusion-cli/tests/cli_integration.rs#L138-L141



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to