Solaris 10安装二三事
部门服务器资源向来都比较紧张,每当忙碌季节到来,服务器资源消耗都较大,开发人员总是抱怨编辑代码慢、Build慢以及磁盘空间不足等问题,严重时甚至无法工作。部门也一直在尝试改善这个问题,无非加服务器、加磁盘等,但是这些措施似乎都难以满足开发和测试人员日益增长的对服务器资源的索求。 ...
部门服务器资源向来都比较紧张,每当忙碌季节到来,服务器资源消耗都较大,开发人员总是抱怨编辑代码慢、Build慢以及磁盘空间不足等问题,严重时甚至无法工作。部门也一直在尝试改善这个问题,无非加服务器、加磁盘等,但是这些措施似乎都难以满足开发和测试人员日益增长的对服务器资源的索求。 ...
在Unix平台工作的人都使用过Shell的重定向功能,多数人接触较多的是简单的重定向,比如: cmd > some_file 将cmd命令的标准输出重定向到some_file中 cmd < some_file 将some_file的内容作为cmd命令执行的标准输入,或者简单的说cmd命令从some_file读取输入 ...
近两天一有空就会去看看项目代码,思考一下如何利用cmockery对项目里已有的代码进行测试。项目代码中很多被调用的接口都带有输出参数,而且在这些接口中多利用返回值指示执行成败也否,而利用输出参数返回一些关键结果,这些结果值甚至影响着后续的函数执行流程。前期研究cmockery时没有注意到cmockery是否可以设置被mock接口的输出参数的值,不过回顾了一下cmockery实现的原理,觉得cmockery是应该可以支持的。遂重新翻看了一下cmockery的manual,发现在mock_query_database中确有对输出参数的mock调用,代码如下: // Mock query database function. unsigned int mock_query_database( DatabaseConnection* const connection, const char * const query_string, void *** const results) { *results = (void**)mock(); return (unsigned int)mock(); } void test_get_customer_id_by_name(void **state) { DatabaseConnection connection = { “somedatabase.somewhere.com”, 12345678, mock_query_database }; int customer_ids = 543; will_return(mock_query_database, &customer_ids); will_return(mock_query_database, 1); assert_int_equal(get_customer_id_by_name(&connection, “john doe”), 543); } ...
这么久以来一直没有找到一款很好的支持mock测试的C语言单元测试工具包,但前不久在一网友的评论中得知:去年Google曾发布了一款c语言的轻量级单元测试framework — “cmockery”,cmcokery很小巧,对其他开源包没有依赖,对被测试代码侵入性小;它支持mock test,同样也可以支持常规的单元测试。 之前在博客中曾描述过C语言实现mock的一个思路,不过和cmockery对比起来,当时我的思路显然还处于初级阶段,而cmockery则走到了更高级,使用起来也更为简便。 还是以我上一篇文章中的代码来举例,利用cmockery来对biz.c进行mock test。 应用层被测试代码不变: /* biz.h */ #ifndef BIZ_H #define BIZ_H ...
暑去清凉来,一场大雨让燥热一去不复返了,这让身体舒服了许多。本周四晚有一次产品升级操作,按惯例每次升级前的都会对产品做一次针对性的回归测试,这次也不例外,不过临近下班时测试组爆出一个莫名奇妙的问题。 测试人员在BUG说明中写到:产品在只运行某个流程A的情况是正常的,但是当流程A和流程B一起运行时,就会出XX异常情况。作为开发人员遇到类似的问题第一反映多为:这怎么可能呢?这个产品已经经过N轮测试并且早前已在某个省份上线运行了近两个月,如果有此潜在的BUG应该早就暴露出来了才对。及时找到测试人员沟通,测试人员很轻松的就复现出了该BUG,眼见为实!离升级时间点已经不多了,赶紧解决吧。 ...
上周测试组反馈在一台HP X86-64主机Solaris 10 for X86环境下部署的应用无法连接Oracle数据库,错误码ORA-12154。而另外一个产品的部署在这台主机上的应用却能正常连接到数据库。本周安排专人对该问题进行查找,在先后排除了用户环境设置、Oracle数据库服务端等问题后,我们最终把目光集中在了Oracle客户端的OCI库上。 ...
周六,对于上班族来说是多么好的日子,能在家里享受自由的无拘无束的生活而且不用担心第二天的工作,应该说是一周中最没有压力的一天。六点半起床,慢慢喝下一杯225ml左右的凉白开(保健医生说20-25摄氏度的凉白开比较适宜作为起床后的第一杯水),套上运动短裤和上衣,打开MP3播放器,塞上耳机,出门在园区内慢跑。昨晚下了一场雨,所以园区早上的空气很好。耳畔酷玩乐队的“Viva La Vida”让我跑起来很轻松,30分钟的有氧慢跑能让我的大脑和心脏获得足够的氧气,心情也变得更好。最后绕着园区走上一圈结束锻炼。 ...
计算机类图书"贵"就一个字,而且计算机领域知识更新快、新书迭出;程序员们为了跟上知识更新的步伐,不得不花上大把银子采购图书,久而久之,哪个程序员的家里没有几箱子书呢^_^。以前我买书的哲学也是非新书不买,但自从同事告诉我互动出版网有"二手书"可淘之后,我就渐渐喜欢上网上淘二手书了。 ...
比较以下两组代码,你认为哪组运行的更快些呢? Example1: int n = 100; int n4 = n » 2; int i = 0; int a[100]; for (i = 0; i < n4 ;i += 4) { a[i] = i; a[i+1] = i+1; a[i+2] = i+2; a[i+3] = i+3; } ...
直接操作C标准库提供的字符串操作函数是有一定风险的,稍有不慎就会导致内存问题。这周用业余时间写了一个小型的安全字符串操作库,但是测试之后才发现自己的实现有很大的性能缺陷。 在Solaris上初步做了一个简单的性能比对,以下是得到的性能数据(以strlen的数据为例): 当传入的字符串长度为10时,执行100w次: strlen 执行时间是:32762毫秒 my_strlen执行时间是:491836毫秒 ...