<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>[ i ] 2.0</title>
	<atom:link href="http://gregwestbrook.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://gregwestbrook.com/blog</link>
	<description>My memory is fine, its index is in need of an upgrade.</description>
	<lastBuildDate>Fri, 29 Apr 2011 12:59:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Solved! How to add a link to the NCover Full Coverage HTML report in the Cruise Control.NET Web Dashboard</title>
		<link>http://gregwestbrook.com/blog/?p=175</link>
		<comments>http://gregwestbrook.com/blog/?p=175#comments</comments>
		<pubDate>Fri, 29 Apr 2011 12:59:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cruise Control.Net]]></category>
		<category><![CDATA[NCover]]></category>
		<category><![CDATA[ccnet]]></category>
		<category><![CDATA[ccnet 1.5]]></category>
		<category><![CDATA[Coverage Reports]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[htmlReportPlugin]]></category>
		<category><![CDATA[Link]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=175</guid>
		<description><![CDATA[Integrating NCover and MSTest into my ccnet.config turned out to be relatively painless. I did have to do some trial and error when I decided to use the &#60;exec&#62; task rather than calling into a Nant or MSBuild script. I used this link to determine all the base information I needed to include. Unit Tests <a href='http://gregwestbrook.com/blog/?p=175'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Integrating NCover and MSTest into my ccnet.config turned out to be relatively painless. I did  have to do some trial and error when I decided to use the &lt;exec&gt; task rather than calling into a Nant or MSBuild script. I used this <a href="http://docs.ncover.com/how-to/running-ncover-with-your-unit-testing-framework/mstest/">link</a> to determine all the base information I needed to include.</p>
<p><strong>Unit Tests &#038; Code Coverage</strong><br />
The portion of the code snippet below contained within the &lt;exec&gt; task is the important part. I included the preceding xml for context only.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="xml"><pre class="de1"><span class="sc3"><span class="re1">&lt;cruisecontrol</span> <span class="re0">xmlns:cb</span>=<span class="st0">&quot;urn:ccnet.config.builder&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc-1">&lt;!-- http://confluence.public.thoughtworks.org/display/CCNET/Configuration+Preprocessor --&gt;</span>
  <span class="sc3"><span class="re1">&lt;cb:define</span> <span class="re0">cmd.exe</span>=<span class="st0">&quot;c:\Windows\System32\cmd.exe&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;cb:define</span> <span class="re0">ncover.console.exe</span>=<span class="st0">&quot;C:\Program Files (x86)\NCover\NCover.Console.exe&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;cb:define</span> <span class="re0">ncover.reporting.exe</span>=<span class="st0">&quot;C:\Program Files\NCover\NCover.Reporting.exe&quot;</span><span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;cb:define</span> <span class="re0">mstest.exe</span>=<span class="st0">&quot;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;cb:define</span> <span class="re0">solution</span>=<span class="st0">&quot;Release&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;project</span> <span class="re0">name</span>=<span class="st0">&quot;Project.Test&quot;</span><span class="re2">&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;tasks<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;exec<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;executable<span class="re2">&gt;</span></span></span>$(ncover.console.exe)<span class="sc3"><span class="re1">&lt;/executable<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;baseDirectory<span class="re2">&gt;</span></span></span>$(work_dir)\$(projectName)\bin\$(configuration)<span class="sc3"><span class="re1">&lt;/baseDirectory<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;buildArgs<span class="re2">&gt;</span></span></span><span class="sc1">&amp;quot;</span>$(mstest.exe)<span class="sc1">&amp;quot;</span> /testcontainer:$(projectName).dll /resultsfile:results.xml //xml $(work_dir)\$(projectName)\bin\$(configuration)\coverage.xml<span class="sc3"><span class="re1">&lt;/buildArgs<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;buildTimeoutSeconds<span class="re2">&gt;</span></span></span>1200<span class="sc3"><span class="re1">&lt;/buildTimeoutSeconds<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;/exec<span class="re2">&gt;</span></span></span></pre></div></div></div></div></div></div></div>


<p>Both MSTest and NCover parameters are included in the &lt;buildArgs&gt; section. The important thing to note here is the use of double slashes &#8216;//&#8217; for NCover command line parameters as opposed to single slashes &#8216;/&#8217; for MSTest parameters. This task produces a results.xml for MSTest and a coverage.xml for NCover. Both these files are included in the &lt;merge&gt; task below.</p>
<p><strong>Generating Coverage Reports</strong><br />
The following &lt;exec&gt; task contains all necessary information for generating the full coverage HTML report.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="xml"><pre class="de1">        <span class="sc3"><span class="re1">&lt;exec<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;executable<span class="re2">&gt;</span></span></span>$(ncover.reporting.exe)<span class="sc3"><span class="re1">&lt;/executable<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;baseDirectory<span class="re2">&gt;</span></span></span>$(work_dir)\$(Project.Name)\bin\$(configuration)<span class="sc3"><span class="re1">&lt;/baseDirectory<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;buildArgs<span class="re2">&gt;</span></span></span>$(work_dir)\$(Project.Name)\bin\$(configuration)\coverage.xml //or FullCoverageReport:Html //op $(work_dir)\$(Project.Name)\bin\$(configuration)\NCover\Reports<span class="sc3"><span class="re1">&lt;/buildArgs<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;/exec<span class="re2">&gt;</span></span></span>
      <span class="sc3"><span class="re1">&lt;/tasks<span class="re2">&gt;</span></span></span></pre></div></div></div></div></div></div></div>


<p><strong>Merge HTML Reports for integration in Web Dashboard</strong><br />
Most of the information I found for integrating the Full Coverage HTML Report into ccnet was derived from this <a href="http://csut017.wordpress.com/2009/05/29/improved-ncover-integration/">article</a>. The only thing I had left to figure out on my own, was where to specify the &#8216;target&#8217; folder. The &#8216;merge&#8217; task does not copy recursively, so each subdirectory you need copied will have to be specified within it&#8217;s own &#8216;merge&#8217; task.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="xml"><pre class="de1">      <span class="sc3"><span class="re1">&lt;publishers<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;merge</span> <span class="re0">target</span>=<span class="st0">&quot;Files&quot;</span><span class="re2">&gt;</span></span>
          <span class="sc3"><span class="re1">&lt;files<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;file</span> <span class="re0">action</span>=<span class="st0">&quot;Copy&quot;</span><span class="re2">&gt;</span></span>$(work_dir)\$(Project.Name)\bin\$(configuration)\ncover\reports\files\*.*<span class="sc3"><span class="re1">&lt;/file<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;/files<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;/merge<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;merge<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;files<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;file</span> <span class="re0">action</span>=<span class="st0">&quot;Copy&quot;</span><span class="re2">&gt;</span></span>$(work_dir)\$(Project.Name)\bin\$(configuration)\ncover\reports\*.*<span class="sc3"><span class="re1">&lt;/file<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;file<span class="re2">&gt;</span></span></span>$(work_dir)\$(Project.Name)\bin\$(configuration)\results.xml<span class="sc3"><span class="re1">&lt;/file<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;file<span class="re2">&gt;</span></span></span>$(work_dir)\$(Project.Name)\bin\$(configuration)\CoverageReport.xml<span class="sc3"><span class="re1">&lt;/file<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;/files<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;/merge<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;xmllogger</span><span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;statistics</span><span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;rss</span><span class="re2">/&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;/publishers<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/project<span class="re2">&gt;</span></span></span></pre></div></div></div></div></div></div></div>


<p><strong>Add NCover Report Link to Dashboard</strong><br />
I included my complete &#8216;buildPlugins&#8217; section of my dashboard.config file. The only line that needs to be added is the &#8216;htmlReportPlugin&#8217; section.<br />
I had used the default NCoverSummary.xsl prior to adding the html report. Because of this, I struggled with getting it to work until I commented out both sections for NCover that you see below. Once these sections were omitted the link worked flawlessly.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="xml"><pre class="de1">    <span class="sc3"><span class="re1">&lt;buildPlugins<span class="re2">&gt;</span></span></span>
      <span class="sc3"><span class="re1">&lt;buildReportBuildPlugin<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;xslFileNames<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;xslFile<span class="re2">&gt;</span></span></span>xsl\header.xsl<span class="sc3"><span class="re1">&lt;/xslFile<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;xslFile<span class="re2">&gt;</span></span></span>xsl\modifications.xsl<span class="sc3"><span class="re1">&lt;/xslFile<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;xslFile<span class="re2">&gt;</span></span></span>xsl\MsTestSummary2008.xsl<span class="sc3"><span class="re1">&lt;/xslFile<span class="re2">&gt;</span></span></span>
	  <span class="sc-1">&lt;!--xslFile&gt;xsl\NCoverSummary.xsl&lt;/xslFile--&gt;</span>
        <span class="sc3"><span class="re1">&lt;/xslFileNames<span class="re2">&gt;</span></span></span>
      <span class="sc3"><span class="re1">&lt;/buildReportBuildPlugin<span class="re2">&gt;</span></span></span>
      <span class="sc3"><span class="re1">&lt;buildLogBuildPlugin</span> <span class="re2">/&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;xslReportBuildPlugin</span> <span class="re0">description</span>=<span class="st0">&quot;MSTest Report&quot;</span> <span class="re0">actionName</span>=<span class="st0">&quot;MSTESTReport&quot;</span> <span class="re0">xslFileName</span>=<span class="st0">&quot;xsl\MsTestReport2008.xsl&quot;</span><span class="re2">/&gt;</span></span> 
      <span class="sc-1">&lt;!--xslReportBuildPlugin description=&quot;NCover Report&quot; actionName=&quot;NCoverReport&quot; xslFileName=&quot;xsl\NCoverReporting30.xsl&quot;/--&gt;</span>
      <span class="sc3"><span class="re1">&lt;htmlReportPlugin</span> <span class="re0">description</span>=<span class="st0">&quot;Full NCover Report&quot;</span> <span class="re0">actionName</span>=<span class="st0">&quot;viewReport&quot;</span> <span class="re0">htmlFileName</span>=<span class="st0">&quot;fullcoveragereport.html&quot;</span> <span class="re2">/&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;/buildPlugins<span class="re2">&gt;</span></span></span></pre></div></div></div></div></div></div></div>


<p>A couple of potential gotchas:</p>
<ul>
<li>In order to see the NCover link appear in the Dashboard, you may have to stop &#038; restart your &#8216;ccnet&#8217; web service. Instructions for this can be found <a href="http://gregwestbrook.com/blog/?p=157&#038;preview=true&#038;preview_id=157&#038;preview_nonce=779f649f24">here</a>.</li>
<li>If you are unable to drill down to the source level in the NCover report, check to see if the folders for the dll&#8217;s or exe&#8217;s you are testing contain their PDB files.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=175</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configure OCZ PCIe Revo 240GB Drive in HP Z800 Workstation as Data Drive</title>
		<link>http://gregwestbrook.com/blog/?p=169</link>
		<comments>http://gregwestbrook.com/blog/?p=169#comments</comments>
		<pubDate>Tue, 19 Apr 2011 18:18:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Cruise Control.Net]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[BIOS]]></category>
		<category><![CDATA[OCZ]]></category>
		<category><![CDATA[PCIe]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[RevoDrive]]></category>
		<category><![CDATA[X2]]></category>
		<category><![CDATA[Z800]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=169</guid>
		<description><![CDATA[We recently purchased an OCZ Revo Drive X2 240GB drive in an effort to speed up our Installation builds using Cruise Control. After scouring the OCZ forums and other websites I was able to tally up enough information to configure the drive properly. I thought I would outline the steps I used to successfully configure <a href='http://gregwestbrook.com/blog/?p=169'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>We recently purchased an OCZ Revo Drive X2 240GB drive in an effort to speed up our Installation builds using Cruise Control. After scouring the OCZ forums and other websites I was able to tally up enough information to configure the drive properly. I thought I would outline the steps I used to successfully configure this drive as a data drive.</p>
<ol>
<li>I installed the drive in the first available PCIe x16 port.</li>
<li>I booted the machine and selcted F10 to configure the BIOS.</li>
<li>In the BIOS configuration utility I selected &#8220;Advanced&#8221; &#8211; &#8220;Device Options&#8221;.</li>
<li>I selected &#8220;NIC PXE Option ROM Download&#8221; and disabled it.
<ul>
<li>This will disable Ethernet Boot Agent which allows more Option ROM for the Revo controller to load.</li>
</ul>
</li>
<li>Save changes and exit BIOS utility.</li>
<li>Boot to Windows.</li>
<li>Download drivers from the following URL and extract to your hard disk: <a href="http://www.ocztechnology.com/drivers/RevoDrive_and_RevoDrive_X2/">http://www.ocztechnology.com/drivers/RevoDrive_and_RevoDrive_X2/</a></li>
<li>Open &#8220;Device Manager&#8221;. You should see an Icon with the yellow warning icon under &#8220;Other Devices -&gt; RAID Controller&#8221;. Right-click, select properties and click on Driver tab. Install driver you just downloaded.</li>
<li>Right-click on &#8220;Computer&#8221;. Select &#8220;Manage -&gt; Disk Management&#8221;.</li>
<li>Find new drive, Right-click and select &#8220;Create New Volume&#8221; and select a drive letter.</li>
<li>Perform a &#8220;Quick Format&#8221;.</li>
</ol>
<p>If you look and Windows Explorer the drive should be visible.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=169</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Busking Swan</title>
		<link>http://gregwestbrook.com/blog/?p=162</link>
		<comments>http://gregwestbrook.com/blog/?p=162#comments</comments>
		<pubDate>Tue, 05 Apr 2011 19:33:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Birds]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Wildlife]]></category>
		<category><![CDATA[blue]]></category>
		<category><![CDATA[Buhl]]></category>
		<category><![CDATA[busking]]></category>
		<category><![CDATA[Idaho]]></category>
		<category><![CDATA[lake]]></category>
		<category><![CDATA[mute swan]]></category>
		<category><![CDATA[swan]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=162</guid>
		<description><![CDATA[While on a weekend trip to Idaho, I had an opportunity to shoot some Mute Swans. They were feeding along the shoreline of a small lake. As they plunged their heads into the water to look for food, I would sneak closer to them and the edge of the shore. I was able to get <a href='http://gregwestbrook.com/blog/?p=162'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://gregwestbrook.com/blog/wp-content/uploads/2011/04/MG_9957-2.jpg"><img class="alignleft size-full wp-image-163" title="_MG_9957-2" src="http://gregwestbrook.com/blog/wp-content/uploads/2011/04/MG_9957-2.jpg" alt="Busking Mute Swan" width="800" height="533" /></a></p>
<p>While on a weekend trip to Idaho, I had an opportunity to shoot some Mute Swans. They were feeding along the shoreline of a small lake. As they plunged their heads into the water to look for food, I would sneak closer to them and the edge of the shore.<br />
I was able to get within 15 feet of this Swan. My understanding is that the raised wings are a threat display known as busking. I love the way the raised feathers captured the sunlight and framed some of the water in the background.<br />
For this shot, I used my Canon 30D with the Canon 70-200mm f2.8L with the 1.4 converter @ 280mm. My exposure was 1/640 @ f/8.0 and an ISO of 100.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=162</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrating MS Test reports with Cruise Control.NET</title>
		<link>http://gregwestbrook.com/blog/?p=157</link>
		<comments>http://gregwestbrook.com/blog/?p=157#comments</comments>
		<pubDate>Tue, 05 Apr 2011 16:32:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cruise Control.Net]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[ccnet]]></category>
		<category><![CDATA[Cruise Control .Net]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[mstest reports]]></category>
		<category><![CDATA[web dashboard]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=157</guid>
		<description><![CDATA[I was just assisting another developer with integrating MS Test Reports into the Web Dashboard on his Cruise Control.NET server. I pointed him to the following link, which is the same link I used: http://www.codeproject.com/KB/tips/VSTS2008_Tests_With_CCNET.aspx?msg=2577310 When we completed the directions from the link above. We launched the dashboard and were unable to see the link <a href='http://gregwestbrook.com/blog/?p=157'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I was just assisting another developer with integrating MS Test Reports into the Web Dashboard on his Cruise Control.NET server.<br />
I pointed him to the following link, which is the same link I used:</p>
<p>http://www.codeproject.com/KB/tips/VSTS2008_Tests_With_CCNET.aspx?msg=2577310</p>
<p>When we completed the directions from the link above. We launched the dashboard and were unable to see the link in the left column for &#8216;MSTest Reports&#8217;. The solution ended up being to stop and restart the CCNet web service in IIS.</p>
<p>This can be accomplished by following these steps:<br />
1. Open &#8216;Administrative Tools&#8217;<br />
2. Start &#8216;Internet Information Services (IIS) Manager&#8217;<br />
3. Expand web server tree to the &#8216;Default Web Site&#8217;.<br />
4. Click on &#8216;Default Web Site&#8217;.<br />
5. Stop and Restart &#8216;Default Web Site&#8217;<br />
6. Refresh the Web Dashboard and the link to &#8216;MSTest Report&#8217; should now be visible.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=157</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Timeout errors using Cruise Control.NET</title>
		<link>http://gregwestbrook.com/blog/?p=149</link>
		<comments>http://gregwestbrook.com/blog/?p=149#comments</comments>
		<pubDate>Tue, 22 Mar 2011 14:08:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cruise Control.Net]]></category>
		<category><![CDATA[ccnet]]></category>
		<category><![CDATA[cruise control.net]]></category>
		<category><![CDATA[Tasks.BuilderException]]></category>
		<category><![CDATA[timed out]]></category>
		<category><![CDATA[timeout]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=149</guid>
		<description><![CDATA[I have a single ccnet.config file which contains 9 projects. Each project varies in the length of time it takes to complete. My shortest is about 3 minutes, my longest takes 45 minutes. Some of the projects can run parallel with other projects. When this happens, the processing time increases for each project and was <a href='http://gregwestbrook.com/blog/?p=149'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I have a single ccnet.config file which contains 9 projects. Each project varies in the length of time it takes to complete. My shortest is about 3 minutes, my longest takes 45 minutes. Some of the projects can run parallel with other projects. When this happens, the processing time increases for each project and was causing certain processes to timeout. The errors I received were similar to the following:</p>
<pre><em>BUILD EXCEPTION</em>
<em> Error Message:</em>
<em> ThoughtWorks.CruiseControl.Core.Tasks.BuilderException: NAnt process</em><em> timed out (after 600 seconds) at</em>
<em> ThoughtWorks.CruiseControl.Core.Tasks.NAntTask.Run(IIntegrationResult</em><em> result) in d:\sourceforge\ccnet\project\core\tasks\NAntTask.cs:line</em>
<em> 109 at ThoughtWorks.CruiseControl.Core.Project.Run(IIntegrationResult</em><em> result) in d:\sourceforge\ccnet\project\core\Project.cs:line 184 at</em>
<em> ThoughtWorks.CruiseControl.Core.IntegrationRunner.RunBuild(IIntegrationResul</em><em>t</em><em> result) in</em>
<em> d:\sourceforge\ccnet\project\core\IntegrationRunner.cs:line 95 at</em>
<em> ThoughtWorks.CruiseControl.Core.IntegrationRunner.RunIntegration(BuildCondit</em><em>ion</em><em> buildCondition) in</em>
<em> d:\sourceforge\ccnet\project\core\IntegrationRunner.cs:line 36</em>
<em> BaseDirectory: C:\CodeDrop\mainProject, Targets: , Executable: nant.exe,</em><em> BuildFile: publish.xml</em>
<em> Project: publish.folders</em><em> Date of build: 3/10/2011 1:23:02 PM</em><em> Running time: 00:10:00</em>
<em> Build condition: Forced Build</em>
<em> Modifications since last build (0)</em></pre>
<p><em>Most of my issues were with source checkouts and file copies. <em>The solution for me was to use the various timeout tags offered for each of the offending tags. Here are some examples below:</em></em></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="xml"><pre class="de1">Subversion Source Control Type:
  (The 'units' attribute can be changed to seconds or hours as well.)
<span class="sc3"><span class="re1">&lt;svn<span class="re2">&gt;</span></span></span>
  {other svn child tags......}
  <span class="sc3"><span class="re1">&lt;timeout</span> <span class="re0">units</span>=<span class="st0">&quot;minutes&quot;</span><span class="re2">&gt;</span></span>5<span class="sc3"><span class="re1">&lt;/timeout<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/svn<span class="re2">&gt;</span></span></span>
&nbsp;
Nant Task:
<span class="sc3"><span class="re1">&lt;nant<span class="re2">&gt;</span></span></span>
  {other nant child tags......}
  <span class="sc3"><span class="re1">&lt;buildTimeoutSeconds<span class="re2">&gt;</span></span></span>1800<span class="sc3"><span class="re1">&lt;/buildTimeoutSeconds<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/nant<span class="re2">&gt;</span></span></span>
&nbsp;
Exec Task:
<span class="sc3"><span class="re1">&lt;exec<span class="re2">&gt;</span></span></span>
  {other exec child tags......}
  <span class="sc3"><span class="re1">&lt;buildTimeoutSeconds<span class="re2">&gt;</span></span></span>1800<span class="sc3"><span class="re1">&lt;/buildTimeoutSeconds<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/exec<span class="re2">&gt;</span></span></span>
&nbsp;
Devenv Task:
<span class="sc3"><span class="re1">&lt;devenv<span class="re2">&gt;</span></span></span>
  {other devenv child tags......}
  <span class="sc3"><span class="re1">&lt;buildTimeoutSeconds<span class="re2">&gt;</span></span></span>1800<span class="sc3"><span class="re1">&lt;/buildTimeoutSeconds<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/devenv<span class="re2">&gt;</span></span></span></pre></div></div></div></div></div></div></div>


<p>As I received the timeout errors I would increase the timeouts until I didn&#8217;t receive the errors anymore.<br />
The timeout value is used to create a large enough window of time for the task to complete. When the task completes, ccnet moves on to the next task. and a new timeout window is created for the new task.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=149</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My first &#8220;Big Smile&#8221; shot</title>
		<link>http://gregwestbrook.com/blog/?p=142</link>
		<comments>http://gregwestbrook.com/blog/?p=142#comments</comments>
		<pubDate>Mon, 21 Mar 2011 13:28:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[Black & White]]></category>
		<category><![CDATA[Buhl]]></category>
		<category><![CDATA[cattle]]></category>
		<category><![CDATA[Idaho]]></category>
		<category><![CDATA[ranching]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=142</guid>
		<description><![CDATA[I obtained my first SLR camera in 2006. I was fortunate to be working with a number of aspiring photographers who all had much more experience than I. I took advantage of my fortune and tried to gain whatever knowledge I could from them to apply towards my own photography experience. While in Idaho over <a href='http://gregwestbrook.com/blog/?p=142'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://gregwestbrook.com/blog/wp-content/uploads/2011/03/IMG_27961.jpg"><br />
</a>I obtained my first SLR camera in 2006. I was fortunate to be working with a number of aspiring photographers who all had much more experience than I. I took advantage of my fortune and tried to gain whatever knowledge I could from them to apply towards my own photography experience.<br />
While in Idaho over Memorial weekend of 2007. My in-laws were working cattle, for some friends of theirs. &#8220;Working cattle&#8221; consists of herding the cattle from an open field into a corral. Then the cowboys, on their horses proceed to sort the yearling calves from each of their momma&#8217;s. Once they have them sorted, each calf is roped by the head and heals, then laid on it&#8217;s side, where the rancher brands, give&#8217;s shots, and make&#8217;s any male calf into a steer.<br />
It was during one of these outings I was taking pictures of the days endeavors.<br />
As I was sorting through the pictures, this particular photo stood out:<br />
<a href="http://gregwestbrook.com/blog/wp-content/uploads/2011/03/IMG_27961.jpg"><img title="IMG_2796" src="http://gregwestbrook.com/blog/wp-content/uploads/2011/03/IMG_27961.jpg" alt="My father-in-law bringing in the herd." width="800" height="533" /></a></p>
<p>A cowboy on a horse, shrouded in dust from the pounding herd of cattle in the foreground, screamed Black &amp; White.<br />
With a little cropping to remove a couple of pieces of old farm machinery, including the piece I was hiding behind, some brightening, and alas, A &#8220;Big Smile&#8221; on my face for the resulting photo. Not only was I happy with the overall photo, but we now have a very realistic memory of my father-in-law, doing what he has done all his life.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=142</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thread safe logging in C#</title>
		<link>http://gregwestbrook.com/blog/?p=133</link>
		<comments>http://gregwestbrook.com/blog/?p=133#comments</comments>
		<pubDate>Thu, 17 Mar 2011 13:56:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[lock]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[multiple threads]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=133</guid>
		<description><![CDATA[I have an application that launches multiple threads to validate database credentials. These tests are performed by each thread and expected to write status back to a single common log file. This is how I choose to solve the problem: public class Log &#123; private Object fileLock = new Object&#40;&#41;; &#160; private static void WriteToLog&#40;string <a href='http://gregwestbrook.com/blog/?p=133'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I have an application that launches multiple threads to validate database credentials. These tests are performed by each thread and expected to write status back to a single common log file.<br />
This is how I choose to solve the problem:</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1"><span class="kw1">public</span> <span class="kw1">class</span> Log
<span class="br0">&#123;</span>
    <span class="kw1">private</span> <span class="kw3">Object</span> fileLock <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">Object</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="kw1">private</span> <span class="kw1">static</span> <span class="kw4">void</span> WriteToLog<span class="br0">&#40;</span>string text<span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
        string logPath <span class="sy0">=</span> <span class="br0">&#123;</span>path of log file<span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
        lock <span class="br0">&#40;</span>fileLock<span class="br0">&#41;</span>
        <span class="br0">&#123;</span>
            TextWriter tw <span class="sy0">=</span> <span class="kw1">new</span> StreamWriter<span class="br0">&#40;</span>logPath, <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span>
            tw.<span class="me1">WriteLine</span><span class="br0">&#40;</span>text<span class="br0">&#41;</span><span class="sy0">;</span>
            tw.<span class="me1">Close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>Wow, a couple lines of code and I have multiple threads safely writing data to a single file.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=133</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FIX: SQL Connection Error 10053 : Event ID:17809</title>
		<link>http://gregwestbrook.com/blog/?p=118</link>
		<comments>http://gregwestbrook.com/blog/?p=118#comments</comments>
		<pubDate>Fri, 04 Mar 2011 18:57:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=118</guid>
		<description><![CDATA[Error Message: A connection was successfully established with the server, but then an error occurred during the login process. (provider: TCP Provider, error: 0 &#8211; An established connection was aborted by the software in your host machine.) (Microsoft SQL Server, Error: 10053) For help, click: Source: MSSQLServer ID: 10053 (SQL Server ) This issue occurred <a href='http://gregwestbrook.com/blog/?p=118'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Error Message:<br />
A connection was successfully established with the server, but then an error occurred during the login process. (provider: TCP Provider, error: 0 &#8211; An established connection was aborted by the software in your host machine.) (Microsoft SQL Server, Error: 10053) For help, click: Source: MSSQLServer ID: 10053 (SQL Server )</p>
<p>This issue occurred on a very irregular basis. When I changed the connections setting on the following dialog from &#8217;10&#8242; to &#8217;0&#8242;, which is unlimited, the issue went away.</p>
<p>To get to this dialog, do the following:</p>
<ol>
<li> Start &#8220;Microsoft SQL Server Management Studio&#8221;</li>
<li>Connect</li>
<li>Right Click on your SQL Server Instance {Server Name}</li>
<li>Click on properties</li>
<li>Select the &#8216;Connections&#8217; page</li>
<li>Modify &#8216;Maximum number of concurrent connections&#8217;.  0 for unlimited or whatever you feel is appropriate. I had 10 originally and would receive this error.</li>
<li>Click OK</li>
<li>Stop &#8216;SQL Server Instance&#8217; and restart it.</li>
<li>Restart &#8216;SQL Server Agent&#8217;</li>
</ol>
<p><a href="http://gregwestbrook.com/blog/wp-content/uploads/2011/03/SQLServer2008Properties2.png"><img title="SQLServer2008Properties" src="http://gregwestbrook.com/blog/wp-content/uploads/2011/03/SQLServer2008Properties2.png" alt="" width="704" height="632" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=118</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitor Single File for Modifications</title>
		<link>http://gregwestbrook.com/blog/?p=113</link>
		<comments>http://gregwestbrook.com/blog/?p=113#comments</comments>
		<pubDate>Thu, 03 Mar 2011 15:36:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cruise Control.Net]]></category>
		<category><![CDATA[ccnet]]></category>
		<category><![CDATA[cruise control.net]]></category>
		<category><![CDATA[exclusionfilter]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[inclusionfilter]]></category>
		<category><![CDATA[pathfilter]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=113</guid>
		<description><![CDATA[Our nightly build produces binaries which are consumed into various Cruise Control.Net projects. The folders containing these binaries are quite large. To prevent copying binary files before the nightly build is done copying to the file share, a finish.txt file is used to signal when the file copy is complete. I use a filesystem source <a href='http://gregwestbrook.com/blog/?p=113'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Our nightly build produces binaries which are consumed into various Cruise Control.Net projects. The folders containing these binaries are quite large. To prevent copying binary files before the nightly build is done copying to the file share, a finish.txt file is used to signal when the file copy is complete.</p>
<p>I use a filesystem source control node to monitor for the modified finish.txt file. In order to ignore all additional files except the finish.txt, I use the inclusionFilters and exclusionFilters. One additional complexity is that the nightly build copies each set of binary files to a versioned (build #) folder.</p>
<p>I have included an example of the server share structure, as well as, a code snippet of the filesystem source control node and filters used to monitor the finish.txt file.</p>
<p><strong>Server Share path:<br />
</strong> \\server\share\nightly\builds\bits\finish.txt<br />
\\server\share\nightly\builds\bits\22\release<br />
\\server\share\nightly\builds\bits\23\release</p>
<p><strong>ccnet.config snippet:<br />
</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="xml"><pre class="de1">      <span class="sc3"><span class="re1">&lt;sourcecontrol</span> <span class="re0">type</span>=<span class="st0">&quot;multi&quot;</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;sourceControls<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;filtered<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;sourceControlProvider</span> <span class="re0">type</span>=<span class="st0">&quot;filesystem&quot;</span><span class="re2">&gt;</span></span>
              <span class="sc3"><span class="re1">&lt;repositoryRoot<span class="re2">&gt;</span></span></span>\\server\share\nightly\builds\Bits<span class="sc3"><span class="re1">&lt;/repositoryRoot<span class="re2">&gt;</span></span></span>
              <span class="sc3"><span class="re1">&lt;ignoreMissingRoot<span class="re2">&gt;</span></span></span>false<span class="sc3"><span class="re1">&lt;/ignoreMissingRoot<span class="re2">&gt;</span></span></span>
              <span class="sc3"><span class="re1">&lt;autoGetSource<span class="re2">&gt;</span></span></span>false<span class="sc3"><span class="re1">&lt;/autoGetSource<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;/sourceControlProvider<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;exclusionFilters<span class="re2">&gt;</span></span></span>
              <span class="sc3"><span class="re1">&lt;pathFilter</span> <span class="re0">caseSensitive</span>=<span class="st0">&quot;false&quot;</span><span class="re2">&gt;</span></span>
                <span class="sc3"><span class="re1">&lt;pattern<span class="re2">&gt;</span></span></span>\\server\share\nightly\builds\Bits\**\release\**\*.*<span class="sc3"><span class="re1">&lt;/pattern<span class="re2">&gt;</span></span></span>
              <span class="sc3"><span class="re1">&lt;/pathFilter<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;/exclusionFilters<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;inclusionFilters<span class="re2">&gt;</span></span></span>
              <span class="sc3"><span class="re1">&lt;pathFilter</span> <span class="re0">caseSensitive</span>=<span class="st0">&quot;false&quot;</span><span class="re2">&gt;</span></span>
                <span class="sc3"><span class="re1">&lt;pattern<span class="re2">&gt;</span></span></span>\\server\share\nightly\builds\Bits\finish.txt<span class="sc3"><span class="re1">&lt;/pattern<span class="re2">&gt;</span></span></span>
              <span class="sc3"><span class="re1">&lt;/pathFilter<span class="re2">&gt;</span></span></span>
            <span class="sc3"><span class="re1">&lt;/inclusionFilters<span class="re2">&gt;</span></span></span>
          <span class="sc3"><span class="re1">&lt;/filtered<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;/sourceControls<span class="re2">&gt;</span></span></span>
      <span class="sc3"><span class="re1">&lt;/sourcecontrol<span class="re2">&gt;</span></span></span></pre></div></div></div></div></div></div></div>


<p>When creating the patterns in the path filter remember that the patterns are &#8220;case sensitive&#8221;. You can remove case sensitivity by including the: caseSensitive=&#8221;false&#8221; attribute to the pathFilter node.<br />
For my situation I am using the filesystem source control node for monitoring purposes only. I need the binaries to copy to folders other than the project working directory. This is a current limitation of the filesystem node. I accomplish this in a publish task. I will cover this in another post.</p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=113</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can&#8217;t Remove Network Share</title>
		<link>http://gregwestbrook.com/blog/?p=105</link>
		<comments>http://gregwestbrook.com/blog/?p=105#comments</comments>
		<pubDate>Wed, 02 Mar 2011 23:24:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Disconnected]]></category>
		<category><![CDATA[explorer]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[share]]></category>

		<guid isPermaLink="false">http://gregwestbrook.com/blog/?p=105</guid>
		<description><![CDATA[I was just in the situation where I could not remove a network share. The share displayed a red &#8216;X&#8217; but would give me the following error when I tried to remove the share: &#8220;The network connection could not be found&#8221;. When I tried to remap the share, I would get this error: &#8220;The local device <a href='http://gregwestbrook.com/blog/?p=105'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I was just in the situation where I could not remove a network share. The share displayed a red &#8216;X&#8217; but would give me the following error when I tried to remove the share: <em>&#8220;The network connection could not be found&#8221;.</em><br />
When I tried to remap the share, I would get this error: &#8220;<em>The local device name is already in use&#8221;</em>.<br />
To fix this I tried the following on the command line:</p>
<p><strong>net share {sharename} \\servername /DELETE</strong></p>
<p>Next I tried:</p>
<p><strong>net use {drive letter :} /DELETE</strong></p>
<p>Next I opened the Task Manager, clicked on the Processes tab, and stopped the &#8220;explorer.exe&#8221; process.<br />
I then selected the File menu in Task Manager, selected New Task (Run), Typed in explorer, clicked OK.<br />
When explorer restarted I opened my file explorer and the share was gone.  <strong>SUCCESS!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://gregwestbrook.com/blog/?feed=rss2&#038;p=105</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

