/[webpac]/openisis/current/tcl/test/testcli.tcl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /openisis/current/tcl/test/testcli.tcl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 237 - (hide annotations)
Mon Mar 8 17:43:12 2004 UTC (20 years, 1 month ago) by dpavlin
File MIME type: application/x-tcl
File size: 4915 byte(s)
initial import of openisis 0.9.0 vendor drop

1 dpavlin 237 #!/opt/openisis/tcl/bin/isish
2     #
3     # openisis - an open implementation of the ISIS database
4     # Version 0.8.x (microversion see file Version)
5     # Copyright (C) 2003 by Erik Grziwotz, erik@openisis.org
6     #
7     # This library is free software; you can redistribute it and/or
8     # modify it under the terms of the GNU Lesser General Public
9     # License as published by the Free Software Foundation; either
10     # version 2.1 of the License, or (at your option) any later version.
11     #
12     # This library is distributed in the hope that it will be useful,
13     # but WITHOUT ANY WARRANTY; without even the implied warranty of
14     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15     # Lesser General Public License for more details.
16     #
17     # You should have received a copy of the GNU Lesser General Public
18     # License along with this library; if not, write to the Free Software
19     # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20     #
21     # This software is dedicated to the memory of Eckart Dietrich.
22     #
23     # This software is inspired by (but contains no code of) the iAPI
24     # Copyright (C) 2000 by Robert Janusz, rj@jezuici.krakow.pl.
25     # See iAPI.txt for what it contains.
26     #
27     # $Id: testcli.tcl,v 1.4 2003/06/15 15:57:44 mawag Exp $
28     # test script for db servers client
29    
30     proc checklst {msg exp got} {
31     if [catch {
32     set len1 [llength $exp]
33     set len2 [llength $got]
34     if {$len1 != $len2} {
35     puts "ERR $msg: length != $len1"
36     puts "REC = $got"
37     exit 1
38     }
39     for {set j 0} {$len1 > $j} {incr j} {
40     set gg [lindex $got $j]
41     set ee [lindex $exp $j]
42     if {! [string equal $gg $ee]} {
43     puts "ERR $msg: got\[$j] = $gg, exp = $ee"
44     puts "REC = $got"
45     exit 1
46     }
47     }
48     }] {
49     global errorInfo
50     puts $errorInfo
51     puts "REC = $got"
52     exit 1
53     }
54     }
55    
56     proc checkrec {msg cmd tag val {complete 0}} {
57     set lst ""
58     set witht ""
59     if [catch {
60     set lst [eval $cmd get]
61     set witht [eval $cmd get -tags]
62     set len [llength $val]
63     if $complete {
64     if {[llength $lst] != $len} {
65     puts "ERR $msg: got len = [llength $lst], exp = $len"
66     puts "REC = $witht"
67     exit 1
68     }
69     }
70     for {set j 0} {$len > $j} {incr j} {
71     set exp [lindex $val $j]
72     if $complete {
73     set got [lindex $lst $j]
74     if {! [string equal $got $exp]} {
75     puts "ERR $msg: rec\[$j] = $got, exp = $exp"
76     puts "REC = $witht"
77     exit 1
78     }
79     }
80     set fld [lindex $tag $j]
81     set got [eval $cmd get $fld]
82     set got [lindex $got 0]
83     if {! [string equal $got $exp]} {
84     puts "ERR $msg: tag $fld = $got, exp = $exp"
85     puts "REC = $witht"
86     exit 1
87     }
88     }
89     }] {
90     global errorInfo
91     puts $errorInfo
92     puts "$msg: REC = $witht"
93     exit 1
94     }
95     }
96    
97     proc checkrsp {msg stb fld val} {
98     checkrec "$msg" "$stb .res" "$fld" "$val"
99     }
100    
101     proc checknoerr {msg stb fld val} {
102     lappend fld sid error error2
103     lappend val [expr 1 << 8] 0 0
104     checkrsp "$msg" $stb "$fld" "$val"
105     }
106    
107     proc sendrqs {msg stb type db args} {
108     if [string length $db] {
109     set db "db $db"
110     }
111     if [catch {
112     eval $stb req type $type $db $args
113     $stb .req delete
114     }] {
115     global errorInfo
116     puts $errorInfo
117     puts "$msg: $stb sendrqs($type)"
118     exit 1
119     }
120     }
121    
122     # -----------------------------------------------------------------
123    
124     if [catch {
125     set nn [lindex $argv 0]
126     incr nn 0
127     }] {
128     set nn 1
129     }
130     if [catch {
131     set dbg "v [lindex $argv 1]"
132     }] {
133     set dbg ""
134     }
135     set verbose [expr 1 == $nn && [string length $dbg]]
136    
137     set stb0 [eval openIsis $dbg]
138    
139     set stb1 [$stb0 new -schema tstsrv -host localhost -port 8080]
140    
141     for {set n $nn} {0 != $n} {incr n -1} {
142    
143     sendrqs RQS_LS $stb1 ls ""
144     checknoerr RSP_LS $stb1 "" ""
145     set dbs [$stb1 .res get db]
146     foreach db $dbs {
147     if {$verbose} {
148     puts "tstsrv has $db"
149     }
150     }
151     set db cds
152     if {0 > [lsearch -exact $dbs $db]} {
153     puts "ERR expected cds db for testing"
154     exit 1
155     }
156    
157     sendrqs RQS_MOUNT $stb1 mount $db
158     checknoerr RSP_MOUNT $stb1 "" ""
159     set fdt [$stb1 fdt $db]
160     checkrec FDT $fdt {881 {866\[0\]}} {6 conference_main_entry}
161     if {$verbose} {
162     puts [$fdt seri]
163     }
164     $fdt done
165    
166     set maxrow 154
167     sendrqs RQS_MAXROW $stb1 maxrow $db
168     checknoerr RSP_MAXROW $stb1 904 $maxrow
169    
170     for {set r 1} {$maxrow >= $r} {incr r} {
171     sendrqs RQS_READ($r) $stb1 read $db rowid $r
172     if {23 == $r || 152 <= $r} {
173     set exp "0 0"
174     set fld "total size"
175     } {
176     set exp "1 1 $r"
177     set fld "total size rowid"
178     }
179     checknoerr RSP_READ($r) $stb1 $fld $exp
180     }
181    
182     $stb1 .req .rec add 42 "evalcb $n"
183     sendrqs RQS_EVAL $stb1 eval {}
184     checknoerr RSP_EVAL $stb1 {total size row} {1 1 0}
185     set rec [$stb1 .res .rec]
186     checkrec REC_EVAL $rec $n tach 1
187    
188     sendrqs RQS_QUERY $stb1 query $db key africa\$ mode 2 flags 2
189     checknoerr RSP_QUERY $stb1 {total size} {5 5}
190     if $verbose {
191     for {set i 0} {5 > $i} {incr i} {
192     set ttl ""
193     catch { set ttl [$stb1 .res .rec\[$i\] get 24] }
194     if {60 < [string length $ttl]} {
195     set ttl "[string range $ttl 0 57] ..."
196     }
197     puts "rec($i) [$stb1 .res get row\[$i\]]: $ttl"
198     }
199     }
200    
201     if {0 == [expr $n % 20]} {
202     puts "$n ..."
203     }
204     }
205    
206     $stb1 done
207     puts ok.
208     exit 0
209    

Properties

Name Value
svn:executable

  ViewVC Help
Powered by ViewVC 1.1.26