diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bugs/bug-858242.c | 77 | ||||
| -rwxr-xr-x | tests/bugs/bug-858242.t | 51 | 
2 files changed, 128 insertions, 0 deletions
diff --git a/tests/bugs/bug-858242.c b/tests/bugs/bug-858242.c new file mode 100644 index 00000000000..a42262e225c --- /dev/null +++ b/tests/bugs/bug-858242.c @@ -0,0 +1,77 @@ +#include <stdio.h> +#include <errno.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <stdlib.h> +#include <unistd.h> + +int +main (int argc, char *argv[]) +{ +        char        *filename = NULL, *volname = NULL, *cmd = NULL; +        char  buffer[1024]    = {0, }; +        int          fd       = -1; +        int          ret      = -1; +        struct stat  statbuf  = {0, }; + +        if (argc != 3) { +                fprintf (stderr, "usage: %s <file-name> <volname>\n", argv[0]); +                goto out; +        } + +        filename = argv[1]; +        volname = argv[2]; + +        fd = open (filename, O_RDWR | O_CREAT, 0); +        if (fd < 0) { +                fprintf (stderr, "open (%s) failed (%s)\n", filename, +                         strerror (errno)); +                goto out; +        } + +        ret = write (fd, "test-content", 12); +        if (ret < 0) { +                fprintf (stderr, "write failed (%s)", strerror (errno)); +                goto out; +        } + +        ret = fsync (fd); +        if (ret < 0) { +                fprintf (stderr, "fsync failed (%s)", strerror (errno)); +                goto out; +        } + +        ret = fstat (fd, &statbuf); +        if (ret < 0) { +                fprintf (stderr, "fstat failed (%s)", strerror (errno)); +                goto out; +        } + +        ret = asprintf (&cmd, "gluster --mode=script volume stop %s force", +                        volname); +        if (ret < 0) { +                fprintf (stderr, "cannot construct cli command string (%s)", +                         strerror (errno)); +                goto out; +        } + +        ret = system (cmd); +        if (ret < 0) { +                fprintf (stderr, "stopping volume (%s) failed", volname); +                goto out; +        } + +        ret = read (fd, buffer, 1024); +        if (ret >= 0) { +                fprintf (stderr, "read should've returned error, " +                         "but is successful\n"); +                ret = -1; +                goto out; +        } + +        ret = 0; +out: +        return ret; +} diff --git a/tests/bugs/bug-858242.t b/tests/bugs/bug-858242.t new file mode 100755 index 00000000000..2009ee7e4b2 --- /dev/null +++ b/tests/bugs/bug-858242.t @@ -0,0 +1,51 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +function volinfo_field() +{ +    local vol=$1; +    local field=$2; + +    $CLI volume info $vol | grep "^$field: " | sed 's/.*: //'; +} + +TEST $CLI volume create $V0 $H0:$B0/brick1; +EXPECT 'Created' volinfo_field $V0 'Status'; + +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +TEST $CLI volume set $V0 performance.quick-read off + +#mount on a random dir +TEST glusterfs --entry-timeout=3600 --attribute-timeout=3600 -s $H0 --volfile-id=$V0 $M0 --direct-io-mode=yes + +function cleanup_tester () +{ +    local exe=$1 +    rm -f $exe +} + +function build_tester () +{ +    local cfile=$1 +    local fname=$(basename "$cfile") +    local ext="${fname##*.}" +    local execname="${fname%.*}" +    gcc -g -o $(dirname $cfile)/$execname $cfile +} + +build_tester $(dirname $0)/bug-858242.c + +TEST $(dirname $0)/bug-858242 $M0/testfile $V0 + +TEST rm -rf $(dirname $0)/858242 +cleanup; +  | 
