• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

自动进行团队构建和单元测试过程

发布: 2009-4-01 10:11 | 作者: 不详 | 来源: 测试时代采编 | 查看: 130次 | 进入软件测试论坛讨论

领测软件测试网

要让这个包能够在 Fedora Core 4 上干净地构建,必须对包的 C 源代码稍做调整。请用文本编辑器,把 src/error.h 的第 6 行从extern int errno;改成#include <errno.h>。下面是使用ed的处理方法:

[root@fcvm package]#cd admin/daemontools-0.76[root@fcvm daemontools-0.76]#ed src/error.h5956extern int errno;c#include <errno.h>.wq596 [root@fcvm daemontools-0.76]#

现在可以完成安装了:

[root@fcvm daemontools-0.76]#package/installLinking ./src/* into ./compile... Compiling everything in ./compile...[...]Creating /service... Adding svscanboot to inittab... init should start svscan now. [root@fcvm daemontools-0.76]#ps -ef | grep svsroot 21160 1 0 16:09 ? 00:00:00 /bin/sh /command/svsca nboot root 21162 21160 0 16:09 ? 00:00:00 svscan /service root 21173 20051 0 16:10 pts/1 00:00:00 grep svs [root@fcvm daemontools-0.76]#

daemontools提供了叫作svscan的守护进程,它负责管理服务集合。每个服务都由 /service 目录中的一个目录代表,所以需要在这里为 CruiseControl 服务创建一个目录。对于 /service 中的每个子目录,svscan都启动一个子进程,运行supervise程序。

supervise是负责管理 CruiseControl 这样的独立服务的程序。它创建子进程,运行服务子目录中的run(例如 /service/cruisecontrol/run),从而启动服务。如果子进程中止,supervise会重新启动它。supervise也可以向子进程发送信号,停止或重新启动子进程。

daemontools还提供了两个机制,负责处理它管理的服务的日志记录。首先,叫作readproctitle的程序捕捉写入标准错误流(在 Java 世界中,是System.err)的输出并把输出拷贝到一个小缓冲区中,这个小缓冲区是ps命令显示的进程标题的一部分:

[root@fcvm daemontools-0.76]#ps -ef | grep proctitleroot 25040 25037 0 20:58 ? 00:00:00 readproctitle service errors: .............................................................. ...................................................................... ...................................................................... ...................................................................... ...................................................................... .......................................................... root 25047 24006 0 20:59 pts/1 00:00:00 grep proctitle [root@fcvm daemontools-0.76]#

在启动时,缓冲区被初始化为包含点号,但是在出现错误时就被错误信息替代。这个机制对于少量信息(例如关键错误信息)来说很好。但是缓冲区尺寸小造成它不适合更大数量的日志信息,而且记录的信息不能保存到磁盘也使得难以分析一段时间内的性能。daemontools提供了第二种机制 ——multilog程序,它负责这种大量日志。第二种机制在命令行参数输出的指令控制下,把自己标准输入中的行写入日志文件。它包含对日志轮转的控制,日志轮转可以保持定量的日志信息,以使存储空间不会耗尽。例如,multilog /home/cruise/log这个简单的命令就可以把信息记录到 /home/cruise/log 目录中的文件,当日志文件的尺寸达到 99,999 个字节时就轮转日志文件,并保持 10 个旧的日志文件。

multilog也由supervise管理,就像其他服务一样。在svsccan发现的每个目录中,它都会查找叫作 log 的子目录,并创建一个supervise进程来管理这个目录下run脚本的执行。它还安排一个管道,把主服务的标准输出作为日志进程的标准输入。

那么,要让daemontools管理 CruiseControl,需要做什么呢?必须为这个服务和它的multilog伙伴创建目录结构。还必须创建它们各自的run脚本,并为日志文件创建目录。开始时,把服务目录命名为 .cruisecontrol。前导点号会让svscan忽略这个目录,从而可以在第一次启动服务之前进行设置:

[cruise@fcvm ~]$mkdir -p log/cruisecontrol[cruise@fcvm ~]$su -Password:[enter root password][root@fcvm ~]#cd /service[root@fcvm service]#mkdir .cruisecontrol[root@fcvm service]#cd .cruisecontrol[root@fcvm .cruisecontrol]#mkdir log[root@fcvm .cruisecontrol]#

然后,创建叫作 env 的目录。要用这个目录的内容设置 CruiseControl 的环境变量以及它要启动的其他进程。在这里要确保JAVA_HOME有合适的值。在这里还要设置将要使用的构建工具需要的环境变量,例如MAVEN_HOME。

[root@fcvm .cruisecontrol]#mkdir env[root@fcvm .cruisecontrol]#cd env[root@fcvm env]#echo /usr/lib/jvm/java >JAVA_HOME[root@fcvm env]#echo /home/cruise/pkg/maven-1.0.2 >MAVEN_HOME[root@fcvm env]#lsJAVA_HOME MAVEN_HOME [root@fcvm env]#cd ..[root@fcvm .cruisecontrol]#

清单 2 显示了 /service/cruisecontrol/run 脚本:


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网