On Tue, May 20, 2025 at 01:47:22PM -0700, Vishal Verma wrote:
> On Mon, 2025-05-19 at 12:28 -0700, alison.schofi...@intel.com wrote:
> > From: Alison Schofield <alison.schofi...@intel.com>
> > 
> > monitor.sh runs for 50 seconds and spends 48 of those seconds sleeping
> > after sync. It sleeps for 3 seconds each time it restarts the monitor,
> > and 3 seconds before checking for expected log entries.
> > 
> > Add a wait_for_logfile_update() helper that waits a max of 3 seconds
> > for an expected string to appear N times in the logfile using tail -F.
> > 
> > Add a "monitor ready" log message to the monitor executable and wait
> > for that message once after monitor start. Note that if no DIMM has an
> > event flag set, there will be no log entry at startup. Always look for
> > the "monitor ready" message.
> > 
> > Expand the check_result() function to handle both the sync and wait
> > that were previously duplicated in inject_smart() and call_notify().
> > It now waits for the expected N of new log entries.
> > 
> > Again, looking for Tested-by Tags. Thanks!
> > 
> > Signed-off-by: Alison Schofield <alison.schofi...@intel.com>
> 
> Tested-by: Vishal Verma <vishal.l.ve...@intel.com>
> Reviewed-by: Vishal Verma <vishal.l.ve...@intel.com>
> 
> > 
> <snip>
> > +
> > +   if ! timeout 3s tail -n +1 -F "$logfile" | grep -m "$expect_count" -q 
> > "$expect_string"; then
> > +           echo "logfile not updated in 3 secs"
> > +           err "$LINENO"
> > +   fi
> 
> I was tempted to say something about a `set -o pipefail` before this,
> and it might be nice to add one?
> 
> It's not needed here since the grep will fail if the first part of the
> pipeline fails, and there's no chance of the pipeline eating your error
> in this case.
> 
> But it might be good practice to do it for scenarios like
> if ! cmd1 | cmd2 ... etc.

I looked at pipeline and it seems like it's be
1: grep no match
124: timeout expired
125+: anything else

I'll experiment with it.

> 
> 
> 

Reply via email to