<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Shai Raiten&amp;#39;s Blog : Data Collectors</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx</link><description>Tags: Data Collectors</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Test Attachment Cleaner</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/12/09/test-attachment-cleaner.aspx</link><pubDate>Thu, 09 Dec 2010 20:34:20 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:754130</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=754130</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/12/09/test-attachment-cleaner.aspx#comments</comments><description>&lt;h1&gt;Test Attachment Cleaner&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3d37ce86-05f1-4165-957c-26aaa5ea1010" target="_blank"&gt;Download Test Attachment Cleaner&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In Visual Studio 2010, with the introduction of Visual Studio Test Professional 2010 &amp;amp; Visual Studio Premium/Ultimate 2010 SKUs, testers can author manual and automated Test cases, configure the different diagnostic data collectors (as part of Test Settings), associate the Test Settings with Test Plan/Suites and then execute these test cases as part of Test Runs. The execution of a Test Run (whether automated or manual) generates a bunch of diagnostic data, which may be captured either automatically by the system or manually by the tester. This diagnostic data is critical in eliminating the “no repro” bug scenarios between the testers and developers.&lt;/p&gt;  &lt;p&gt;However, the downside of this rich diagnostic data captures is that the system/user generated diagnostic data, over a period of time, can grow at a rapid pace and start taking up database space. With Visual Studio 2010, the database administrator has little or no control over what data gets attached as part of Test Runs – i.e., there are no policy settings he can control to limit the size of the data capture OR no retention policy to determine how long to hold this data before initiating a cleanup. In such scenarios, the Admin has no mechanism to:&lt;/p&gt;  &lt;p&gt;1.&amp;#160; Determine which set of diagnostic captures is taking up how much space AND&lt;/p&gt;  &lt;p&gt;2.&amp;#160; Reclaim the space for runs which are no longer relevant from business perspective.&lt;/p&gt;  &lt;p&gt;The “Test Attachment Cleaner” powertool fills this void by serving both the above points.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The Test Attachment Cleaner is a command line powertool (tcmpt.exe attachmentcleanup), which accepts the following parameters:&lt;/p&gt;  &lt;p&gt;Tcmpt.exe attachmentcleanup &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /collection: TeamProjectCollectionUrl&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /project: TeamProject&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /settings: SettingsFilePath&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [/out: ReportFilePath]&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [/mode: Preview/Delete]&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sample Setting files for core scenarios: &lt;/strong&gt;As part of the package, sample setting files are provided which cater to the following 5 core scenarios. The readme document contains additional details around the different knobs used within the sample setting files.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Scenario#1:&lt;/strong&gt; Identify list of attachments taking up database space of more than 1 GB per attachment&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Scenario#2:&lt;/strong&gt; View/Delete IntelliTrace log files over a size of 500 MB&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Scenario#3:&lt;/strong&gt; View/Delete all Video log files with Test run creation date older than specific date with no active bugs&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Scenario#4:&lt;/strong&gt; View/Delete all TRX &amp;amp; COV log files for test runs that happened between 30 and 90 days in age &amp;amp; do not perform the Linked Bugs lookup query&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Scenario#5:&lt;/strong&gt; View/Delete all custom/user attachments over size of 5 MB with no active or resolved bugs on test runs between 2 dates&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/3d37ce86-05f1-4165-957c-26aaa5ea1010" target="_blank"&gt;Download Test Attachment Cleaner&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=754130" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+Utilities/default.aspx">TFS Utilities</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/ITPRO/default.aspx">ITPRO</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Microsoft+Test+Manager/default.aspx">Microsoft Test Manager</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category></item><item><title>Teched 2010 - Applied Software Testing with Visual Studio 2010 – Done</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/30/teched-2010-applied-software-testing-with-visual-studio-2010-done.aspx</link><pubDate>Tue, 30 Nov 2010 14:30:12 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:751330</guid><dc:creator>shair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=751330</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/30/teched-2010-applied-software-testing-with-visual-studio-2010-done.aspx#comments</comments><description>&lt;h1&gt;Teched 2010 - Applied Software Testing with Visual Studio 2010 – Done&lt;/h1&gt;  &lt;p&gt;I’ll start saying – Thanks everyone who participate at my lecture in Teched Israel 2010, I’ll also like to say thanks to Tzvia Gitlin Troyna the ALM sessions manager and to &lt;strong&gt;Sela Group &lt;/strong&gt;for helping and supporting me during that period.&lt;/p&gt;  &lt;p&gt;My Session was loaded with Information regarding Automated/Manual Testing in Visual Studio 2010 &amp;amp; Microsoft Test Manager and there is not doubt that the Testing Space in Visual Studio 2010 is the future of Automated/Manual Testing.    &lt;br /&gt;During my session I had A LOT of questions and not enough time to answer all those questions, so as promised I’m writing this post to give you the guidelines based on my presentation topics in order to help get started with Test Automation using Visual Studio 2010 and Microsoft Test Manager.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Microsoft Test Manager &lt;/strong&gt;– &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Microsoft+Test+Manager/default.aspx" target="_blank"&gt;More Info&lt;/a&gt;       &lt;ul&gt;       &lt;li&gt;&lt;u&gt;Fast Forward Automation&lt;/u&gt; – We saw how from manual Test Case you can create a simple automatic test without writing code. &lt;/li&gt;        &lt;li&gt;&lt;u&gt;Rich Bugs&lt;/u&gt; – Using Data Collectors we saw how easy is to open bug with all the information you need. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Web Testing&lt;/strong&gt;       &lt;br /&gt;We saw how to record Web Site or Desktop application HTTP/S&amp;#160; request and rerun those request with different parameters from external data source. – &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WebTest/default.aspx" target="_blank"&gt;More Info&lt;/a&gt; - &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Screencasts/default.aspx"&gt;Screencasts&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Load Testing&lt;/strong&gt;       &lt;br /&gt;You can Do It!!! we saw how easy create new load testing can be using Visual Studio 2010 – &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Load+Test/default.aspx" target="_blank"&gt;More Info&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Coded UI Testing &lt;/strong&gt;– &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Coded+UI+Test/default.aspx" target="_blank"&gt;More Info&lt;/a&gt;       &lt;ul&gt;       &lt;li&gt;&lt;u&gt;From Existing Test Case&lt;/u&gt; – When the “Manual Tester” working on his Test Cases as an Automation Guy or Developer I can generate the Coded UI from the Manual Test Case. (Fast Forward Automation). &lt;/li&gt;        &lt;li&gt;&lt;u&gt;New &lt;/u&gt;– Create a powerful UI Automation using Coded UI Test Builder. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Any other question feel free to contact me – shair&lt;strong&gt;[at]&lt;/strong&gt;sela.co.il&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-6b8ff6b49802226d.office.live.com/self.aspx/presentations/ALM306%20Applied%20Software%20Testing%20with%20Visual%20Studio%202010%20-%20Production.pptx"&gt;Download Teched Presentation&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Thanks again and Enjoy&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/IMG_8083_5DE03F27.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="IMG_8083" border="0" alt="IMG_8083" src="http://blogs.microsoft.co.il/blogs/shair/IMG_8083_thumb_5A7EA77F.jpg" width="407" height="307" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/IMG_8087_2D1D11AF.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="IMG_8087" border="0" alt="IMG_8087" src="http://blogs.microsoft.co.il/blogs/shair/IMG_8087_thumb_6DFBE153.jpg" width="405" height="305" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=751330" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Web/default.aspx">Web</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Load+Test/default.aspx">Load Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WebTest/default.aspx">WebTest</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Coded+UI+Test/default.aspx">Coded UI Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Microsoft+Test+Manager/default.aspx">Microsoft Test Manager</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Sela+Group/default.aspx">Sela Group</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TechED+2010/default.aspx">TechED 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/teched_5F00_il/default.aspx">teched_il</category></item><item><title>Tech-Ed 2010 – Applied Software Testing with Visual Studio 2010 – All In One</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/09/teched-2010-applied-software-testing-with-visual-studio-2010-all-in-one.aspx</link><pubDate>Tue, 09 Nov 2010 16:29:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:739403</guid><dc:creator>shair</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=739403</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/09/teched-2010-applied-software-testing-with-visual-studio-2010-all-in-one.aspx#comments</comments><description>&lt;h1&gt;Tech-Ed 2010 – Applied Software Testing with Visual Studio 2010 – All In One&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/israel/TechEd2010/Default.aspx"&gt;&lt;strong&gt;Teched Israel 2010&lt;/strong&gt;&lt;/a&gt; is going to happen next month in Eilat between the 28-30 of November.&lt;/p&gt;  &lt;p&gt;On this &lt;strong&gt;Teched&lt;/strong&gt; I’ll have the pleasure to present a session about &lt;strong&gt;&lt;u&gt;Applied Software Testing with Visual Studio 2010&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In this session I’ll demonstrate how to use the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Microsoft Test Manager – Fast Forward Automation&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Web Performance Testing&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Load Testing&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Coded UI Testing&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;u&gt;&lt;font color="#0000ff" size="4"&gt;Why? So &lt;strong&gt;YOU &lt;/strong&gt;can do Automatic and Load Testing by yourself!!!&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;This is &lt;u&gt;&lt;strong&gt;All In One &lt;/strong&gt;&lt;/u&gt;session and if you want to know more about Testing in Visual Studio 2010 you should be there!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/israel/TechEd2010/Tracks/ALM.aspx"&gt;&lt;strong&gt;http://www.microsoft.com/israel/TechEd2010/Tracks/ALM.aspx&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;More Lectures I’ll recommend you to go: (&lt;font color="#ff0000"&gt;Sela Collage Speakers&lt;/font&gt;)&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/applisec/archive/2010/11/07/come-to-my-talk-in-teched.aspx"&gt;Manu Cohen-Yashar – Windows Azure Storage&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2010/10/24/teched-israel-2010-xna-game-studio-4-0-code-once-play-everywhere-session-announcement.aspx"&gt;Alex Golesh – XNA Game Studio 4.0&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/gilf/archive/2010/10/22/teched-israel-2010-here-i-come.aspx"&gt;Gil Fink – Entity Framework 4&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/sasha/archive/2010/11/08/teched-israel-2010-performance-and-debugging-in-visual-studio-2010.aspx"&gt;Sasha Goldshtein – Performance and Debugging in VS2010&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/clip_image001_6EC60548.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.microsoft.co.il/blogs/shair/clip_image001_thumb_123283E1.jpg" width="189" height="164" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/clip_image002_492C621A.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.microsoft.co.il/blogs/shair/clip_image002_thumb_3BE5D907.jpg" width="189" height="164" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/clip_image003_52C4AA83.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="clip_image003" border="0" alt="clip_image003" src="http://blogs.microsoft.co.il/blogs/shair/clip_image003_thumb_50A7ABBA.jpg" width="189" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;padding:0px 0px 0px 0px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/09/teched-2010-applied-software-testing-with-visual-studio-2010-all-in-one.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/09/teched-2010-applied-software-testing-with-visual-studio-2010-all-in-one.aspx&amp;amp;bgcolor=6600FF" /&gt;&lt;/a&gt; &lt;a href="http://dotnetshoutout.com/Submit?url=http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/09/teched-2010-applied-software-testing-with-visual-studio-2010-all-in-one.aspx"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http://blogs.microsoft.co.il/blogs/shair/archive/2010/11/09/teched-2010-applied-software-testing-with-visual-studio-2010-all-in-one.aspx" style="border:0px;" /&gt;&lt;/a&gt; &lt;a href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=7121713" rel="tag" style="display:none;"&gt;CodeProject&lt;/a&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=739403" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System/default.aspx">Team System</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Load/default.aspx">Load</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Web/default.aspx">Web</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Fiddler/default.aspx">Fiddler</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Load+Test/default.aspx">Load Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Unit+Test/default.aspx">Unit Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WebTest/default.aspx">WebTest</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Historical+Debugging/default.aspx">Historical Debugging</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Coded+UI+Test/default.aspx">Coded UI Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Microsoft+Test+Manager/default.aspx">Microsoft Test Manager</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4/default.aspx">.NET 4</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TechED+2010/default.aspx">TechED 2010</category></item><item><title>Microsoft Key Note At SIGIST 2010 - Test Automation - Done</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/06/16/microsoft-key-note-at-sigist-2010-test-automation-done.aspx</link><pubDate>Wed, 16 Jun 2010 23:24:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:661974</guid><dc:creator>shair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=661974</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/06/16/microsoft-key-note-at-sigist-2010-test-automation-done.aspx#comments</comments><description>&lt;h1&gt;Microsoft Key Note At SIGIST 2010 - Test Automation – Done&lt;/h1&gt;  &lt;p&gt;Today I had the honor to participate at SIGIST 2010 conference (The third year) and be a part of Microsoft Key Note on Test Automation in Visual Studio &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_037035DE.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" title="image" border="0" alt="image" align="right" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_3E8FD7DD.png" width="273" height="206" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2010 and Microsoft Test Manager. (Last year lecture - &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2009/08/02/sigist-2009-lab-management-amp-pictures.aspx" target="_blank"&gt;Sigist 2009 – Lab Management &amp;amp; Pictures&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;I’ve showed couple of cool demos using &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Coded+UI+Test/default.aspx" target="_blank"&gt;“Fast-Forward for Manual Testing”&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/07/team-system-2010-beta-2-diagnostic-data-adapters-no-more-no-repro.aspx" target="_blank"&gt;Rich Bugs using Data Collectors&lt;/a&gt; and Lab Manager solution.&lt;/p&gt;  &lt;p&gt;And I showed a short demo on how to use &lt;u&gt;&lt;strong&gt;Eclipse IDE&lt;/strong&gt;&lt;/u&gt; with TFS 2010 using Team Explorer Everywhere (Heterogeneous).&lt;/p&gt;  &lt;p&gt;I got great feedbacks from people attending and I’ll would like to thank you all and hope to see you next year!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_4F17ACFE.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_2CBF55DE.png" width="678" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=661974" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Web/default.aspx">Web</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/QC/default.aspx">QC</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/SIGiST/default.aspx">SIGiST</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Coded+UI+Test/default.aspx">Coded UI Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Lab+Management/default.aspx">Lab Management</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Microsoft+Test+Manager/default.aspx">Microsoft Test Manager</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Java/default.aspx">Java</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Quality+Center+2+Team+System+2010/default.aspx">Quality Center 2 Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Sela+Group/default.aspx">Sela Group</category></item><item><title>How To Create Custom DataCollector In Visual Studio 2010 – Part 2</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/04/19/how-to-create-custom-datacollector-in-visual-studio-2010-part-2.aspx</link><pubDate>Mon, 19 Apr 2010 13:52:54 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:587729</guid><dc:creator>shair</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=587729</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/04/19/how-to-create-custom-datacollector-in-visual-studio-2010-part-2.aspx#comments</comments><description>&lt;h1&gt;How To Create Custom DataCollector In Visual Studio 2010 – Part 2&lt;/h1&gt;  &lt;p&gt;In the previous post (&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/04/19/how-to-create-custom-datacollector-in-visual-studio-2010-part-1.aspx"&gt;How To Create Custom DataCollector In Visual Studio 2010 – Part 1&lt;/a&gt;)I showed how to create a Custom Data Collector using Visual Studio 2010, Here we continue improving our Data Collector using external Xml Configuration files.&lt;/p&gt;  &lt;p&gt;Instead of add hardcoded values into your code use the Xml to take and save user settings.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/587731/download.aspx"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Step 1 – Add Configuration File&lt;/h3&gt;  &lt;p&gt;To collect a log file when a test finishes based on what the user configured in test settings, you must create an &lt;strong&gt;&lt;u&gt;App.config&lt;/u&gt;&lt;/strong&gt; file and add it to your solution&lt;/p&gt;  &lt;p&gt;Copy below format into the app config file:&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;?&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configSections&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;section&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;DataCollectorConfiguration&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Microsoft.VisualStudio.TestTools.Execution.DataCollectorConfigurationSection, &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft.VisualStudio.QualityTools.ExecutionCommon, &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Version=4.0.0.0, Culture=neutral, &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PublicKeyToken=b03f5f7f11d50a3a&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configSections&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataCollectorConfiguration&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://microsoft.com/schemas/VisualStudio/TeamTest/2010&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataCollector&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;typeUri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;datacollector://ShaiRaiten/LocalLogsCollector/1.0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DefaultConfiguration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Folder&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;C:\Logs\&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Folder&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;C:\Logs2\&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DefaultConfiguration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataCollector&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataCollectorConfiguration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Make sure the &lt;strong&gt;DataCollector typeUri&lt;/strong&gt; attribute is the same as [&lt;span style="color:#2b91af;"&gt;DataCollectorTypeUri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;datacollector://ShaiRaiten/LocalLogsCollector/1.0&amp;quot;&lt;/span&gt;)] from the Data Adapter class.&lt;/p&gt;  &lt;h3&gt;Step 2 – Initialize Configuration Element&lt;/h3&gt;  &lt;p&gt;In the Initialize method make sure to Initialize the Configuration &lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; .&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationSettings;&lt;/p&gt; &lt;/div&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize(&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationElement, &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; events, &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; sink,&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; logger, &lt;span style="color:#2b91af;"&gt;DataCollectionEnvironmentContext&lt;/span&gt; environmentContext)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; configurationSettings = configurationElement;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; events.SessionEnd += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;SessionEndEventArgs&lt;/span&gt;&amp;gt;(events_SessionEnd);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Step 3 – Use Configuration Element&lt;/h3&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; events_SessionEnd(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;SessionEndEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Get any files to be collected that are&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// configured in your test settings&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; files = getFilesToCollect(e.Context);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// For each of the files, send the file to the data sink&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// which will attach it to the test results or to a bug&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; file &lt;span style="color:blue;"&gt;in&lt;/span&gt; files)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataSink.SendFileAsync(e.Context, file, &lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// A private method that returns the file names&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; getFilesToCollect(&lt;span style="color:#2b91af;"&gt;DataCollectionContext&lt;/span&gt; context)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;XmlNodeList&lt;/span&gt; folders = configurationSettings.GetElementsByTagName(&lt;span style="color:#a31515;"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Build the list of folder to collect from the &lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// &amp;quot;Path&amp;quot; attributes of the &amp;quot;Folder&amp;quot; nodes.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; result = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt;();&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;XmlNode&lt;/span&gt; folder &lt;span style="color:blue;"&gt;in&lt;/span&gt; folders)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;XmlAttribute&lt;/span&gt; pathAttribute = folder.Attributes[&lt;span style="color:#a31515;"&gt;&amp;quot;Path&amp;quot;&lt;/span&gt;];&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (pathAttribute != &lt;span style="color:blue;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.IsNullOrEmpty(pathAttribute.Value))&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.Exists(pathAttribute.Value))&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] files = &lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.GetFiles(pathAttribute.Value);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; file &lt;span style="color:blue;"&gt;in&lt;/span&gt; files)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; result.Add(file);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;return&lt;/span&gt; result;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/587731/download.aspx"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=587729" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category></item><item><title>How To Create Custom DataCollector In Visual Studio 2010 – Part 1</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/04/19/how-to-create-custom-datacollector-in-visual-studio-2010-part-1.aspx</link><pubDate>Mon, 19 Apr 2010 13:51:01 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:587725</guid><dc:creator>shair</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=587725</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/04/19/how-to-create-custom-datacollector-in-visual-studio-2010-part-1.aspx#comments</comments><description>&lt;h1&gt;How To Create Custom DataCollector In Visual Studio 2010 – Part 1&lt;/h1&gt;  &lt;p&gt;What is DataCollector - &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/07/team-system-2010-beta-2-diagnostic-data-adapters-no-more-no-repro.aspx"&gt;Team System 2010 Beta 2 – Diagnostic Data Adapters – No More No Repro!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you remember I’ve already wrote on how to create a custom data collector:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/11/team-system-2010-beta-2-diagnostic-data-adapters-create-custom-adapter-part-1.aspx"&gt;VSTS 2010 Beta 2 – Diagnostic Data Adapters – Custom Adapter – Part 1&lt;/a&gt;, &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/17/vsts-2010-beta-2-diagnostic-data-adapters-custom-adapter-part-2.aspx"&gt;VSTS 2010 Beta 2 – Diagnostic Data Adapters – Custom Adapter – Part 2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;but between Beta 2 and RTM there were couple of changes with Data Collectors.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/587731/download.aspx"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Step 1 – Getting Started&lt;/h3&gt;  &lt;p&gt;Create a Class library project and add two references:&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;ol&gt;     &lt;li&gt;Microsoft.VisualStudio.QualityTools.Common &lt;/li&gt;      &lt;li&gt;Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll &lt;/li&gt;   &lt;/ol&gt; &lt;/div&gt;  &lt;p&gt;You can find those assemblies &lt;u&gt;&lt;strong&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0        &lt;br /&gt;&lt;/strong&gt;&lt;/u&gt;(If you are not using 64bit operation system - C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0&lt;/p&gt;  &lt;h3&gt;Step 2 – Create Data Collector Class&lt;/h3&gt;  &lt;p&gt;1. Add new class to your project with the Data Collector name, make sure the class defined as Public and add both using to the class:&lt;/p&gt;  &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.Execution;&lt;/p&gt;  &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.Common;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;2. Add the Data Collector attributes&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;[&lt;span style="color:#2b91af;"&gt;DataCollectorTypeUri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;datacollector://ShaiRaiten/LocalLogsCollector/1.0&amp;quot;&lt;/span&gt;)]&lt;/p&gt;    &lt;p style="margin:0px;"&gt;[&lt;span style="color:#2b91af;"&gt;DataCollectorFriendlyName&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Local Logs Collector&amp;quot;&lt;/span&gt;)]&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;3. Add &lt;u&gt;&lt;strong&gt;DataCollector&lt;/strong&gt;&lt;/u&gt; interface and implement it. &lt;font color="#8080ff"&gt;(Beta 2 – IDataCollector)      &lt;br /&gt;&lt;/font&gt;This is what you should see:&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize(&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationElement, &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; events, &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; sink,&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; logger, &lt;span style="color:#2b91af;"&gt;DataCollectionEnvironmentContext&lt;/span&gt; environmentContext)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;h5&gt;&lt;strong&gt;Step 3 – Implement Custom Data Adapter&lt;/strong&gt;&lt;/h5&gt;  &lt;p&gt;Using the DataCollectionEvents add the desire events for the Custom Data Adapter.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;CustomNotification&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a custom notification occurs.     &lt;br /&gt;&lt;strong&gt;DataRequest&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised to request intermediate data.     &lt;br /&gt;&lt;strong&gt;SessionEnd&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test session ends.     &lt;br /&gt;&lt;strong&gt;SessionPause&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test session pauses.     &lt;br /&gt;&lt;strong&gt;SessionResume&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test session resumes.     &lt;br /&gt;&lt;strong&gt;SessionStart&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test session starts.     &lt;br /&gt;&lt;strong&gt;TestCaseEnd&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case ends.     &lt;br /&gt;&lt;strong&gt;TestCasePause&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case pauses.     &lt;br /&gt;&lt;strong&gt;TestCaseReset&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case resets.     &lt;br /&gt;&lt;strong&gt;TestCaseResume&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case resumes.     &lt;br /&gt;&lt;strong&gt;TestCaseStart&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case starts.     &lt;br /&gt;&lt;strong&gt;TestStepEnd&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test step ends.     &lt;br /&gt;&lt;strong&gt;TestStepStart&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test step starts.&lt;/p&gt;  &lt;p&gt;And define DataCollectionSink for storing files as attachments.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;For Example:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; dataEvents;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; dataLogger;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize(&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationElement, &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; events, &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; sink,&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; logger, &lt;span style="color:#2b91af;"&gt;DataCollectionEnvironmentContext&lt;/span&gt; environmentContext)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; dataEvents = events;&amp;#160; &lt;span style="color:green;"&gt;// The test events&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; dataLogger = logger;&amp;#160; &lt;span style="color:green;"&gt;// The error and warning log&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; dataSink = sink;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Saves collected data&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;// Configuration from the test settings&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; events.SessionEnd += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;SessionEndEventArgs&lt;/span&gt;&amp;gt;(events_SessionEnd);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Now write the code to collect the logs from the specified folder.&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; events_SessionEnd(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;SessionEndEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;{&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt; LogPath = &lt;span style="color:#a31515;"&gt;@&amp;quot;C:\Logs&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.Exists(LogPath))&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] files = &lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.GetFiles(LogPath);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; f &lt;span style="color:blue;"&gt;in&lt;/span&gt; files)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataSink.SendFileAsync(e.Context, f, &lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; ex)&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;span style="color:blue;"&gt;throw&lt;/span&gt; ex; }&lt;/p&gt;    &lt;p style="margin:0px;"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/587731/download.aspx"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=587725" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category></item><item><title>VSTS 2010 Beta 2 – Diagnostic Data Adapters – Custom Adapter – Part 2</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/17/vsts-2010-beta-2-diagnostic-data-adapters-custom-adapter-part-2.aspx</link><pubDate>Sun, 17 Jan 2010 16:58:50 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:500606</guid><dc:creator>shair</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=500606</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/17/vsts-2010-beta-2-diagnostic-data-adapters-custom-adapter-part-2.aspx#comments</comments><description>&lt;h1&gt;&lt;font face="Segoe UI"&gt;VSTS 2010 Beta 2 – Diagnostic Data Adapters – Custom Adapter – Part 2&lt;/font&gt;&lt;/h1&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;In my previous post &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/11/team-system-2010-beta-2-diagnostic-data-adapters-create-custom-adapter-part-1.aspx" target="_blank"&gt;Diagnostic Data Adapters – Create Custom Adapter – Part 1&lt;/a&gt; I’ve showed how to create a Custom Data Adapter, this post will be on how to add a Configuration File to your Custom Data Adapter.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/493724/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;font face="Segoe UI"&gt;Step 1 – Add Configuration File&lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;In your Data Adapter project add a new xml file and change the name to &lt;strong&gt;&lt;u&gt;&amp;lt;name of your data diagnostic adapter&amp;gt;.dll.config&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Copy below format into the xml config file:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;?&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Config&lt;/span&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataCollector&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;typeUri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;datacollector://ShaiRaiten/LogsCollector/1.0&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;enabledOnCollectionOnlyAgents&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DefaultConfiguration&lt;/span&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Folder&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;FullPath&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;C:\Logs\Day&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Folder&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;FullPath&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;C:\Logs\Night&lt;/span&gt;&amp;quot;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DefaultConfiguration&lt;/span&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataCollector&lt;/span&gt;&lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;&amp;gt;        &lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Config&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;Make sure the &lt;strong&gt;DataCollector typeUri&lt;/strong&gt; attribute is the same as [&lt;span style="color:#2b91af;"&gt;DataCollectorTypeUri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;datacollector://ShaiRaiten/LogsCollector/1.0&amp;quot;&lt;/span&gt;)] from the Data Adapter class.&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;&lt;font face="Segoe UI"&gt;&lt;strong&gt;Step 2 – Initialize Configuration Element&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;In the Initialize method make sure to Initialize the Configuration XmlElement.&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;   &lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; config;&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize(System.Xml.&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationElement, &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; events, &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink, &lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; logger, &lt;span style="color:#2b91af;"&gt;AgentContext&lt;/span&gt; agentContext)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;   &lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.config = configurationElement;&lt;/font&gt;     &lt;p&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; Events.TestCaseEnd += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt;&amp;gt;(Events_TestCaseEnd);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;&lt;font face="Segoe UI"&gt;&lt;strong&gt;Step 3 – Use Configuration Element&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; Events_TestCaseEnd(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt; e)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; folders = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt;();&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;XmlNode&lt;/span&gt; currentNode = config.FirstChild;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;while&lt;/span&gt; (currentNode != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; ((currentNode.Name == &lt;span style="color:#a31515;"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;) &amp;amp;&amp;amp; (currentNode.Attributes[&lt;span style="color:#a31515;"&gt;&amp;quot;FullPath&amp;quot;&lt;/span&gt;] != &lt;span style="color:blue;"&gt;null&lt;/span&gt;))&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; folders.Add(currentNode.Attributes[&lt;span style="color:#a31515;"&gt;&amp;quot;FullPath&amp;quot;&lt;/span&gt;].Value);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; currentNode = currentNode.NextSibling;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; folder &lt;span style="color:blue;"&gt;in&lt;/span&gt; folders)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] files = &lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.GetFiles(folder);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt; file &lt;span style="color:blue;"&gt;in&lt;/span&gt; files)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataSink.SendFileAsync(e.Context, file, &lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; ex)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;span style="color:blue;"&gt;throw&lt;/span&gt; ex; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="Segoe UI"&gt;&lt;strong&gt;Step 4 – Install Configuration File&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;End you’re almost done, Build the solution, and then copy the built assembly and the Configuration file to -      &lt;br /&gt;&lt;strong&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Now, Run the test and see the results below:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_68F79017.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_1C23A3B4.png" width="784" height="417" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="Segoe UI"&gt;&lt;strong&gt;Full Code :&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Linq;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.Execution;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Xml;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.IO;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Diagnostics;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; LogsCollector&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color:#2b91af;"&gt;DataCollectorTypeUri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;datacollector://ShaiRaiten/LogsCollector/1.0&amp;quot;&lt;/span&gt;)]&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color:#2b91af;"&gt;DataCollectorFriendlyName&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Local Logs Collector&amp;quot;&lt;/span&gt;)]&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;LogsCollector&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;IDataCollector&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; Events;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; config;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize(System.Xml.&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationElement, &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; events, &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink, &lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; logger, &lt;span style="color:#2b91af;"&gt;AgentContext&lt;/span&gt; agentContext)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Events = events;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.dataSink = dataSink;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.config = configurationElement;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Events.TestCaseEnd += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt;&amp;gt;(Events_TestCaseEnd);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Events_TestCaseEnd(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt; e)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt; folders = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;&amp;gt;();&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:#2b91af;"&gt;XmlNode&lt;/span&gt; currentNode = config.FirstChild;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;while&lt;/span&gt; (currentNode != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; ((currentNode.Name == &lt;span style="color:#a31515;"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;) &amp;amp;&amp;amp; (currentNode.Attributes[&lt;span style="color:#a31515;"&gt;&amp;quot;FullPath&amp;quot;&lt;/span&gt;] != &lt;span style="color:blue;"&gt;null&lt;/span&gt;))&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; folders.Add(currentNode.Attributes[&lt;span style="color:#a31515;"&gt;&amp;quot;FullPath&amp;quot;&lt;/span&gt;].Value);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; currentNode = currentNode.NextSibling;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; folder &lt;span style="color:blue;"&gt;in&lt;/span&gt; folders)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] files = &lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.GetFiles(folder);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; file &lt;span style="color:blue;"&gt;in&lt;/span&gt; files)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataSink.SendFileAsync(e.Context, file, &lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; ex)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;span style="color:blue;"&gt;throw&lt;/span&gt; ex; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Dispose()&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;//Unregister events&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Events.TestCaseEnd -= &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt;&amp;gt;(Events_TestCaseEnd);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/493724/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Enjoy.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=500606" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Load+Test/default.aspx">Load Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WebTest/default.aspx">WebTest</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Coded+UI+Test/default.aspx">Coded UI Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4+Beta+2/default.aspx">.NET 4 Beta 2</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category></item><item><title>VSTS 2010 Beta 2 – Diagnostic Data Adapters – Custom Adapter – Part 1</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/11/team-system-2010-beta-2-diagnostic-data-adapters-create-custom-adapter-part-1.aspx</link><pubDate>Mon, 11 Jan 2010 17:46:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:493721</guid><dc:creator>shair</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=493721</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/11/team-system-2010-beta-2-diagnostic-data-adapters-create-custom-adapter-part-1.aspx#comments</comments><description>&lt;h1&gt;&lt;font face="Segoe UI"&gt;VSTS 2010 Beta 2 – Diagnostic Data Adapters – Custom Adapter – Part 1&lt;/font&gt;&lt;/h1&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;In my previous post I’ve talked about &lt;/font&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/07/team-system-2010-beta-2-diagnostic-data-adapters-no-more-no-repro.aspx"&gt;&lt;font face="Segoe UI"&gt;What is Diagnostic Data Adapters – No More No Repro!&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt;, this post will be about how to      &lt;br /&gt;&lt;u&gt;create your own&lt;/u&gt; &lt;strong&gt;Diagnostic Data Collector&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/492717/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;In this post I’ll show you how to create a custom &lt;strong&gt;&lt;u&gt;Log data collector&lt;/u&gt;&lt;/strong&gt; that can be very helpful for many applications using local logs.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Below is an example of advanced custom data adapter I built for collecting performance data during a test. – I’ll get to this later…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_745F5A96.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_631B5726.png" width="660" height="277" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_510F1399.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_0B5A63AE.png" width="660" height="567" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt;      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="Segoe UI"&gt;&lt;strong&gt;Step 1 – Getting Started&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Create a Class library project and add two references:&lt;/font&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font face="Segoe UI"&gt;Microsoft.VisualStudio.QualityTools.Common &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font face="Segoe UI"&gt;2. Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll &lt;/font&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;You can find those assemblies &lt;/font&gt;&lt;font face="Segoe UI"&gt;&lt;u&gt;&lt;strong&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\          &lt;br /&gt;&lt;/strong&gt;&lt;/u&gt;(If you are not using 64bit operation system - C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\).       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="Segoe UI"&gt;&lt;strong&gt;Step 2 – Create Data Collector Class&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;1. Add new class to your project with the Data Collector name, make sure the class defined as Public and add both using to the class:&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.Execution;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.Common;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;2. Add the Data Collector attributes &lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;[&lt;span style="color:#2b91af;"&gt;DataCollectorTypeUri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;datacollector://Manufacturer/DataCollectorName/Version&amp;quot;&lt;/span&gt;)]&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;[&lt;span style="color:#2b91af;"&gt;DataCollectorFriendlyName&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Data Collector Name&amp;quot;&lt;/span&gt;)]&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;     &lt;br /&gt;3. Add &lt;u&gt;&lt;strong&gt;IDataCollector&lt;/strong&gt;&lt;/u&gt; interface and implement it.       &lt;br /&gt;This is what you should see:&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize(&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationElement, &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; events, &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink, &lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; logger, &lt;span style="color:#2b91af;"&gt;AgentContext&lt;/span&gt; agentContext)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;throw&lt;/span&gt; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NotImplementedException&lt;/span&gt;();&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Dispose()&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;throw&lt;/span&gt; &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;NotImplementedException&lt;/span&gt;();&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;&lt;font face="Segoe UI"&gt;&lt;strong&gt;Step 3 – Implement Custom Data Adapter&lt;/strong&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Using the &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; add the desire events for the Custom Data Adapter.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;strong&gt;CustomNotification&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a custom notification occurs.       &lt;br /&gt;&lt;strong&gt;DataRequest&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised to request intermediate data.       &lt;br /&gt;&lt;strong&gt;SessionEnd&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test session ends.       &lt;br /&gt;&lt;strong&gt;SessionPause&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test session pauses.       &lt;br /&gt;&lt;strong&gt;SessionResume&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test session resumes.       &lt;br /&gt;&lt;strong&gt;SessionStart&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test session starts.       &lt;br /&gt;&lt;strong&gt;TestCaseEnd&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case ends.       &lt;br /&gt;&lt;strong&gt;TestCasePause&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case pauses.       &lt;br /&gt;&lt;strong&gt;TestCaseReset&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case resets.       &lt;br /&gt;&lt;strong&gt;TestCaseResume&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case resumes.       &lt;br /&gt;&lt;strong&gt;TestCaseStart&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test case starts.       &lt;br /&gt;&lt;strong&gt;TestStepEnd&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test step ends.       &lt;br /&gt;&lt;strong&gt;TestStepStart&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raised when a test step starts.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;And define &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; for storing files as attachments.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;&lt;font face="Segoe UI"&gt;For Example:&lt;/font&gt;&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;     &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; Events;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; LogPath = &lt;span style="color:#a31515;"&gt;@&amp;quot;C:\Logs&amp;quot;&lt;/span&gt;;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize(System.Xml.&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationElement, &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; events, &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink, &lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; logger, &lt;span style="color:#2b91af;"&gt;AgentContext&lt;/span&gt; agentContext)&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;{&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Events = events;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;//DataCollectionSink - Diagnostic data adapters use a DataCollectionSink to store files and &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;//XML data for later attachment to bugs and test reports.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.dataSink = dataSink;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; Events.TestCaseEnd += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt;&amp;gt;(Events_TestCaseEnd);&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;}          &lt;br /&gt;          &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Now write the code to collect the logs from the specified folder.&lt;/font&gt;&lt;/p&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;     &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; Events_TestCaseEnd(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt; e)&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;{&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.Exists(LogPath))&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] files = &lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.GetFiles(LogPath);&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; f &lt;span style="color:blue;"&gt;in&lt;/span&gt; files)&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataSink.SendFileAsync(e.Context, f, &lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; ex)&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;span style="color:blue;"&gt;throw&lt;/span&gt; ex; }&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;}&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;      &lt;h3&gt;&lt;strong&gt;&lt;font face="Segoe UI"&gt;Step 4 – Install Custom Data Adapter&lt;/font&gt;&lt;/strong&gt;&lt;/h3&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;End you’re almost done, Build the solution, and then copy the built assembly to -          &lt;br /&gt;&lt;strong&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\DataCollectors&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;Now create a new test (&lt;/font&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2009/05/20/vs2010-coded-ui-test.aspx"&gt;&lt;font face="Segoe UI"&gt;VS2010 – Coded UI Test&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt;) and define the new Data Adapter(&lt;/font&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/07/team-system-2010-beta-2-diagnostic-data-adapters-no-more-no-repro.aspx"&gt;&lt;font face="Segoe UI"&gt;Team System 2010 Beta 2 – Diagnostic Data Adapters – No More No Repro!&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt;).&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;I’ve built a simple WPF application that creates log file in C:\Logs.&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;       &lt;br /&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_30D3BB42.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_20784389.png" width="219" height="86" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt; &lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;      &lt;p style="margin:0px;"&gt;&lt;font size="3" face="Segoe UI"&gt;Below image show a normal run of CodedUITest without selecting the data adapter.&lt;/font&gt;&lt;/p&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_04F34186.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_2AD8CC0F.png" width="689" height="346" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin:0px;"&gt;&lt;font size="3" face="Segoe UI"&gt;Below image show a CodedUITest run with Logs Data Adapter selected.      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="margin:0px;"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_49DB9D55.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_5AFF552B.png" width="583" height="240" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_4240081B.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_0E1B42FB.png" width="689" height="386" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Local Logs Folder&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_241188C0.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_57A9CF51.png" width="460" height="196" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;font face="Segoe UI"&gt;Full Code Sample:&lt;/font&gt;&lt;/h3&gt;  &lt;div style="font-family:consolas;background:white;color:black;font-size:10pt;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Linq;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Text;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.Execution;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.Xml;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;using&lt;/span&gt; System.IO;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; LogsCollector&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color:#2b91af;"&gt;DataCollectorTypeUri&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;datacollector://ShaiRaiten/Logs/1.0&amp;quot;&lt;/span&gt;)]&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color:#2b91af;"&gt;DataCollectorFriendlyName&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Local Logs Collector&amp;quot;&lt;/span&gt;)]&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;LogsCollector&lt;/span&gt; : &lt;span style="color:#2b91af;"&gt;IDataCollector&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; Events;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;const&lt;/span&gt; &lt;span style="color:blue;"&gt;string&lt;/span&gt; LogPath = &lt;span style="color:#a31515;"&gt;@&amp;quot;C:\Logs&amp;quot;&lt;/span&gt;;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Initialize(System.Xml.&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt; configurationElement, &lt;span style="color:#2b91af;"&gt;DataCollectionEvents&lt;/span&gt; events, &lt;span style="color:#2b91af;"&gt;DataCollectionSink&lt;/span&gt; dataSink, &lt;span style="color:#2b91af;"&gt;DataCollectionLogger&lt;/span&gt; logger, &lt;span style="color:#2b91af;"&gt;AgentContext&lt;/span&gt; agentContext)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Events = events;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;//DataCollectionSink - Diagnostic data adapters use a DataCollectionSink to store files and &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;//XML data for later attachment to bugs and test reports.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;this&lt;/span&gt;.dataSink = dataSink;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Events.TestCaseEnd += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt;&amp;gt;(Events_TestCaseEnd);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Events_TestCaseEnd(&lt;span style="color:blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt; e)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;try&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;if&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.Exists(LogPath))&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;string&lt;/span&gt;[] files = &lt;span style="color:#2b91af;"&gt;Directory&lt;/span&gt;.GetFiles(LogPath);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue;"&gt;string&lt;/span&gt; f &lt;span style="color:blue;"&gt;in&lt;/span&gt; files)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dataSink.SendFileAsync(e.Context, f, &lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_5F2518F1.png"&gt;&lt;font face="Segoe UI"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_0369FD74.png" width="540" height="24" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="Segoe UI"&gt; &lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;catch&lt;/span&gt; (&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt; ex)&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;span style="color:blue;"&gt;throw&lt;/span&gt; ex; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Dispose()&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color:green;"&gt;//Unregister events&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Events.TestCaseEnd -= &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TestCaseEndEventArgs&lt;/span&gt;&amp;gt;(Events_TestCaseEnd);&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Segoe UI"&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/492717/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;font face="Segoe UI"&gt;Enjoy&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=493721" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Load+Test/default.aspx">Load Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WebTest/default.aspx">WebTest</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Coded+UI+Test/default.aspx">Coded UI Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4+Beta+2/default.aspx">.NET 4 Beta 2</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category></item><item><title>Team System 2010 Beta 2 – Diagnostic Data Adapters – No More No Repro!</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/07/team-system-2010-beta-2-diagnostic-data-adapters-no-more-no-repro.aspx</link><pubDate>Thu, 07 Jan 2010 19:40:24 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:489025</guid><dc:creator>shair</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=489025</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2010/01/07/team-system-2010-beta-2-diagnostic-data-adapters-no-more-no-repro.aspx#comments</comments><description>&lt;h1&gt;Team System 2010 Beta 2 – Diagnostic Data Adapters – No More No Repro! – Part 1&lt;/h1&gt;  &lt;h3&gt;What is Data Adapter?&lt;/h3&gt;  &lt;p&gt;Diagnostic Data Adapters will allow you specify various types of data to collect or how to affect the test machine when you run manual tests, automated tests, or both.    &lt;br /&gt;&lt;u&gt;&lt;strong&gt;For example&lt;/strong&gt;&lt;/u&gt;, a diagnostic data adapter might create an &lt;u&gt;action recording&lt;/u&gt;, an &lt;u&gt;action log&lt;/u&gt;, a &lt;u&gt;video recording&lt;/u&gt;, or collect &lt;u&gt;system information&lt;/u&gt;.     &lt;br /&gt;Additionally, diagnostic data adapters can be used to simulate potential bottlenecks on the test machine or reduce the available system memory.     &lt;br /&gt;&lt;u&gt;&lt;strong&gt;For example&lt;/strong&gt;&lt;/u&gt;, you can &lt;u&gt;emulate &lt;/u&gt;a slow &lt;u&gt;network &lt;/u&gt;to impose a bottleneck on the system.&lt;/p&gt;  &lt;h3&gt;How To Define Data Adapter?&lt;/h3&gt;  &lt;p&gt;You can define data adapters in two places – Microsoft Test &amp;amp; Lab Manager (manual testing) and Visual Studio 2010 (automated testing).&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Microsoft Test and Lab Manager&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Open MTLM and create a new Test Plan (&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2009/08/04/team-system-2010-create-a-test-plan-he-screencast.aspx"&gt;Team System 2010 - Create a Test Plan [HE] – Screencast&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_37DD2EDD.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_05A5B8C6.png" width="756" height="433" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_59789607.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_76DAC146.png" width="757" height="534" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Visual Studio 2010 Beta 2&lt;/h3&gt;  &lt;p&gt;After you create a Test Project you will notice Local.testsettings file was created under “Solution Items” folder.&lt;/p&gt;  &lt;p&gt;The bellow pictures shows two ways on how to open the Test Settings window.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_6F3F2C0C.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_70076C29.png" width="761" height="228" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_5D424CA5.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_762DF71D.png" width="770" height="566" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;Now Run and Open BUGS with a lot of data to help you and the developer solving it faster.&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_39199FBE.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_4DFAFC64.png" width="482" height="426" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_69AC5BCF.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_40749DC4.png" width="832" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=489025" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Load+Test/default.aspx">Load Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WebTest/default.aspx">WebTest</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Team+System+2010/default.aspx">Team System 2010</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Coded+UI+Test/default.aspx">Coded UI Test</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Data+Collectors/default.aspx">Data Collectors</category></item></channel></rss>