Allow the iohelper path to be customized by test programs

Currently the fdstream function hardcodes the location
of the iohelper to LIBEXECDIR "/libvirt_iohelper". This
is not convenient when trying to write test cases which
use this code. Add a virFDStreamSetIOHelper method to
allow the test cases to point to the location of the
un-installed iohelper binary.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2013-05-10 18:12:20 +01:00
parent 69c6a58a1d
commit 8ab7d8ee40
3 changed files with 17 additions and 1 deletions

View File

@ -74,6 +74,18 @@ struct virFDStreamData {
virMutex lock;
};
static const char *iohelper_path = LIBEXECDIR "/libvirt_iohelper";
void virFDStreamSetIOHelper(const char *path)
{
if (path == NULL)
iohelper_path = LIBEXECDIR "/libvirt_iohelper";
else
iohelper_path = path;
}
static int virFDStreamRemoveCallback(virStreamPtr stream)
{
struct virFDStreamData *fdst = stream->privateData;
@ -634,7 +646,7 @@ virFDStreamOpenFileInternal(virStreamPtr st,
goto error;
}
cmd = virCommandNewArgList(LIBEXECDIR "/libvirt_iohelper",
cmd = virCommandNewArgList(iohelper_path,
path,
NULL);
virCommandAddArgFormat(cmd, "%llu", length);

View File

@ -33,6 +33,9 @@ typedef void (*virFDStreamInternalCloseCb)(virStreamPtr st, void *opaque);
typedef void (*virFDStreamInternalCloseCbFreeOpaque)(void *opaque);
/* Only for use by test suite */
void virFDStreamSetIOHelper(const char *path);
int virFDStreamOpen(virStreamPtr st,
int fd);

View File

@ -699,6 +699,7 @@ virFDStreamConnectUNIX;
virFDStreamCreateFile;
virFDStreamOpen;
virFDStreamOpenFile;
virFDStreamSetIOHelper;
# libvirt_internal.h