mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-27 11:01:19 +00:00
qemumonitorjsontest: Refactor chardev hotplug testing
The main objective of this patch is to use a proper instance of virDomainChrSourceDef allocated with the private data. To achieve this the test cases are grouped into blocks by how much they fill in the chardev definition. Some test cases are moved around so that the resulting sequence doesn't need extra clearing. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
e6f837f611
commit
128f5c3383
@ -679,51 +679,67 @@ static int
|
|||||||
qemuMonitorJSONTestAttachChardev(virDomainXMLOption *xmlopt,
|
qemuMonitorJSONTestAttachChardev(virDomainXMLOption *xmlopt,
|
||||||
GHashTable *schema)
|
GHashTable *schema)
|
||||||
{
|
{
|
||||||
virDomainChrSourceDef chr;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
#define CHECK(label, fail, expectargs) \
|
#define CHECK(label, fail, expectargs) \
|
||||||
if (qemuMonitorJSONTestAttachOneChardev(xmlopt, schema, label, &chr, \
|
if (qemuMonitorJSONTestAttachOneChardev(xmlopt, schema, label, chr, \
|
||||||
expectargs, NULL, NULL, fail) < 0) \
|
expectargs, NULL, NULL, fail) < 0) \
|
||||||
ret = -1
|
ret = -1
|
||||||
|
|
||||||
chr = (virDomainChrSourceDef) { .type = VIR_DOMAIN_CHR_TYPE_NULL };
|
{
|
||||||
|
g_autoptr(virDomainChrSourceDef) chr = virDomainChrSourceDefNew(xmlopt);
|
||||||
|
|
||||||
|
chr->type = VIR_DOMAIN_CHR_TYPE_NULL;
|
||||||
CHECK("null", false,
|
CHECK("null", false,
|
||||||
"{'id':'alias','backend':{'type':'null','data':{}}}");
|
"{'id':'alias','backend':{'type':'null','data':{}}}");
|
||||||
|
|
||||||
chr = (virDomainChrSourceDef) { .type = VIR_DOMAIN_CHR_TYPE_VC };
|
chr->type = VIR_DOMAIN_CHR_TYPE_VC;
|
||||||
CHECK("vc", false,
|
CHECK("vc", false,
|
||||||
"{'id':'alias','backend':{'type':'vc','data':{}}}");
|
"{'id':'alias','backend':{'type':'vc','data':{}}}");
|
||||||
|
|
||||||
chr = (virDomainChrSourceDef) { .type = VIR_DOMAIN_CHR_TYPE_PTY };
|
chr->type = VIR_DOMAIN_CHR_TYPE_SPICEVMC;
|
||||||
if (qemuMonitorJSONTestAttachOneChardev(xmlopt, schema, "pty", &chr,
|
CHECK("spicevmc", false,
|
||||||
|
"{'id':'alias','backend':{'type':'spicevmc',"
|
||||||
|
"'data':{'type':'vdagent'}}}");
|
||||||
|
|
||||||
|
chr->type = VIR_DOMAIN_CHR_TYPE_PIPE;
|
||||||
|
CHECK("pipe", true, NULL);
|
||||||
|
|
||||||
|
chr->type = VIR_DOMAIN_CHR_TYPE_STDIO;
|
||||||
|
CHECK("stdio", true, NULL);
|
||||||
|
|
||||||
|
chr->type = VIR_DOMAIN_CHR_TYPE_PTY;
|
||||||
|
CHECK("pty missing path", true,
|
||||||
|
"{'id':'alias','backend':{'type':'pty','data':{}}}");
|
||||||
|
if (qemuMonitorJSONTestAttachOneChardev(xmlopt, schema, "pty", chr,
|
||||||
"{'id':'alias',"
|
"{'id':'alias',"
|
||||||
"'backend':{'type':'pty',"
|
"'backend':{'type':'pty',"
|
||||||
"'data':{}}}",
|
"'data':{}}}",
|
||||||
"\"pty\" : \"/dev/pts/0\"",
|
"\"pty\" : \"/dev/pts/0\"",
|
||||||
"/dev/pts/0", false) < 0)
|
"/dev/pts/0", false) < 0)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
}
|
||||||
|
|
||||||
chr = (virDomainChrSourceDef) { .type = VIR_DOMAIN_CHR_TYPE_PTY };
|
{
|
||||||
CHECK("pty missing path", true,
|
g_autoptr(virDomainChrSourceDef) chr = virDomainChrSourceDefNew(xmlopt);
|
||||||
"{'id':'alias','backend':{'type':'pty','data':{}}}");
|
|
||||||
|
|
||||||
memset(&chr, 0, sizeof(chr));
|
chr->data.file.path = g_strdup("/test/path");
|
||||||
chr.type = VIR_DOMAIN_CHR_TYPE_FILE;
|
|
||||||
chr.data.file.path = (char *) "/test/path";
|
chr->type = VIR_DOMAIN_CHR_TYPE_FILE;
|
||||||
CHECK("file", false,
|
CHECK("file", false,
|
||||||
"{'id':'alias','backend':{'type':'file','data':{'out':'/test/path'}}}");
|
"{'id':'alias','backend':{'type':'file','data':{'out':'/test/path'}}}");
|
||||||
|
|
||||||
memset(&chr, 0, sizeof(chr));
|
chr->type = VIR_DOMAIN_CHR_TYPE_DEV;
|
||||||
chr.type = VIR_DOMAIN_CHR_TYPE_DEV;
|
|
||||||
chr.data.file.path = (char *) "/test/path";
|
|
||||||
CHECK("device", false,
|
CHECK("device", false,
|
||||||
"{'id':'alias','backend':{'type':'serial','data':{'device':'/test/path'}}}");
|
"{'id':'alias','backend':{'type':'serial','data':{'device':'/test/path'}}}");
|
||||||
|
}
|
||||||
|
|
||||||
memset(&chr, 0, sizeof(chr));
|
{
|
||||||
chr.type = VIR_DOMAIN_CHR_TYPE_TCP;
|
g_autoptr(virDomainChrSourceDef) chr = virDomainChrSourceDefNew(xmlopt);
|
||||||
chr.data.tcp.host = (char *) "example.com";
|
|
||||||
chr.data.tcp.service = (char *) "1234";
|
chr->type = VIR_DOMAIN_CHR_TYPE_TCP;
|
||||||
|
chr->data.tcp.host = g_strdup("example.com");
|
||||||
|
chr->data.tcp.service = g_strdup("1234");
|
||||||
CHECK("tcp", false,
|
CHECK("tcp", false,
|
||||||
"{'id':'alias',"
|
"{'id':'alias',"
|
||||||
"'backend':{'type':'socket',"
|
"'backend':{'type':'socket',"
|
||||||
@ -732,11 +748,14 @@ qemuMonitorJSONTestAttachChardev(virDomainXMLOption *xmlopt,
|
|||||||
"'port':'1234'}},"
|
"'port':'1234'}},"
|
||||||
"'telnet':false,"
|
"'telnet':false,"
|
||||||
"'server':false}}}");
|
"'server':false}}}");
|
||||||
|
}
|
||||||
|
|
||||||
memset(&chr, 0, sizeof(chr));
|
{
|
||||||
chr.type = VIR_DOMAIN_CHR_TYPE_UDP;
|
g_autoptr(virDomainChrSourceDef) chr = virDomainChrSourceDefNew(xmlopt);
|
||||||
chr.data.udp.connectHost = (char *) "example.com";
|
|
||||||
chr.data.udp.connectService = (char *) "1234";
|
chr->type = VIR_DOMAIN_CHR_TYPE_UDP;
|
||||||
|
chr->data.udp.connectHost = g_strdup("example.com");
|
||||||
|
chr->data.udp.connectService = g_strdup("1234");
|
||||||
CHECK("udp", false,
|
CHECK("udp", false,
|
||||||
"{'id':'alias',"
|
"{'id':'alias',"
|
||||||
"'backend':{'type':'udp',"
|
"'backend':{'type':'udp',"
|
||||||
@ -744,20 +763,7 @@ qemuMonitorJSONTestAttachChardev(virDomainXMLOption *xmlopt,
|
|||||||
"'data':{'host':'example.com',"
|
"'data':{'host':'example.com',"
|
||||||
"'port':'1234'}}}}}");
|
"'port':'1234'}}}}}");
|
||||||
|
|
||||||
chr.data.udp.bindHost = (char *) "localhost";
|
chr->data.udp.bindService = g_strdup("4321");
|
||||||
chr.data.udp.bindService = (char *) "4321";
|
|
||||||
CHECK("udp", false,
|
|
||||||
"{'id':'alias',"
|
|
||||||
"'backend':{'type':'udp',"
|
|
||||||
"'data':{'remote':{'type':'inet',"
|
|
||||||
"'data':{'host':'example.com',"
|
|
||||||
"'port':'1234'}},"
|
|
||||||
"'local':{'type':'inet',"
|
|
||||||
"'data':{'host':'localhost',"
|
|
||||||
"'port':'4321'}}}}}");
|
|
||||||
|
|
||||||
chr.data.udp.bindHost = NULL;
|
|
||||||
chr.data.udp.bindService = (char *) "4321";
|
|
||||||
CHECK("udp", false,
|
CHECK("udp", false,
|
||||||
"{'id':'alias',"
|
"{'id':'alias',"
|
||||||
"'backend':{'type':'udp',"
|
"'backend':{'type':'udp',"
|
||||||
@ -767,26 +773,32 @@ qemuMonitorJSONTestAttachChardev(virDomainXMLOption *xmlopt,
|
|||||||
"'local':{'type':'inet',"
|
"'local':{'type':'inet',"
|
||||||
"'data':{'host':'',"
|
"'data':{'host':'',"
|
||||||
"'port':'4321'}}}}}");
|
"'port':'4321'}}}}}");
|
||||||
memset(&chr, 0, sizeof(chr));
|
|
||||||
chr.type = VIR_DOMAIN_CHR_TYPE_UNIX;
|
chr->data.udp.bindHost = g_strdup("localhost");
|
||||||
chr.data.nix.path = (char *) "/path/to/socket";
|
CHECK("udp", false,
|
||||||
|
"{'id':'alias',"
|
||||||
|
"'backend':{'type':'udp',"
|
||||||
|
"'data':{'remote':{'type':'inet',"
|
||||||
|
"'data':{'host':'example.com',"
|
||||||
|
"'port':'1234'}},"
|
||||||
|
"'local':{'type':'inet',"
|
||||||
|
"'data':{'host':'localhost',"
|
||||||
|
"'port':'4321'}}}}}");
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
g_autoptr(virDomainChrSourceDef) chr = virDomainChrSourceDefNew(xmlopt);
|
||||||
|
|
||||||
|
chr->type = VIR_DOMAIN_CHR_TYPE_UNIX;
|
||||||
|
chr->data.nix.path = g_strdup("/path/to/socket");
|
||||||
CHECK("unix", false,
|
CHECK("unix", false,
|
||||||
"{'id':'alias',"
|
"{'id':'alias',"
|
||||||
"'backend':{'type':'socket',"
|
"'backend':{'type':'socket',"
|
||||||
"'data':{'addr':{'type':'unix',"
|
"'data':{'addr':{'type':'unix',"
|
||||||
"'data':{'path':'/path/to/socket'}},"
|
"'data':{'path':'/path/to/socket'}},"
|
||||||
"'server':false}}}");
|
"'server':false}}}");
|
||||||
|
}
|
||||||
|
|
||||||
chr = (virDomainChrSourceDef) { .type = VIR_DOMAIN_CHR_TYPE_SPICEVMC };
|
|
||||||
CHECK("spicevmc", false,
|
|
||||||
"{'id':'alias','backend':{'type':'spicevmc','"
|
|
||||||
"data':{'type':'vdagent'}}}");
|
|
||||||
|
|
||||||
chr = (virDomainChrSourceDef) { .type = VIR_DOMAIN_CHR_TYPE_PIPE };
|
|
||||||
CHECK("pipe", true, NULL);
|
|
||||||
|
|
||||||
chr = (virDomainChrSourceDef) { .type = VIR_DOMAIN_CHR_TYPE_STDIO };
|
|
||||||
CHECK("stdio", true, NULL);
|
|
||||||
#undef CHECK
|
#undef CHECK
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user