[libvirt] [PATCH 3/3] Add a test case for the fdstream file read/write code

Eric Blake eblake at redhat.com
Fri May 10 17:39:43 UTC 2013


On 05/10/2013 11:17 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
> 
> Add a test case which exercises the virFDStreamOpenFile
> and virFDStreamCreateFile methods. Ensure that both the
> synchronous and non-blocking iohelper code paths work.
> This validates the regression recently fixed which
> broke reading in non-blocking mode

Always nice to enhance our testsuite to avoid future regressions.

> 
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>  .gitignore           |   1 +
>  tests/Makefile.am    |   5 +
>  tests/fdstreamtest.c | 353 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 359 insertions(+)
>  create mode 100644 tests/fdstreamtest.c

ACK with nits:

> 
> diff --git a/.gitignore b/.gitignore
> index 5e50b52..e327b37 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -145,6 +145,7 @@
>  /tests/esxutilstest
>  /tests/eventtest
>  /tests/hashtest
> +/tests/fdstreamtest

Sorting.

> +++ b/tests/Makefile.am
> @@ -107,6 +107,7 @@ test_programs = virshtest sockettest \
>          virportallocatortest \
>  	sysinfotest \
>  	virstoragetest \
> +        fdstreamtest \

Space vs. TAB inconsistency (but you can argue some of it was pre-existing).

> +
> +static int testFDStreamReadCommon(const char *scratchdir, bool blocking)
> +{

> +    if (virAsprintf(&tmpfile, "%s/input.data", scratchdir) < 0)
> +        goto cleanup;
> +
> +    if ((fd = open(tmpfile, O_CREAT|O_WRONLY, 0600)) < 0)

Worth using O_EXCL as well?

> +        reread:
> +            got = st->driver->streamRecv(st, buf + offset, want);
> +            if (got < 0) {
> +                if (got == -2 && !blocking) {
> +                    usleep(20*1000);

Spaces around *

> +static int testFDStreamWriteCommon(const char *scratchdir, bool blocking)
> +{
> +        rewrite:
> +            got = st->driver->streamSend(st, pattern + offset, want);
> +            if (got < 0) {
> +                if (got == -2 && !blocking) {
> +                    usleep(20*1000);

Spaces around *

> +
> +# define SCRATCHDIRTEMPLATE abs_builddir "/fakesysfsdir-XXXXXX"
> +
> +static int
> +mymain(void)
> +{
> +    char *scratchdir;
> +    int ret = 0;
> +    const char *iohelper = abs_builddir "/../src/libvirt_iohelper";
> +
> +    virFDStreamSetIOHelper(iohelper);
> +
> +    if (!(scratchdir = strdup(SCRATCHDIRTEMPLATE))) {
> +        fprintf(stderr, "Out of memory\n");
> +        abort();
> +    }

No need to use strdup, given our desire to switch to VIR_STRDUP.  Why
not just stack-allocate instead?

char iohelper[] = SCRATCHDIRTEMPLATE;

> +
> +    return ret==0 ? EXIT_SUCCESS : EXIT_FAILURE;

Spacing around ==

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130510/e4c754df/attachment-0001.sig>


More information about the libvir-list mailing list