Regression經驗 - patching and full package setup

以前遇到問題解決了就完事了,缺少了總結和記錄,我決定以後恢復記錄blog的習慣。


Original Problem:

這次遇到的問題是iis crash的問題。

xxx.asmx是我們產品的一個web service,但是我們不想讓用戶可以發現這個文件的存在,當用戶訪問這個url的時候,會被直接direct到*.wsdl.

我們可以通過web.config+修改一個頂層的HttpHandler : IHttpHandler來實現。

(TODO: 1. 爲什麼要redirect? 2. IHttpHandler)


之前我們只direct了HTTP GET REQUEST, 而忽略了HTTP HEAD REQUEST。當我們處理傳入的http head request的時候,會發生InvalidCastException。

(TODO: 1. get/head有什麼區別?2. GET? 3. 爲什麼會有InvalidCastException?call stack?)


web.config在產品setup的時候deploy,在setup/deployment完成之後,對於一些小的bug/CDCR,我們通過release patching package來解決用戶的問題。


這個問題最初是在data center main branch上發現並fix的。但是這個解決方案不適用於patching。 

        <add name="EWSDiscoveryHandler"
path="*.asmx"
verb="GET"
verb="GET,HEAD"
type="Microsoft.Exchange.Services.Wcf.EWSDiscoveryHttpHandler, Microsoft.Exchange.Services, Version=14.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
preCondition="integratedMode,runtimeVersionv2.0" />


類似於這種config文件的更改,我們的解決方案是在pathcing的過程中調用一系列腳本,其中包括UpdateConfigFile.ps1, 更改config文件。


Regression:

Regression的出現源於checkin的時候,忘記了web.config文件。

這個問題在hot branch上被掩蓋了,因爲hot branch的testing是基於pathcing的,當這個change從entprise hot branch到enterprise main branch的時候,問題就凸現出來了,因爲main branch的testing是基於full package setup的。


發現這個問題歸功於automation,針對一個企業級大型服務器系統,針對每次更改的test cover到這種不同http request到特定web service的可能性幾乎爲0,這種迴歸測試只能通過automation來實現。


好在我們在解決這個bug的時候增加了test coverage,雖然這個case在hot branch上是pass的(這意味着 用戶可以通過patching解決原始問題),但是在main branch上這條fail 的case就給我們拉了警報,順利的幫助我們防止了regression的出現



-Draft

發佈了150 篇原創文章 · 獲贊 2 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章