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