def test_issue_2420(self): # manipulate the core.re to enable host access control corefile = get_irods_config_dir() + "/core.re" backupcorefile = corefile + "--" + self._testMethodName shutil.copy(corefile, backupcorefile) os.system( '''sed -e '/^acAclPolicy {msiAclPolicy("STRICT"); }/iacAclPolicy {ON($userNameClient == "quickshare") { } }' /etc/irods/core.re > /tmp/irods/core.re''') time.sleep(1) # remove once file hash fix is commited #2279 os.system("cp /tmp/irods/core.re /etc/irods/core.re") time.sleep(1) # remove once file hash fix is commited #2279 # restart the server to reread the new core.re os.system(get_irods_top_level_dir() + "/iRODS/irodsctl stop") os.system(get_irods_top_level_dir() + "/iRODS/irodsctl start") assertiCmd(s.adminsession, "ils", "LIST", "tempZone") # look for the error "unable to read session variable $userNameClient." p = subprocess.Popen( ['grep "unable to read session variable $userNameClient." ../../iRODS/server/log/rodsLog.*'], shell=True, stdout=subprocess.PIPE) result = p.communicate()[0] # restore the original core.re shutil.copy(backupcorefile, corefile) os.remove(backupcorefile) # check the results for the error assert(-1 == result.find("userNameClient"))
def test_iput_overwrite_others_file__ticket_2086(self): # pre state assertiCmd(s.adminsession,"ils -L","LIST",self.testfile) # should be listed # local setup filename = "overwritefile.txt" filepath = create_local_testfile(filename) # alice tries to put homepath = "/home/"+s.adminsession.getUserName()+"/"+s.adminsession.sessionId+"/"+self.testfile logicalpath = "/"+s.adminsession.getZoneName()+homepath assertiCmd(s.sessions[1],"iput "+filepath+" "+logicalpath,"ERROR","CAT_NO_ACCESS_PERMISSION") # iput # check physicalpaths (of all replicas) cmdout = s.adminsession.runCmd('ils',['-L']) print "[ils -L]:" print "["+cmdout[0]+"]" lines = cmdout[0].splitlines() for l in cmdout[0].splitlines(): if "demoResc" in l: if "/session-" in l: physicalpath = l.split()[2] # check file is on disk print "[ls -l "+physicalpath+"]:" os.system("ls -l "+physicalpath) assert os.path.exists(physicalpath) # local cleanup output = commands.getstatusoutput( 'rm '+filepath )
def test_server_config_environment_variables(self): # set log level to get all the things os.environ['spLogLevel'] = '11' # set a random environment value to find in the log svr_cfg_file = get_irods_config_dir() + "/server_config.json" os.system("cp %s %sOrig" % (svr_cfg_file, svr_cfg_file)) with open(svr_cfg_file) as f: svr_cfg = json.load(f) the_value = 'THIS_IS_THE_VALUE' svr_cfg['environment_variables']['foo_bar'] = the_value mod_json_file(svr_cfg_file, svr_cfg) # bounce the server to get the new env variable os.system(get_irods_top_level_dir() + "/iRODS/irodsctl stop") os.system(get_irods_top_level_dir() + "/iRODS/irodsctl start") assertiCmd(s.adminsession, "ils", "LIST", "tempZone") # look for the error "unable to read session variable $userNameClient." p = subprocess.Popen( ['grep "' + the_value + '" ../../iRODS/server/log/rodsLog.*'], shell=True, stdout=subprocess.PIPE) result = p.communicate()[0] del os.environ['spLogLevel'] os.system("mv %sOrig %s" % (svr_cfg_file, svr_cfg_file)) os.system(get_irods_top_level_dir() + "/iRODS/irodsctl stop") os.system(get_irods_top_level_dir() + "/iRODS/irodsctl start") # check the results for the error assert(-1 != result.find(the_value))
def test_local_imkdir(self): # local setup mytestdir = "testingimkdir" # assertions assertiCmdFail(s.adminsession, "ils -L " + mytestdir, "LIST", mytestdir) # should not be listed assertiCmd(s.adminsession, "imkdir " + mytestdir) # imkdir assertiCmd(s.adminsession, "ils -L " + mytestdir, "LIST", mytestdir) # should be listed
def test_local_imkdir_with_trailing_slash(self): # local setup mytestdir = "testingimkdirwithslash" # assertions assertiCmdFail(s.adminsession, "ils -L " + mytestdir + "/", "LIST", mytestdir) # should not be listed assertiCmd(s.adminsession, "imkdir " + mytestdir + "/") # imkdir assertiCmd(s.adminsession, "ils -L " + mytestdir, "LIST", mytestdir) # should be listed
def test_local_imkdir_with_trailing_slash_already_exists(self): # local setup mytestdir = "testingimkdirwithslash" # assertions assertiCmd(s.adminsession, "imkdir " + mytestdir + "/") # imkdir assertiCmdFail(s.adminsession, "imkdir " + mytestdir) # should fail, already exists assertiCmdFail(s.adminsession, "imkdir " + mytestdir + "/") # should fail, already exists
def test_local_imkdir_with_parent(self): # local setup mytestdir = "parent/testingimkdirwithparent" # assertions assertiCmdFail(s.adminsession, "ils -L " + mytestdir, "LIST", mytestdir) # should not be listed assertiCmd(s.adminsession, "imkdir -p " + mytestdir) # imkdir with parent assertiCmd(s.adminsession, "ils -L " + mytestdir, "LIST", mytestdir) # should be listed
def test_icp_r(self): base_name_source = "test_icp_r_dir_source" user_session = s.sessions[1] file_names = set(self.iput_r_large_collection(user_session, base_name_source, file_count=1000, file_size=100)[1]) base_name_target = "test_icp_r_dir_target" assertiCmd(user_session, "icp -r " + base_name_source + " " + base_name_target, "EMPTY") assertiCmd(user_session, "ils", "LIST", base_name_target) rods_files_source = set(runCmd_ils_to_entries(user_session.runCmd("ils", [base_name_source]))) self.assertTrue(file_names == rods_files_source, msg="Files missing from rods source:\n" + str(file_names-rods_files_source) + "\n\n" + \ "Extra files in rods source:\n" + str(rods_files_source-file_names)) rods_files_target = set(runCmd_ils_to_entries(user_session.runCmd("ils", [base_name_target]))) self.assertTrue(file_names == rods_files_target, msg="Files missing from rods target:\n" + str(file_names-rods_files_target) + "\n\n" + \ "Extra files in rods target:\n" + str(rods_files_target-file_names)) vault_files_post_icp_source = set(os.listdir(os.path.join(get_vault_session_path(user_session), base_name_source))) self.assertTrue(file_names == vault_files_post_icp_source, msg="Files missing from vault:\n" + str(file_names-vault_files_post_icp_source) + "\n\n" + \ "Extra files in vault:\n" + str(vault_files_post_icp_source-file_names)) vault_files_post_icp_target = set(os.listdir(os.path.join(get_vault_session_path(user_session), base_name_target))) self.assertTrue(file_names == vault_files_post_icp_target, msg="Files missing from vault:\n" + str(file_names-vault_files_post_icp_target) + "\n\n" + \ "Extra files in vault:\n" + str(vault_files_post_icp_target-file_names))
def test_curl_post(self): rule_file = self.rules_dir + "curlPost.r" print "-- running "+rule_file # will have to dynamically pass form_data to the rule once that's fixed form_data = "Sent from iRODS" c.assertiCmd(s.adminsession,"irule -F "+rule_file, "LIST", form_data)
def test_irm_specific_replica(self): assertiCmd(s.adminsession,"ils -L "+self.testfile,"LIST",self.testfile) # should be listed assertiCmd(s.adminsession,"irepl -R "+self.testresc+" "+self.testfile) # creates replica assertiCmd(s.adminsession,"ils -L "+self.testfile,"LIST",self.testfile) # should be listed twice assertiCmd(s.adminsession,"irm -n 0 "+self.testfile) # remove original from grid assertiCmd(s.adminsession,"ils -L "+self.testfile,"LIST",["1 "+self.testresc,self.testfile]) # replica 1 should be there assertiCmdFail(s.adminsession,"ils -L "+self.testfile,"LIST",["0 "+s.adminsession.getDefResource(),self.testfile]) # replica 0 should be gone trashpath = "/"+s.adminsession.getZoneName()+"/trash/home/"+s.adminsession.getUserName()+"/"+s.adminsession.sessionId assertiCmdFail(s.adminsession,"ils -L "+trashpath+"/"+self.testfile,"LIST",["0 "+s.adminsession.getDefResource(),self.testfile]) # replica should not be in trash
def test_iscan_local_file(self): assertiCmd( s.sessions[1], 'iscan non_existent_file', 'STDERR', 'ERROR: scanObj: non_existent_file does not exist' ) existent_file = os.path.join( s.sessions[1]._session_dir, 'existent_file' ) pydevtest_common.touch( existent_file ) assertiCmd( s.sessions[1], 'iscan ' + existent_file, 'STDOUT', existent_file + ' is not registered in iRODS' ) assertiCmd( s.sessions[1], 'iput ' + existent_file ); output = getiCmdOutput( s.sessions[1], '''iquest "SELECT DATA_PATH WHERE DATA_NAME = 'existent_file'"''' )[0] data_path = output.strip().strip('-').strip()[12:] assertiCmd( s.sessions[1], 'iscan ' + data_path ); assertiCmd( s.sessions[1], 'irm -f existent_file' );
def test_imeta_set_single_object_abandoned_avu_triple_to_double_empty_unit(self): user = s.sessions[1].get_username() set_and_check_avu(user, 'att0', 'val0', 'unt0') assertiCmd(s.adminsession, 'imeta rm -u %s %s %s %s' % (user, 'att0', 'val0', 'unt0')) set_and_check_avu(user, 'att0', 'val0', '""') assertiCmdFail(s.adminsession, 'imeta ls -u ' + user + ' att0', 'STDOUT', 'units: unt0')
def test_local_iput_physicalpath_no_permission(self): # local setup datafilename = "newfile.txt" f = open(datafilename,'wb') f.write("TESTFILE -- ["+datafilename+"]") f.close() # assertions assertiCmd(s.adminsession,"iput -p /newfileinroot.txt "+datafilename,"ERROR",["UNIX_FILE_CREATE_ERR","Permission denied"]) # should fail to write # local cleanup output = commands.getstatusoutput( 'rm '+datafilename )
def setUp(self): ResourceBase.__init__(self) s.twousers_up() self.run_resource_setup() usernames = [ss.get_username() for ss in s.sessions] assertiCmd(s.adminsession, 'iadmin lu', 'STDOUT_MULTILINE', usernames) for u in usernames: assertiCmd(s.adminsession, 'imeta ls -u ' + u, 'STDOUT', 'None')
def test_local_iget(self): # local setup localfile = "local.txt" # assertions assertiCmd(s.adminsession,"iget "+self.testfile+" "+localfile) # iget output = commands.getstatusoutput( 'ls '+localfile ) print " output: ["+output[1]+"]" assert output[1] == localfile # local cleanup output = commands.getstatusoutput( 'rm '+localfile )
def test_local_iput_checksum(self): # local setup datafilename = "newfile.txt" f = open(datafilename,'wb') f.write("TESTFILE -- ["+datafilename+"]") f.close() # assertions assertiCmd(s.adminsession,"iput -K "+datafilename) # iput assertiCmd(s.adminsession,"ils -L","LIST","d60af3eb3251240782712eab3d8ef3b1") # check proper checksum # local cleanup output = commands.getstatusoutput( 'rm '+datafilename )
def test_local_iput_relative_physicalpath_into_server_bin(self): # local setup datafilename = "newfile.txt" f = open(datafilename,'wb') f.write("TESTFILE -- ["+datafilename+"]") f.close() # assertions relpath = "relativephysicalpath.txt" assertiCmd(s.sessions[1],"iput -p "+relpath+" "+datafilename,"ERROR","absolute") # should error # local cleanup output = commands.getstatusoutput( 'rm '+datafilename )
def setUp(self): ResourceBase.__init__(self) s.twousers_up() shutil.copy2('/bin/cp', RODSHOME + '/server/bin/cmd/mycp') shutil.copy2(FILESDIR + '/myWorkFlow', RODSHOME + '/server/bin/cmd/') shutil.copy2(FILESDIR + '/tt', RODSHOME + '/server/bin/cmd/') assertiCmd(s.adminsession, "iput -f " + FILESDIR + "/PHOTO.JPG /tempZone/home/rods") getiCmdOutput(s.adminsession, "irm -rf /tempZone/home/rods/workflow") assertiCmd(s.adminsession, "imkdir -p /tempZone/home/rods/workflow") self.run_resource_setup()
def test_create_and_remove_coordinating_resource(self): testresc1 = "testResc1" assertiCmdFail(s.adminsession,"iadmin lr","LIST",testresc1) # should not be listed output = commands.getstatusoutput("hostname") hostname = output[1] assertiCmd(s.adminsession,"iadmin mkresc "+testresc1+" replication", "LIST", "Creating") # replication assertiCmd(s.adminsession,"iadmin lr","LIST",testresc1) # should be listed assertiCmd(s.adminsession,"iadmin lr "+testresc1,"LIST",["resc_net","EMPTY_RESC_HOST"]) # should have empty host assertiCmd(s.adminsession,"iadmin lr "+testresc1,"LIST",["resc_def_path","EMPTY_RESC_PATH"]) # should have empty path assertiCmd(s.adminsession,"iadmin rmresc "+testresc1) # good remove assertiCmdFail(s.adminsession,"iadmin lr","LIST",testresc1) # should be gone
def test_irepl_invalid_input(self): # local setup filename = "somefile.txt" filepath = create_local_testfile(filename) # assertions assertiCmd(s.adminsession,"ils -L "+filename,"STDERR","does not exist") # should not be listed assertiCmd(s.adminsession,"iput "+filename) # put file assertiCmd(s.adminsession,"ils -L "+filename,"STDOUT",filename) # for debugging assertiCmd(s.adminsession,"irepl -R nonresc "+filename,"STDERR","SYS_INVALID_INPUT_PARAM") # replicate to bad resource assertiCmd(s.adminsession,"irm -f "+filename) # cleanup file # local cleanup os.remove(filepath)
def test_local_iput_upper_checksum(self): # local setup datafilename = "newfile.txt" with open(datafilename,'wb') as f: f.write("TESTFILE -- ["+datafilename+"]") # assertions assertiCmd(s.adminsession,"iput -K "+datafilename) # iput with open(datafilename) as f: checksum = hashlib.sha256(f.read()).digest().encode("base64").strip() assertiCmd(s.adminsession,"ils -L","LIST","sha2:"+checksum) # check proper checksum # local cleanup output = commands.getstatusoutput( 'rm '+datafilename )
def test_irm_r(self): base_name = "test_irm_r_dir" user_session = s.sessions[1] self.iput_r_large_collection(user_session, base_name, file_count=1000, file_size=100) assertiCmd(user_session, "irm -r " + base_name, "EMPTY") assertiCmd(user_session, "ils " + base_name, "ERROR", "does not exist") vault_files_post_irm = os.listdir(os.path.join(get_vault_session_path(user_session), base_name)) self.assertTrue(len(vault_files_post_irm) == 0, msg="Files not removed from vault:\n" + str(vault_files_post_irm))
def test_local_iput_with_changed_target_filename(self): # local setup datafilename = "newfile.txt" f = open(datafilename,'wb') f.write("TESTFILE -- ["+datafilename+"]") f.close() # assertions changedfilename = "different.txt" assertiCmd(s.adminsession,"iput "+datafilename+" "+changedfilename) # should complete assertiCmd(s.adminsession,"ils -L "+changedfilename,"LIST",changedfilename) # should be listed # local cleanup output = commands.getstatusoutput( 'rm '+datafilename )
def test_local_iget_with_overwrite(self): # local setup localfile = "local.txt" # assertions assertiCmd(s.adminsession,"iget "+self.testfile+" "+localfile) # iget assertiCmdFail(s.adminsession,"iget "+self.testfile+" "+localfile) # already exists assertiCmd(s.adminsession,"iget -f "+self.testfile+" "+localfile) # already exists, so force output = commands.getstatusoutput( 'ls '+localfile ) print " output: ["+output[1]+"]" assert output[1] == localfile # local cleanup output = commands.getstatusoutput( 'rm '+localfile )
def check_avu(user_name, a, v, u): # If setting unit to empty string then ls output should be blank if u == '""': u = '' a = re.escape(a) v = re.escape(v) u = re.escape(u) assertiCmd(s.adminsession, 'imeta ls -u %s %s' % (user_name, a), 'STDOUT_MULTILINE', ['attribute: ' + a + '$', 'value: ' + v + '$', 'units: ' + u + '$'], use_regex=True)
def test_mso_slink(self): test_file_path = "/"+s.adminsession.getZoneName()+"/home/"+s.adminsession.getUserName()+"/"+s.adminsession.sessionId assertiCmd( s.adminsession, 'iput -fR origResc ../zombiereaper.sh src_file.txt' ) assertiCmd( s.adminsession, 'ireg -D mso -R archiveResc "//slink:'+test_file_path+'/src_file.txt" '+test_file_path+'/test_file.txt') assertiCmd( s.adminsession, 'iget -f '+test_file_path+'/test_file.txt') result = os.system("diff %s %s" % ( './test_file.txt', '../zombiereaper.sh' )) assert result == 0 assertiCmd( s.adminsession, 'iput -f ../zombiereaper.sh '+test_file_path+'/test_file.txt') # unregister the object assertiCmd( s.adminsession, 'irm -U '+test_file_path+'/test_file.txt')
def test_local_iput(self): '''also needs to count and confirm number of replicas after the put''' # local setup datafilename = "newfile.txt" f = open(datafilename,'wb') f.write("TESTFILE -- ["+datafilename+"]") f.close() # assertions assertiCmdFail(s.adminsession,"ils -L "+datafilename,"LIST",datafilename) # should not be listed assertiCmd(s.adminsession,"iput "+datafilename) # iput assertiCmd(s.adminsession,"ils -L "+datafilename,"LIST",datafilename) # should be listed # local cleanup output = commands.getstatusoutput( 'rm '+datafilename )
def test_empty_icd(self): # assertions assertiCmd(s.adminsession, "ils -L", "LIST", "test") # whatever assertiCmd(s.adminsession, "icd " + self.testdir) # get into subdir assertiCmd(s.adminsession, "icd") # just go home assertiCmd(s.adminsession, "ils", "LIST", "/" + s.adminsession.getZoneName() + "/home/" + s.adminsession.getUserName() + ":") # listing
def test_isysmeta_no_permission(self): assertiCmd(s.sessions[1], "icd /" + s.adminsession.getZoneName() + "/home/public", "EMPTY") # get into public/ assertiCmd(s.sessions[1], "ils -L ", "STDOUT", "pydevtest_testfile.txt") # basic listing assertiCmd(s.sessions[1], "isysmeta ls pydevtest_testfile.txt", "STDOUT", "data_expiry_ts (expire time): 00000000000: None") # initialized with zeros assertiCmd(s.sessions[1], "isysmeta mod pydevtest_testfile.txt 1", "ERROR", "CAT_NO_ACCESS_PERMISSION") # cannot set expiry
def test_resource_name_restrictions(self): h = get_hostname() oversize_name = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" # longer than NAME_LEN assertiCmd(s.adminsession,"iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("?/=*", h, "junk"), "ERROR", "SYS_INVALID_INPUT_PARAM") # invalid char assertiCmd(s.adminsession,"iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("replication.B", h, "junk"), "ERROR", "SYS_INVALID_INPUT_PARAM") # invalid char assertiCmd(s.adminsession,"iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("replication{", h, "junk"), "ERROR", "SYS_INVALID_INPUT_PARAM") # invalid char assertiCmd(s.adminsession,"iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % (oversize_name, h, "junk"), "ERROR", "SYS_INVALID_INPUT_PARAM") # too long
def test_local_ihelp_with_good_icommand(self): # assertions assertiCmd(s.adminsession, "ihelp ils", "LIST", "Usage") # run ihelp with good icommand
def test_ireg_files(self): assertiCmd( s.adminsession, "ireg -R l_resc " + ABSPATHTESTDIR + "/file0 /tempZone/home/rods/file0", "EMPTY") assertiCmd(s.adminsession, "ils -l /tempZone/home/rods/file0", "LIST", "r_resc;m_resc;l_resc") assertiCmd( s.adminsession, "ireg -R r_resc " + ABSPATHTESTDIR + "/file1 /tempZone/home/rods/file1", "EMPTY") assertiCmd(s.adminsession, "ils -l /tempZone/home/rods/file1", "LIST", "r_resc;m_resc;l_resc") assertiCmd( s.adminsession, "ireg -R m_resc " + ABSPATHTESTDIR + "/file2 /tempZone/home/rods/file2", "ERROR", "ERROR: regUtil: reg error for") assertiCmd( s.adminsession, "ireg -R demoResc " + ABSPATHTESTDIR + "/file3 /tempZone/home/rods/file3", "EMPTY")
def set_avu(user_name, a, v, u): assertiCmd(s.adminsession, 'imeta set -u %s %s %s %s' % (user_name, a, v, u))
def test_iexit(self): # assertions assertiCmd(s.adminsession, "iexit") # just go home
def test_iadmin_mkuser(self): # A few examples of valid and invalid usernames valid = ['bob', 'jim-bob', 'boB', '123.456', '___haysoos___'] invalid = [ 'bo', '.bob', 'bob.', 'jim--bob', 'jamesbond..007', '________________________________longer_than_NAME_LEN________________________________________________' ] # Test valid names for name in valid: assertiCmd(s.adminsession, "iadmin mkuser " + name + " rodsuser") # should be accepted assertiCmd(s.adminsession, "iadmin lu", "LIST", name + "#" + s.adminsession.getZoneName()) # should be listed assertiCmd(s.adminsession, "iadmin rmuser " + name) # remove user assertiCmdFail(s.adminsession, "iadmin lu", "LIST", name + "#" + s.adminsession.getZoneName()) # should be gone # Test invalid names for name in invalid: assertiCmd(s.adminsession, "iadmin mkuser " + name + " rodsuser", "ERROR", "SYS_INVALID_INPUT_PARAM") # should be rejected # Invalid names with special characters assertiCmd(s.adminsession, r"iadmin mkuser hawai\'i rodsuser", "ERROR", "SYS_INVALID_INPUT_PARAM") # should be rejected assertiCmd(s.adminsession, r"iadmin mkuser \\\/\!\*\?\|\$ rodsuser", "ERROR", "SYS_INVALID_INPUT_PARAM") # should be rejected
def test_rebalance_for_repl_node(self): output = commands.getstatusoutput("hostname") hostname = output[1] # =-=-=-=-=-=-=- # STANDUP assertiCmd(s.adminsession, "iadmin mkresc pt passthru", "LIST", "Creating") assertiCmd(s.adminsession, "iadmin mkresc pt_b passthru", "LIST", "Creating") assertiCmd(s.adminsession, "iadmin mkresc pt_c1 passthru", "LIST", "Creating") assertiCmd(s.adminsession, "iadmin mkresc pt_c2 passthru", "LIST", "Creating") assertiCmd(s.adminsession, "iadmin mkresc repl replication", "LIST", "Creating") assertiCmd(s.adminsession, "iadmin mkresc leaf_a unixfilesystem " + hostname + ":/tmp/pydevtest_leaf_a", "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin mkresc leaf_b unixfilesystem " + hostname + ":/tmp/pydevtest_leaf_b", "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin mkresc leaf_c unixfilesystem " + hostname + ":/tmp/pydevtest_leaf_c", "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin addchildtoresc pt repl") assertiCmd(s.adminsession, "iadmin addchildtoresc repl leaf_a") assertiCmd(s.adminsession, "iadmin addchildtoresc repl pt_b") assertiCmd(s.adminsession, "iadmin addchildtoresc repl pt_c1") assertiCmd(s.adminsession, "iadmin addchildtoresc pt_b leaf_b") assertiCmd(s.adminsession, "iadmin addchildtoresc pt_c1 pt_c2") assertiCmd(s.adminsession, "iadmin addchildtoresc pt_c2 leaf_c") # =-=-=-=-=-=-=- # place data into the resource num_children = 11 for i in range(num_children): assertiCmd(s.adminsession, "iput -R pt README foo%d" % i) # =-=-=-=-=-=-=- # surgically trim repls so we can rebalance assertiCmd(s.adminsession, "itrim -N1 -n 0 foo0 foo3 foo5 foo6 foo7 foo8") assertiCmd(s.adminsession, "itrim -N1 -n 1 foo1 foo3 foo4 foo9") assertiCmd(s.adminsession, "itrim -N1 -n 2 foo2 foo4 foo5") # =-=-=-=-=-=-=- # visualize our pruning assertiCmd(s.adminsession, "ils -AL", "LIST", "foo") # =-=-=-=-=-=-=- # call rebalance function - the thing were actually testing... finally. assertiCmd(s.adminsession, "iadmin modresc pt rebalance") # =-=-=-=-=-=-=- # assert that all the appropriate repl numbers exist for all the children assertiCmd(s.adminsession, "ils -AL foo0", "LIST", [" 1 ", " foo0"]) assertiCmd(s.adminsession, "ils -AL foo0", "LIST", [" 2 ", " foo0"]) assertiCmd(s.adminsession, "ils -AL foo0", "LIST", [" 3 ", " foo0"]) assertiCmd(s.adminsession, "ils -AL foo1", "LIST", [" 0 ", " foo1"]) assertiCmd(s.adminsession, "ils -AL foo1", "LIST", [" 2 ", " foo1"]) assertiCmd(s.adminsession, "ils -AL foo1", "LIST", [" 3 ", " foo1"]) assertiCmd(s.adminsession, "ils -AL foo2", "LIST", [" 0 ", " foo2"]) assertiCmd(s.adminsession, "ils -AL foo2", "LIST", [" 1 ", " foo2"]) assertiCmd(s.adminsession, "ils -AL foo2", "LIST", [" 2 ", " foo2"]) assertiCmd(s.adminsession, "ils -AL foo3", "LIST", [" 2 ", " foo3"]) assertiCmd(s.adminsession, "ils -AL foo3", "LIST", [" 3 ", " foo3"]) assertiCmd(s.adminsession, "ils -AL foo3", "LIST", [" 4 ", " foo3"]) assertiCmd(s.adminsession, "ils -AL foo4", "LIST", [" 0 ", " foo4"]) assertiCmd(s.adminsession, "ils -AL foo4", "LIST", [" 1 ", " foo4"]) assertiCmd(s.adminsession, "ils -AL foo4", "LIST", [" 2 ", " foo4"]) assertiCmd(s.adminsession, "ils -AL foo5", "LIST", [" 1 ", " foo5"]) assertiCmd(s.adminsession, "ils -AL foo5", "LIST", [" 2 ", " foo5"]) assertiCmd(s.adminsession, "ils -AL foo5", "LIST", [" 3 ", " foo5"]) assertiCmd(s.adminsession, "ils -AL foo6", "LIST", [" 1 ", " foo6"]) assertiCmd(s.adminsession, "ils -AL foo6", "LIST", [" 2 ", " foo6"]) assertiCmd(s.adminsession, "ils -AL foo6", "LIST", [" 3 ", " foo6"]) assertiCmd(s.adminsession, "ils -AL foo7", "LIST", [" 1 ", " foo7"]) assertiCmd(s.adminsession, "ils -AL foo7", "LIST", [" 2 ", " foo7"]) assertiCmd(s.adminsession, "ils -AL foo7", "LIST", [" 3 ", " foo7"]) assertiCmd(s.adminsession, "ils -AL foo8", "LIST", [" 1 ", " foo8"]) assertiCmd(s.adminsession, "ils -AL foo8", "LIST", [" 2 ", " foo8"]) assertiCmd(s.adminsession, "ils -AL foo8", "LIST", [" 3 ", " foo8"]) assertiCmd(s.adminsession, "ils -AL foo9", "LIST", [" 0 ", " foo9"]) assertiCmd(s.adminsession, "ils -AL foo9", "LIST", [" 2 ", " foo9"]) assertiCmd(s.adminsession, "ils -AL foo9", "LIST", [" 3 ", " foo9"]) assertiCmd(s.adminsession, "ils -AL foo10", "LIST", [" 0 ", " foo10"]) assertiCmd(s.adminsession, "ils -AL foo10", "LIST", [" 1 ", " foo10"]) assertiCmd(s.adminsession, "ils -AL foo10", "LIST", [" 2 ", " foo10"]) # =-=-=-=-=-=-=- # TEARDOWN for i in range(num_children): assertiCmd(s.adminsession, "irm -f foo%d" % i) assertiCmd(s.adminsession, "iadmin rmchildfromresc pt_c2 leaf_c") assertiCmd(s.adminsession, "iadmin rmchildfromresc repl leaf_a") assertiCmd(s.adminsession, "iadmin rmchildfromresc pt_b leaf_b") assertiCmd(s.adminsession, "iadmin rmchildfromresc pt_c1 pt_c2") assertiCmd(s.adminsession, "iadmin rmchildfromresc repl pt_c1") assertiCmd(s.adminsession, "iadmin rmchildfromresc repl pt_b") assertiCmd(s.adminsession, "iadmin rmchildfromresc pt repl") assertiCmd(s.adminsession, "iadmin rmresc leaf_c") assertiCmd(s.adminsession, "iadmin rmresc leaf_b") assertiCmd(s.adminsession, "iadmin rmresc leaf_a") assertiCmd(s.adminsession, "iadmin rmresc pt_c2") assertiCmd(s.adminsession, "iadmin rmresc pt_c1") assertiCmd(s.adminsession, "iadmin rmresc pt_b") assertiCmd(s.adminsession, "iadmin rmresc repl") assertiCmd(s.adminsession, "iadmin rmresc pt")
def test_rebalance_for_repl_in_repl_node(self): output = commands.getstatusoutput("hostname") # =-=-=-=-=-=-=- # STANDUP h = get_hostname() # first tree standup assertiCmd(s.adminsession, "iadmin mkresc %s passthru %s:/tmp/pydevtest_%s" % ("pt", h, "pt"), "LIST", "Creating") # passthru assertiCmd(s.adminsession, "iadmin mkresc %s replication %s:/tmp/pydevtest_%s" % ("replA", h, "replA"), "LIST", "Creating") # replication assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unixA1", h, "unixA1"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unixA2", h, "unixA2"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("pt", "replA")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replA", "unixA1")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replA", "unixA2")) # second tree standup assertiCmd(s.adminsession, "iadmin mkresc %s replication %s:/tmp/pydevtest_%s" % ("replB", h, "replB"), "LIST", "Creating") # replication assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unixB1", h, "unixB1"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unixB2", h, "unixB2"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replB", "unixB1")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replB", "unixB2")) # wire the repls together assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replA", "replB")) # =-=-=-=-=-=-=- # place data into the resource num_children = 11 for i in range(num_children): assertiCmd(s.adminsession, "iput -R pt README foo%d" % i) # =-=-=-=-=-=-=- # visualize our replication assertiCmd(s.adminsession, "ils -AL", "LIST", "foo") # =-=-=-=-=-=-=- # surgically trim repls so we can rebalance assertiCmd(s.adminsession, "itrim -N1 -n 0 foo0 foo3 foo5 foo6 foo7 foo8") assertiCmd(s.adminsession, "itrim -N1 -n 1 foo1 foo3 foo4 foo9") assertiCmd(s.adminsession, "itrim -N1 -n 2 foo2 foo4 foo5") # =-=-=-=-=-=-=- # dirty up a foo10 repl to ensure that code path is tested also assertiCmd(s.adminsession, "iadmin modresc unixA2 status down") assertiCmd(s.adminsession, "iput -fR pt test_allrules.py foo10") assertiCmd(s.adminsession, "iadmin modresc unixA2 status up") # =-=-=-=-=-=-=- # visualize our pruning assertiCmd(s.adminsession, "ils -AL", "LIST", "foo") # =-=-=-=-=-=-=- # call rebalance function - the thing were actually testing... finally. assertiCmd(s.adminsession, "iadmin modresc pt rebalance") # =-=-=-=-=-=-=- # visualize our rebalance assertiCmd(s.adminsession, "ils -AL", "LIST", "foo") # =-=-=-=-=-=-=- # assert that all the appropriate repl numbers exist for all the children assertiCmd(s.adminsession, "ils -AL foo0", "LIST", [" 1 ", " foo0"]) assertiCmd(s.adminsession, "ils -AL foo0", "LIST", [" 2 ", " foo0"]) assertiCmd(s.adminsession, "ils -AL foo0", "LIST", [" 3 ", " foo0"]) assertiCmd(s.adminsession, "ils -AL foo0", "LIST", [" 4 ", " foo0"]) assertiCmd(s.adminsession, "ils -AL foo1", "LIST", [" 0 ", " foo1"]) assertiCmd(s.adminsession, "ils -AL foo1", "LIST", [" 2 ", " foo1"]) assertiCmd(s.adminsession, "ils -AL foo1", "LIST", [" 3 ", " foo1"]) assertiCmd(s.adminsession, "ils -AL foo1", "LIST", [" 4 ", " foo1"]) assertiCmd(s.adminsession, "ils -AL foo2", "LIST", [" 0 ", " foo2"]) assertiCmd(s.adminsession, "ils -AL foo2", "LIST", [" 1 ", " foo2"]) assertiCmd(s.adminsession, "ils -AL foo2", "LIST", [" 3 ", " foo2"]) assertiCmd(s.adminsession, "ils -AL foo2", "LIST", [" 4 ", " foo2"]) assertiCmd(s.adminsession, "ils -AL foo3", "LIST", [" 2 ", " foo3"]) assertiCmd(s.adminsession, "ils -AL foo3", "LIST", [" 3 ", " foo3"]) assertiCmd(s.adminsession, "ils -AL foo3", "LIST", [" 4 ", " foo3"]) assertiCmd(s.adminsession, "ils -AL foo3", "LIST", [" 5 ", " foo3"]) assertiCmd(s.adminsession, "ils -AL foo4", "LIST", [" 0 ", " foo4"]) assertiCmd(s.adminsession, "ils -AL foo4", "LIST", [" 3 ", " foo4"]) assertiCmd(s.adminsession, "ils -AL foo4", "LIST", [" 4 ", " foo4"]) assertiCmd(s.adminsession, "ils -AL foo4", "LIST", [" 5 ", " foo4"]) assertiCmd(s.adminsession, "ils -AL foo5", "LIST", [" 1 ", " foo5"]) assertiCmd(s.adminsession, "ils -AL foo5", "LIST", [" 3 ", " foo5"]) assertiCmd(s.adminsession, "ils -AL foo5", "LIST", [" 4 ", " foo5"]) assertiCmd(s.adminsession, "ils -AL foo5", "LIST", [" 5 ", " foo5"]) assertiCmd(s.adminsession, "ils -AL foo6", "LIST", [" 1 ", " foo6"]) assertiCmd(s.adminsession, "ils -AL foo6", "LIST", [" 2 ", " foo6"]) assertiCmd(s.adminsession, "ils -AL foo6", "LIST", [" 3 ", " foo6"]) assertiCmd(s.adminsession, "ils -AL foo6", "LIST", [" 4 ", " foo6"]) assertiCmd(s.adminsession, "ils -AL foo7", "LIST", [" 1 ", " foo7"]) assertiCmd(s.adminsession, "ils -AL foo7", "LIST", [" 2 ", " foo7"]) assertiCmd(s.adminsession, "ils -AL foo7", "LIST", [" 3 ", " foo7"]) assertiCmd(s.adminsession, "ils -AL foo7", "LIST", [" 4 ", " foo7"]) assertiCmd(s.adminsession, "ils -AL foo8", "LIST", [" 1 ", " foo8"]) assertiCmd(s.adminsession, "ils -AL foo8", "LIST", [" 2 ", " foo8"]) assertiCmd(s.adminsession, "ils -AL foo8", "LIST", [" 3 ", " foo8"]) assertiCmd(s.adminsession, "ils -AL foo8", "LIST", [" 4 ", " foo8"]) assertiCmd(s.adminsession, "ils -AL foo9", "LIST", [" 0 ", " foo9"]) assertiCmd(s.adminsession, "ils -AL foo9", "LIST", [" 2 ", " foo9"]) assertiCmd(s.adminsession, "ils -AL foo9", "LIST", [" 3 ", " foo9"]) assertiCmd(s.adminsession, "ils -AL foo9", "LIST", [" 4 ", " foo9"]) assertiCmd(s.adminsession, "ils -AL foo10", "LIST", [" 0 ", " & ", " foo10"]) assertiCmd(s.adminsession, "ils -AL foo10", "LIST", [" 1 ", " & ", " foo10"]) assertiCmd(s.adminsession, "ils -AL foo10", "LIST", [" 2 ", " & ", " foo10"]) assertiCmd(s.adminsession, "ils -AL foo10", "LIST", [" 3 ", " & ", " foo10"]) # =-=-=-=-=-=-=- # TEARDOWN for i in range(num_children): assertiCmd(s.adminsession, "irm -f foo%d" % i) # unwire repl nods assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replA", "replB")) # second tree teardown assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replB", "unixB2")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replB", "unixB1")) assertiCmd(s.adminsession, "iadmin rmresc %s" % "unixB2") assertiCmd(s.adminsession, "iadmin rmresc %s" % "unixB1") assertiCmd(s.adminsession, "iadmin rmresc %s" % "replB") # first tree teardown assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replA", "unixA2")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replA", "unixA1")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("pt", "replA")) assertiCmd(s.adminsession, "iadmin rmresc %s" % "unixA2") assertiCmd(s.adminsession, "iadmin rmresc %s" % "unixA1") assertiCmd(s.adminsession, "iadmin rmresc %s" % "replA") assertiCmd(s.adminsession, "iadmin rmresc %s" % "pt")
def test_iphybun_n(self): assertiCmd(s.adminsession, "imkdir testColl") assertiCmd(s.adminsession, "icd testColl") filenames = [] for i in range(0, 8): f = "empty" + str(i) + ".txt" filenames.append(f) cat(f, str(i)) assertiCmd(s.adminsession, "iput " + f) unlink(f) assertiCmd(s.adminsession, "icd ..") assertiCmd(s.adminsession, "iphybun -N3 -SdemoResc -RdemoResc testColl") coll_dir = getiCmdOutput(s.adminsession, "ils /tempZone/bundle/home/rods")[0].split('\n')[-2].lstrip(string.printable.translate(None, "/")) after = getiCmdOutput(s.adminsession, "ils " + coll_dir) after = after[0].split('\n'); assert(len(after) == 2 + 3) assertiCmd(s.adminsession, "irm -rf testColl" )
def test_iquest_totaldatasize(self): assertiCmd(s.adminsession, "iquest \"select sum(DATA_SIZE) where COLL_NAME like '/" + s.adminsession.getZoneName() + "/home/%'\"", "LIST", "DATA_SIZE") # selects total data size
def test_iquest_bad_format(self): assertiCmd(s.adminsession, "iquest \"bad formatting\"", "ERROR", "INPUT_ARG_NOT_WELL_FORMED_ERR") # bad request
def test_modify_resource_name(self): h = get_hostname() # tree standup assertiCmd(s.adminsession, "iadmin mkresc %s passthru %s:/tmp/pydevtest_%s" % ("pt1", h, "pt1"), "LIST", "Creating") # passthru assertiCmd(s.adminsession, "iadmin mkresc %s replication %s:/tmp/pydevtest_%s" % ("repl", h, "repl"), "LIST", "Creating") # replication assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unix1", h, "unix1"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin mkresc %s passthru %s:/tmp/pydevtest_%s" % ("pt2", h, "pt2"), "LIST", "Creating") # passthru assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unix2", h, "unix2"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("pt1", "repl")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("repl", "unix1")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("repl", "pt2")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("pt2", "unix2")) # rename repl node newnodename = "replwithmoreletters" assertiCmd(s.adminsession, "iadmin modresc %s name %s" % ("repl", newnodename), "LIST", "OK, performing the resource rename") # rename # confirm children of pt1 is newnodename assertiCmd(s.adminsession, "iadmin lr %s" % "pt1", "LIST", "resc_children: %s" % newnodename + "{}") # confirm parent of newnodename is still pt1 assertiCmd(s.adminsession, "iadmin lr %s" % newnodename, "LIST", "resc_parent: %s" % "pt1") # confirm children of newnodename is unix1 and pt2 assertiCmd(s.adminsession, "iadmin lr %s" % newnodename, "LIST", "resc_children: %s" % "unix1{};pt2{}") # confirm parent of pt2 is newnodename assertiCmd(s.adminsession, "iadmin lr %s" % "pt2", "LIST", "resc_parent: %s" % newnodename) # confirm parent of unix2 is pt2 assertiCmd(s.adminsession, "iadmin lr %s" % "unix2", "LIST", "resc_parent: %s" % "pt2") # confirm parent of unix1 is newnodename assertiCmd(s.adminsession, "iadmin lr %s" % "unix1", "LIST", "resc_parent: %s" % newnodename) # tree teardown assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("pt2", "unix2")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % (newnodename, "unix1")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % (newnodename, "pt2")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("pt1", newnodename)) assertiCmd(s.adminsession, "iadmin rmresc %s" % "unix2") assertiCmd(s.adminsession, "iadmin rmresc %s" % "unix1") assertiCmd(s.adminsession, "iadmin rmresc %s" % "pt2") assertiCmd(s.adminsession, "iadmin rmresc %s" % newnodename) assertiCmd(s.adminsession, "iadmin rmresc %s" % "pt1")
def test_resource_hierarchy_manipulation(self): h = get_hostname() # first tree standup assertiCmd(s.adminsession, "iadmin mkresc %s passthru %s:/tmp/pydevtest_%s" % ("pt", h, "pt"), "LIST", "Creating") # passthru assertiCmd(s.adminsession, "iadmin mkresc %s replication %s:/tmp/pydevtest_%s" % ("replA", h, "replA"), "LIST", "Creating") # replication assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unixA1", h, "unixA1"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unixA2", h, "unixA2"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("pt", "replA")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replA", "unixA1")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replA", "unixA2")) # second tree standup assertiCmd(s.adminsession, "iadmin mkresc %s replication %s:/tmp/pydevtest_%s" % ("replB", h, "replB"), "LIST", "Creating") # replication assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unixB1", h, "unixB1"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin mkresc %s unixfilesystem %s:/tmp/pydevtest_%s" % ("unixB2", h, "unixB2"), "LIST", "Creating") # unix assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replB", "unixB1")) assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replB", "unixB2")) # create some files dir1 = "for_pt" dir2 = "for_replB" tree1 = 5 tree2 = 8 doubletree1 = 2 * tree1 # 10 doubletree2 = 2 * tree2 # 16 totaltree = doubletree1 + doubletree2 # 26 create_directory_of_small_files(dir1, tree1) create_directory_of_small_files(dir2, tree2) #os.system("ls -al %s" % dir1) #os.system("ls -al %s" % dir2) # add files assertiCmd(s.adminsession, "iput -R %s -r %s" % ("pt", dir1)) assertiCmd(s.adminsession, "iput -R %s -r %s" % ("replB", dir2)) # debugging assertiCmd(s.adminsession, "ils -L %s" % dir1, "LIST", dir1) assertiCmd(s.adminsession, "ils -L %s" % dir2, "LIST", dir2) # add tree2 to tree1 # add replB to replA assertiCmd(s.adminsession, "iadmin addchildtoresc %s %s" % ("replA", "replB")) # debugging assertiCmd(s.adminsession, "ils -L %s" % dir1, "LIST", dir1) assertiCmd(s.adminsession, "ils -L %s" % dir2, "LIST", dir2) # check object_count on pt assertiCmd(s.adminsession, "iadmin lr %s" % "pt", "LIST", "resc_objcount: %d" % totaltree) # check object_count and children on replA assertiCmd(s.adminsession, "iadmin lr %s" % "replA", "LIST", "resc_objcount: %d" % totaltree) assertiCmd(s.adminsession, "iadmin lr %s" % "replA", "LIST", "resc_children: %s" % "unixA1{};unixA2{};replB{}") # check object_count on unixA1 assertiCmd(s.adminsession, "iadmin lr %s" % "unixA1", "LIST", "resc_objcount: %d" % tree1) # check object_count on unixA2 assertiCmd(s.adminsession, "iadmin lr %s" % "unixA2", "LIST", "resc_objcount: %d" % tree1) # check object_count and parent on replB assertiCmd(s.adminsession, "iadmin lr %s" % "replB", "LIST", "resc_objcount: %d" % doubletree2) assertiCmd(s.adminsession, "iadmin lr %s" % "replB", "LIST", "resc_parent: %s" % "replA") # check object_count on unixB1 assertiCmd(s.adminsession, "iadmin lr %s" % "unixB1", "LIST", "resc_objcount: %d" % tree2) # check object_count on unixB2 assertiCmd(s.adminsession, "iadmin lr %s" % "unixB2", "LIST", "resc_objcount: %d" % tree2) # check resc_hier on replB files, should have full hierarchy, and should NOT start with replB assertiCmd( s.adminsession, "iquest \"select DATA_RESC_HIER where DATA_RESC_HIER like '%s;%%'\"" % "pt;replA;replB", "LIST", "pt") assertiCmd( s.adminsession, "iquest \"select DATA_RESC_HIER where DATA_RESC_HIER like '%s;%%'\"" % "replB", "LIST", "CAT_NO_ROWS_FOUND") # check resc_name on replB files assertiCmd( s.adminsession, "iquest \"select DATA_RESC_NAME where DATA_RESC_HIER like '%s;%%'\"" % "pt;replA;replB", "LIST", "pt") assertiCmd( s.adminsession, "iquest \"select DATA_RESC_NAME where DATA_RESC_HIER like '%s;%%'\"" % "replB", "LIST", "CAT_NO_ROWS_FOUND") # check resc_group_name on replB files assertiCmd( s.adminsession, "iquest \"select DATA_RESC_GROUP_NAME where DATA_RESC_HIER like '%s;%%'\"" % "pt;replA;replB", "LIST", "pt") assertiCmd( s.adminsession, "iquest \"select DATA_RESC_GROUP_NAME where DATA_RESC_HIER like '%s;%%'\"" % "replB", "LIST", "CAT_NO_ROWS_FOUND") # remove child # rm replB from replA assertiCmd(s.adminsession, "iadmin lr %s" % "replA", "LIST", "replB") # debugging assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replA", "replB")) # check object_count on pt assertiCmd(s.adminsession, "iadmin lr %s" % "pt", "LIST", "resc_objcount: %d" % doubletree1) # check object_count on replA assertiCmd(s.adminsession, "iadmin lr %s" % "replA", "LIST", "resc_objcount: %d" % doubletree1) # check object_count on unixA1 assertiCmd(s.adminsession, "iadmin lr %s" % "unixA1", "LIST", "resc_objcount: %d" % tree1) # check object_count on unixA2 assertiCmd(s.adminsession, "iadmin lr %s" % "unixA2", "LIST", "resc_objcount: %d" % tree1) # check object_count on replB assertiCmd(s.adminsession, "iadmin lr %s" % "replB", "LIST", "resc_objcount: %d" % doubletree2) # check object_count on unixB1 assertiCmd(s.adminsession, "iadmin lr %s" % "unixB1", "LIST", "resc_objcount: %d" % tree2) # check object_count on unixB2 assertiCmd(s.adminsession, "iadmin lr %s" % "unixB2", "LIST", "resc_objcount: %d" % tree2) # check resc_hier on replB files, should start with replB and not have pt anymore assertiCmd( s.adminsession, "iquest \"select DATA_RESC_HIER where DATA_RESC_HIER like '%s;%%'\"" % "replB", "LIST", "replB") # check resc_name on replB files assertiCmd( s.adminsession, "iquest \"select DATA_RESC_NAME where DATA_RESC_HIER like '%s;%%'\"" % "replB", "LIST", "replB") # check resc_group_name on replB files assertiCmd( s.adminsession, "iquest \"select DATA_RESC_GROUP_NAME where DATA_RESC_HIER like '%s;%%'\"" % "replB", "LIST", "replB") # delete files assertiCmd(s.adminsession, "irm -rf %s" % dir1) assertiCmd(s.adminsession, "irm -rf %s" % dir2) # local cleanup shutil.rmtree(dir1) shutil.rmtree(dir2) # second tree teardown assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replB", "unixB2")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replB", "unixB1")) assertiCmd(s.adminsession, "iadmin rmresc %s" % "unixB2") assertiCmd(s.adminsession, "iadmin rmresc %s" % "unixB1") assertiCmd(s.adminsession, "iadmin rmresc %s" % "replB") # first tree teardown assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replA", "unixA2")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("replA", "unixA1")) assertiCmd(s.adminsession, "iadmin rmchildfromresc %s %s" % ("pt", "replA")) assertiCmd(s.adminsession, "iadmin rmresc %s" % "unixA2") assertiCmd(s.adminsession, "iadmin rmresc %s" % "unixA1") assertiCmd(s.adminsession, "iadmin rmresc %s" % "replA") assertiCmd(s.adminsession, "iadmin rmresc %s" % "pt")
def test_list_users(self): assertiCmd( s.adminsession, "iadmin lu", "LIST", s.adminsession.getUserName() + "#" + s.adminsession.getZoneName()) assertiCmdFail(s.adminsession, "iadmin lu", "LIST", "notauser")
def test_local_ihelp(self): # assertions assertiCmd(s.adminsession, "ihelp", "LIST", "The following is a list of the icommands") # run ihelp
def test_list_resources(self): assertiCmd(s.adminsession, "iadmin lr", "LIST", self.testresc) assertiCmdFail(s.adminsession, "iadmin lr", "LIST", "notaresource")
def test_icd_to_root(self): # assertions assertiCmd(s.adminsession, "icd /") # go to root assertiCmd(s.adminsession, "ils", "LIST", "/:") # listing
def test_list_zones(self): assertiCmd(s.adminsession, "iadmin lz", "LIST", s.adminsession.getZoneName()) assertiCmdFail(s.adminsession, "iadmin lz", "LIST", "notazone")
def test_workflow_set_one_up(self): # setup # ingest workflow file assertiCmd( s.adminsession, "iput -D \"msso file\" " + FILESDIR + "/myWf.mss /tempZone/home/rods/workflow/myWf.mss") assertiCmd(s.adminsession, "ils -L /tempZone/home/rods/workflow", "LIST", "myWf.mss") # create WSO collection and associate with MSO assertiCmd(s.adminsession, "imkdir -p /tempZone/home/rods/workflow/myWf") assertiCmd( s.adminsession, "imcoll -m msso /tempZone/home/rods/workflow/myWf.mss /tempZone/home/rods/workflow/myWf" ) # ingest param file into WSO (there can be more than one) assertiCmd( s.adminsession, "iput " + FILESDIR + "/myWf.mpf /tempZone/home/rods/workflow/myWf") # put any data to be used by workflow into WSO collection assertiCmd( s.adminsession, "iput " + FILESDIR + "/myData /tempZone/home/rods/workflow/myWf/myData") # run the workflow assertiCmd(s.adminsession, "iget /tempZone/home/rods/workflow/myWf/myWf.run -", "LIST", "Workflow Executed Successfully.") # teardown assertiCmd(s.adminsession, "imcoll -U /tempZone/home/rods/workflow/myWf")
def test_create_and_remove_coordinating_resource_with_explicit_contextstring( self): testresc1 = "testResc1" assertiCmdFail(s.adminsession, "iadmin lr", "LIST", testresc1) # should not be listed output = commands.getstatusoutput("hostname") hostname = output[1] assertiCmd(s.adminsession, "iadmin mkresc " + testresc1 + " replication '' Context:String", "LIST", "Creating") # replication assertiCmd(s.adminsession, "iadmin lr", "LIST", testresc1) # should be listed assertiCmd(s.adminsession, "iadmin lr " + testresc1, "LIST", ["resc_net", "EMPTY_RESC_HOST"]) # should have empty host assertiCmd( s.adminsession, "iadmin lr " + testresc1, "LIST", ["resc_def_path", "EMPTY_RESC_PATH"]) # should have empty path assertiCmd( s.adminsession, "iadmin lr " + testresc1, "LIST", ["resc_context", "Context:String"]) # should have contextstring assertiCmd(s.adminsession, "iadmin rmresc " + testresc1) # good remove assertiCmdFail(s.adminsession, "iadmin lr", "LIST", testresc1) # should be gone
def test_icd_to_parentdir(self): # assertions assertiCmd(s.adminsession, "icd ..") # go to parent assertiCmd(s.adminsession, "ils", "LIST", "/" + s.adminsession.getZoneName() + "/home/" + s.adminsession.getUserName() + ":") # listing
def test_load_balanced(self): # =-=-=-=-=-=-=- # read server_config.json and .odbc.ini cfg = ServerConfig() if cfg.get('catalog_database_type') == "postgres": # =-=-=-=-=-=-=- # seed load table with fake values - rescA should win secs = int(time.time()) cfg.exec_sql_cmd( "insert into r_server_load_digest values ('rescA', 50, %s)" % secs) cfg.exec_sql_cmd( "insert into r_server_load_digest values ('rescB', 75, %s)" % secs) cfg.exec_sql_cmd( "insert into r_server_load_digest values ('rescC', 95, %s)" % secs) # =-=-=-=-=-=-=- # build a logical path for putting a file test_file_path = "/" + s.adminsession.get_zone_name() + "/home/" + s.adminsession.get_username() + \ "/" + s.adminsession._session_id test_file = test_file_path + "/test_file.txt" # =-=-=-=-=-=-=- # put a test_file.txt - should be on rescA given load table values assertiCmd(s.adminsession, "iput -f ./test_load_balanced_suite.py " + test_file) assertiCmd(s.adminsession, "ils -L " + test_file, "LIST", "rescA") assertiCmd(s.adminsession, "irm -f " + test_file) # =-=-=-=-=-=-=- # drop rescC to a load of 15 - this should now win cfg.exec_sql_cmd( "update r_server_load_digest set load_factor=15 where resc_name='rescC'" ) # =-=-=-=-=-=-=- # put a test_file.txt - should be on rescC given load table values assertiCmd(s.adminsession, "iput -f ./test_load_balanced_suite.py " + test_file) assertiCmd(s.adminsession, "ils -L " + test_file, "LIST", "rescC") assertiCmd(s.adminsession, "irm -f " + test_file) # =-=-=-=-=-=-=- # clean up our alterations to the load table cfg.exec_sql_cmd( "delete from r_server_load_digest where resc_name='rescA'") cfg.exec_sql_cmd( "delete from r_server_load_digest where resc_name='rescB'") cfg.exec_sql_cmd( "delete from r_server_load_digest where resc_name='rescC'") else: print 'skipping test_load_balanced due to unsupported database for this test.'
def test_icd_to_root_with_badpath(self): # assertions # go to root with bad path assertiCmd(s.adminsession, "icd /doesnotexist", "LIST", "No such directory (collection):")
def tearDown(self): assertiCmd(s.adminsession, "irm -f /tempZone/home/rods/file0") assertiCmd(s.adminsession, "irm -f /tempZone/home/rods/file1") assertiCmd(s.adminsession, "irm -f /tempZone/home/rods/file3") assertiCmd(s.adminsession, "irmtrash -M") assertiCmd(s.adminsession, "iadmin rmchildfromresc m_resc l_resc") assertiCmd(s.adminsession, "iadmin rmchildfromresc r_resc m_resc") assertiCmd(s.adminsession, "iadmin rmresc r_resc") assertiCmd(s.adminsession, "iadmin rmresc m_resc") assertiCmd(s.adminsession, "iadmin rmresc l_resc") os.remove(ABSPATHTESTDIR + '/file2') self.run_resource_teardown() s.twousers_down()
def test_local_ihelp_all(self): # assertions assertiCmd(s.adminsession, "ihelp -a", "LIST", "Usage") # run ihelp on all icommands
def add_avu(user_name, a, v, u): assertiCmd(s.adminsession, 'imeta add -u %s %s %s %s' % (user_name, a, v, u))
def test_isysmeta_init_set_and_reset(self): assertiCmd(s.adminsession, "ils -L", "STDOUT", "pydevtest_testfile.txt") # basic listing assertiCmd(s.adminsession, "isysmeta ls pydevtest_testfile.txt", "STDOUT", "data_expiry_ts (expire time): 00000000000: None" ) # initialized with zeros assertiCmd(s.adminsession, "isysmeta mod pydevtest_testfile.txt 1", "EMPTY") # set to 1 sec after epoch assertiCmd( s.adminsession, "isysmeta ls pydevtest_testfile.txt", "STDOUT", "data_expiry_ts (expire time): 00000000001: 1969-12-31.19:00:01" ) # confirm assertiCmd(s.adminsession, "isysmeta mod pydevtest_testfile.txt 0", "EMPTY") # reset to zeros assertiCmd( s.adminsession, "isysmeta ls pydevtest_testfile.txt", "STDOUT", "data_expiry_ts (expire time): 00000000000: None") # confirm
def test_ibun(self): cmd = "tar cf somefile.tar ./README" output = commands.getstatusoutput(cmd) tar_path = "/tempZone/home/rods/" + s.adminsession.sessionId + "/somefile.tar" dir_path = "/tempZone/home/rods/" + s.adminsession.sessionId + "/somedir" assertiCmd(s.adminsession, "iput somefile.tar") assertiCmd(s.adminsession, "imkdir " + dir_path) assertiCmd(s.adminsession, "iput README " + dir_path + "/foo0") assertiCmd(s.adminsession, "iput README " + dir_path + "/foo1") assertiCmd(s.adminsession, "ibun -cD tar " + tar_path + " " + dir_path, "ERROR", "OVERWRITE_WITHOUT_FORCE_FLAG") assertiCmd(s.adminsession, "irm -rf " + dir_path) assertiCmd(s.adminsession, "irm -rf " + tar_path)
def test_local_ihelp_with_help(self): # assertions assertiCmd(s.adminsession, "ihelp -h", "LIST", "Display i-commands synopsis") # run ihelp with help
def test_iexit_verbose(self): # assertions assertiCmd(s.adminsession, "iexit -v", "LIST", "Deleting (if it exists) session envFile:") # home, verbose
def test_imeta_set(self): assertiCmd(s.adminsession,"iadmin lu","LIST","rods") assertiCmd(s.adminsession,"imeta ls -u " + s.users[1]["name"] + " att", "LIST", "None") assertiCmd(s.adminsession,"imeta add -u " + s.users[1]["name"] + " att val") assertiCmd(s.adminsession,"imeta ls -u " + s.users[1]["name"] + " att","LIST","attribute: att") assertiCmd(s.adminsession,"imeta set -u " + s.users[1]["name"] + " att newval") assertiCmd(s.adminsession,"imeta ls -u " + s.users[1]["name"] + " att","LIST","value: newval") assertiCmd(s.adminsession,"imeta set -u " + s.users[1]["name"] + " att newval someunit") assertiCmd(s.adminsession,"imeta ls -u " + s.users[1]["name"] + " att","LIST","units: someunit") assertiCmd(s.adminsession,"imeta set -u " + s.users[1]["name"] + " att verynewval") assertiCmd(s.adminsession,"imeta ls -u " + s.users[1]["name"] + " att","LIST","value: verynewval") assertiCmd(s.adminsession,"imeta ls -u " + s.users[1]["name"] + " att","LIST","units: someunit")