def test_iput(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'iput_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters['remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # put file in remote collection test_session.assert_icommand( "iput {filepath} {remote_home_collection}/".format(**parameters)) # file should be there test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', str(filesize)) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)
def test_delay_msiobjstat(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'delay_msiobjstat_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters['remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # put file in remote collection test_session.assert_icommand( "iput -f {filepath} {remote_home_collection}/".format(**parameters)) # file should be there test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', filename) # prepare rule file rule_file_path = os.path.join( self.local_test_dir_path, 'delay_msiobjstat.r') with open(rule_file_path, 'w') as rule_file: rule_str = ''' delay_msiobjstat {{ delay("<PLUSET>30s</PLUSET>") {{ # Perform a stat on the object # Save the stat operation's error code as metadata associated with the object *attr."delay_msiobjstat_return_value" = str(errorcode(msiObjStat(*obj,*out))); msiAssociateKeyValuePairsToObj(*attr, *obj, "-d") }} }} INPUT *obj="{remote_home_collection}/{filename}" OUTPUT ruleExecOut '''.format(**parameters) rule_file.write(rule_str) # invoke rule test_session.assert_icommand('irule -F ' + rule_file_path) # give it time to complete time.sleep(60) # look for AVU set by delay rule attr = "delay_msiobjstat_return_value" value = "0" test_session.assert_icommand('imeta ls -d {remote_home_collection}/{filename}'.format( **parameters), 'STDOUT_MULTILINE', ['attribute: ' + attr + '$', 'value: ' + value + '$'], use_regex=True) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)
def test_icp(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'icp_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters['local_home_collection'] = test_session.home_collection parameters[ 'remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # checksum local file orig_md5 = commands.getoutput('md5sum ' + filepath) # put file in local collection test_session.assert_icommand( "iput {filepath} {local_home_collection}/".format(**parameters)) # remove local file os.remove(filepath) # copy file to remote home collection test_session.assert_icommand( "icp {local_home_collection}/{filename} {remote_home_collection}/". format(**parameters)) # file should show up in remote zone test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', str(filesize)) # get file back from remote zone test_session.assert_icommand( "iget {remote_home_collection}/{filename} {filepath}".format( **parameters)) # compare checksums new_md5 = commands.getoutput('md5sum ' + filepath) self.assertEqual(orig_md5, new_md5) # cleanup test_session.assert_icommand( "irm -f {local_home_collection}/{filename}".format(**parameters)) test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)
def test_icp_f_large(self): # test settings remote_zone = self.config['remote_zone'] local_zone = self.config['local_zone'] test_session = self.user_sessions[0] user_name = test_session.username local_home_collection = test_session.home_collection remote_home_collection = "/{remote_zone}/home/{user_name}#{local_zone}".format( **locals()) # make test file filename = 'icp_test_file' filesize = self.config['large_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # checksum local file orig_md5 = commands.getoutput('md5sum ' + filepath) # put file in local collection test_session.assert_icommand( "iput {filepath} {local_home_collection}/".format(**locals())) # remove local file os.remove(filepath) # copy file to remote home collection test_session.assert_icommand( "icp -f {local_home_collection}/{filename} {remote_home_collection}/" .format(**locals())) # file should show up in remote zone test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**locals()), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**locals()), 'STDOUT_SINGLELINE', str(filesize)) # get file back from remote zone test_session.assert_icommand( "iget {remote_home_collection}/{filename} {filepath}".format( **locals())) # compare checksums new_md5 = commands.getoutput('md5sum ' + filepath) self.assertEqual(orig_md5, new_md5) # cleanup test_session.assert_icommand( "irm -f {local_home_collection}/{filename}".format(**locals())) test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**locals())) os.remove(filepath)
def test_icp(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'icp_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters['local_home_collection'] = test_session.home_collection parameters['remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # checksum local file orig_md5 = commands.getoutput('md5sum ' + filepath) # put file in local collection test_session.assert_icommand( "iput {filepath} {local_home_collection}/".format(**parameters)) # remove local file os.remove(filepath) # copy file to remote home collection test_session.assert_icommand( "icp {local_home_collection}/{filename} {remote_home_collection}/".format(**parameters)) # file should show up in remote zone test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', str(filesize)) # get file back from remote zone test_session.assert_icommand( "iget {remote_home_collection}/{filename} {filepath}".format(**parameters)) # compare checksums new_md5 = commands.getoutput('md5sum ' + filepath) self.assertEqual(orig_md5, new_md5) # cleanup test_session.assert_icommand( "irm -f {local_home_collection}/{filename}".format(**parameters)) test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)
def test_iget_large_file(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'iget_test_file' filesize = self.config['large_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters[ 'remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # checksum local file orig_md5 = commands.getoutput('md5sum ' + filepath) # put file in remote collection test_session.assert_icommand( "iput {filepath} {remote_home_collection}/".format(**parameters)) # remove local file os.remove(filepath) # for the next transfer we expect the number of threads # to be capped at max_threads or max_threads+1, # e.g: we will look for '16 thr' or '17 thr' in stdout parameters['max_threads_plus_one'] = parameters['max_threads'] + 1 expected_output_regex = '[{max_threads}|{max_threads_plus_one}] thr'.format( **parameters) # get file back, ask for too many threads (should be capped) test_session.assert_icommand( "iget -v -N 600 {remote_home_collection}/{filename} {filepath}". format(**parameters), 'STDOUT_SINGLELINE', expected_output_regex, use_regex=True) # compare checksums new_md5 = commands.getoutput('md5sum ' + filepath) self.assertEqual(orig_md5, new_md5) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)
def test_imv(self): ''' remote-remote imv test (SYS_CROSS_ZONE_MV_NOT_SUPPORTED) ''' # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'imv_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['new_name'] = filename = '_new' parameters['user_name'] = test_session.username parameters['local_home_collection'] = test_session.home_collection parameters[ 'remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # put file in remote collection test_session.assert_icommand( "iput {filepath} {remote_home_collection}/".format(**parameters)) # move (rename) remote file test_session.assert_icommand( "imv {remote_home_collection}/{filename} {remote_home_collection}/{new_name}" .format(**parameters)) # file should have been renamed test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDERR_SINGLELINE', 'does not exist') test_session.assert_icommand( "ils -L {remote_home_collection}/{new_name}".format(**parameters), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{new_name}".format(**parameters), 'STDOUT_SINGLELINE', str(filesize)) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{new_name}".format(**parameters)) os.remove(filepath)
def test_icp_f_large(self): # test settings remote_zone = self.config['remote_zone'] local_zone = self.config['local_zone'] test_session = self.user_sessions[0] user_name = test_session.username local_home_collection = test_session.home_collection remote_home_collection = "/{remote_zone}/home/{user_name}#{local_zone}".format(**locals()) # make test file filename = 'icp_test_file' filesize = self.config['large_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # checksum local file orig_md5 = commands.getoutput('md5sum ' + filepath) # put file in local collection test_session.assert_icommand( "iput {filepath} {local_home_collection}/".format(**locals())) # remove local file os.remove(filepath) # copy file to remote home collection test_session.assert_icommand( "icp -f {local_home_collection}/{filename} {remote_home_collection}/".format(**locals())) # file should show up in remote zone test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**locals()), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**locals()), 'STDOUT_SINGLELINE', str(filesize)) # get file back from remote zone test_session.assert_icommand( "iget {remote_home_collection}/{filename} {filepath}".format(**locals())) # compare checksums new_md5 = commands.getoutput('md5sum ' + filepath) self.assertEqual(orig_md5, new_md5) # cleanup test_session.assert_icommand( "irm -f {local_home_collection}/{filename}".format(**locals())) test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**locals())) os.remove(filepath)
def test_iget_large_file(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'iget_test_file' filesize = self.config['large_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters['remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # checksum local file orig_md5 = commands.getoutput('md5sum ' + filepath) # put file in remote collection test_session.assert_icommand( "iput {filepath} {remote_home_collection}/".format(**parameters)) # remove local file os.remove(filepath) # for the next transfer we expect the number of threads # to be capped at max_threads or max_threads+1, # e.g: we will look for '16 thr' or '17 thr' in stdout parameters['max_threads_plus_one'] = parameters['max_threads'] + 1 expected_output_regex = '[{max_threads}|{max_threads_plus_one}] thr'.format( **parameters) # get file back, ask for too many threads (should be capped) test_session.assert_icommand( "iget -v -N 600 {remote_home_collection}/{filename} {filepath}".format(**parameters), 'STDOUT_SINGLELINE', expected_output_regex, use_regex=True) # compare checksums new_md5 = commands.getoutput('md5sum ' + filepath) self.assertEqual(orig_md5, new_md5) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)
def test_ils_l(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'ils_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters[ 'remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # list remote home collection test_session.assert_icommand( "ils -L {remote_home_collection}".format(**parameters), 'STDOUT_SINGLELINE', parameters['remote_home_collection']) # put file in remote collection test_session.assert_icommand( "iput {filepath} {remote_home_collection}/".format(**parameters)) # list file info test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', str(filesize)) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', parameters['remote_resource']) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', parameters['remote_vault']) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)
def test_imv(self): ''' remote-remote imv test (SYS_CROSS_ZONE_MV_NOT_SUPPORTED) ''' # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'imv_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['new_name'] = filename = '_new' parameters['user_name'] = test_session.username parameters['local_home_collection'] = test_session.home_collection parameters['remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # put file in remote collection test_session.assert_icommand( "iput {filepath} {remote_home_collection}/".format(**parameters)) # move (rename) remote file test_session.assert_icommand( "imv {remote_home_collection}/{filename} {remote_home_collection}/{new_name}".format(**parameters)) # file should have been renamed test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDERR_SINGLELINE', 'does not exist') test_session.assert_icommand( "ils -L {remote_home_collection}/{new_name}".format(**parameters), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{new_name}".format(**parameters), 'STDOUT_SINGLELINE', str(filesize)) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{new_name}".format(**parameters)) os.remove(filepath)
def test_irm_f(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'irm_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters[ 'remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # put file in remote collection test_session.assert_icommand( "iput {filepath} {remote_home_collection}/".format(**parameters)) # file should be there test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', filename) # delete remote file test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) # file should be gone test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDERR_SINGLELINE', 'does not exist') # cleanup os.remove(filepath)
def test_iput_large_file(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'iput_test_file' filesize = self.config['large_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters[ 'remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # put file in remote collection, ask for 6 threads test_session.assert_icommand( "iput -v -N 6 {filepath} {remote_home_collection}/".format( **parameters), 'STDOUT_SINGLELINE', '6 thr') # file should be there test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', filename) test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', str(filesize)) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)
def test_delay_msiobjstat(self): # pick session(s) for the test test_session = self.user_sessions[0] # make test file filename = 'delay_msiobjstat_test_file' filesize = self.config['test_file_size'] filepath = os.path.join(self.local_test_dir_path, filename) lib.make_file(filepath, filesize) # test specific parameters parameters = self.config.copy() parameters['filepath'] = filepath parameters['filename'] = filename parameters['user_name'] = test_session.username parameters[ 'remote_home_collection'] = "/{remote_zone}/home/{user_name}#{local_zone}".format( **parameters) # put file in remote collection test_session.assert_icommand( "iput -f {filepath} {remote_home_collection}/".format( **parameters)) # file should be there test_session.assert_icommand( "ils -L {remote_home_collection}/{filename}".format(**parameters), 'STDOUT_SINGLELINE', filename) # prepare rule file rule_file_path = os.path.join(self.local_test_dir_path, 'delay_msiobjstat.r') with open(rule_file_path, 'w') as rule_file: rule_str = ''' delay_msiobjstat {{ delay("<PLUSET>30s</PLUSET>") {{ # Perform a stat on the object # Save the stat operation's error code as metadata associated with the object *attr."delay_msiobjstat_return_value" = str(errorcode(msiObjStat(*obj,*out))); msiAssociateKeyValuePairsToObj(*attr, *obj, "-d") }} }} INPUT *obj="{remote_home_collection}/{filename}" OUTPUT ruleExecOut '''.format(**parameters) rule_file.write(rule_str) # invoke rule test_session.assert_icommand('irule -F ' + rule_file_path) # give it time to complete time.sleep(60) # look for AVU set by delay rule attr = "delay_msiobjstat_return_value" value = "0" test_session.assert_icommand( 'imeta ls -d {remote_home_collection}/{filename}'.format( **parameters), 'STDOUT_MULTILINE', ['attribute: ' + attr + '$', 'value: ' + value + '$'], use_regex=True) # cleanup test_session.assert_icommand( "irm -f {remote_home_collection}/{filename}".format(**parameters)) os.remove(filepath)