@@ -56,14 +56,36 @@ public void malformedSuccessfulDetailsThrow() {
5656 new InstanceReadinessCheckAnswer (cmd (), true , "out&&err" ).getExecutionDetails ();
5757 }
5858
59+ @ Test (expected = CloudRuntimeException .class )
60+ public void malformedFailedDetailsThrow () {
61+ new InstanceReadinessCheckAnswer (cmd (), false , "out&&err" ).getExecutionDetails ();
62+ }
63+
64+ @ Test
65+ public void failedResultIsStillParsedWhenWellFormed () {
66+ // executeInVR (and the VR script) typically reports result=false whenever the underlying
67+ // check (ping unreachable, port closed) exits non-zero, even though it still printed a
68+ // well-formed "stdout&&stderr&&exitcode" triple. The non-zero exit code must not be
69+ // discarded in favor of a generic -1/raw-blob fallback.
70+ InstanceReadinessCheckAnswer answer = new InstanceReadinessCheckAnswer (cmd (), false , "out&&unreachable&&1" );
71+
72+ Map <String , String > details = answer .getExecutionDetails ();
73+
74+ Assert .assertEquals ("out" , details .get (InstanceReadinessCheckAnswer .STDOUT ));
75+ Assert .assertEquals ("unreachable" , details .get (InstanceReadinessCheckAnswer .STDERR ));
76+ Assert .assertEquals ("1" , details .get (InstanceReadinessCheckAnswer .EXITCODE ));
77+ }
78+
5979 @ Test
60- public void failedResultIsNotParsedEvenIfWellFormed () {
61- InstanceReadinessCheckAnswer answer = new InstanceReadinessCheckAnswer (cmd (), false , "out&&err&&0" );
80+ public void failedResultWithoutDelimiterFallsBackToDefaults () {
81+ // A dispatch-level failure (e.g. an exception message) never contains the delimiter and
82+ // must still fall back to the raw-message/-1 defaults rather than throwing.
83+ InstanceReadinessCheckAnswer answer = new InstanceReadinessCheckAnswer (cmd (), false , "agent down" );
6284
6385 Map <String , String > details = answer .getExecutionDetails ();
6486
6587 Assert .assertEquals ("" , details .get (InstanceReadinessCheckAnswer .STDOUT ));
66- Assert .assertEquals ("out&&err&&0 " , details .get (InstanceReadinessCheckAnswer .STDERR ));
88+ Assert .assertEquals ("agent down " , details .get (InstanceReadinessCheckAnswer .STDERR ));
6789 Assert .assertEquals ("-1" , details .get (InstanceReadinessCheckAnswer .EXITCODE ));
6890 }
6991
0 commit comments