diff options
| author | Rajesh Joseph <rjoseph@redhat.com> | 2016-08-02 15:33:34 +0000 | 
|---|---|---|
| committer | Jeff Darcy <jdarcy@redhat.com> | 2016-08-31 14:23:14 -0700 | 
| commit | ecb8d38d34c6cdd16e34bbe40d3e64e9d1cc9909 (patch) | |
| tree | ba282dc7495e12f3a0f52a00dc119f84f9ea70af /tests | |
| parent | 8eebc4c960366e8ff26751914654ccc21bb1a6fd (diff) | |
gfapi: SSL connection for mgmt connection is not working
Problem: libgfapi does not enable SSL on mgmt connection.
Fix: Enable SSL when it is enabled on mgmt connection is enabled,
i.e. presence of /var/lib/glusterd/secure-access file
> Change-Id: I1ce4935b04e6140aeab819e42076defd580b0727
> BUG: 1362602
> Signed-off-by: Rajesh Joseph <rjoseph@redhat.com>
> Reviewed-on: http://review.gluster.org/15073
> Smoke: Gluster Build System <jenkins@build.gluster.org>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
> Reviewed-by: Niels de Vos <ndevos@redhat.com>
> Reviewed-by: Kaushal M <kaushal@redhat.com>
(cherry picked from commit 62f4e41e9eafd2838d2a11989f08b0e7627284b4)
Change-Id: I282729825229e961f03b7f8e8a9fa0aa2c8fc6a7
BUG: 1371650
Signed-off-by: Rajesh Joseph <rjoseph@redhat.com>
Reviewed-on: http://review.gluster.org/15361
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Smoke: Gluster Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/basic/gfapi/Makefile.am | 2 | ||||
| -rw-r--r-- | tests/basic/gfapi/gfapi-ssl-test.c | 126 | ||||
| -rwxr-xr-x | tests/basic/gfapi/gfapi-ssl-test.t | 61 | ||||
| -rw-r--r-- | tests/ssl.rc | 35 | 
4 files changed, 223 insertions, 1 deletions
diff --git a/tests/basic/gfapi/Makefile.am b/tests/basic/gfapi/Makefile.am index 8ca03c72639..3cad969672e 100644 --- a/tests/basic/gfapi/Makefile.am +++ b/tests/basic/gfapi/Makefile.am @@ -5,7 +5,7 @@ CFLAGS   = -Wall -g $(shell pkg-config --cflags glusterfs-api)  LDFLAGS  = $(shell pkg-config --libs glusterfs-api)  BINARIES = upcall-cache-invalidate libgfapi-fini-hang anonymous_fd seek \ -	bug1283983 bug1291259 +	bug1283983 bug1291259 gfapi-ssl-test  %: %.c  	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ diff --git a/tests/basic/gfapi/gfapi-ssl-test.c b/tests/basic/gfapi/gfapi-ssl-test.c new file mode 100644 index 00000000000..41126bdc6db --- /dev/null +++ b/tests/basic/gfapi/gfapi-ssl-test.c @@ -0,0 +1,126 @@ +#include <fcntl.h> +#include <unistd.h> +#include <time.h> +#include <limits.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <glusterfs/api/glfs.h> +#include <glusterfs/api/glfs-handles.h> + +#define LOG_ERR(msg) do { \ +        fprintf (stderr, "%s : Error (%s)\n", msg, strerror (errno)); \ +        } while (0) + +glfs_t * +init_glfs (const char *hostname, const char *volname, +           const char *logfile) +{ +        int     ret     = -1; +        glfs_t *fs      = NULL; + +        fs = glfs_new (volname); +        if (!fs) { +                LOG_ERR ("glfs_new failed"); +                return NULL; +        } + +        ret = glfs_set_volfile_server (fs, "tcp", hostname, 24007); +        if (ret < 0) { +                LOG_ERR ("glfs_set_volfile_server failed"); +                goto out; +        } + +        ret = glfs_set_logging (fs, logfile, 7); +        if (ret < 0) { +                LOG_ERR ("glfs_set_logging failed"); +                goto out; +        } + +        ret = glfs_init (fs); +        if (ret < 0) { +                LOG_ERR ("glfs_init failed"); +                goto out; +        } + +        ret = 0; +out: +        if (ret) { +                glfs_fini (fs); +                fs = NULL; +        } + +        return fs; +} + +int +glfs_test_function (const char *hostname, const char *volname, +                    const char *logfile) +{ +        int             ret      = -1; +        int             flags    = O_CREAT | O_RDWR; +        glfs_t         *fs       = NULL; +        glfs_fd_t      *glfd     = NULL; +        const char     *buff     = "This is from my prog\n"; +        const char     *filename = "glfs_test.txt"; + +        fs = init_glfs (hostname, volname, logfile); +        if (fs == NULL) { +                LOG_ERR ("init_glfs failed"); +                return -1; +        } + +        glfd = glfs_creat (fs, filename, flags, 0644); +        if (glfd == NULL) { +                LOG_ERR ("glfs_creat failed"); +                goto out; +        } + +        ret = glfs_write (glfd, buff, strlen (buff), flags); +        if (ret < 0) { +                LOG_ERR ("glfs_write failed"); +                goto out; +        } + +        ret = glfs_close (glfd); +        if (ret < 0) { +                LOG_ERR ("glfs_write failed"); +                goto out; +        } + +out: +        ret = glfs_fini (fs); +        if (ret) { +                LOG_ERR ("glfs_fini failed"); +        } + +        return ret; +} + +int +main (int argc, char *argv[]) +{ +        int   ret = 0; +        char *hostname = NULL; +        char *volname = NULL; +        char *logfile = NULL; + +        if (argc != 4) { +                fprintf (stderr, "Invalid argument\n"); +                exit(1); +        } + +        hostname = argv[1]; +        volname = argv[2]; +        logfile = argv[3]; + +        ret = glfs_test_function (hostname, volname, logfile); +        if (ret) { +                LOG_ERR ("glfs_test_function failed"); +        } + +        return ret; +} + + diff --git a/tests/basic/gfapi/gfapi-ssl-test.t b/tests/basic/gfapi/gfapi-ssl-test.t new file mode 100755 index 00000000000..3236625357d --- /dev/null +++ b/tests/basic/gfapi/gfapi-ssl-test.t @@ -0,0 +1,61 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../traps.rc +. $(dirname $0)/../../ssl.rc + +cleanup; + +TEST create_self_signed_certs + +TEST glusterd + +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'; +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" online_brick_count + +logdir=`gluster --print-logdir` + +TEST build_tester $(dirname $0)/gfapi-ssl-test.c -lgfapi + +# Run test without I/O or management encryption +TEST ./$(dirname $0)/gfapi-ssl-test $H0 $V0 $logdir/gfapi-ssl-test.log + +# Enable management encryption +touch  $GLUSTERD_WORKDIR/secure-access + +killall_gluster + +TEST glusterd +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" online_brick_count + +# Run test with management encryption (No I/O encryption) +TEST ./$(dirname $0)/gfapi-ssl-test $H0 $V0 $logdir/gfapi-ssl-test.log + +# Enable I/O encryption +TEST $CLI volume set $V0 client.ssl on +TEST $CLI volume set $V0 server.ssl on + +killall_gluster + +TEST glusterd +EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" online_brick_count + +# Run test without I/O or management encryption +TEST ./$(dirname $0)/gfapi-ssl-test $H0 $V0 $logdir/gfapi-ssl-test.log + +cleanup_tester $(dirname $0)/gfapi-ssl-test + +TEST $CLI volume stop $V0 +TEST $CLI volume delete $V0 + +cleanup; + +# NetBSD build scripts are not upto date therefore this test +# is failing in NetBSD. Therefore skipping the test in NetBSD +# as of now. +#G_TESTDEF_TEST_STATUS_NETBSD7=KNOWN_ISSUE,BUG=000000 diff --git a/tests/ssl.rc b/tests/ssl.rc new file mode 100644 index 00000000000..127f83f7577 --- /dev/null +++ b/tests/ssl.rc @@ -0,0 +1,35 @@ +#!/bin/bash + +for d in /etc/ssl /etc/openssl /usr/local/etc/openssl ; do +        if test -d $d ; then +                SSL_BASE=$d +                break +        fi +done + +if [ ! -d "$SSL_BASE" ]; then +        echo "Skip test! SSL certificate path missing in the system" >&2 +        SKIP_TESTS +        exit 0 +fi + +SSL_KEY=$SSL_BASE/glusterfs.key +SSL_CERT=$SSL_BASE/glusterfs.pem +SSL_CA=$SSL_BASE/glusterfs.ca + + +# Create self-signed certificates +function create_self_signed_certs (){ +        openssl genrsa -out $SSL_KEY 1024 +        openssl req -new -x509 -key $SSL_KEY -subj /CN=Anyone -out $SSL_CERT +        ln $SSL_CERT $SSL_CA +        return $? +} + +function cleanup_certs () { +        rm -f $SSL_BASE/glusterfs.* +} + +push_trapfunc cleanup_certs + +cleanup_certs  | 
