• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    自動進行團隊構建和單元測試過程

    發布: 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 腳本:


    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>