X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=tests%2Fprogs%2Fslapd-modrdn.c;h=d5e4076c666bf9756654d83e9e3a7eff203911a7;hb=412479e6fe38f0cc46c102b52caa04c177abeae6;hp=4ebc938000b3fcf26c90054cd26f2ffb92a354ee;hpb=1ebc6faf8738aff25f29f1ad90283ba64cf949b2;p=openldap diff --git a/tests/progs/slapd-modrdn.c b/tests/progs/slapd-modrdn.c index 4ebc938000..d5e4076c66 100644 --- a/tests/progs/slapd-modrdn.c +++ b/tests/progs/slapd-modrdn.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1999-2015 The OpenLDAP Foundation. + * Copyright 1999-2017 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -39,27 +39,21 @@ #define RETRIES 0 static void -do_modrdn( char *uri, char *manager, struct berval *passwd, - char *entry, int maxloop, int maxretries, int delay, - int friendly, int chaserefs ); +do_modrdn( struct tester_conn_args *config, + char *entry, int friendly ); static void -usage( char *name ) +usage( char *name, char opt ) { - fprintf( stderr, - "usage: %s " - "-H | ([-h ] -p ) " - "-D " - "-w " + if ( opt ) { + fprintf( stderr, "%s: unable to handle option \'%c\'\n\n", + name, opt ); + } + + fprintf( stderr, "usage: %s " TESTER_COMMON_HELP "-e " - "[-i ] " - "[-l ] " - "[-L ] " - "[-r ] " - "[-t ] " - "[-F] " - "[-C]\n", - name ); + "[-F]\n", + name ); exit( EXIT_FAILURE ); } @@ -67,96 +61,38 @@ int main( int argc, char **argv ) { int i; - char *uri = NULL; - char *host = "localhost"; - int port = -1; - char *manager = NULL; - struct berval passwd = { 0, NULL }; char *entry = NULL; - int loops = LOOPS; - int outerloops = 1; - int retries = RETRIES; - int delay = 0; int friendly = 0; - int chaserefs = 0; + struct tester_conn_args *config; - tester_init( "slapd-modrdn", TESTER_MODRDN ); + config = tester_init( "slapd-modrdn", TESTER_MODRDN ); - while ( ( i = getopt( argc, argv, "CD:e:FH:h:i:L:l:p:r:t:w:" ) ) != EOF ) + while ( ( i = getopt( argc, argv, TESTER_COMMON_OPTS "e:F" ) ) != EOF ) { switch ( i ) { - case 'C': - chaserefs++; - break; - case 'F': friendly++; break; - case 'H': /* the server uri */ - uri = strdup( optarg ); - break; - - case 'h': /* the servers host */ - host = strdup( optarg ); - break; - case 'i': /* ignored (!) by now */ break; - case 'p': /* the servers port */ - if ( lutil_atoi( &port, optarg ) != 0 ) { - usage( argv[0] ); - } - break; - - case 'D': /* the servers manager */ - manager = strdup( optarg ); - break; - - case 'w': /* the server managers password */ - passwd.bv_val = strdup( optarg ); - passwd.bv_len = strlen( optarg ); - memset( optarg, '*', passwd.bv_len ); - break; - case 'e': /* entry to rename */ entry = strdup( optarg ); break; - case 'l': /* the number of loops */ - if ( lutil_atoi( &loops, optarg ) != 0 ) { - usage( argv[0] ); - } - break; - - case 'L': /* the number of outerloops */ - if ( lutil_atoi( &outerloops, optarg ) != 0 ) { - usage( argv[0] ); - } - break; - - case 'r': /* the number of retries */ - if ( lutil_atoi( &retries, optarg ) != 0 ) { - usage( argv[0] ); - } - break; - - case 't': /* delay in seconds */ - if ( lutil_atoi( &delay, optarg ) != 0 ) { - usage( argv[0] ); - } - break; - default: - usage( argv[0] ); + if ( tester_config_opt( config, i, optarg ) == LDAP_SUCCESS ) { + break; + } + usage( argv[0], i ); break; } } - if (( entry == NULL ) || ( port == -1 && uri == NULL )) - usage( argv[0] ); + if ( entry == NULL ) + usage( argv[0], 0 ); if ( *entry == '\0' ) { @@ -166,11 +102,10 @@ main( int argc, char **argv ) } - uri = tester_uri( uri, host, port ); + tester_config_finish( config ); - for ( i = 0; i < outerloops; i++ ) { - do_modrdn( uri, manager, &passwd, entry, - loops, retries, delay, friendly, chaserefs ); + for ( i = 0; i < config->outerloops; i++ ) { + do_modrdn( config, entry, friendly ); } exit( EXIT_SUCCESS ); @@ -178,17 +113,15 @@ main( int argc, char **argv ) static void -do_modrdn( char *uri, char *manager, - struct berval *passwd, char *entry, int maxloop, int maxretries, - int delay, int friendly, int chaserefs ) +do_modrdn( struct tester_conn_args *config, + char *entry, int friendly ) { LDAP *ld = NULL; - int i, do_retry = maxretries; + int i, do_retry = config->retries; char *DNs[2]; char *rdns[2]; int rc = LDAP_SUCCESS; char *p1, *p2; - int version = LDAP_VERSION3; DNs[0] = entry; DNs[1] = strdup( entry ); @@ -211,42 +144,14 @@ do_modrdn( char *uri, char *manager, i = 0; retry:; - ldap_initialize( &ld, uri ); - if ( ld == NULL ) { - tester_perror( "ldap_initialize", NULL ); - exit( EXIT_FAILURE ); - } - - (void) ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION, &version ); - (void) ldap_set_option( ld, LDAP_OPT_REFERRALS, - chaserefs ? LDAP_OPT_ON : LDAP_OPT_OFF ); + tester_init_ld( &ld, config, 0 ); - if ( do_retry == maxretries ) { + if ( do_retry == config->retries ) { fprintf( stderr, "PID=%ld - Modrdn(%d): entry=\"%s\".\n", - (long) pid, maxloop, entry ); - } - - rc = ldap_sasl_bind_s( ld, manager, LDAP_SASL_SIMPLE, passwd, NULL, NULL, NULL ); - if ( rc != LDAP_SUCCESS ) { - tester_ldap_error( ld, "ldap_sasl_bind_s", NULL ); - switch ( rc ) { - case LDAP_BUSY: - case LDAP_UNAVAILABLE: - if ( do_retry > 0 ) { - do_retry--; - if ( delay > 0) { - sleep( delay ); - } - goto retry; - } - /* fallthru */ - default: - break; - } - exit( EXIT_FAILURE ); + (long) pid, config->loops, entry ); } - for ( ; i < maxloop; i++ ) { + for ( ; i < config->loops; i++ ) { rc = ldap_rename_s( ld, DNs[0], rdns[0], NULL, 0, NULL, NULL ); if ( rc != LDAP_SUCCESS ) { tester_ldap_error( ld, "ldap_rename_s", NULL );