Home | History | Annotate | Download | only in tool
      1 # 2010 July 28
      2 #
      3 # The author disclaims copyright to this source code.  In place of
      4 # a legal notice, here is a blessing:
      5 #
      6 #    May you do good and not evil.
      7 #    May you find forgiveness for yourself and forgive others.
      8 #    May you share freely, never taking more than you give.
      9 #
     10 #***********************************************************************
     11 #
     12 # The focus of this file is testing the CLI shell tool.
     13 # These tests are specific to the .stats command.
     14 #
     15 # $Id: shell4.test,v 1.7 2009/07/17 16:54:48 shaneh Exp $
     16 #
     17 
     18 # Test plan:
     19 #
     20 #   shell4-1.*: Basic tests specific to the "stats" command.
     21 #
     22 
     23 set CLI "./sqlite3"
     24 
     25 proc do_test {name cmd expected} {
     26   puts -nonewline "$name ..."
     27   set res [uplevel $cmd]
     28   if {$res eq $expected} {
     29     puts Ok
     30   } else {
     31     puts Error
     32     puts "  Got: $res"
     33     puts "  Expected: $expected"
     34     exit
     35   }
     36 }
     37 
     38 proc catchcmd {db {cmd ""}} {
     39   global CLI
     40   set out [open cmds.txt w]
     41   puts $out $cmd
     42   close $out
     43   set line "exec $CLI $db < cmds.txt"
     44   set rc [catch { eval $line } msg]
     45   list $rc $msg
     46 }
     47 
     48 file delete -force test.db test.db.journal
     49 
     50 #----------------------------------------------------------------------------
     51 # Test cases shell4-1.*: Tests specific to the "stats" command.
     52 #
     53 
     54 # should default to off
     55 do_test shell4-1.1.1 {
     56   set res [catchcmd "test.db" ".show"]
     57   list [regexp {stats: off} $res]
     58 } {1}
     59 
     60 do_test shell4-1.1.2 {
     61   set res [catchcmd "test.db" ".show"]
     62   list [regexp {stats: on} $res]
     63 } {0}
     64 
     65 # -stats should turn it on
     66 do_test shell4-1.2.1 {
     67   set res [catchcmd "-stats test.db" ".show"]
     68   list [regexp {stats: on} $res]
     69 } {1}
     70 
     71 do_test shell4-1.2.2 {
     72   set res [catchcmd "-stats test.db" ".show"]
     73   list [regexp {stats: off} $res]
     74 } {0}
     75 
     76 # .stats ON|OFF          Turn stats on or off
     77 do_test shell4-1.3.1 {
     78   catchcmd "test.db" ".stats"
     79 } {1 {Error: unknown command or invalid arguments:  "stats". Enter ".help" for help}}
     80 do_test shell4-1.3.2 {
     81   catchcmd "test.db" ".stats ON"
     82 } {0 {}}
     83 do_test shell4-1.3.3 {
     84   catchcmd "test.db" ".stats OFF"
     85 } {0 {}}
     86 do_test shell4-1.3.4 {
     87   # too many arguments
     88   catchcmd "test.db" ".stats OFF BAD"
     89 } {1 {Error: unknown command or invalid arguments:  "stats". Enter ".help" for help}}
     90 
     91 # NB. whitespace is important
     92 do_test shell4-1.4.1 {
     93   set res [catchcmd "test.db" {.show}]
     94   list [regexp {stats: off} $res]
     95 } {1}
     96 
     97 do_test shell4-1.4.2 {
     98   set res [catchcmd "test.db" {.stats ON
     99 .show
    100 }]
    101   list [regexp {stats: on} $res]
    102 } {1}
    103 
    104 do_test shell4-1.4.3 {
    105   set res [catchcmd "test.db" {.stats OFF
    106 .show
    107 }]
    108   list [regexp {stats: off} $res]
    109 } {1}
    110 
    111 # make sure stats not present when off
    112 do_test shell4-1.5.1 {
    113   set res [catchcmd "test.db" {SELECT 1;}]
    114   list [regexp {Memory Used} $res] \
    115        [regexp {Heap Usage} $res] \
    116        [regexp {Autoindex Inserts} $res]
    117 } {0 0 0}
    118 
    119 # make sure stats are present when on
    120 do_test shell4-1.5.2 {
    121   set res [catchcmd "test.db" {.stats ON
    122 SELECT 1;
    123 }]
    124   list [regexp {Memory Used} $res] \
    125        [regexp {Heap Usage} $res] \
    126        [regexp {Autoindex Inserts} $res]
    127 } {1 1 1}
    128 
    129 puts "CLI tests completed successfully"
    130