qmp: add query-status API

So that caller can find out guest status via qmp.

Signed-off-by: Peng Tao <bergwolf@hyper.sh>
This commit is contained in:
Peng Tao
2019-08-13 02:06:46 -07:00
parent 234e0edfd7
commit 73555a409c
2 changed files with 54 additions and 0 deletions

View File

@@ -1623,3 +1623,30 @@ func TestQMPExecQueryQmpSchema(t *testing.T) {
q.Shutdown()
<-disconnectedCh
}
func TestQMPExecQueryQmpStatus(t *testing.T) {
connectedCh := make(chan *QMPVersion)
disconnectedCh := make(chan struct{})
buf := newQMPTestCommandBuffer(t)
statusInfo := StatusInfo{
Running: true,
SingleStep: false,
Status: "running",
}
buf.AddCommand("query-status", nil, "return", statusInfo)
cfg := QMPConfig{
Logger: qmpTestLogger{},
MaxCapacity: 1024,
}
q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh)
checkVersion(t, connectedCh)
info, err := q.ExecuteQueryStatus(context.Background())
if err != nil {
t.Fatalf("Unexpected error: %v\n", err)
}
if reflect.DeepEqual(info, statusInfo) == false {
t.Fatalf("Expected %v equals to %v\n", info, statusInfo)
}
q.Shutdown()
<-disconnectedCh
}