From 150152fb8a0b2a5b3938f41a28cbe4eb7129fd16 Mon Sep 17 00:00:00 2001 From: inikep Date: Thu, 16 Jun 2016 19:29:09 +0200 Subject: [PATCH] test-zstd-versions.py: test dictiony compression for v0.5.1 and newer --- tests/test-zstd-versions.py | 79 +++++++++++++++++++++++++++++-------- 1 file changed, 63 insertions(+), 16 deletions(-) diff --git a/tests/test-zstd-versions.py b/tests/test-zstd-versions.py index 3c8eac7d..dffa79dd 100755 --- a/tests/test-zstd-versions.py +++ b/tests/test-zstd-versions.py @@ -67,21 +67,44 @@ def get_git_tags(): return tags +def create_dict(tag, dict_source_path): + dict_name = 'dict.' + tag + if not os.path.isfile(dict_name): + cFiles = glob.glob(dict_source_path + "/*.c") + hFiles = glob.glob(dict_source_path + "/*.h") + execute('./zstd.' + tag + ' -f --train ' + ' '.join(cFiles) + ' ' + ' '.join(hFiles) + ' -o ' + dict_name) + print(dict_name + ' created') + else: + print(dict_name + ' already exists') + + +def dict_compress_sample(tag, sample): + dict_name = 'dict.' + tag + try: + from subprocess import DEVNULL # py3k + except ImportError: + DEVNULL = open(os.devnull, 'wb') + subprocess.call(['./zstd.' + tag, '-D', dict_name, '-f', sample, '-o', sample + '_01_64' + tag + '_dict.zst'], stderr=DEVNULL) + # zstdFiles = glob.glob("*.zst*") + # print(zstdFiles) + print(tag + " : dict compression completed") + + def compress_sample(tag, sample): try: from subprocess import DEVNULL # py3k except ImportError: DEVNULL = open(os.devnull, 'wb') if subprocess.call(['./zstd.' + tag, '-f', sample], stderr=DEVNULL) == 0: - os.rename(sample + '.zst', sample + '_01_64_' + tag + '.zst') + os.rename(sample + '.zst', sample + '_01_64_' + tag + '_nodic.zst') if subprocess.call(['./zstd.' + tag, '-5f', sample], stderr=DEVNULL) == 0: - os.rename(sample + '.zst', sample + '_05_64_' + tag + '.zst') + os.rename(sample + '.zst', sample + '_05_64_' + tag + '_nodic.zst') if subprocess.call(['./zstd.' + tag, '-9f', sample], stderr=DEVNULL) == 0: - os.rename(sample + '.zst', sample + '_09_64_' + tag + '.zst') + os.rename(sample + '.zst', sample + '_09_64_' + tag + '_nodic.zst') if subprocess.call(['./zstd.' + tag, '-15f', sample], stderr=DEVNULL) == 0: - os.rename(sample + '.zst', sample + '_15_64_' + tag + '.zst') + os.rename(sample + '.zst', sample + '_15_64_' + tag + '_nodic.zst') if subprocess.call(['./zstd.' + tag, '-18f', sample], stderr=DEVNULL) == 0: - os.rename(sample + '.zst', sample + '_18_64_' + tag + '.zst') + os.rename(sample + '.zst', sample + '_18_64_' + tag + '_nodic.zst') # zstdFiles = glob.glob("*.zst*") # print(zstdFiles) print(tag + " : compression completed") @@ -94,7 +117,7 @@ def sha1_of_file(filepath): def remove_duplicates(): - list_of_zst = sorted(glob.glob('*.zst')) + list_of_zst = sorted(glob.glob('*_nodic.zst')) for i, ref_zst in enumerate(list_of_zst): if not os.path.isfile(ref_zst): continue @@ -109,7 +132,7 @@ def remove_duplicates(): def decompress_zst(tag, zstd_up_to_v05=False): dec_error = 0 - list_zst = sorted(glob.glob('*.zst')) + list_zst = sorted(glob.glob('*_nodic.zst')) try: from subprocess import DEVNULL # py3k except ImportError: @@ -133,15 +156,37 @@ def decompress_zst(tag, zstd_up_to_v05=False): return dec_error -def create_dict(tag, dict_source_path): - dict_name = 'dict.' + tag - if not os.path.isfile(dict_name): - cFiles = glob.glob(dict_source_path + "/*.c") - hFiles = glob.glob(dict_source_path + "/*.h") - execute('./zstd.' + tag + ' -f --train ' + ' '.join(cFiles) + ' ' + ' '.join(hFiles) + ' -o ' + dict_name) - print(dict_name + ' created') - else: - print(dict_name + ' already exists') +def decompress_dict(tag, zstd_up_to_v05=False): + dec_error = 0 + list_zst = sorted(glob.glob('*_dict.zst')) + try: + from subprocess import DEVNULL # py3k + except ImportError: + DEVNULL = open(os.devnull, 'wb') + for file_zst in list_zst: + dict_tag = file_zst[0:len(file_zst)-9] # remove "_dict.zst" + dict_tag = dict_tag[dict_tag.rfind('v'):] + if dict_tag == 'vel': + dict_tag = head + dict_name = 'dict.' + dict_tag + #print("dict_tag=" + dict_tag + " dict_name=" + dict_name) + print(file_zst, end=' ') + print(tag, end=' ') + print(dict_tag, end=' ') + file_dec = file_zst + '_d64_' + tag + '.dec' + if zstd_up_to_v05: + params = ['./zstd.' + tag, '-D', dict_name, '-df', file_zst, file_dec] + else: + params = ['./zstd.' + tag, '-D', dict_name, '-df', file_zst, '-o', file_dec] + if subprocess.call(params, stderr=DEVNULL) == 0: + if not filecmp.cmp(file_dec, test_dat): + print('ERR !! ') + dec_error = 1 + else: + print('OK ') + else: + print('command does not work') + return dec_error if __name__ == '__main__': @@ -205,6 +250,8 @@ if __name__ == '__main__': print(tag) if tag >= 'v0.5.1': create_dict(tag, dict_source_path) + dict_compress_sample(tag, test_dat) + decompress_dict(tag) compress_sample(tag, test_dat) remove_duplicates() if tag >= 'v0.5.1':