On 2/22/22 11:31, Daniel P. Berrangé wrote:
On Tue, Feb 22, 2022 at 10:38:09AM +0100, Damien Hedde wrote:
Here I just wanted to propose a simple way to just send a
bunch of commands from a source file and stop if something unexpected
happens.
Only goal is to be able to share a file on the ml and allow people to
reproduce easily.
We can already redirect the input, but it is almost impossible to see
if something failed.
Yes, I see what you mean. So the problem with using 'socat' or similar
is that we fill the input with commands and response appear asynchronously,
so we can't match them up easily. This is actually a problem seen in the
block I/O tests which just send QMP stuff in a batch.
While you could do this by invoking socat once for each command, that
gets silly with the repeated QMP handshake for each command.
The thing about using qmp-shell is that it does a bunch of extra stuff
targetted at humans on top, and history tells us it isn't a good idea
to mix stuff for humans and machines in the same tool/interface.
How about instead creating a separate 'qmp-send' command that is not
much more than a "QMP-aware socat". By which I mean, it just reads
raw QMP commands from stdin, sends each one to the server, but
crucially waits for a reply after sending each, and stops on first
error reponse.
By 'qmp-send' command, you mean another script in scripts/qmp ?
Yes
If we go for another script, I would rather do one with wrap
feature (like your series) to start qemu as well.
--
Damien