static bhyveConn driver;
static int testCompareXMLToArgvFiles(const char *xml,
- const char *cmdline)
+ const char *cmdline,
+ const char *ldcmdline,
+ const char *dmcmdline)
{
- char *expectargv = NULL;
+ char *expectargv = NULL, *expectld = NULL, *expectdm = NULL;
int len;
- char *actualargv = NULL;
+ char *actualargv = NULL, *actualld = NULL, *actualdm = NULL;
virDomainDefPtr vmdef = NULL;
virDomainObj vm;
- virCommandPtr cmd = NULL;
+ virCommandPtr cmd = NULL, ldcmd = NULL;
virConnectPtr conn;
int ret = -1;
if (!(actualargv = virCommandToString(cmd)))
goto out;
+ if (!(ldcmd = virBhyveProcessBuildLoadCmd(conn, vmdef, "<device.map>",
+ &actualdm)))
+ goto out;
+
+ if (actualdm != NULL)
+ virTrimSpaces(actualdm, NULL);
+
+ if (!(actualld = virCommandToString(ldcmd)))
+ goto out;
+
len = virtTestLoadFile(cmdline, &expectargv);
if (len < 0)
goto out;
if (len && expectargv[len - 1] == '\n')
expectargv[len - 1] = '\0';
+ len = virtTestLoadFile(ldcmdline, &expectld);
+ if (len < 0)
+ goto out;
+
+ if (len && expectld[len - 1] == '\n')
+ expectld[len - 1] = '\0';
+
+ len = virFileReadAllQuiet(dmcmdline, 1000, &expectdm);
+ if (len < 0) {
+ if (actualdm != NULL) {
+ virtTestDifference(stderr, "", actualdm);
+ goto out;
+ }
+ } else if (len && expectdm[len - 1] == '\n') {
+ expectdm[len - 1] = '\0';
+ }
+
if (STRNEQ(expectargv, actualargv)) {
virtTestDifference(stderr, expectargv, actualargv);
goto out;
}
+ if (STRNEQ(expectld, actualld)) {
+ virtTestDifference(stderr, expectld, actualld);
+ goto out;
+ }
+
+ if (expectdm && STRNEQ(expectdm, actualdm)) {
+ virtTestDifference(stderr, expectdm, actualdm);
+ goto out;
+ }
+
ret = 0;
out:
VIR_FREE(expectargv);
+ VIR_FREE(expectld);
+ VIR_FREE(expectdm);
VIR_FREE(actualargv);
+ VIR_FREE(actualld);
+ VIR_FREE(actualdm);
virCommandFree(cmd);
+ virCommandFree(ldcmd);
virDomainDefFree(vmdef);
return ret;
}
int ret = -1;
const char *name = data;
char *xml = NULL;
- char *args = NULL;
+ char *args = NULL, *ldargs = NULL, *dmargs = NULL;
if (virAsprintf(&xml, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.xml",
abs_srcdir, name) < 0 ||
virAsprintf(&args, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.args",
+ abs_srcdir, name) < 0 ||
+ virAsprintf(&ldargs, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.ldargs",
+ abs_srcdir, name) < 0 ||
+ virAsprintf(&dmargs, "%s/bhyvexml2argvdata/bhyvexml2argv-%s.devmap",
abs_srcdir, name) < 0)
goto cleanup;
- ret = testCompareXMLToArgvFiles(xml, args);
+ ret = testCompareXMLToArgvFiles(xml, args, ldargs, dmargs);
cleanup:
VIR_FREE(xml);