redis使用了tcl语言开发自己的测试用例
为此,可以开发一个解析redis.conf的tcl语言脚本
#!/usr/bin/tclsh
# 解析redis.conf配置文件
# 返回包括每个配置项的参数
# 注意返回命令相同,子命令相同的配置项
proc parse_redis_confg {{path redis.conf}} {
set fd [open $path r]
set content [read $fd]
close $fd
set lines [split $content "\n"]
foreach line $lines {
set line [string trim $line]
if {[string index $line 0] eq "#" || [string is space $line]} {
continue
}
lappend l $line
}
return $l
}
# 查找配置项参数
# 注意,返回的是列表
proc find_key_in_redis_config {config config_item} {
set ret [lsearch -regexp -all -inline $config "^$config_item"]
return $ret
}
proc print_help_screen {} {
puts [join {
"cfg parse path parse redis config"
"cfg search path key search key in redis config"
"help show help"
} "\n"]
}
if {$argc == 0} {
puts "error"
} elseif {$argc == 1} {
set opt [lindex $argv 0]
if {$opt eq {help}} {
print_help_screen
} elseif {$opt eq {fish}} {
puts "fish"
} else {
puts "other"
}
} else {
set cmd [lindex $argv 0]
set subcmd [lindex $argv 1]
if {$cmd eq {cfg} && $subcmd eq {parse}} {
set ret [parse_redis_confg [file normalize [lindex $argv 2]]]
puts $ret
} elseif {$cmd eq {cfg} && $subcmd eq {search}} {
set cfgs [parse_redis_confg [file normalize [lindex $argv 2]]]
set ret [find_key_in_redis_config $cfgs [lindex $argv 3]]
if {[llength $ret] == 1} {
puts [lindex [lindex $ret 0] 1]
} else {
puts $ret
}
} else {
puts "error"
}
}