source: icGREP/icgrep-devel/QA/character_deposit/character_deposit_test.py @ 5873

Last change on this file since 5873 was 5873, checked in by xwa163, 14 months ago
  1. Implement LZ4MultiplePdepKernel, which can do PDEP for more than one input streamset
  2. Add attributed Swizzled in StreamSet?, copy at least one whole block when doing temporary buffer copy for Swizzled InputStreamSet?
  3. Bug fixing for character_deposit pipeline
  4. Add more test files for character_deposit pipeline
File size: 3.8 KB
Line 
1import character_deposit
2import sys, subprocess, optparse, os, string, random
3import codecs
4import shutil
5
6global options
7global lz4d_program_under_test
8
9failure_count = 0
10
11def run_tests(test_dir, output_dir, python_output_dir):
12    global options
13    global failure_count
14
15    test_files = os.listdir(test_dir)
16    for test_file in test_files:
17        if not test_file.endswith('.txt'):
18            continue
19        output_file = "out_" + test_file
20
21        test_file_full_path = os.path.join(test_dir, test_file)
22        output_file_full_path = os.path.join(output_dir, output_file)
23        python_output_file_full_path = os.path.join(python_output_dir, output_file)
24
25        character_deposit_cmd = "%s b -buffer-segments=2 %s %s" % (lz4d_program_under_test, test_file_full_path, output_file_full_path)
26
27        if options.verbose:
28            print("Doing: " + character_deposit_cmd)
29
30        try:
31            character_deposit_out = subprocess.check_output(character_deposit_cmd.encode('utf-8'), cwd=options.exec_dir, shell=True)
32        except subprocess.CalledProcessError as e:
33            character_deposit_out = e.output
34
35        character_deposit.handle_deposit(test_file_full_path, python_output_file_full_path, 'b')
36
37        with codecs.open(output_file_full_path, mode='rb') as inf:
38            output_content = inf.read()
39        with codecs.open(python_output_file_full_path, mode='rb') as inf:
40            expected_output_content = inf.read()
41
42        if output_content != expected_output_content:
43            print("Test failure: datafile {%s}" % test_file)
44            failure_count += 1
45        else:
46            if options.verbose:
47                print("Test success: datafile {%s}" % test_file)
48
49    if failure_count > 0:
50        print("Test Failure")
51        exit(1)
52    else:
53        print("Test Success")
54
55
56if __name__ == '__main__':
57    QA_dir = os.path.dirname(sys.argv[0])
58
59    option_parser = optparse.OptionParser(usage='python %prog [options] <character_deposit_executable>', version='1.0')
60    option_parser.add_option('-d', '--datafile_dir',
61                             dest='datafile_dir', type='string', default='testfiles',
62                             help='directory for test files.')
63    option_parser.add_option('-e', '--exec_dir',
64                             dest='exec_dir', type='string', default='.',
65                             help='executable directory')
66    option_parser.add_option('-o', '--output_dir',
67                             dest='output_dir', type='string', default='output',
68                             help='output directory of decompressed files')
69    option_parser.add_option('-p', '--python_output_dir',
70                             dest='python_output_dir', type='string', default='python_output',
71                             help='output directory of expected result (python version)')
72    option_parser.add_option('-v', '--verbose',
73                             dest='verbose', action='store_true', default=False,
74                             help='verbose output: show successful tests')
75    options, args = option_parser.parse_args(sys.argv[1:])
76
77    if len(args) != 1:
78        option_parser.print_usage()
79        sys.exit(1)
80
81    if not os.path.exists(options.datafile_dir):
82        print(options.datafile_dir + ' not exists')
83        sys.exit(1)
84
85    if os.path.exists(options.output_dir):
86        shutil.rmtree(options.output_dir)
87    os.mkdir(options.output_dir)
88
89
90    if os.path.exists(options.python_output_dir):
91        shutil.rmtree(options.python_output_dir)
92    os.mkdir(options.python_output_dir)
93
94    lz4d_program_under_test = args[0]
95
96    test_dir = os.path.join(QA_dir, options.datafile_dir)
97    output_dir = os.path.join(QA_dir, options.output_dir)
98    python_output_dir = os.path.join(QA_dir, options.python_output_dir)
99    run_tests(test_dir, output_dir, python_output_dir)
100
Note: See TracBrowser for help on using the repository browser.