/ Hex Artifact Content
Login

Artifact 35f9c3d452b4e76d5013c63e1fd07478a62f14ce:


0000: 23 20 32 30 31 30 20 4a 75 6c 79 20 32 38 0a 23  # 2010 July 28.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 0a 23 0a 23 20 54 68 65 20 66 6f 63  ****.#.# The foc
0170: 75 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20  us of this file 
0180: 69 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 43  is testing the C
0190: 4c 49 20 73 68 65 6c 6c 20 74 6f 6f 6c 2e 0a 23  LI shell tool..#
01a0: 20 54 68 65 73 65 20 74 65 73 74 73 20 61 72 65   These tests are
01b0: 20 73 70 65 63 69 66 69 63 20 74 6f 20 74 68 65   specific to the
01c0: 20 2e 73 74 61 74 73 20 63 6f 6d 6d 61 6e 64 2e   .stats command.
01d0: 0a 23 0a 23 20 24 49 64 3a 20 73 68 65 6c 6c 34  .#.# $Id: shell4
01e0: 2e 74 65 73 74 2c 76 20 31 2e 37 20 32 30 30 39  .test,v 1.7 2009
01f0: 2f 30 37 2f 31 37 20 31 36 3a 35 34 3a 34 38 20  /07/17 16:54:48 
0200: 73 68 61 6e 65 68 20 45 78 70 20 24 0a 23 0a 0a  shaneh Exp $.#..
0210: 23 20 54 65 73 74 20 70 6c 61 6e 3a 0a 23 0a 23  # Test plan:.#.#
0220: 20 20 20 73 68 65 6c 6c 34 2d 31 2e 2a 3a 20 42     shell4-1.*: B
0230: 61 73 69 63 20 74 65 73 74 73 20 73 70 65 63 69  asic tests speci
0240: 66 69 63 20 74 6f 20 74 68 65 20 22 73 74 61 74  fic to the "stat
0250: 73 22 20 63 6f 6d 6d 61 6e 64 2e 0a 23 0a 0a 73  s" command..#..s
0260: 65 74 20 43 4c 49 20 22 2e 2f 73 71 6c 69 74 65  et CLI "./sqlite
0270: 33 22 0a 0a 70 72 6f 63 20 64 6f 5f 74 65 73 74  3"..proc do_test
0280: 20 7b 6e 61 6d 65 20 63 6d 64 20 65 78 70 65 63   {name cmd expec
0290: 74 65 64 7d 20 7b 0a 20 20 70 75 74 73 20 2d 6e  ted} {.  puts -n
02a0: 6f 6e 65 77 6c 69 6e 65 20 22 24 6e 61 6d 65 20  onewline "$name 
02b0: 2e 2e 2e 22 0a 20 20 73 65 74 20 72 65 73 20 5b  ...".  set res [
02c0: 75 70 6c 65 76 65 6c 20 24 63 6d 64 5d 0a 20 20  uplevel $cmd].  
02d0: 69 66 20 7b 24 72 65 73 20 65 71 20 24 65 78 70  if {$res eq $exp
02e0: 65 63 74 65 64 7d 20 7b 0a 20 20 20 20 70 75 74  ected} {.    put
02f0: 73 20 4f 6b 0a 20 20 7d 20 65 6c 73 65 20 7b 0a  s Ok.  } else {.
0300: 20 20 20 20 70 75 74 73 20 45 72 72 6f 72 0a 20      puts Error. 
0310: 20 20 20 70 75 74 73 20 22 20 20 47 6f 74 3a 20     puts "  Got: 
0320: 24 72 65 73 22 0a 20 20 20 20 70 75 74 73 20 22  $res".    puts "
0330: 20 20 45 78 70 65 63 74 65 64 3a 20 24 65 78 70    Expected: $exp
0340: 65 63 74 65 64 22 0a 20 20 20 20 65 78 69 74 0a  ected".    exit.
0350: 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 63 61 74 63    }.}..proc catc
0360: 68 63 6d 64 20 7b 64 62 20 7b 63 6d 64 20 22 22  hcmd {db {cmd ""
0370: 7d 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c 20 43 4c  }} {.  global CL
0380: 49 0a 20 20 73 65 74 20 6f 75 74 20 5b 6f 70 65  I.  set out [ope
0390: 6e 20 63 6d 64 73 2e 74 78 74 20 77 5d 0a 20 20  n cmds.txt w].  
03a0: 70 75 74 73 20 24 6f 75 74 20 24 63 6d 64 0a 20  puts $out $cmd. 
03b0: 20 63 6c 6f 73 65 20 24 6f 75 74 0a 20 20 73 65   close $out.  se
03c0: 74 20 6c 69 6e 65 20 22 65 78 65 63 20 24 43 4c  t line "exec $CL
03d0: 49 20 24 64 62 20 3c 20 63 6d 64 73 2e 74 78 74  I $db < cmds.txt
03e0: 22 0a 20 20 73 65 74 20 72 63 20 5b 63 61 74 63  ".  set rc [catc
03f0: 68 20 7b 20 65 76 61 6c 20 24 6c 69 6e 65 20 7d  h { eval $line }
0400: 20 6d 73 67 5d 0a 20 20 6c 69 73 74 20 24 72 63   msg].  list $rc
0410: 20 24 6d 73 67 0a 7d 0a 0a 66 69 6c 65 20 64 65   $msg.}..file de
0420: 6c 65 74 65 20 2d 66 6f 72 63 65 20 74 65 73 74  lete -force test
0430: 2e 64 62 20 74 65 73 74 2e 64 62 2e 6a 6f 75 72  .db test.db.jour
0440: 6e 61 6c 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  nal..#----------
0450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0490: 2d 2d 0a 23 20 54 65 73 74 20 63 61 73 65 73 20  --.# Test cases 
04a0: 73 68 65 6c 6c 34 2d 31 2e 2a 3a 20 54 65 73 74  shell4-1.*: Test
04b0: 73 20 73 70 65 63 69 66 69 63 20 74 6f 20 74 68  s specific to th
04c0: 65 20 22 73 74 61 74 73 22 20 63 6f 6d 6d 61 6e  e "stats" comman
04d0: 64 2e 0a 23 0a 0a 23 20 73 68 6f 75 6c 64 20 64  d..#..# should d
04e0: 65 66 61 75 6c 74 20 74 6f 20 6f 66 66 0a 64 6f  efault to off.do
04f0: 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 31  _test shell4-1.1
0500: 2e 31 20 7b 0a 20 20 73 65 74 20 72 65 73 20 5b  .1 {.  set res [
0510: 63 61 74 63 68 63 6d 64 20 22 74 65 73 74 2e 64  catchcmd "test.d
0520: 62 22 20 22 2e 73 68 6f 77 22 5d 0a 20 20 6c 69  b" ".show"].  li
0530: 73 74 20 5b 72 65 67 65 78 70 20 7b 73 74 61 74  st [regexp {stat
0540: 73 3a 20 6f 66 66 7d 20 24 72 65 73 5d 0a 7d 20  s: off} $res].} 
0550: 7b 31 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 68 65  {1}..do_test she
0560: 6c 6c 34 2d 31 2e 31 2e 32 20 7b 0a 20 20 73 65  ll4-1.1.2 {.  se
0570: 74 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20  t res [catchcmd 
0580: 22 74 65 73 74 2e 64 62 22 20 22 2e 73 68 6f 77  "test.db" ".show
0590: 22 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67 65 78  "].  list [regex
05a0: 70 20 7b 73 74 61 74 73 3a 20 6f 6e 7d 20 24 72  p {stats: on} $r
05b0: 65 73 5d 0a 7d 20 7b 30 7d 0a 0a 23 20 2d 73 74  es].} {0}..# -st
05c0: 61 74 73 20 73 68 6f 75 6c 64 20 74 75 72 6e 20  ats should turn 
05d0: 69 74 20 6f 6e 0a 64 6f 5f 74 65 73 74 20 73 68  it on.do_test sh
05e0: 65 6c 6c 34 2d 31 2e 32 2e 31 20 7b 0a 20 20 73  ell4-1.2.1 {.  s
05f0: 65 74 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64  et res [catchcmd
0600: 20 22 2d 73 74 61 74 73 20 74 65 73 74 2e 64 62   "-stats test.db
0610: 22 20 22 2e 73 68 6f 77 22 5d 0a 20 20 6c 69 73  " ".show"].  lis
0620: 74 20 5b 72 65 67 65 78 70 20 7b 73 74 61 74 73  t [regexp {stats
0630: 3a 20 6f 6e 7d 20 24 72 65 73 5d 0a 7d 20 7b 31  : on} $res].} {1
0640: 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c  }..do_test shell
0650: 34 2d 31 2e 32 2e 32 20 7b 0a 20 20 73 65 74 20  4-1.2.2 {.  set 
0660: 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22 2d  res [catchcmd "-
0670: 73 74 61 74 73 20 74 65 73 74 2e 64 62 22 20 22  stats test.db" "
0680: 2e 73 68 6f 77 22 5d 0a 20 20 6c 69 73 74 20 5b  .show"].  list [
0690: 72 65 67 65 78 70 20 7b 73 74 61 74 73 3a 20 6f  regexp {stats: o
06a0: 66 66 7d 20 24 72 65 73 5d 0a 7d 20 7b 30 7d 0a  ff} $res].} {0}.
06b0: 0a 23 20 2e 73 74 61 74 73 20 4f 4e 7c 4f 46 46  .# .stats ON|OFF
06c0: 20 20 20 20 20 20 20 20 20 20 54 75 72 6e 20 73            Turn s
06d0: 74 61 74 73 20 6f 6e 20 6f 72 20 6f 66 66 0a 64  tats on or off.d
06e0: 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e  o_test shell4-1.
06f0: 33 2e 31 20 7b 0a 20 20 63 61 74 63 68 63 6d 64  3.1 {.  catchcmd
0700: 20 22 74 65 73 74 2e 64 62 22 20 22 2e 73 74 61   "test.db" ".sta
0710: 74 73 22 0a 7d 20 7b 31 20 7b 45 72 72 6f 72 3a  ts".} {1 {Error:
0720: 20 75 6e 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64   unknown command
0730: 20 6f 72 20 69 6e 76 61 6c 69 64 20 61 72 67 75   or invalid argu
0740: 6d 65 6e 74 73 3a 20 20 22 73 74 61 74 73 22 2e  ments:  "stats".
0750: 20 45 6e 74 65 72 20 22 2e 68 65 6c 70 22 20 66   Enter ".help" f
0760: 6f 72 20 68 65 6c 70 7d 7d 0a 64 6f 5f 74 65 73  or help}}.do_tes
0770: 74 20 73 68 65 6c 6c 34 2d 31 2e 33 2e 32 20 7b  t shell4-1.3.2 {
0780: 0a 20 20 63 61 74 63 68 63 6d 64 20 22 74 65 73  .  catchcmd "tes
0790: 74 2e 64 62 22 20 22 2e 73 74 61 74 73 20 4f 4e  t.db" ".stats ON
07a0: 22 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f 74 65  ".} {0 {}}.do_te
07b0: 73 74 20 73 68 65 6c 6c 34 2d 31 2e 33 2e 33 20  st shell4-1.3.3 
07c0: 7b 0a 20 20 63 61 74 63 68 63 6d 64 20 22 74 65  {.  catchcmd "te
07d0: 73 74 2e 64 62 22 20 22 2e 73 74 61 74 73 20 4f  st.db" ".stats O
07e0: 46 46 22 0a 7d 20 7b 30 20 7b 7d 7d 0a 64 6f 5f  FF".} {0 {}}.do_
07f0: 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 33 2e  test shell4-1.3.
0800: 34 20 7b 0a 20 20 23 20 74 6f 6f 20 6d 61 6e 79  4 {.  # too many
0810: 20 61 72 67 75 6d 65 6e 74 73 0a 20 20 63 61 74   arguments.  cat
0820: 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20  chcmd "test.db" 
0830: 22 2e 73 74 61 74 73 20 4f 46 46 20 42 41 44 22  ".stats OFF BAD"
0840: 0a 7d 20 7b 31 20 7b 45 72 72 6f 72 3a 20 75 6e  .} {1 {Error: un
0850: 6b 6e 6f 77 6e 20 63 6f 6d 6d 61 6e 64 20 6f 72  known command or
0860: 20 69 6e 76 61 6c 69 64 20 61 72 67 75 6d 65 6e   invalid argumen
0870: 74 73 3a 20 20 22 73 74 61 74 73 22 2e 20 45 6e  ts:  "stats". En
0880: 74 65 72 20 22 2e 68 65 6c 70 22 20 66 6f 72 20  ter ".help" for 
0890: 68 65 6c 70 7d 7d 0a 0a 23 20 4e 42 2e 20 77 68  help}}..# NB. wh
08a0: 69 74 65 73 70 61 63 65 20 69 73 20 69 6d 70 6f  itespace is impo
08b0: 72 74 61 6e 74 0a 64 6f 5f 74 65 73 74 20 73 68  rtant.do_test sh
08c0: 65 6c 6c 34 2d 31 2e 34 2e 31 20 7b 0a 20 20 73  ell4-1.4.1 {.  s
08d0: 65 74 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64  et res [catchcmd
08e0: 20 22 74 65 73 74 2e 64 62 22 20 7b 2e 73 68 6f   "test.db" {.sho
08f0: 77 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67 65  w}].  list [rege
0900: 78 70 20 7b 73 74 61 74 73 3a 20 6f 66 66 7d 20  xp {stats: off} 
0910: 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f  $res].} {1}..do_
0920: 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 34 2e  test shell4-1.4.
0930: 32 20 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63  2 {.  set res [c
0940: 61 74 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62  atchcmd "test.db
0950: 22 20 7b 2e 73 74 61 74 73 20 4f 4e 0a 2e 73 68  " {.stats ON..sh
0960: 6f 77 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65  ow.}].  list [re
0970: 67 65 78 70 20 7b 73 74 61 74 73 3a 20 6f 6e 7d  gexp {stats: on}
0980: 20 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f   $res].} {1}..do
0990: 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 34  _test shell4-1.4
09a0: 2e 33 20 7b 0a 20 20 73 65 74 20 72 65 73 20 5b  .3 {.  set res [
09b0: 63 61 74 63 68 63 6d 64 20 22 74 65 73 74 2e 64  catchcmd "test.d
09c0: 62 22 20 7b 2e 73 74 61 74 73 20 4f 46 46 0a 2e  b" {.stats OFF..
09d0: 73 68 6f 77 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b  show.}].  list [
09e0: 72 65 67 65 78 70 20 7b 73 74 61 74 73 3a 20 6f  regexp {stats: o
09f0: 66 66 7d 20 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a  ff} $res].} {1}.
0a00: 0a 23 20 6d 61 6b 65 20 73 75 72 65 20 73 74 61  .# make sure sta
0a10: 74 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 77  ts not present w
0a20: 68 65 6e 20 6f 66 66 0a 64 6f 5f 74 65 73 74 20  hen off.do_test 
0a30: 73 68 65 6c 6c 34 2d 31 2e 35 2e 31 20 7b 0a 20  shell4-1.5.1 {. 
0a40: 20 73 65 74 20 72 65 73 20 5b 63 61 74 63 68 63   set res [catchc
0a50: 6d 64 20 22 74 65 73 74 2e 64 62 22 20 7b 53 45  md "test.db" {SE
0a60: 4c 45 43 54 20 31 3b 7d 5d 0a 20 20 6c 69 73 74  LECT 1;}].  list
0a70: 20 5b 72 65 67 65 78 70 20 7b 4d 65 6d 6f 72 79   [regexp {Memory
0a80: 20 55 73 65 64 7d 20 24 72 65 73 5d 20 5c 0a 20   Used} $res] \. 
0a90: 20 20 20 20 20 20 5b 72 65 67 65 78 70 20 7b 48        [regexp {H
0aa0: 65 61 70 20 55 73 61 67 65 7d 20 24 72 65 73 5d  eap Usage} $res]
0ab0: 20 5c 0a 20 20 20 20 20 20 20 5b 72 65 67 65 78   \.       [regex
0ac0: 70 20 7b 41 75 74 6f 69 6e 64 65 78 20 49 6e 73  p {Autoindex Ins
0ad0: 65 72 74 73 7d 20 24 72 65 73 5d 0a 7d 20 7b 30  erts} $res].} {0
0ae0: 20 30 20 30 7d 0a 0a 23 20 6d 61 6b 65 20 73 75   0 0}..# make su
0af0: 72 65 20 73 74 61 74 73 20 61 72 65 20 70 72 65  re stats are pre
0b00: 73 65 6e 74 20 77 68 65 6e 20 6f 6e 0a 64 6f 5f  sent when on.do_
0b10: 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 35 2e  test shell4-1.5.
0b20: 32 20 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63  2 {.  set res [c
0b30: 61 74 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62  atchcmd "test.db
0b40: 22 20 7b 2e 73 74 61 74 73 20 4f 4e 0a 53 45 4c  " {.stats ON.SEL
0b50: 45 43 54 20 31 3b 0a 7d 5d 0a 20 20 6c 69 73 74  ECT 1;.}].  list
0b60: 20 5b 72 65 67 65 78 70 20 7b 4d 65 6d 6f 72 79   [regexp {Memory
0b70: 20 55 73 65 64 7d 20 24 72 65 73 5d 20 5c 0a 20   Used} $res] \. 
0b80: 20 20 20 20 20 20 5b 72 65 67 65 78 70 20 7b 48        [regexp {H
0b90: 65 61 70 20 55 73 61 67 65 7d 20 24 72 65 73 5d  eap Usage} $res]
0ba0: 20 5c 0a 20 20 20 20 20 20 20 5b 72 65 67 65 78   \.       [regex
0bb0: 70 20 7b 41 75 74 6f 69 6e 64 65 78 20 49 6e 73  p {Autoindex Ins
0bc0: 65 72 74 73 7d 20 24 72 65 73 5d 0a 7d 20 7b 31  erts} $res].} {1
0bd0: 20 31 20 31 7d 0a 0a 70 75 74 73 20 22 43 4c 49   1 1}..puts "CLI
0be0: 20 74 65 73 74 73 20 63 6f 6d 70 6c 65 74 65 64   tests completed
0bf0: 20 73 75 63 63 65 73 73 66 75 6c 6c 79 22 0a      successfully".