dbm数据库源代码分析(16):测试程序和转换程序
来源:互联网 发布:高达破坏者2武器数据 编辑:程序博客网 时间:2024/06/05 02:50
注意测试程序和转换程序默认不会被编译,默认的make命令只会编译gdbm、ndbm和dbm部分,你必须另外用make prog来编译测试和转换程序。
(1)gdbm测试程序testgdbm.c:用于测试gdbm各个功能的程序。为测试的方便,封装了4个函数用于打印相关信息,最后main函数实现各个功能的测试。
void print_bucket(bucket, mesg):打印散列桶bucket中的每个桶元素内容,mesg指定一个要显示的提示串。程序扫描每个桶元素并打印其内容。
void _gdbm_print_avail_list (dbf):打印文件头的可用块列表中的所有可用块信息。程序先打印文件头可用块列表中的每个可用块信息,然后打印文件上可用块栈中的每个可用块信息。
void _gdbm_print_bucket_cache (dbf):打印桶缓存数组中的内容。
void usage (s):打印启动测试程序时命令行选项的使用格式帮助。
main函数:testgdbm的主函数,执行流程:
1)循环调用getopt解析命令行的每个选项;
2)根据命令行选项的值以适当的方式打开数据库;
3)设置这个数据库的缓存大小;
3)根据用户的输入的测试命令,完成gdbm各个功能的测试。
testgdbm程序的使用方法为testgdbm [-r or -ns] [-b block-size] [-c cache-size] [-g gdbm-file],命令行选项含义如下:
-s 指定作磁盘同步操作
-r 指定数据库为只读
-n 指定总是创建新的数据库(可写)
-c cache-size 指定缓存大小
-b block-size 指定传递块大小
-g gdbm-file 指定数据库文件名
所有的dbm、ndbm、gdbm测试程序都支持的标准测试命令:
c - 统计数据库的关键字/数据对的数目
d - 在数据库中删除用户输入的关键字
f - 查找给定的关键字,并显示其关联的数据
n - 显示给定关键字的下一个关键字及其关联的数据
q - 退出本测试程序
s - 向数据库中存入给定的关键字和数据
1 - 显示数据库中的第一个关键及其数据
2 - 显示当前关键字的下一个关键及其数据
? - 显示帮助信息,即本命令列表
下面是只有testgdbm程序才支持的特殊测试命令:
r - 重组数据库文件
A - 打印文件头的可用块列表中的所有可用块信息
B - 获取指定目录索引处的散列桶,使之成为当前桶
C - 打印当前散列桶中每个桶元素的内容
D - 打印散列目录表中的每个目录项
F - 打印文件头的中各个域
H - 计算并显示给定关键字的哈希值
K - 打印桶缓存数组中的内容
V - 打印gdbm的版本号
(2)testndbm.c:用于测试ndbm各个功能的程序。它的实现与testgdbm类似,只不过testndbm不支持命令行选项,且只实现了标准的测试命令。测试各个功能时使用的当然是ndbm的接口了。
(3)testdbm.c:用于测试dbm各个功能的程序。它的实现与testgdbm类似,只不过testdbm不支持命令行选项,且只实现了标准的测试命令。测试各个功能时使用的当然是dbm的接口了。
(4)conv2gdbm.c:把dbm文件转换成gdbm文件的程序。操作流程:
1)循环调用getopt解析命令行的每个选项;
2)设置好dbm文件名和可选的gdbm文件名;
3)打开dbm文件和gdbm文件;
4)把dbm文件中的所有关键字/数据对插入到gdbm文件中;
5)最后报告统计的出错次数和插入记录数。
conv2gdbm程序的使用方法为conv2gdbm [-q] [-b block_size] dbmfile [gdbmfile],命令行选项含义:
-q 是否静静地进行转换,即不显示任何的提示信息
-b block_size 指定传递块大小
- dbm数据库源代码分析(16):测试程序和转换程序
- dbm数据库源代码分析(15):dbm部分
- dbm数据库源代码分析(5):gdbmopen.c和gdbmclose.c
- dbm数据库源代码分析(8):hash.c和findkey.c
- dbm数据库源代码分析(17):Makefile文件和其他文件
- dbm数据库源代码分析(1):概述
- dbm数据库源代码分析(6):bucket.c
- dbm数据库源代码分析(7):falloc.c
- dbm数据库源代码分析(13):ndbm部分
- dbm数据库源代码分析(9):global.c、version.c和update.c
- dbm数据库源代码分析(10):gdbmstore.c、gdbmfetch.c和gdbmdelete.c
- dbm数据库源代码分析(11):gdbmerrno.c、gdbmexists.c、gdbmfdesc.c和gdbmsync.c
- dbm数据库源代码分析(12):gdbmreorg.c、gdbmseq.c和gdbmsetopt.c
- dbm数据库源代码分析(2):构建性文件
- dbm数据库源代码分析(3):头文件部分
- dbm数据库源代码分析(4):头文件部分(续)
- dbm数据库源代码分析(14):ndbm部分(续)
- 从源代码编译OGRE和编写测试程序
- 使用 Spring 2.5 注释驱动的 IoC 功能(一)
- Bubble Sort
- Flex:用checkBox实现DataGrid所有行的选择(全选)
- JavaScript设计模式学习——Decorator
- 如何查rman每个数据文件的备份开始及结束时间
- dbm数据库源代码分析(16):测试程序和转换程序
- 字号与文字的大小关系
- 查找字符串位置的方法
- 微软与谷歌的10大战场 微软暂时领先
- x264编译问题合集
- 如何在大表上建索引
- javascript与CSS画图之基础篇
- WebService大讲堂之Axis2(2):复合类型数据的传递
- 监控索引