1start_server {tags {"quit"}} { 2 proc format_command {args} { 3 set cmd "*[llength $args]\r\n" 4 foreach a $args { 5 append cmd "$[string length $a]\r\n$a\r\n" 6 } 7 set _ $cmd 8 } 9 10 test "QUIT returns OK" { 11 reconnect 12 assert_equal OK [r quit] 13 assert_error * {r ping} 14 } 15 16 test "Pipelined commands after QUIT must not be executed" { 17 reconnect 18 r write [format_command quit] 19 r write [format_command set foo bar] 20 r flush 21 assert_equal OK [r read] 22 assert_error * {r read} 23 24 reconnect 25 assert_equal {} [r get foo] 26 } 27 28 test "Pipelined commands after QUIT that exceed read buffer size" { 29 reconnect 30 r write [format_command quit] 31 r write [format_command set foo [string repeat "x" 1024]] 32 r flush 33 assert_equal OK [r read] 34 assert_error * {r read} 35 36 reconnect 37 assert_equal {} [r get foo] 38 39 } 40} 41