Commit Graph

7 Commits

Author SHA1 Message Date
Azat Khuzhin
a6d420a1c6 One cannot use /dev/null as a history file since replxx run chmod
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2023-02-20 13:59:46 +01:00
Azat Khuzhin
238d44783b Fix flakiness of expect tests for clickhouse-client by avoiding history overlap
Yes, all writes to the history file is done under flock, *but*, before
writing the history file there is sort(), and so if you will run the
following tests the 01300_client_save_history_when_terminated_long will fail:

    $ /src/tests/clickhouse-test --print-time -j2 01180_client_syntax_errors 01300_client_save_history_when_terminated_long 0001_select

And it has nothing todo with timeouts:

    expect: does "" (spawn_id exp8) match glob pattern "for the history"? no
    f8f1dbfdaaca :) select (1, 2
    expect: does "\u001b[1Gf8f1dbfdaaca :) select \u001b[0;22;33m(\u001b[0;22;32m1\u001b[0;1m,\u001b[0m \u001b[0;22;32m2\u001b[0m\u001b[J" (spawn_id exp8) match glob pattern "for the history"? no

    expect: does "\u001b[1Gf8f1dbfdaaca :) select \u001b[0;22;33m(\u001b[0;22;32m1\u001b[0;1m,\u001b[0m \u001b[0;22;32m2\u001b[0m\u001b[J\u001b[29G" (spawn_id exp8) match glob pattern "for the history"? no
    expect: timed out

The "select (1, 2" is from 01180_client_syntax_errors

And use real file only when the history should be preserved across runs
(i.e. there are multiple invocations of clickhouse-client)

CI: https://s3.amazonaws.com/clickhouse-test-reports/0/1adfbac19fed9813725d8b1df14e617b58a45d20/stateless_tests__asan__[2/2].html
Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2023-02-20 09:51:08 +01:00
Azat Khuzhin
e4b81e6de9 Add exp_internal for expect tests
This is to catch possible issues like 01565_reconnect_after_client_error in [1].

  [1]: https://s3.amazonaws.com/clickhouse-test-reports/38417/e33f236d502fe9f7906392f4ceffaee44e3c4ce4/stateless_tests__thread__actions__[3/3].html

Signed-off-by: Azat Khuzhin <a.khuzhin@semrush.com>
2022-07-02 17:08:06 +03:00
Azat Khuzhin
a424b4ad56 Do not ignore eof in expect tests
expect_after that adjusts default timeout handler, reseted eof handler,
and this tell expect that it can ignore eof from read, consider the
following example:

<details>

    ```expect
    #!/usr/bin/expect -f

    exp_internal 1
    log_user 1
    set timeout 4
    match_max 100000

    expect_after {
        # eof { exp_continue }
        timeout {
            exit 1
        }
    }

    spawn bash -c "sleep 1; echo ':) '"
    expect ":) "
    ```

    ```
    $ ./expect.expect < /dev/null
    spawn bash -c sleep 1; echo ':) '
    parent: waiting for sync byte
    parent: telling child to go ahead
    parent: now unsynchronized from child
    spawn: returns {6614}

    expect: does "" (spawn_id exp4) match glob pattern ":) "? no
    expect: read eof
                 ^^^
    expect: set expect_out(spawn_id) "exp0"
    expect: set expect_out(buffer) ""
    ```

And with uncommented eof handler:

    ```
    $ ./expect.expect < /dev/null
    spawn bash -c sleep 1; echo ':) '
    parent: waiting for sync byte
    parent: telling child to go ahead
    parent: now unsynchronized from child
    spawn: returns {17959}

    expect: does "" (spawn_id exp4) match glob pattern ":) "? no
    expect: read eof
    expect: set expect_out(spawn_id) "exp0"
    expect: set expect_out(buffer) ""
    expect: continuing expect after update

    expect: does "" (spawn_id exp4) match glob pattern ":) "? no

    expect: does ":) \r\n" (spawn_id exp4) match glob pattern ":) "? yes
    expect: set expect_out(0,string) ":) "
    expect: set expect_out(spawn_id) "exp4"
    expect: set expect_out(buffer) ":) "
    ```

</details>
2021-12-29 10:02:38 +03:00
Azat Khuzhin
cb394c95d0 Enable tests that requires completion in fasttest 2021-12-17 22:14:37 +03:00
Alexey Milovidov
d604cf5573 Remove the infamous "unbundled" build 2021-11-21 13:58:26 +03:00
kssenii
bb55fb41c6 Add test 2021-10-08 07:48:05 +00:00