Jump to: output_first_mismatch    outcomes_full_history    elapsed_time_chart
Show cross-report outcomes.

Annotation type Annotation details
2 @message
assert   
    ISQL process terminated.
  - Memory differences median acceptable.
  + Memory LEAK detected. Median of differences: 1962.0 Kb - is UNACCEPTABLE. Check memo_rss_diff:
  + 1944
  + 1956
  + 1960
  + 1960
  + 1956
  + 1952
  + 1968
  + -640
  + 1972
  + 1972
  + 1968
  + 1968
  + 1964
  + 1972

LOG DETAILS:

2024-04-20 10:26:10.876
2024-04-20 10:26:10.876 act = <firebird.qa.plugin.Action object at [hex]>
2024-04-20 10:26:10.876 tmp_sql = WindowsPath('R:/temp/qa/fbqa/test_11550/tmp_8085.sql')
2024-04-20 10:26:10.876 tmp_log = WindowsPath('R:/temp/qa/fbqa/test_11550/tmp_8085.log')
2024-04-20 10:26:10.876 capsys = <_pytest.capture.CaptureFixture object at [hex]>
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876     @pytest.mark.version('>=4.0.5')
2024-04-20 10:26:10.876     def test_1(act: Action, tmp_sql: Path, tmp_log: Path, capsys):
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876         test_sql = f"""
2024-04-20 10:26:10.876             recreate table tmplog(srv_pid int);
2024-04-20 10:26:10.876             insert into tmplog(srv_pid)
2024-04-20 10:26:10.876             select mon$server_pid as p
2024-04-20 10:26:10.876             from mon$attachments
2024-04-20 10:26:10.876             where mon$attachment_id = current_connection
2024-04-20 10:26:10.876             ;
2024-04-20 10:26:10.876             commit;
2024-04-20 10:26:10.876             SET STATEMENT TIMEOUT 7200;
2024-04-20 10:26:10.876             set term ^;
2024-04-20 10:26:10.876             execute block as
2024-04-20 10:26:10.876                 declare res double precision;
2024-04-20 10:26:10.876             begin
2024-04-20 10:26:10.876                 while (1=1) do
2024-04-20 10:26:10.876                 begin
2024-04-20 10:26:10.876                     execute statement 'select ' || rand() || ' from rdb$database' into res;
2024-04-20 10:26:10.876                 end
2024-04-20 10:26:10.876             end
2024-04-20 10:26:10.876             ^
2024-04-20 10:26:10.876         """
2024-04-20 10:26:10.876         with open(tmp_sql, 'w') as f:
2024-04-20 10:26:10.876             f.write(test_sql)
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876         memo_rss_list = []
2024-04-20 10:26:10.876         with act.db.connect() as con:
2024-04-20 10:26:10.876             with open(tmp_log, 'w') as f:
2024-04-20 10:26:10.876                 try:
2024-04-20 10:26:10.876                     p_handed_isql = subprocess.Popen( [act.vars['isql'], '-i', str(tmp_sql),
2024-04-20 10:26:10.876                                                       '-user', act.db.user,
2024-04-20 10:26:10.876                                                       '-password', act.db.password, act.db.dsn],
2024-04-20 10:26:10.876                                                       stdout = f,
2024-04-20 10:26:10.876                                                       stderr = subprocess.STDOUT
2024-04-20 10:26:10.876                                                     )
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876                     # Let ISQL time to establish connection and start infinite loop with ES:
2024-04-20 10:26:10.876                     time.sleep(MAX_WAIT_FOR_ISQL_BEGIN_WORK)
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876                     cur = con.cursor()
2024-04-20 10:26:10.876                     cur.execute('select srv_pid from tmplog')
2024-04-20 10:26:10.876                     fb_srv = psutil.Process( int(cur.fetchone()[0]) )
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876                     for i in range(N_CNT):
2024-04-20 10:26:10.876                         memo_rss_list.append(int(fb_srv.memory_info().rss / 1024))
2024-04-20 10:26:10.876                         time.sleep(1)
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876                 finally:
2024-04-20 10:26:10.876                     p_handed_isql.terminate()
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876                 p_handed_isql.wait(MAX_WAIT_FOR_ISQL_TERMINATE)
2024-04-20 10:26:10.876                 if p_handed_isql.poll() is None:
2024-04-20 10:26:10.876                     print(f'ISQL process WAS NOT terminated in {MAX_WAIT_FOR_ISQL_TERMINATE} second(s).!')
2024-04-20 10:26:10.876                 else:
2024-04-20 10:26:10.876                     print(f'ISQL process terminated.')
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876             memo_rss_diff = []
2024-04-20 10:26:10.876             for i,x in enumerate(memo_rss_list):
2024-04-20 10:26:10.876                 if i >= 1:
2024-04-20 10:26:10.876                     memo_rss_diff.append(x - memo_rss_list[i-1])
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876         memo_rss_diff_median = median(memo_rss_diff)
2024-04-20 10:26:10.876         median_acceptable_msg = 'Memory differences median acceptable.'
2024-04-20 10:26:10.876         if memo_rss_diff_median <= MAX_RSS_DIFFERENCE_MEDIAN:
2024-04-20 10:26:10.876             print(median_acceptable_msg)
2024-04-20 10:26:10.876         else:
2024-04-20 10:26:10.876             print(f'Memory LEAK detected. Median of differences: {memo_rss_diff_median} Kb - is UNACCEPTABLE. Check memo_rss_diff:')
2024-04-20 10:26:10.876             for p in memo_rss_diff:
2024-04-20 10:26:10.876                 print('%6d' % p)
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876         expected_stdout = f"""
2024-04-20 10:26:10.876             ISQL process terminated.
2024-04-20 10:26:10.876             {median_acceptable_msg}
2024-04-20 10:26:10.876         """
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876         act.expected_stdout = expected_stdout
2024-04-20 10:26:10.876         act.stdout = capsys.readouterr().out
2024-04-20 10:26:10.876 >       assert act.clean_stdout == act.clean_expected_stdout
2024-04-20 10:26:10.876 E       assert
2024-04-20 10:26:10.876 E           ISQL process terminated.
2024-04-20 10:26:10.876 E         - Memory differences median acceptable.
2024-04-20 10:26:10.876 E         + Memory LEAK detected. Median of differences: 1962.0 Kb - is UNACCEPTABLE. Check memo_rss_diff:
2024-04-20 10:26:10.876 E         + 1944
2024-04-20 10:26:10.876 E         + 1956
2024-04-20 10:26:10.876 E         + 1960
2024-04-20 10:26:10.876 E         + 1960
2024-04-20 10:26:10.876 E         + 1956
2024-04-20 10:26:10.876 E         + 1952
2024-04-20 10:26:10.876 E         + 1968
2024-04-20 10:26:10.876 E         + -640
2024-04-20 10:26:10.876 E         + 1972
2024-04-20 10:26:10.876 E         + 1972
2024-04-20 10:26:10.876 E         + 1968
2024-04-20 10:26:10.876 E         + 1968
2024-04-20 10:26:10.876 E         + 1964
2024-04-20 10:26:10.876 E         + 1972
2024-04-20 10:26:10.876
2024-04-20 10:26:10.876 tests\bugs\gh_8085_test.py:129: AssertionError
2024-04-20 10:26:10.876 ---------------------------- Captured stdout setup ----------------------------
2024-04-20 10:26:10.876 Cached db: db-13.0-None-None-NONE.fdb [page_size=None, sql_dialect=None, charset='NONE'
3 #text
act = <firebird.qa.plugin.Action pytest object at [hex]>
tmp_sql = WindowsPath('R:/temp/qa/fbqa/test_11550/tmp_8085.sql')
tmp_log = WindowsPath('R:/temp/qa/fbqa/test_11550/tmp_8085.log')
capsys = <_pytest.capture.CaptureFixture pytest object at [hex]>

    @pytest.mark.version('>=4.0.5')
    def test_1(act: Action, tmp_sql: Path, tmp_log: Path, capsys):
    
        test_sql = f"""
            recreate table tmplog(srv_pid int);
            insert into tmplog(srv_pid)
            select mon$server_pid as p
            from mon$attachments
            where mon$attachment_id = current_connection
            ;
            commit;
            SET STATEMENT TIMEOUT 7200;
            set term ^;
            execute block as
                declare res double precision;
            begin
                while (1=1) do
                begin
                    execute statement 'select ' || rand() || ' from rdb$database' into res;
                end
            end
            ^
        """
        with open(tmp_sql, 'w') as f:
            f.write(test_sql)
    
        memo_rss_list = []
        with act.db.connect() as con:
            with open(tmp_log, 'w') as f:
                try:
                    p_handed_isql = subprocess.Popen( [act.vars['isql'], '-i', str(tmp_sql),
                                                      '-user', act.db.user,
                                                      '-password', act.db.password, act.db.dsn],
                                                      stdout = f,
                                                      stderr = subprocess.STDOUT
                                                    )
    
                    # Let ISQL time to establish connection and start infinite loop with ES:
                    time.sleep(MAX_WAIT_FOR_ISQL_BEGIN_WORK)
    
                    cur = con.cursor()
                    cur.execute('select srv_pid from tmplog')
                    fb_srv = psutil.Process( int(cur.fetchone()[0]) )
    
                    for i in range(N_CNT):
                        memo_rss_list.append(int(fb_srv.memory_info().rss / 1024))
                        time.sleep(1)
    
                finally:
                    p_handed_isql.terminate()
    
                p_handed_isql.wait(MAX_WAIT_FOR_ISQL_TERMINATE)
                if p_handed_isql.poll() is None:
                    print(f'ISQL process WAS NOT terminated in {MAX_WAIT_FOR_ISQL_TERMINATE} second(s).!')
                else:
                    print(f'ISQL process terminated.')
    
            memo_rss_diff = []
            for i,x in enumerate(memo_rss_list):
                if i >= 1:
                    memo_rss_diff.append(x - memo_rss_list[i-1])
    
        memo_rss_diff_median = median(memo_rss_diff)
        median_acceptable_msg = 'Memory differences median acceptable.'
        if memo_rss_diff_median <= MAX_RSS_DIFFERENCE_MEDIAN:
            print(median_acceptable_msg)
        else:
            print(f'Memory LEAK detected. Median of differences: {memo_rss_diff_median} Kb - is UNACCEPTABLE. Check memo_rss_diff:')
            for p in memo_rss_diff:
                print('%6d' % p)
    
        expected_stdout = f"""
            ISQL process terminated.
            {median_acceptable_msg}
        """
    
        act.expected_stdout = expected_stdout
        act.stdout = capsys.readouterr().out
>       assert act.clean_stdout == act.clean_expected_stdout
E       assert   
E           ISQL process terminated.
E         - Memory differences median acceptable.
E         + Memory LEAK detected. Median of differences: 1962.0 Kb - is UNACCEPTABLE. Check memo_rss_diff:
E         + 1944
E         + 1956
E         + 1960
E         + 1960
E         + 1956
E         + 1952
E         + 1968
E         + -640
E         + 1972
E         + 1972
E         + 1968
E         + 1968
E         + 1964
E         + 1972

tests\bugs\gh_8085_test.py:129: AssertionError
Full history of outcomes and elapsed time, ms:
NN SNAP_INFO CS_outcome SS_outcome CS_run_time SS_run_time CS_run_beg CS_run_end SS_run_beg SS_run_end
1 4.0.6.3189 2025.02.25 1a1a5 P P 18547 18314 2025.06.29 13:16:19.911 2025.06.29 13:16:38.458 2025.06.29 12:16:59.861 2025.06.29 12:17:18.175
2 4.0.6.3184 2025.02.24 9388c P P 18997 18315 2025.02.25 10:58:25.353 2025.02.25 10:58:44.350 2025.02.25 09:41:05.377 2025.02.25 09:41:23.692
3 4.0.6.3183 2025.02.17 e4762 P P 18576 18321 2025.02.24 11:30:30.963 2025.02.24 11:30:49.539 2025.02.24 10:31:27.645 2025.02.24 10:31:45.966
4 4.0.6.3169 2024.12.13 42cc1 P P 18553 18321 2025.02.14 08:18:20.503 2025.02.14 08:18:39.056 2025.02.14 07:19:18.156 2025.02.14 07:19:36.477
5 4.0.6.3169 2024.12.08 50eb6 P P 18563 18317 2024.12.11 11:14:53.890 2024.12.11 11:15:12.453 2024.12.11 10:16:14.901 2024.12.11 10:16:33.218
6 4.0.6.3168 2024.12.07 98d69 P P 18552 18314 2024.12.08 03:58:27.631 2024.12.08 03:58:46.183 2024.12.08 02:57:57.489 2024.12.08 02:58:15.803
7 4.0.6.3168 2024.12.05 cee43 P P 18568 18328 2024.12.06 04:01:39.787 2024.12.06 04:01:58.355 2024.12.06 03:02:31.891 2024.12.06 03:02:50.219
8 4.0.6.3168 2024.11.28 48149 P P 18553 18320 2024.12.03 10:54:53.674 2024.12.03 10:55:12.227 2024.12.03 09:56:55.535 2024.12.03 09:57:13.855
9 4.0.6.3163 2024.10.30 832db P P 18577 18315 2024.11.28 10:53:34.674 2024.11.28 10:53:53.251 2024.11.28 09:55:48.423 2024.11.28 09:56:06.738
10 4.0.6.3163 2024.10.16 2bb10 P P 18551 18327 2024.10.30 11:02:35.541 2024.10.30 11:02:54.092 2024.10.30 10:04:41.187 2024.10.30 10:04:59.514
11 4.0.6.3147 2024.09.10 a4d11 P P 18556 18341 2024.10.16 04:10:03.166 2024.10.16 04:10:21.722 2024.10.16 02:53:04.181 2024.10.16 02:53:22.522
12 4.0.6.3147 2024.08.31 4655b P P 18579 18320 2024.09.10 11:08:00.488 2024.09.10 11:08:19.067 2024.09.10 10:06:03.322 2024.09.10 10:06:21.642
13 4.0.6.3140 2024.08.16 1dd8b P P 18636 18358 2024.09.01 11:30:20.631 2024.09.01 11:30:39.267 2024.09.01 10:11:00.250 2024.09.01 10:11:18.608
14 4.0.6.3140 2024.08.09 34747 P P 18643 18352 2024.08.16 11:10:23.760 2024.08.16 11:10:42.403 2024.08.16 10:09:08.388 2024.08.16 10:09:26.740
15 4.0.5.3110 2024.08.06 f851c P P 18636 18515 2024.08.09 10:49:13.985 2024.08.09 10:49:32.621 2024.08.09 09:48:39.306 2024.08.09 09:48:57.821
16 4.0.5.3110 2024.07.30 c6527 P P 18452 18261 2024.08.06 06:26:09.208 2024.08.06 06:26:27.660 2024.08.06 05:31:03.704 2024.08.06 05:31:21.965
17 4.0.5.3109 2024.06.11 6addf P P 18441 18226 2024.07.30 09:43:51.831 2024.07.30 09:44:10.272 2024.07.30 08:50:48.425 2024.07.30 08:51:06.651
18 4.0.5.3097 2024.05.09 27fa6 P P 18377 18158 2024.06.11 06:01:55.465 2024.06.11 06:02:13.842 2024.06.11 05:12:51.484 2024.06.11 05:13:09.642
19 4.0.5.3091 2024.04.29 bd0aa P P 18346 18158 2024.05.09 18:40:57.953 2024.05.09 18:41:16.299 2024.05.09 17:52:23.725 2024.05.09 17:52:41.883
20 4.0.5.3089 2024.04.20 9eb9b P P 18393 18158 2024.04.29 06:49:27.457 2024.04.29 06:49:45.850 2024.04.29 06:01:13.981 2024.04.29 06:01:32.139
21 4.0.5.3083 2024.04.06 300f9 F F 18377 18173 2024.04.20 07:12:48.491 2024.04.20 07:13:06.868 2024.04.20 06:24:12.034 2024.04.20 06:24:30.207

Elapsed time, ms. Chart for last 21 runs:

Last commits information (all timestamps in UTC):