~vlad-lesin/percona-server/mysql-5.0.33-original

« back to all changes in this revision

Viewing changes to bdb/test/update.tcl

  • Committer: Vlad Lesin
  • Date: 2012-07-31 09:21:34 UTC
  • Revision ID: vladislav.lesin@percona.com-20120731092134-zfodx022b7992wsi
VirginĀ 5.0.33

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# See the file LICENSE for redistribution information.
 
2
#
 
3
# Copyright (c) 1999-2002
 
4
#       Sleepycat Software.  All rights reserved.
 
5
#
 
6
# $Id: update.tcl,v 11.11 2002/01/11 15:53:58 bostic Exp $
 
7
 
 
8
source ./include.tcl
 
9
global update_dir
 
10
set update_dir "$test_path/update_test"
 
11
 
 
12
proc update { } {
 
13
        source ./include.tcl
 
14
        global update_dir
 
15
 
 
16
        foreach version [glob $update_dir/*] {
 
17
                regexp \[^\/\]*$ $version version
 
18
                foreach method [glob $update_dir/$version/*] {
 
19
                        regexp \[^\/\]*$ $method method
 
20
                        foreach file [glob $update_dir/$version/$method/*] {
 
21
                                regexp (\[^\/\]*)\.tar\.gz$ $file dummy name
 
22
                                foreach endianness {"le" "be"} {
 
23
                                        puts "Update:\
 
24
                                            $version $method $name $endianness"
 
25
                                        set ret [catch {_update $update_dir $testdir $version $method $name $endianness 1 1} message]
 
26
                                        if { $ret != 0 } {
 
27
                                                puts $message
 
28
                                        }
 
29
                                }
 
30
                        }
 
31
                }
 
32
        }
 
33
}
 
34
 
 
35
proc _update { source_dir temp_dir \
 
36
    version method file endianness do_db_load_test do_update_test } {
 
37
        source include.tcl
 
38
        global errorInfo
 
39
 
 
40
        cleanup $temp_dir NULL
 
41
 
 
42
        exec sh -c \
 
43
"gzcat $source_dir/$version/$method/$file.tar.gz | (cd $temp_dir && tar xf -)"
 
44
 
 
45
        if { $do_db_load_test } {
 
46
                set ret [catch \
 
47
                    {exec $util_path/db_load -f "$temp_dir/$file.dump" \
 
48
                    "$temp_dir/update.db"} message]
 
49
                error_check_good \
 
50
                    "Update load: $version $method $file $message" $ret 0
 
51
 
 
52
                set ret [catch \
 
53
                    {exec $util_path/db_dump -f "$temp_dir/update.dump" \
 
54
                    "$temp_dir/update.db"} message]
 
55
                error_check_good \
 
56
                    "Update dump: $version $method $file $message" $ret 0
 
57
 
 
58
                error_check_good "Update diff.1.1: $version $method $file" \
 
59
                    [filecmp "$temp_dir/$file.dump" "$temp_dir/update.dump"] 0
 
60
                error_check_good \
 
61
                    "Update diff.1.2: $version $method $file" $ret ""
 
62
        }
 
63
 
 
64
        if { $do_update_test } {
 
65
                set ret [catch \
 
66
                    {berkdb open -update "$temp_dir/$file-$endianness.db"} db]
 
67
                if { $ret == 1 } {
 
68
                        if { ![is_substr $errorInfo "version upgrade"] } {
 
69
                                set fnl [string first "\n" $errorInfo]
 
70
                                set theError \
 
71
                                    [string range $errorInfo 0 [expr $fnl - 1]]
 
72
                                error $theError
 
73
                        }
 
74
                } else {
 
75
                        error_check_good dbopen [is_valid_db $db] TRUE
 
76
                        error_check_good dbclose [$db close] 0
 
77
 
 
78
                        set ret [catch \
 
79
                            {exec $util_path/db_dump -f \
 
80
                            "$temp_dir/update.dump" \
 
81
                            "$temp_dir/$file-$endianness.db"} message]
 
82
                        error_check_good "Update\
 
83
                            dump: $version $method $file $message" $ret 0
 
84
 
 
85
                        error_check_good \
 
86
                            "Update diff.2: $version $method $file" \
 
87
                            [filecmp "$temp_dir/$file.dump" \
 
88
                            "$temp_dir/update.dump"] 0
 
89
                        error_check_good \
 
90
                            "Update diff.2: $version $method $file" $ret ""
 
91
                }
 
92
        }
 
93
}