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 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 ); }
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); }