def test_above_threshold_for_fileobj(self): transfer_manager = self.create_transfer_manager(self.config) filename = self.files.create_file_with_size('foo.txt', filesize=20 * 1024 * 1024) self.upload_file(filename, '20mb.txt') download_path = os.path.join(self.files.rootdir, '20mb.txt') with open(download_path, 'wb') as f: future = transfer_manager.download(self.bucket_name, '20mb.txt', f) future.result() assert_files_equal(filename, download_path)
def test_below_threshold(self): transfer_manager = self.create_transfer_manager(self.config) filename = self.files.create_file_with_size('foo.txt', filesize=1024 * 1024) self.upload_file(filename, '1mb.txt') download_path = os.path.join(self.files.rootdir, '1mb.txt') future = transfer_manager.download(self.bucket_name, '1mb.txt', download_path) future.result() assert_files_equal(filename, download_path)
def test_above_threshold(self): transfer_manager = self.create_transfer_manager(self.config) filename = self.files.create_file_with_size( 'foo.txt', filesize=20 * 1024 * 1024) self.upload_file(filename, '20mb.txt') download_path = os.path.join(self.files.rootdir, '20mb.txt') future = transfer_manager.download( self.bucket_name, '20mb.txt', download_path) future.result() assert_files_equal(filename, download_path)
def test_above_threshold_for_nonseekable_fileobj(self): transfer_manager = self.create_transfer_manager(self.config) filename = self.files.create_file_with_size( 'foo.txt', filesize=20 * 1024 * 1024) self.upload_file(filename, '20mb.txt') download_path = os.path.join(self.files.rootdir, '20mb.txt') with open(download_path, 'wb') as f: future = transfer_manager.download( self.bucket_name, '20mb.txt', NonSeekableWriter(f)) future.result() assert_files_equal(filename, download_path)
def test_add_to_file(self): tests.clear_tmp_folder() path = os.path.join(tests.DIR_REPLACE, 'replacements_empty.json') path_out = os.path.join(tests.DIR_TMP, 'replacements.json') path_ass = os.path.join(tests.DIR_REPLACE, 'replacements_testadd.json') rt = replacement_table.ReplacementTable.from_file(path) rt.set_from_langfile('file1_withgender.xml').add( 'Biblec', 'Künstler*innen', 'Künstler') rt.to_file(path_out) tests.assert_files_equal(self, path_ass, path_out)
def _test_modify_file(self, file, file_mod, rkey): tests.clear_tmp_folder() path = os.path.join(tests.DIR_LANG, file) path_mod = os.path.join(tests.DIR_LANG, file_mod) path_out = os.path.join(tests.DIR_TMP, 'lang.xml') lfile = lang_file.LangFile(path) def fun_replace(key, old): if key == rkey: return 'MODIFIED' lfile.replace_tree(fun_replace) lfile.to_file(path_out) tests.assert_files_equal(self, path_mod, path_out)
def test_modify_config(self): shutil.copyfile(os.path.join(tests.DIR_TESTFILES, 'appcfg.toml'), self.cfg_file) cfg = Cfg(self.cfg_file) cfg.load_file() cfg.msg = 'I am Cyra' cfg.port = 1234 cfg.ip_b = '127.0.0.1' cfg.en_b = True cfg.save_file() tests.assert_files_equal( self, os.path.join(tests.DIR_TESTFILES, 'appcfg_modify.toml'), self.cfg_file)
def test_load_file(self): # Copy fresh config file into tmp folder self.tmpdir = tests.tmpdir() cfg_file = os.path.join(self.tmpdir.name, 'testcfg.toml') shutil.copyfile( os.path.join(tests.DIR_TESTFILES, 'testcfg_import.toml'), cfg_file) self.cfg._file = cfg_file self.cfg.load_file() self.assertEqual('Okay? Okay.', self.cfg.MSG) self.assertEqual('very_secret_password', self.cfg.PASSWORD) tests.assert_files_equal( self, os.path.join(tests.DIR_TESTFILES, 'testcfg_writeback.toml'), cfg_file)
def test_download_above_threshold(self): transfer = self._create_s3_transfer() filename = self.files.create_file_with_size('foo.txt', filesize=20 * 1024 * 1024) self.upload_file(filename, 'foo.txt') download_path = os.path.join(self.files.rootdir, 'downloaded.txt') with transfer: future = transfer.download(self.bucket_name, 'foo.txt', download_path, subscribers=[self.record_subscriber]) future.result() assert_files_equal(filename, download_path) file_size = self.osutil.get_file_size(download_path) self._assert_subscribers_called(file_size)
def test_many_files_download(self): transfer = self._create_s3_transfer() filename = self.files.create_file_with_size('1mb.txt', filesize=1024 * 1024) self.upload_file(filename, '1mb.txt') filenames = [] base_filename = os.path.join(self.files.rootdir, 'file') for i in range(10): filenames.append(base_filename + str(i)) with transfer: for filename in filenames: transfer.download(self.bucket_name, '1mb.txt', filename) for download_path in filenames: assert_files_equal(filename, download_path)
def test_write_replacement_table(self): tests.clear_tmp_folder() wd = workdir.Workdir(tests.DIR_TMP) dir_apk = wd._get_dir(wd.dir_apk) shutil.copyfile(os.path.join(tests.DIR_LANG, 'file1_withgender.xml'), os.path.join(dir_apk, 'file1_withgender.xml')) shutil.copyfile(os.path.join(tests.DIR_LANG, 'file2_withgender.xml'), os.path.join(dir_apk, 'file2_withgender.xml')) path = os.path.join(tests.DIR_TMP, 'replacements.json') shutil.copyfile( os.path.join(tests.DIR_REPLACE, 'replacements_testadd.json'), path) rt = replacement_table.ReplacementTable.from_file(path) rpm = replacement_table.ReplacementManager( dir_apk, lambda key, old: old + '_MOD') rpm.add_rtab(rt, 'rt', True) rpm.do_replace() rpm.write_replacement_table('newver') tests.assert_files_equal( self, os.path.join(tests.DIR_REPLACE, 'replacements_testwrite.json'), path)
def _performance_test(self, folder): tests.clear_tmp_folder() DIR_INPUT = os.path.join(DIR_PERFORMANCE, folder) manager = replacement_table.ReplacementManager(DIR_INPUT) i = 1 while True: file = os.path.join(DIR_INPUT, 'replacements_%d.json' % i) if os.path.isfile(file): rt = replacement_table.ReplacementTable.from_file(file) manager.add_rtab(rt, str(i)) else: break i += 1 start_time = time.time_ns() manager.do_replace(tests.DIR_TMP) runtime = time.time_ns() - start_time print('%s test took %d ms' % (folder, (runtime / 1000000))) tests.assert_files_equal(self, os.path.join(DIR_INPUT, 'lang_nogender.xml'), os.path.join(tests.DIR_TMP, 'lang.xml'))
def test_gen_file(self): cfg = Cfg(self.cfg_file) cfg.load_file() tests.assert_files_equal( self, os.path.join(tests.DIR_TESTFILES, 'appcfg.toml'), self.cfg_file)