github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/cli/interactive_tests/test_txn_prompt.tcl (about) 1 #! /usr/bin/env expect -f 2 3 source [file join [file dirname $argv0] common.tcl] 4 5 start_server $argv 6 7 spawn /bin/bash 8 send "PS1='\\h:''/# '\r" 9 eexpect ":/# " 10 11 send "$argv sql --host=localhost\r" 12 eexpect root@ 13 14 ###START tests prompt customization 15 16 start_test "Check that invalid prompt patterns cause an error." 17 send "\\set prompt1 %?\r" 18 eexpect "unrecognized format code in prompt" 19 20 # Reset to default. 21 send "\\unset prompt1\r" 22 eexpect root@ 23 end_test 24 25 start_test "Check that one can use % signs in the prompt." 26 send "\\set prompt1 abc%%def\r" 27 eexpect "abc%def" 28 29 send "\\set prompt1 abc%Mdef\r" 30 eexpect abclocalhost:26257def 31 32 send "\\set prompt1 abc%mdef\r" 33 eexpect abclocalhostdef 34 35 send "\\set prompt1 abc%>def\r" 36 eexpect abc26257def 37 38 send "\\set prompt1 abc%ndef\r" 39 eexpect abcrootdef 40 41 send "\\set prompt1 abc%/def\r" 42 eexpect abcdefaultdbdef 43 44 # Check promptw with no formatting code. 45 send "\\set prompt1 woo \r" 46 eexpect woo 47 48 send "SET database \r" 49 eexpect "\r\n -> " 50 send "defaultdb;\r" 51 eexpect woo 52 53 # Reset to default. 54 send "\\unset prompt1\r" 55 eexpect root@ 56 end_test 57 58 start_test "Check option to echo statements" 59 send "\\set echo\r" 60 send "select 1;\r" 61 eexpect "\n> select 1;\r\n" 62 eexpect root@ 63 end_test 64 65 start_test "Check database prompt." 66 send "CREATE DATABASE IF NOT EXISTS testdb;\r" 67 eexpect "\nCREATE DATABASE\r\n" 68 eexpect root@ 69 send "SET DATABASE = testdb;\r" 70 eexpect "\nSET\r\n" 71 eexpect root@ 72 eexpect "/testdb>" 73 send "SET sql_safe_updates = false;\r" 74 eexpect "\nSET\r\n" 75 send "SET database = '';\r" 76 eexpect "\nSET\r\n" 77 eexpect root@ 78 eexpect "/>" 79 send "SET database = 'defaultdb';\r" 80 eexpect "\nSET\r\n" 81 eexpect root@ 82 end_test 83 84 start_test "Test that prompt becomes OPEN when txn is opened." 85 send "BEGIN;\r\r" 86 87 eexpect "\nBEGIN\r\n" 88 eexpect root@ 89 eexpect "OPEN>" 90 end_test 91 92 start_test "Test that prompt becomes ERROR upon txn error." 93 send "select a;\r" 94 eexpect "ERROR: column \"a\" does not exist" 95 eexpect root@ 96 eexpect "ERROR>" 97 end_test 98 99 start_test "Test that prompt becomes DONE after successful retry attempt." 100 send "ROLLBACK;\r" 101 eexpect "\nROLLBACK\r\n" 102 eexpect root@ 103 104 send "BEGIN; SAVEPOINT cockroach_restart;\r\r" 105 eexpect SAVEPOINT 106 eexpect root@ 107 send "SELECT 1;\r" 108 eexpect "1 row" 109 eexpect root@ 110 send "RELEASE SAVEPOINT cockroach_restart;\r" 111 eexpect "\nCOMMIT\r\n" 112 eexpect root@ 113 eexpect "DONE>" 114 end_test 115 116 start_test "Test that prompt becomes RETRY upon retry error." 117 send "COMMIT;\r" 118 eexpect root@ 119 120 send "BEGIN; SAVEPOINT cockroach_restart;\r\r" 121 eexpect SAVEPOINT 122 eexpect root@ 123 send "SELECT crdb_internal.force_retry('1s':::INTERVAL);\r" 124 eexpect "ERROR: restart transaction" 125 eexpect root@ 126 eexpect "ERROR>" 127 end_test 128 129 start_test "Test that prompt reverts to OPEN at beginning of new attempt." 130 send "ROLLBACK TO SAVEPOINT cockroach_restart;\r" 131 eexpect ROLLBACK 132 eexpect root@ 133 eexpect "OPEN>" 134 end_test 135 136 send "COMMIT;\r" 137 eexpect root@ 138 139 start_test "Test that prompt becomes ??? upon server unreachable." 140 stop_server $argv 141 142 send "SELECT 1; SELECT 1;\r" 143 eexpect "connection lost" 144 eexpect root@ 145 eexpect " \\?>" 146 end_test 147 148 # Terminate. 149 send "\\q\r" 150 eexpect ":/# " 151 152 send "exit\r" 153 eexpect eof