/* #define SERVER_DEBUG 1 */ int main(int argc, char *argv[]) { int status; rsComm_t rsComm; char *tmpStr; ProcessType = AGENT_PT; #ifdef RUN_SERVER_AS_ROOT #ifndef windows_platform if (initServiceUser() < 0) { exit (1); } #endif #endif #ifdef windows_platform iRODSNtAgentInit(argc, argv); #endif #ifndef windows_platform signal(SIGINT, signalExit); signal(SIGHUP, signalExit); signal(SIGTERM, signalExit); /* set to SIG_DFL as recommended by andy.salnikov so that system() * call returns real values instead of 1 */ signal(SIGCHLD, SIG_DFL); signal(SIGUSR1, signalExit); signal(SIGPIPE, rsPipSigalHandler); #endif #ifndef windows_platform #ifdef SERVER_DEBUG if (isPath ("/tmp/rodsdebug")) sleep (20); #endif #endif #ifdef SYS_TIMING rodsLogLevel(LOG_NOTICE); printSysTiming ("irodsAgent", "exec", 1); #endif memset (&rsComm, 0, sizeof (rsComm)); status = initRsCommWithStartupPack (&rsComm, NULL); if (status < 0) { sendVersion (rsComm.sock, status, 0, NULL, 0); cleanupAndExit (status); } /* Handle option to log sql commands */ tmpStr = getenv (SP_LOG_SQL); if (tmpStr != NULL) { #ifdef IRODS_SYSLOG int j = atoi(tmpStr); rodsLogSqlReq(j); #else rodsLogSqlReq(1); #endif } /* Set the logging level */ tmpStr = getenv (SP_LOG_LEVEL); if (tmpStr != NULL) { int i; i = atoi(tmpStr); rodsLogLevel(i); } else { rodsLogLevel(LOG_NOTICE); /* default */ } #ifdef IRODS_SYSLOG /* Open a connection to syslog */ #ifdef SYSLOG_FACILITY_CODE openlog("rodsAgent",LOG_ODELAY|LOG_PID,SYSLOG_FACILITY_CODE); #else openlog("rodsAgent",LOG_ODELAY|LOG_PID,LOG_DAEMON); #endif #endif status = getRodsEnv (&rsComm.myEnv); if (status < 0) { sendVersion (rsComm.sock, SYS_AGENT_INIT_ERR, 0, NULL, 0); cleanupAndExit (status); } #if RODS_CAT if (strstr(rsComm.myEnv.rodsDebug, "CAT") != NULL) { chlDebug(rsComm.myEnv.rodsDebug); } #endif #ifdef RULE_ENGINE_N status = initAgent (RULE_ENGINE_TRY_CACHE, &rsComm); #else status = initAgent (&rsComm); #endif #ifdef SYS_TIMING printSysTiming ("irodsAgent", "initAgent", 0); #endif if (status < 0) { sendVersion (rsComm.sock, SYS_AGENT_INIT_ERR, 0, NULL, 0); cleanupAndExit (status); } /* move configConnectControl behind initAgent for now. need zoneName if * the user does not specify one in the input */ initConnectControl (); if (rsComm.clientUser.userName[0] != '\0') { status = chkAllowedUser (rsComm.clientUser.userName, rsComm.clientUser.rodsZone); if (status < 0) { sendVersion (rsComm.sock, status, 0, NULL, 0); cleanupAndExit (status); } } /* send the server version and atatus as part of the protocol. Put * rsComm.reconnPort as the status */ status = sendVersion (rsComm.sock, status, rsComm.reconnPort, rsComm.reconnAddr, rsComm.cookie); if (status < 0) { sendVersion (rsComm.sock, SYS_AGENT_INIT_ERR, 0, NULL, 0); cleanupAndExit (status); } #ifdef SYS_TIMING printSysTiming ("irodsAgent", "sendVersion", 0); #endif logAgentProc (&rsComm); status = agentMain (&rsComm); cleanupAndExit (status); return (status); }
int main( int argc, char **argv ) { int i1 = 0, i2 = 0, i3 = 0, i = 0; genQueryInp_t genQueryInp; int i1a[10]; int i2a[10]; int done = 0; int mode = 0; char *condVal[2]; char v1[20]; /* remove this call or change to LOG_NOTICE for more verbosity */ rodsLogLevel( LOG_ERROR ); /* this will cause the sql to be printed, comment this out to skip it */ rodsLogSqlReq( 1 ); i1 = 7; i2 = 5; done = 0; mode = 0; if ( argc >= 2 ) { if ( strcmp( argv[1], "gen" ) == 0 ) { mode = 1; } if ( strcmp( argv[1], "ls" ) == 0 ) { mode = 2; } if ( strcmp( argv[1], "gen2" ) == 0 ) { mode = 3; } if ( strcmp( argv[1], "gen3" ) == 0 ) { mode = 4; } if ( strcmp( argv[1], "gen4" ) == 0 ) { mode = 5; } if ( strcmp( argv[1], "gen5" ) == 0 ) { mode = 6; } if ( strcmp( argv[1], "gen6" ) == 0 ) { mode = 7; } if ( strcmp( argv[1], "gen7" ) == 0 ) { mode = 8; } if ( strcmp( argv[1], "gen8" ) == 0 ) { mode = 9; } if ( strcmp( argv[1], "gen9" ) == 0 ) { mode = 10; } if ( strcmp( argv[1], "gen10" ) == 0 ) { mode = 11; } if ( strcmp( argv[1], "gen11" ) == 0 ) { mode = 12; } if ( strcmp( argv[1], "gen12" ) == 0 ) { mode = 13; } if ( strcmp( argv[1], "gen13" ) == 0 ) { mode = 14; } if ( strcmp( argv[1], "lsr" ) == 0 ) { mode = 15; } if ( strcmp( argv[1], "gen15" ) == 0 ) { mode = 16; } } if ( argc == 3 && mode == 0 ) { i1 = atoi( argv[1] ); i2 = atoi( argv[2] ); sTest( i1, i2 ); done++; } if ( argc == 4 && mode == 0 ) { i1 = atoi( argv[1] ); i2 = atoi( argv[2] ); i3 = atoi( argv[3] ); sTest2( i1, i2, i3 ); done++; } if ( argc == 2 && mode == 0 ) { int j; j = atoi( argv[1] ); if ( j >= 0 ) { printf( "finding cycles starting with table %d\n", j ); i = findCycles( j ); printf( "status = %d\n", i ); } else { printf( "finding cycles for all tables\n" ); printf( "last test should be -816000 if last table finished\n" ); i = 0; for ( j = 0; i == 0; j++ ) { i = findCycles( j ); printf( "starting with table %d status = %d\n", j, i ); } if ( j > 70 && i == CAT_INVALID_ARGUMENT ) { printf( "Success: Searched all tables (0 to %d) and no cycles found\n", j - 1 ); exit( 0 ); } else { exit( 5 ); } } done++; } memset( ( char* )&genQueryInp, 0, sizeof( genQueryInp ) ); genQueryInp.maxRows = 10; genQueryInp.continueInx = 0; /* (another test case that could be used) i1a[0]=COL_R_RESC_NAME; i1a[1]=COL_R_ZONE_NAME; i1a[2]=COL_R_TYPE_NAME; i1a[3]=COL_R_CLASS_NAME; */ /* i1a[0]=COL_COLL_INHERITANCE; */ i1a[0] = COL_COLL_NAME; genQueryInp.selectInp.inx = i1a; genQueryInp.selectInp.len = 1; i2a[0] = COL_D_DATA_PATH; genQueryInp.sqlCondInp.inx = i2a; strcpy( v1, "='b'" ); condVal[0] = v1; genQueryInp.sqlCondInp.value = condVal; genQueryInp.sqlCondInp.len = 1; if ( mode == 1 ) { if ( argc == 3 ) { i1a[0] = atoi( argv[2] ); } } if ( done == 0 ) { int status; genQueryOut_t result; rodsEnv myEnv; memset( ( char * )&result, 0, sizeof( result ) ); memset( ( char * )&myEnv, 0, sizeof( myEnv ) ); status = getRodsEnv( &myEnv ); if ( status < 0 ) { rodsLog( LOG_ERROR, "main: getRodsEnv error. status = %d", status ); exit( 1 ); } // capture server properties irods::server_properties::getInstance().capture(); if ( ( status = chlOpen() ) != 0 ) { rodsLog( LOG_SYS_FATAL, "chlopen Error. Status = %d", status ); return status; } /* This is no longer ifdef'ed GEN_QUERY_AC (since msiAclPolicy now used), so just do it. */ chlGenQueryAccessControlSetup( myEnv.rodsUserName, myEnv.rodsZone, "", LOCAL_PRIV_USER_AUTH, 1 ); if ( strstr( myEnv.rodsDebug, "CAT" ) != NULL ) { chlDebug( myEnv.rodsDebug ); } if ( mode == 2 ) { /* doLs(); */ doLs2(); exit( 0 ); } if ( mode == 3 ) { doTest2(); exit( 0 ); } if ( mode == 4 ) { doTest3(); exit( 0 ); } if ( mode == 5 ) { doTest4(); exit( 0 ); } if ( mode == 6 ) { doTest5(); exit( 0 ); } if ( mode == 7 ) { doTest6( argv[2] ); exit( 0 ); } if ( mode == 8 ) { status = doTest7( argv[2], argv[3], argv[4], argv[5] ); if ( status < 0 ) { exit( 1 ); } exit( 0 ); } if ( mode == 9 ) { status = doTest8( argv[2], argv[3], argv[4] ); if ( status < 0 ) { exit( 2 ); } exit( 0 ); } if ( mode == 10 ) { status = doTest9( argv[2], argv[3] ); if ( status < 0 ) { exit( 2 ); } exit( 0 ); } if ( mode == 11 ) { status = doTest10( argv[2], argv[3], argv[4], argv[5] ); if ( status < 0 ) { exit( 2 ); } exit( 0 ); } if ( mode == 12 ) { status = doTest11( argv[2], argv[3], argv[4], argv[5], argv[6] ); if ( status < 0 ) { exit( 2 ); } exit( 0 ); } if ( mode == 13 ) { status = doTest12( argv[2], argv[3], argv[4], argv[5] ); if ( status < 0 ) { exit( 2 ); } exit( 0 ); } if ( mode == 14 ) { status = doTest13( argv[2], argv[3], argv[4], argv[5], argv[6] ); if ( status < 0 ) { exit( 2 ); } exit( 0 ); } if ( mode == 15 ) { try { int reps = boost::lexical_cast<int>( argv[2] ); reps = reps > 0 && reps <= std::numeric_limits<int>::max() ? reps : 0; status = doLs3( reps ); } catch ( boost::bad_lexical_cast e ) { exit( 2 ); } if ( status < 0 ) { exit( 2 ); } exit( 0 ); } if ( mode == 16 ) { status = doTest15( argv[2], argv[3], argv[4] ); if ( status < 0 ) { exit( 2 ); } exit( 0 ); } genQueryInp.maxRows = 2; i = chlGenQuery( genQueryInp, &result ); printf( "chlGenQuery status=%d\n", i ); printf( "result.rowCnt=%d\n", result.rowCnt ); if ( result.rowCnt > 0 ) { int i; for ( i = 0; i < result.rowCnt; i++ ) { printf( "result.SqlResult[%d].value=%s\n", i, result.sqlResult[i].value ); } } } exit( 0 ); }
/* #define SERVER_DEBUG 1 */ int main( int, char ** ) { int status; rsComm_t rsComm; char *tmpStr; ProcessType = AGENT_PT; // capture server properties irods::server_properties& props = irods::server_properties::getInstance(); irods::error result = props.capture_if_needed(); if ( !result.ok() ) { irods::log( PASSMSG( "failed to read server configuration", result ) ); } #ifdef windows_platform iRODSNtAgentInit( argc, argv ); #endif #ifndef windows_platform signal( SIGINT, signalExit ); signal( SIGHUP, signalExit ); signal( SIGTERM, signalExit ); /* set to SIG_DFL as recommended by andy.salnikov so that system() * call returns real values instead of 1 */ signal( SIGCHLD, SIG_DFL ); signal( SIGUSR1, signalExit ); signal( SIGPIPE, SIG_IGN ); // register irods signal handlers register_handlers(); #endif #ifndef windows_platform #ifdef SERVER_DEBUG if ( isPath( "/tmp/rodsdebug" ) ) { sleep( 20 ); } #endif #endif memset( &rsComm, 0, sizeof( rsComm ) ); rsComm.thread_ctx = ( thread_context* )malloc( sizeof( thread_context ) ); status = initRsCommWithStartupPack( &rsComm, NULL ); // =-=-=-=-=-=-=- // manufacture a network object for comms irods::network_object_ptr net_obj; irods::error ret = irods::network_factory( &rsComm, net_obj ); if ( !ret.ok() ) { irods::log( PASS( ret ) ); } if ( status < 0 ) { sendVersion( net_obj, status, 0, NULL, 0 ); cleanupAndExit( status ); } /* Handle option to log sql commands */ tmpStr = getenv( SP_LOG_SQL ); if ( tmpStr != NULL ) { #ifdef SYSLOG int j = atoi( tmpStr ); rodsLogSqlReq( j ); #else rodsLogSqlReq( 1 ); #endif } /* Set the logging level */ tmpStr = getenv( SP_LOG_LEVEL ); if ( tmpStr != NULL ) { int i; i = atoi( tmpStr ); rodsLogLevel( i ); } else { rodsLogLevel( LOG_NOTICE ); /* default */ } #ifdef SYSLOG /* Open a connection to syslog */ openlog( "rodsAgent", LOG_ODELAY | LOG_PID, LOG_DAEMON ); #endif status = getRodsEnv( &rsComm.myEnv ); if ( status < 0 ) { rodsLog( LOG_ERROR, "agentMain :: getRodsEnv failed" ); sendVersion( net_obj, SYS_AGENT_INIT_ERR, 0, NULL, 0 ); cleanupAndExit( status ); } ret = setRECacheSaltFromEnv(); if ( !ret.ok() ) { rodsLog( LOG_ERROR, "rodsAgent::main: Failed to set RE cache mutex name\n%s", ret.result().c_str() ); exit( 1 ); } // =-=-=-=-=-=-=- // load server side pluggable api entries irods::api_entry_table& RsApiTable = irods::get_server_api_table(); irods::pack_entry_table& ApiPackTable = irods::get_pack_table(); ret = irods::init_api_table( RsApiTable, ApiPackTable, false ); if ( !ret.ok() ) { irods::log( PASS( ret ) ); return 1; } // =-=-=-=-=-=-=- // load client side pluggable api entries irods::api_entry_table& RcApiTable = irods::get_client_api_table(); ret = irods::init_api_table( RcApiTable, ApiPackTable, true ); if ( !ret.ok() ) { irods::log( PASS( ret ) ); return 1; } #if RODS_CAT if ( strstr( rsComm.myEnv.rodsDebug, "CAT" ) != NULL ) { chlDebug( rsComm.myEnv.rodsDebug ); } #endif status = initAgent( RULE_ENGINE_TRY_CACHE, &rsComm ); if ( status < 0 ) { rodsLog( LOG_ERROR, "agentMain :: initAgent failed: %d", status ); sendVersion( net_obj, SYS_AGENT_INIT_ERR, 0, NULL, 0 ); cleanupAndExit( status ); } /* move configConnectControl behind initAgent for now. need zoneName if * the user does not specify one in the input */ initConnectControl(); if ( rsComm.clientUser.userName[0] != '\0' ) { status = chkAllowedUser( rsComm.clientUser.userName, rsComm.clientUser.rodsZone ); if ( status < 0 ) { sendVersion( net_obj, status, 0, NULL, 0 ); cleanupAndExit( status ); } } // =-=-=-=-=-=-=- // handle negotiations with the client regarding TLS if requested // this scope block makes valgrind happy { std::string neg_results; ret = irods::client_server_negotiation_for_server( net_obj, neg_results ); if ( !ret.ok() || neg_results == irods::CS_NEG_FAILURE ) { irods::log( PASS( ret ) ); // =-=-=-=-=-=-=- // send a 'we failed to negotiate' message here?? // or use the error stack rule engine thingie irods::log( PASS( ret ) ); sendVersion( net_obj, SYS_AGENT_INIT_ERR, 0, NULL, 0 ); cleanupAndExit( ret.code() ); } else { // =-=-=-=-=-=-=- // copy negotiation results to comm for action by network objects snprintf( rsComm.negotiation_results, sizeof( rsComm.negotiation_results ), "%s", neg_results.c_str() ); //rsComm.ssl_do_accept = 1; } } /* send the server version and atatus as part of the protocol. Put * rsComm.reconnPort as the status */ ret = sendVersion( net_obj, status, rsComm.reconnPort, rsComm.reconnAddr, rsComm.cookie ); if ( !ret.ok() ) { irods::log( PASS( ret ) ); sendVersion( net_obj, SYS_AGENT_INIT_ERR, 0, NULL, 0 ); cleanupAndExit( status ); } logAgentProc( &rsComm ); // call initialization for network plugin as negotiated irods::network_object_ptr new_net_obj; ret = irods::network_factory( &rsComm, new_net_obj ); if ( !ret.ok() ) { return ret.code(); } ret = sockAgentStart( new_net_obj ); if ( !ret.ok() ) { irods::log( PASS( ret ) ); return ret.code(); } new_net_obj->to_server( &rsComm ); status = agentMain( &rsComm ); // call initialization for network plugin as negotiated ret = sockAgentStop( new_net_obj ); if ( !ret.ok() ) { irods::log( PASS( ret ) ); return ret.code(); } new_net_obj->to_server( &rsComm ); cleanup(); free( rsComm.thread_ctx ); free( rsComm.auth_scheme ); rodsLog( LOG_NOTICE, "Agent exiting with status = %d", status ); return status; }
int main(int argc, char **argv) { int status; rsComm_t *Comm; /* rErrMsg_t errMsg;*/ rodsArguments_t myRodsArgs; char *mySubName; char *myName; int didOne; rodsServerConfig_t serverConfig; Comm = (rsComm_t*)malloc (sizeof (rsComm_t)); memset (Comm, 0, sizeof (rsComm_t)); parseCmdLineOpt(argc, argv, "", 0, &myRodsArgs); rodsLogLevel(LOG_NOTICE); rodsLogSqlReq(1); if (argc < 2) { printf("Usage: test_chl testName [args...]\n"); exit(3); } status = getRodsEnv (&myEnv); if (status < 0) { rodsLog (LOG_ERROR, "main: getRodsEnv error. status = %d", status); exit (1); } if (strstr(myEnv.rodsDebug, "CAT") != NULL) { chlDebug(myEnv.rodsDebug); } memset(&serverConfig, 0, sizeof(serverConfig)); status = readServerConfig(&serverConfig); strncpy(Comm->clientUser.userName, myEnv.rodsUserName, sizeof Comm->clientUser.userName); strncpy(Comm->clientUser.rodsZone, myEnv.rodsZone, sizeof Comm->clientUser.rodsZone); /* char rodsUserName[NAME_LEN]; char rodsZone[NAME_LEN]; userInfo_t clientUser; char userName[NAME_LEN]; char rodsZone[NAME_LEN]; */ if ((status = chlOpen(serverConfig.DBUsername, serverConfig.DBPassword)) != 0) { rodsLog (LOG_SYS_FATAL, "initInfoWithRcat: chlopen Error. Status = %d", status); free(Comm); // cppcheck - Memory leak: Comm return (status); } didOne=0; if (strcmp(argv[1],"reg")==0) { status = testRegDataObj(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"regmulti")==0) { status = testRegDataMulti(Comm, argv[2], argv[3], argv[4], argv[5]); didOne=1; } if (strcmp(argv[1],"mod")==0) { status = testModDataObjMeta(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"mod2")==0) { status = testModDataObjMeta2(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"modr")==0) { status = testModRuleMeta(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"modc")==0) { status = testModColl(Comm, argv[2], argv[3], argv[4], argv[5]); didOne=1; } if (strcmp(argv[1],"rmrule")==0) { status = testDelRule(Comm, argv[2], argv[3]); didOne=1; } if (strcmp(argv[1],"modrfs")==0) { status = testModResourceFreeSpace(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"rep")==0) { if (argc < 6) { printf("too few arguments\n"); exit(1); } status = testRegReplica(Comm, argv[2], argv[3], argv[4], argv[5]); didOne=1; } /* if (strcmp(argv[1],"cml")==0) { status = testCml(Comm); didOne=1; } */ if (strcmp(argv[1],"rmuser")==0) { status = testDelUser(Comm, argv[2], argv[3]); didOne=1; } if (strcmp(argv[1],"mkdir")==0) { status = testRegColl(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"rmdir")==0) { status = testDelColl(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"sql")==0) { status = testSimpleQ(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"rm")==0) { status = testDelFile(Comm, argv[2], argv[3]); didOne=1; } if (strcmp(argv[1],"rmtrash")==0) { status = testDelFileTrash(Comm, argv[2], argv[3]); didOne=1; } if (strcmp(argv[1],"rmpriv")==0) { status = testDelFilePriv(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"chmod")==0) { status = testChmod(Comm, argv[2], argv[3], argv[4], argv[5]); didOne=1; } if (strcmp(argv[1],"regrule")==0) { status = testRegRule(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"rename")==0) { status = testRename(Comm, argv[2], argv[3]); testCurrent(Comm); /* exercise this as part of rename; testCurrent needs a SQL context */ didOne=1; } if (strcmp(argv[1],"login")==0) { status = testLogin(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"move")==0) { status = testMove(Comm, argv[2], argv[3]); didOne=1; } if (strcmp(argv[1],"checkauth")==0) { status = testCheckAuth(Comm, argv[2], argv[3], argv[4]); didOne=1; } if (strcmp(argv[1],"temppw")==0) { status = testTempPw(Comm); didOne=1; } if (strcmp(argv[1],"tpc")==0) { status = testTempPwConvert(argv[2], argv[3]); didOne=1; } if (strcmp(argv[1],"tpw")==0) { status = testTempPwCombined(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"tpwforother")==0) { status = testTempPwForOther(Comm, argv[2], argv[3]); didOne=1; } if (strcmp(argv[1],"serverload")==0) { status = testServerLoad(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"purgeload")==0) { status = testPurgeServerLoad(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"serverdigest")==0) { status = testServerLoadDigest(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"purgedigest")==0) { status = testPurgeServerLoadDigest(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"checkquota")==0) { if (argc < 5) { status = testCheckQuota(Comm, argv[2], argv[3], NULL, NULL); } else { status = testCheckQuota(Comm, argv[2], argv[3], argv[4], argv[5]); } didOne=1; } if (strcmp(argv[1],"open")==0) { int i; for (i=0;i<3;i++) { status = chlClose(); if (status) { printf ("close %d error", i); } if ((status = chlOpen(serverConfig.DBUsername, serverConfig.DBPassword)) != 0) { rodsLog (LOG_SYS_FATAL, "initInfoWithRcat: chlopen %d Error. Status = %d", i, status); return (status); } } didOne=1; } if (strcmp(argv[1],"addrule")==0) { status = testAddRule(Comm, argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]); didOne=1; } if (strcmp(argv[1],"versionrulebase")==0) { status = testVersionRuleBase(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"versiondvmbase")==0) { status = testVersionDvmBase(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"versionfnmbase")==0) { status = testVersionFnmBase(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"insfnmtable")==0) { status = testInsFnmTable(Comm, argv[2], argv[3], argv[4], argv[5] ); didOne=1; } if (strcmp(argv[1],"insdvmtable")==0) { status = testInsDvmTable(Comm, argv[2], argv[3], argv[4], argv[5] ); didOne=1; } if (strcmp(argv[1],"insmsrvctable")==0) { status = testInsMsrvcTable(Comm, argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]); if (status==0) { /* do it a second time to test another logic path and different SQL. Since no commit is part of the chl function, and there is not corresponding Delete call, this is an easy way to do this. */ status = testInsMsrvcTable(Comm, argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]); } didOne=1; } if (strcmp(argv[1],"getlocalzone")==0) { status = testGetLocalZone(Comm, argv[2]); didOne=1; } if (strcmp(argv[1],"getpampw")==0) { status = testGetPamPw(Comm, argv[2], argv[3]); didOne=1; } if (status != 0) { /* if (Comm->rError) { rError_t *Err; rErrMsg_t *ErrMsg; int i, len; Err = Comm->rError; len = Err->len; for (i=0;i<len;i++) { ErrMsg = Err->errMsg[i]; rodsLog(LOG_ERROR, "Level %d: %s",i, ErrMsg->msg); } } */ myName = rodsErrorName(status, &mySubName); rodsLog (LOG_ERROR, "%s failed with error %d %s %s", argv[1], status, myName, mySubName); } else { if (didOne) printf("Completed successfully\n"); } if (didOne==0) { printf("Unknown test type: %s\n", argv[1]); } exit(status); }
int main(int argc, char **argv) { int mode; rodsServerConfig_t serverConfig; int status; rodsEnv myEnv; /* remove this call or change to LOG_NOTICE for more verbosity */ rodsLogLevel(LOG_ERROR); /* this will cause the sql to be printed, comment this out to skip it */ rodsLogSqlReq(1); mode = 0; if (strcmp(argv[1],"1")==0) mode=1; if (strcmp(argv[1],"2")==0) mode=2; if (strcmp(argv[1],"3")==0) mode=3; if (strcmp(argv[1],"4")==0) mode=4; if (strcmp(argv[1],"5")==0) mode=5; if (strcmp(argv[1],"6")==0) mode=6; memset((char *)&myEnv, 0, sizeof(myEnv)); status = getRodsEnv (&myEnv); if (status < 0) { rodsLog (LOG_ERROR, "main: getRodsEnv error. status = %d", status); exit (1); } if (strstr(myEnv.rodsDebug, "CAT") != NULL) { chlDebug(myEnv.rodsDebug); } memset(&serverConfig, 0, sizeof(serverConfig)); status = readServerConfig(&serverConfig); if ((status = chlOpen(serverConfig.DBUsername, serverConfig.DBPassword)) != 0) { rodsLog (LOG_SYS_FATAL, "chlopen Error. Status = %d", status); return (status); } if (mode==1) { status = doTest1(argv[2], argv[3], argv[4], argv[5]); if (status <0) exit(2); exit(0); } if (mode==2) { status = doTest2(argv[2], argv[3], argv[4], argv[5]); if (status <0) exit(2); exit(0); } if (mode==3) { status = doTest3(argv[2], argv[3], argv[4], argv[5]); if (status <0) exit(2); exit(0); } if (mode==4) { status = doTest4(argv[2], argv[3], argv[4], argv[5]); if (status <0) exit(2); exit(0); } if (mode==5) { status = doTest5(argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]); if (status <0) exit(2); exit(0); } if (mode==6) { status = doTest6(argv[2], argv[3], argv[4], argv[5]); if (status <0) exit(2); exit(0); } exit(0); }