/ Hex Artifact Content
Login

Artifact 8a9c08976291e6c6c808b4d718f4a8b299f339f5:


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 73 65  s" command..#.se
0260: 74 20 74 65 73 74 64 69 72 20 5b 66 69 6c 65 20  t testdir [file 
0270: 64 69 72 6e 61 6d 65 20 24 61 72 67 76 30 5d 0a  dirname $argv0].
0280: 73 6f 75 72 63 65 20 24 74 65 73 74 64 69 72 2f  source $testdir/
0290: 74 65 73 74 65 72 2e 74 63 6c 0a 69 66 20 7b 24  tester.tcl.if {$
02a0: 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c 61  tcl_platform(pla
02b0: 74 66 6f 72 6d 29 3d 3d 22 77 69 6e 64 6f 77 73  tform)=="windows
02c0: 22 7d 20 7b 0a 20 20 73 65 74 20 43 4c 49 20 22  "} {.  set CLI "
02d0: 73 71 6c 69 74 65 33 2e 65 78 65 22 0a 7d 20 65  sqlite3.exe".} e
02e0: 6c 73 65 20 7b 0a 20 20 73 65 74 20 43 4c 49 20  lse {.  set CLI 
02f0: 22 2e 2f 73 71 6c 69 74 65 33 22 0a 7d 0a 69 66  "./sqlite3".}.if
0300: 20 7b 21 5b 66 69 6c 65 20 65 78 65 63 75 74 61   {![file executa
0310: 62 6c 65 20 24 43 4c 49 5d 7d 20 7b 0a 20 20 66  ble $CLI]} {.  f
0320: 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74  inish_test.  ret
0330: 75 72 6e 0a 7d 0a 64 62 20 63 6c 6f 73 65 0a 66  urn.}.db close.f
0340: 6f 72 63 65 64 65 6c 65 74 65 20 74 65 73 74 2e  orcedelete test.
0350: 64 62 20 74 65 73 74 2e 64 62 2d 6a 6f 75 72 6e  db test.db-journ
0360: 61 6c 20 74 65 73 74 2e 64 62 2d 77 61 6c 0a 73  al test.db-wal.s
0370: 71 6c 69 74 65 33 20 64 62 20 74 65 73 74 2e 64  qlite3 db test.d
0380: 62 0a 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  b..#------------
0390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
03d0: 0a 23 20 54 65 73 74 20 63 61 73 65 73 20 73 68  .# Test cases sh
03e0: 65 6c 6c 34 2d 31 2e 2a 3a 20 54 65 73 74 73 20  ell4-1.*: Tests 
03f0: 73 70 65 63 69 66 69 63 20 74 6f 20 74 68 65 20  specific to the 
0400: 22 73 74 61 74 73 22 20 63 6f 6d 6d 61 6e 64 2e  "stats" command.
0410: 0a 23 0a 0a 23 20 73 68 6f 75 6c 64 20 64 65 66  .#..# should def
0420: 61 75 6c 74 20 74 6f 20 6f 66 66 0a 64 6f 5f 74  ault to off.do_t
0430: 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 31 2e 31  est shell4-1.1.1
0440: 20 7b 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61   {.  set res [ca
0450: 74 63 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22  tchcmd "test.db"
0460: 20 22 2e 73 68 6f 77 22 5d 0a 20 20 6c 69 73 74   ".show"].  list
0470: 20 5b 72 65 67 65 78 70 20 7b 73 74 61 74 73 3a   [regexp {stats:
0480: 20 6f 66 66 7d 20 24 72 65 73 5d 0a 7d 20 7b 31   off} $res].} {1
0490: 7d 0a 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c  }..do_test shell
04a0: 34 2d 31 2e 31 2e 32 20 7b 0a 20 20 73 65 74 20  4-1.1.2 {.  set 
04b0: 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22 74  res [catchcmd "t
04c0: 65 73 74 2e 64 62 22 20 22 2e 73 68 6f 77 22 5d  est.db" ".show"]
04d0: 0a 20 20 6c 69 73 74 20 5b 72 65 67 65 78 70 20  .  list [regexp 
04e0: 7b 73 74 61 74 73 3a 20 6f 6e 7d 20 24 72 65 73  {stats: on} $res
04f0: 5d 0a 7d 20 7b 30 7d 0a 0a 23 20 2d 73 74 61 74  ].} {0}..# -stat
0500: 73 20 73 68 6f 75 6c 64 20 74 75 72 6e 20 69 74  s should turn it
0510: 20 6f 6e 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c   on.do_test shel
0520: 6c 34 2d 31 2e 32 2e 31 20 7b 0a 20 20 73 65 74  l4-1.2.1 {.  set
0530: 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22   res [catchcmd "
0540: 2d 73 74 61 74 73 20 74 65 73 74 2e 64 62 22 20  -stats test.db" 
0550: 22 2e 73 68 6f 77 22 5d 0a 20 20 6c 69 73 74 20  ".show"].  list 
0560: 5b 72 65 67 65 78 70 20 7b 73 74 61 74 73 3a 20  [regexp {stats: 
0570: 6f 6e 7d 20 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a  on} $res].} {1}.
0580: 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d  .do_test shell4-
0590: 31 2e 32 2e 32 20 7b 0a 20 20 73 65 74 20 72 65  1.2.2 {.  set re
05a0: 73 20 5b 63 61 74 63 68 63 6d 64 20 22 2d 73 74  s [catchcmd "-st
05b0: 61 74 73 20 74 65 73 74 2e 64 62 22 20 22 2e 73  ats test.db" ".s
05c0: 68 6f 77 22 5d 0a 20 20 6c 69 73 74 20 5b 72 65  how"].  list [re
05d0: 67 65 78 70 20 7b 73 74 61 74 73 3a 20 6f 66 66  gexp {stats: off
05e0: 7d 20 24 72 65 73 5d 0a 7d 20 7b 30 7d 0a 0a 23  } $res].} {0}..#
05f0: 20 2e 73 74 61 74 73 20 4f 4e 7c 4f 46 46 20 20   .stats ON|OFF  
0600: 20 20 20 20 20 20 20 20 54 75 72 6e 20 73 74 61          Turn sta
0610: 74 73 20 6f 6e 20 6f 72 20 6f 66 66 0a 64 6f 5f  ts on or off.do_
0620: 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e 33 2e  test shell4-1.3.
0630: 31 20 7b 0a 20 20 63 61 74 63 68 63 6d 64 20 22  1 {.  catchcmd "
0640: 74 65 73 74 2e 64 62 22 20 22 2e 73 74 61 74 73  test.db" ".stats
0650: 22 0a 7d 20 7b 31 20 7b 55 73 61 67 65 3a 20 2e  ".} {1 {Usage: .
0660: 73 74 61 74 73 20 6f 6e 7c 6f 66 66 7d 7d 0a 64  stats on|off}}.d
0670: 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31 2e  o_test shell4-1.
0680: 33 2e 32 20 7b 0a 20 20 63 61 74 63 68 63 6d 64  3.2 {.  catchcmd
0690: 20 22 74 65 73 74 2e 64 62 22 20 22 2e 73 74 61   "test.db" ".sta
06a0: 74 73 20 4f 4e 22 0a 7d 20 7b 30 20 7b 7d 7d 0a  ts ON".} {0 {}}.
06b0: 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34 2d 31  do_test shell4-1
06c0: 2e 33 2e 33 20 7b 0a 20 20 63 61 74 63 68 63 6d  .3.3 {.  catchcm
06d0: 64 20 22 74 65 73 74 2e 64 62 22 20 22 2e 73 74  d "test.db" ".st
06e0: 61 74 73 20 4f 46 46 22 0a 7d 20 7b 30 20 7b 7d  ats OFF".} {0 {}
06f0: 7d 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34  }.do_test shell4
0700: 2d 31 2e 33 2e 34 20 7b 0a 20 20 23 20 74 6f 6f  -1.3.4 {.  # too
0710: 20 6d 61 6e 79 20 61 72 67 75 6d 65 6e 74 73 0a   many arguments.
0720: 20 20 63 61 74 63 68 63 6d 64 20 22 74 65 73 74    catchcmd "test
0730: 2e 64 62 22 20 22 2e 73 74 61 74 73 20 4f 46 46  .db" ".stats OFF
0740: 20 42 41 44 22 0a 7d 20 7b 31 20 7b 55 73 61 67   BAD".} {1 {Usag
0750: 65 3a 20 2e 73 74 61 74 73 20 6f 6e 7c 6f 66 66  e: .stats on|off
0760: 7d 7d 0a 0a 23 20 4e 42 2e 20 77 68 69 74 65 73  }}..# NB. whites
0770: 70 61 63 65 20 69 73 20 69 6d 70 6f 72 74 61 6e  pace is importan
0780: 74 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c 6c 34  t.do_test shell4
0790: 2d 31 2e 34 2e 31 20 7b 0a 20 20 73 65 74 20 72  -1.4.1 {.  set r
07a0: 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22 74 65  es [catchcmd "te
07b0: 73 74 2e 64 62 22 20 7b 2e 73 68 6f 77 7d 5d 0a  st.db" {.show}].
07c0: 20 20 6c 69 73 74 20 5b 72 65 67 65 78 70 20 7b    list [regexp {
07d0: 73 74 61 74 73 3a 20 6f 66 66 7d 20 24 72 65 73  stats: off} $res
07e0: 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 73 74  ].} {1}..do_test
07f0: 20 73 68 65 6c 6c 34 2d 31 2e 34 2e 32 20 7b 0a   shell4-1.4.2 {.
0800: 20 20 73 65 74 20 72 65 73 20 5b 63 61 74 63 68    set res [catch
0810: 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20 7b 2e  cmd "test.db" {.
0820: 73 74 61 74 73 20 4f 4e 0a 2e 73 68 6f 77 0a 7d  stats ON..show.}
0830: 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67 65 78 70  ].  list [regexp
0840: 20 7b 73 74 61 74 73 3a 20 6f 6e 7d 20 24 72 65   {stats: on} $re
0850: 73 5d 0a 7d 20 7b 31 7d 0a 0a 64 6f 5f 74 65 73  s].} {1}..do_tes
0860: 74 20 73 68 65 6c 6c 34 2d 31 2e 34 2e 33 20 7b  t shell4-1.4.3 {
0870: 0a 20 20 73 65 74 20 72 65 73 20 5b 63 61 74 63  .  set res [catc
0880: 68 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20 7b  hcmd "test.db" {
0890: 2e 73 74 61 74 73 20 4f 46 46 0a 2e 73 68 6f 77  .stats OFF..show
08a0: 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65 67 65  .}].  list [rege
08b0: 78 70 20 7b 73 74 61 74 73 3a 20 6f 66 66 7d 20  xp {stats: off} 
08c0: 24 72 65 73 5d 0a 7d 20 7b 31 7d 0a 0a 23 20 6d  $res].} {1}..# m
08d0: 61 6b 65 20 73 75 72 65 20 73 74 61 74 73 20 6e  ake sure stats n
08e0: 6f 74 20 70 72 65 73 65 6e 74 20 77 68 65 6e 20  ot present when 
08f0: 6f 66 66 0a 64 6f 5f 74 65 73 74 20 73 68 65 6c  off.do_test shel
0900: 6c 34 2d 31 2e 35 2e 31 20 7b 0a 20 20 73 65 74  l4-1.5.1 {.  set
0910: 20 72 65 73 20 5b 63 61 74 63 68 63 6d 64 20 22   res [catchcmd "
0920: 74 65 73 74 2e 64 62 22 20 7b 53 45 4c 45 43 54  test.db" {SELECT
0930: 20 31 3b 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65   1;}].  list [re
0940: 67 65 78 70 20 7b 4d 65 6d 6f 72 79 20 55 73 65  gexp {Memory Use
0950: 64 7d 20 24 72 65 73 5d 20 5c 0a 20 20 20 20 20  d} $res] \.     
0960: 20 20 5b 72 65 67 65 78 70 20 7b 48 65 61 70 20    [regexp {Heap 
0970: 55 73 61 67 65 7d 20 24 72 65 73 5d 20 5c 0a 20  Usage} $res] \. 
0980: 20 20 20 20 20 20 5b 72 65 67 65 78 70 20 7b 41        [regexp {A
0990: 75 74 6f 69 6e 64 65 78 20 49 6e 73 65 72 74 73  utoindex Inserts
09a0: 7d 20 24 72 65 73 5d 0a 7d 20 7b 30 20 30 20 30  } $res].} {0 0 0
09b0: 7d 0a 0a 23 20 6d 61 6b 65 20 73 75 72 65 20 73  }..# make sure s
09c0: 74 61 74 73 20 61 72 65 20 70 72 65 73 65 6e 74  tats are present
09d0: 20 77 68 65 6e 20 6f 6e 0a 64 6f 5f 74 65 73 74   when on.do_test
09e0: 20 73 68 65 6c 6c 34 2d 31 2e 35 2e 32 20 7b 0a   shell4-1.5.2 {.
09f0: 20 20 73 65 74 20 72 65 73 20 5b 63 61 74 63 68    set res [catch
0a00: 63 6d 64 20 22 74 65 73 74 2e 64 62 22 20 7b 2e  cmd "test.db" {.
0a10: 73 74 61 74 73 20 4f 4e 0a 53 45 4c 45 43 54 20  stats ON.SELECT 
0a20: 31 3b 0a 7d 5d 0a 20 20 6c 69 73 74 20 5b 72 65  1;.}].  list [re
0a30: 67 65 78 70 20 7b 4d 65 6d 6f 72 79 20 55 73 65  gexp {Memory Use
0a40: 64 7d 20 24 72 65 73 5d 20 5c 0a 20 20 20 20 20  d} $res] \.     
0a50: 20 20 5b 72 65 67 65 78 70 20 7b 48 65 61 70 20    [regexp {Heap 
0a60: 55 73 61 67 65 7d 20 24 72 65 73 5d 20 5c 0a 20  Usage} $res] \. 
0a70: 20 20 20 20 20 20 5b 72 65 67 65 78 70 20 7b 41        [regexp {A
0a80: 75 74 6f 69 6e 64 65 78 20 49 6e 73 65 72 74 73  utoindex Inserts
0a90: 7d 20 24 72 65 73 5d 0a 7d 20 7b 31 20 31 20 31  } $res].} {1 1 1
0aa0: 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74 0a     }..finish_test.