2 @message |
assert
- average_record_length -- expected: LESS OR EQUALS to declared column length = 32760
- compression_ratio_expected_msg -- expected: >= 1.0
- data_pages_cnt: expected, within MIN_DP_COUNT_THRESHOLD=280 ... MAX_DP_COUNT_THRESHOLD=330
+ average_record_length -- UNEXPECTED: 33019 - more than declared withd = 32760
+ compression_ratio -- UNEXPECTED: 0.99 - less than 1.0 (wasted compression occurred)
+ data_pages_cnt UNEXPECTED: data_pages_cnt=632 -- out of scope: MIN_DP_COUNT_THRESHOLD=280 ... MAX_DP_COUNT_THRESHOLD=330
LOG DETAILS:
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 act = <firebird.qa.plugin.Action object at [hex]>
2024-06-11 08:22:40.756 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 @pytest.mark.version('>=4.0')
2024-06-11 08:22:40.756 def test_1(act: Action, capsys):
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 act.gstat(switches=['-r', '-t', 'TEST', '-user', act.db.user, '-pass', act.db.password])
2024-06-11 08:22:40.756 gstat_lines = act.stdout.splitlines()
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 #for p in gstat_lines:
2024-06-11 08:22:40.756 # print(p)
2024-06-11 08:22:40.756 #
2024-06-11 08:22:40.756 #act.expected_stdout = f"""
2024-06-11 08:22:40.756 #"""
2024-06-11 08:22:40.756 #act.stdout = capsys.readouterr().out
2024-06-11 08:22:40.756 #assert act.clean_stdout == act.clean_expected_stdout
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 # Average record length: N.FF, total records: M
2024-06-11 08:22:40.756 # NB: for improved RLE value <N.FF> must be LESS OR EQUAL to the table column declared length
2024-06-11 08:22:40.756 p_average_record_length = re.compile( r'Average\s+record\s+length(:)?\s+\d+(.\d+)?' )
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 # Average unpacked length: N.FF, compression ratio: R.PP
2024-06-11 08:22:40.756 # NB: for improved RLE value <R.PP> must be 1.00 because column contrains incompressible data
2024-06-11 08:22:40.756 p_compression_ratio = re.compile( r'Average\s+unpacked\s+length(:)?\s+\d+(.\d+)?(,)?\s+compression\s+ratio:\s+\d+(.\d+)?' )
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 # Pointer pages: N, data page slots: M
2024-06-11 08:22:40.756 p_pointer_pages_data_pages_slots = re.compile( r'Pointer\s+pages(:)?\s+\d+(,)?\s+data\s+page\s+slots(:)?\s+\d+' )
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 average_record_length = compression_ratio = data_pages_cnt = -1
2024-06-11 08:22:40.756 gstat_lines = act.stdout.splitlines()
2024-06-11 08:22:40.756 for line in gstat_lines:
2024-06-11 08:22:40.756 if p_average_record_length.search(line):
2024-06-11 08:22:40.756 # 'Average record length: 32757.00, total records: 10000' --> 32757
2024-06-11 08:22:40.756 average_record_length = int(float(line.replace(',','').split()[3]))
2024-06-11 08:22:40.756 if p_compression_ratio.search(line):
2024-06-11 08:22:40.756 # 'Average unpacked length: 32766.00, compression ratio: 1.00'
2024-06-11 08:22:40.756 compression_ratio = float(line.split()[-1])
2024-06-11 08:22:40.756 if p_pointer_pages_data_pages_slots.search(line):
2024-06-11 08:22:40.756 data_pages_cnt = int(line.split()[-1])
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 assert average_record_length > 0 and compression_ratio > 0 and data_pages_cnt > 0
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 avg_rec_len_expected_msg = f'average_record_length -- expected: LESS OR EQUALS to declared column length = {N_WIDT}'
2024-06-11 08:22:40.756 if average_record_length <= N_WIDT:
2024-06-11 08:22:40.756 print(avg_rec_len_expected_msg)
2024-06-11 08:22:40.756 else:
2024-06-11 08:22:40.756 print(f'average_record_length -- UNEXPECTED: {average_record_length} - more than declared withd = {N_WIDT}')
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 #-------------------------------------------------------------------------------------------
2024-06-11 08:22:40.756 compression_ratio_expected_msg = f'compression_ratio_expected_msg -- expected: >= {COMPRESSION_THRESHOLD}'
2024-06-11 08:22:40.756 if compression_ratio >= COMPRESSION_THRESHOLD:
2024-06-11 08:22:40.756 print(compression_ratio_expected_msg)
2024-06-11 08:22:40.756 else:
2024-06-11 08:22:40.756 print(f'compression_ratio -- UNEXPECTED: {compression_ratio} - less than {COMPRESSION_THRESHOLD} (wasted compression occurred)')
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 #-------------------------------------------------------------------------------------------
2024-06-11 08:22:40.756 data_pages_cnt_expected_msg = f'data_pages_cnt: expected, within {MIN_DP_COUNT_THRESHOLD=} ... {MAX_DP_COUNT_THRESHOLD=}'
2024-06-11 08:22:40.756 if data_pages_cnt >= MIN_DP_COUNT_THRESHOLD and data_pages_cnt <= MAX_DP_COUNT_THRESHOLD:
2024-06-11 08:22:40.756 print(data_pages_cnt_expected_msg)
2024-06-11 08:22:40.756 else:
2024-06-11 08:22:40.756 print(f'data_pages_cnt UNEXPECTED: {data_pages_cnt=} -- out of scope: {MIN_DP_COUNT_THRESHOLD=} ... {MAX_DP_COUNT_THRESHOLD=}')
2024-06-11 08:22:40.756
2024-06-11 08:22:40.756 act.expected_stdout = f"""
2024-06-11 08:22:40.756 {avg_rec_len_expected_msg}
2024-06-11 08:22:40.756 {compression_ratio_expected_msg}
2024-06-11 08:22:40.756 {data_pages_cnt_expected_msg}
2024-06-11 08:22:40.756 """
2024-06-11 08:22:40.756 act.stdout = capsys.readouterr().out
2024-06-11 08:22:40.756 > assert act.clean_stdout == act.clean_expected_stdout
2024-06-11 08:22:40.756 E assert
2024-06-11 08:22:40.756 E - average_record_length -- expected: LESS OR EQUALS to declared column length = 32760
2024-06-11 08:22:40.756 E - compression_ratio_expected_msg -- expected: >= 1.0
2024-06-11 08:22:40.756 E - data_pages_cnt: expected, within MIN_DP_COUNT_THRESHOLD=280 ... MAX_DP_COUNT_THRESHOLD=330
2024-06-11 08:22:40.756 E + average_record_length -- UNEXPECTED: 33019 - more than declared withd = 32760
2024-06-11 08:22:40.756 E + compression_ratio -- UNEXPECTED: 0.99 - less than 1.0 (wasted compression occurred)
2024-06-11 08:22:40.771 E + data_pages_cnt UNEXPECTED: data_pages_cnt=632 -- out of scope: MIN_DP_COUNT_THRESHOLD=280 ... MAX_DP_COUNT_THRESHOLD=330
2024-06-11 08:22:40.771
2024-06-11 08:22:40.771 tests\bugs\gh_4723_incompressible_test.py:137: AssertionError
2024-06-11 08:22:40.771 ---------------------------- Captured stdout setup ----------------------------
2024-06-11 08:22:40.771 Cached db: db-13.0-8192-None-WIN1251.fdb [page_size=8192, sql_dialect=None, charset='WIN1251'
|
3 #text |
act = <firebird.qa.plugin.Action pytest object at [hex]>
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>
@pytest.mark.version('>=4.0')
def test_1(act: Action, capsys):
act.gstat(switches=['-r', '-t', 'TEST', '-user', act.db.user, '-pass', act.db.password])
gstat_lines = act.stdout.splitlines()
#for p in gstat_lines:
# print(p)
#
#act.expected_stdout = f"""
#"""
#act.stdout = capsys.readouterr().out
#assert act.clean_stdout == act.clean_expected_stdout
# Average record length: N.FF, total records: M
# NB: for improved RLE value <N.FF> must be LESS OR EQUAL to the table column declared length
p_average_record_length = re.compile( r'Average\s+record\s+length(:)?\s+\d+(.\d+)?' )
# Average unpacked length: N.FF, compression ratio: R.PP
# NB: for improved RLE value <R.PP> must be 1.00 because column contrains incompressible data
p_compression_ratio = re.compile( r'Average\s+unpacked\s+length(:)?\s+\d+(.\d+)?(,)?\s+compression\s+ratio:\s+\d+(.\d+)?' )
# Pointer pages: N, data page slots: M
p_pointer_pages_data_pages_slots = re.compile( r'Pointer\s+pages(:)?\s+\d+(,)?\s+data\s+page\s+slots(:)?\s+\d+' )
average_record_length = compression_ratio = data_pages_cnt = -1
gstat_lines = act.stdout.splitlines()
for line in gstat_lines:
if p_average_record_length.search(line):
# 'Average record length: 32757.00, total records: 10000' --> 32757
average_record_length = int(float(line.replace(',','').split()[3]))
if p_compression_ratio.search(line):
# 'Average unpacked length: 32766.00, compression ratio: 1.00'
compression_ratio = float(line.split()[-1])
if p_pointer_pages_data_pages_slots.search(line):
data_pages_cnt = int(line.split()[-1])
assert average_record_length > 0 and compression_ratio > 0 and data_pages_cnt > 0
avg_rec_len_expected_msg = f'average_record_length -- expected: LESS OR EQUALS to declared column length = {N_WIDT}'
if average_record_length <= N_WIDT:
print(avg_rec_len_expected_msg)
else:
print(f'average_record_length -- UNEXPECTED: {average_record_length} - more than declared withd = {N_WIDT}')
#-------------------------------------------------------------------------------------------
compression_ratio_expected_msg = f'compression_ratio_expected_msg -- expected: >= {COMPRESSION_THRESHOLD}'
if compression_ratio >= COMPRESSION_THRESHOLD:
print(compression_ratio_expected_msg)
else:
print(f'compression_ratio -- UNEXPECTED: {compression_ratio} - less than {COMPRESSION_THRESHOLD} (wasted compression occurred)')
#-------------------------------------------------------------------------------------------
data_pages_cnt_expected_msg = f'data_pages_cnt: expected, within {MIN_DP_COUNT_THRESHOLD=} ... {MAX_DP_COUNT_THRESHOLD=}'
if data_pages_cnt >= MIN_DP_COUNT_THRESHOLD and data_pages_cnt <= MAX_DP_COUNT_THRESHOLD:
print(data_pages_cnt_expected_msg)
else:
print(f'data_pages_cnt UNEXPECTED: {data_pages_cnt=} -- out of scope: {MIN_DP_COUNT_THRESHOLD=} ... {MAX_DP_COUNT_THRESHOLD=}')
act.expected_stdout = f"""
{avg_rec_len_expected_msg}
{compression_ratio_expected_msg}
{data_pages_cnt_expected_msg}
"""
act.stdout = capsys.readouterr().out
> assert act.clean_stdout == act.clean_expected_stdout
E assert
E - average_record_length -- expected: LESS OR EQUALS to declared column length = 32760
E - compression_ratio_expected_msg -- expected: >= 1.0
E - data_pages_cnt: expected, within MIN_DP_COUNT_THRESHOLD=280 ... MAX_DP_COUNT_THRESHOLD=330
E + average_record_length -- UNEXPECTED: 33019 - more than declared withd = 32760
E + compression_ratio -- UNEXPECTED: 0.99 - less than 1.0 (wasted compression occurred)
E + data_pages_cnt UNEXPECTED: data_pages_cnt=632 -- out of scope: MIN_DP_COUNT_THRESHOLD=280 ... MAX_DP_COUNT_THRESHOLD=330
tests\bugs\gh_4723_incompressible_test.py:137: AssertionError
|