mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-13 11:04:10 +00:00
a424b4ad56
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>
59 lines
1.5 KiB
Plaintext
Executable File
59 lines
1.5 KiB
Plaintext
Executable File
#!/usr/bin/expect -f
|
|
# Tags: no-fasttest
|
|
# Tag no-fasttest: requires mysql client
|
|
|
|
log_user 0
|
|
set timeout 60
|
|
match_max 100000
|
|
|
|
expect_after {
|
|
# Do not ignore eof from expect
|
|
eof { exp_continue }
|
|
# A default timeout action is to do nothing, change it to fail
|
|
timeout { exit 1 }
|
|
}
|
|
|
|
set basedir [file dirname $argv0]
|
|
spawn bash -c "source $basedir/../shell_config.sh ; \$MYSQL_CLIENT_BINARY \$MYSQL_CLIENT_OPT"
|
|
expect -nocase -re "mysql.*> "
|
|
|
|
send -- "USE system;\r"
|
|
expect "Database changed"
|
|
|
|
send -- "SELECT * FROM one;\r"
|
|
expect "| dummy |"
|
|
expect "| 0 |"
|
|
expect "1 row in set"
|
|
|
|
# exception before start
|
|
send -- "select * from table_that_does_not_exist;\r"
|
|
expect "ERROR 60 (00000): Code: 60"
|
|
|
|
# exception after start
|
|
send -- "select throwIf(number) from numbers(2) settings max_block_size=1;\r"
|
|
expect "ERROR 395 (00000): Code: 395"
|
|
|
|
# other formats
|
|
send -- "select * from system.one format TSV;\r"
|
|
expect "ERROR 1 (00000): Code: 1"
|
|
|
|
send -- "select * from system.one format JSON;\r"
|
|
expect "ERROR 1 (00000): Code: 1"
|
|
|
|
send -- "select * from system.one format MySQLWire;\r"
|
|
expect "| dummy |"
|
|
expect "| 0 |"
|
|
expect "1 row in set"
|
|
|
|
send -- "select count(number), sum(number) from numbers(10);\r"
|
|
expect "+---------------+-------------+"
|
|
expect "| count(number) | sum(number) |"
|
|
expect "+---------------+-------------+"
|
|
expect "| 10 | 45 |"
|
|
expect "+---------------+-------------+"
|
|
expect "1 row in set"
|
|
expect -nocase -re "mysql.*> "
|
|
|
|
send -- "quit;\r"
|
|
expect eof
|