﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Ayende Rahien commented on Rhino ETL Video</title><description>Hasan,
  
You can use it.
  
The pipeline is used to execute different parts of the pipeline on different threads.
  
There isn't any thread hopping inside an operation.
</description><link>http://ayende.com/4438/rhino-etl-video#comment15</link><guid>http://ayende.com/4438/rhino-etl-video#comment15</guid><pubDate>Thu, 22 Apr 2010 07:30:18 GMT</pubDate></item><item><title>Hasan commented on Rhino ETL Video</title><description>Is that mean that we can't use pipeline in Rhino ETL along with NHibernate? I think pipeline is useful to speed up process....
</description><link>http://ayende.com/4438/rhino-etl-video#comment14</link><guid>http://ayende.com/4438/rhino-etl-video#comment14</guid><pubDate>Thu, 22 Apr 2010 07:20:49 GMT</pubDate></item><item><title>Ayende Rahien commented on Rhino ETL Video</title><description>Hasan,
  
By default Rhino ETL is multi threaded, yes.
  
You can change that by replacing the PipelineExecuter in the process ctor.
  
  
And yes, using NHibernate is probably fast enough
</description><link>http://ayende.com/4438/rhino-etl-video#comment13</link><guid>http://ayende.com/4438/rhino-etl-video#comment13</guid><pubDate>Thu, 22 Apr 2010 06:53:08 GMT</pubDate></item><item><title>Hasan commented on Rhino ETL Video</title><description>Dear Ayende, I'm currently trying to implement Rhino ETL that will process source data from NHibernate. But i'm still stuck.. session Nhibernate failed to load, 
  
  
My question are:
  
  
Is Rhino ETL using thread by default, since NHibernate is not a thread safe?
  
  
Is the performance OK if I use Nhibernate rather than non ORM/NHibernte way for Rhino ETL data source/input?
</description><link>http://ayende.com/4438/rhino-etl-video#comment12</link><guid>http://ayende.com/4438/rhino-etl-video#comment12</guid><pubDate>Thu, 22 Apr 2010 06:49:11 GMT</pubDate></item><item><title>Ayende Rahien commented on Rhino ETL Video</title><description>Yes, it is.
  
Take a look at the tests showing the use of C# data sources
</description><link>http://ayende.com/4438/rhino-etl-video#comment11</link><guid>http://ayende.com/4438/rhino-etl-video#comment11</guid><pubDate>Tue, 20 Apr 2010 09:48:39 GMT</pubDate></item><item><title>Hasan commented on Rhino ETL Video</title><description>Dear Ayende, Currently I'm facing problem that probably need Rhino ETL as part  of  the solution. But, I need to clarify some information since my source is Oracle Database with NHibernate. Is it possible to use Rhino ETL with Oracle as source of ETL data? If yes, How is the way? One of my choice is using Web Service.. Is there any other way beside web service that connect to Oracle data?  
</description><link>http://ayende.com/4438/rhino-etl-video#comment10</link><guid>http://ayende.com/4438/rhino-etl-video#comment10</guid><pubDate>Tue, 20 Apr 2010 09:39:15 GMT</pubDate></item><item><title>P commented on Rhino ETL Video</title><description>I lived through the pain of strict mocks, ordered mocks, and record/replay :) 
  
  
" I started stubbing pretty much everything because generally I don't care if the thing I'm stubbing is being called for another method, what order, etc. I just want to verify that it calls the method."
  
  
^^ Using a mock instead of a stub doesnt make any difference here. You can even stub out aspects of a mock just like a stub (mockService.Stub(x =&gt; x.ServiceId).Return(Guid.New())).
  
  
In the end you are testing that some object got called, which is a test on behavior, which should be an expectation on a mocked object.
</description><link>http://ayende.com/4438/rhino-etl-video#comment9</link><guid>http://ayende.com/4438/rhino-etl-video#comment9</guid><pubDate>Wed, 24 Mar 2010 20:05:19 GMT</pubDate></item><item><title>pb commented on Rhino ETL Video</title><description>Sorry, I didn't read your example carefully enough - I started stubbing pretty much everything because generally I don't care if the thing I'm stubbing is being called for another method, what order, etc. I just want to verify that it calls the method. I used to do it closer to your way (checking the order even) but had to fix tests more often when things not related to the things being tested were changed. 
</description><link>http://ayende.com/4438/rhino-etl-video#comment8</link><guid>http://ayende.com/4438/rhino-etl-video#comment8</guid><pubDate>Wed, 24 Mar 2010 12:21:04 GMT</pubDate></item><item><title>P commented on Rhino ETL Video</title><description>... and as a comment poster, it is important to be coherent/grammatically correct...
  
  
"Why do you think that doesnt follow AAA?" :)
</description><link>http://ayende.com/4438/rhino-etl-video#comment7</link><guid>http://ayende.com/4438/rhino-etl-video#comment7</guid><pubDate>Wed, 24 Mar 2010 03:23:37 GMT</pubDate></item><item><title>P commented on Rhino ETL Video</title><description>Why don't you think what I posted follows AAA? 
  
  
Arrange -&gt; Create the mock and setup an expectation
  
Act -&gt; Invoke the system under test
  
Assert -&gt; Verify the expectations on the mock
  
  
I love rhino mocks, and the context/specification style harness we've developed that enforces AAA. When we bring a new developer on board who has never done unit testing, we have to explain the fundamental difference between a mock and a stub. The example given in that presentation violates the true definition of a stubbed component and creates confusion for a developer trying to embrace the difference (spoken from experience when I first used rhino 3.5).
  
  
The test case we are talking about is testing the behavior of a system, not state. If you are testing behavior, you should be validating that the system under test interacted with a mocked object as expected. 
  
  
Mocks for behavior.
  
Stubs to ignore all the crap that you don't care about in context of the test case, and for very handy when doing state based tests.
  
  
As an educator, its important to show that just because you can use a flat head screw driver for a phillips head screw, that doesnt mean you should.
</description><link>http://ayende.com/4438/rhino-etl-video#comment6</link><guid>http://ayende.com/4438/rhino-etl-video#comment6</guid><pubDate>Wed, 24 Mar 2010 03:17:15 GMT</pubDate></item><item><title>pb commented on Rhino ETL Video</title><description>I like AAA... If you don't, feel free to submit a patch removing it and see how it goes. :)
</description><link>http://ayende.com/4438/rhino-etl-video#comment5</link><guid>http://ayende.com/4438/rhino-etl-video#comment5</guid><pubDate>Tue, 23 Mar 2010 23:50:45 GMT</pubDate></item><item><title>P commented on Rhino ETL Video</title><description>Without compiling...
  
  
[TestMethod]
  
public void CanWriteToService()
  
{
  
var mockService = MockRepository.GenerateMock();
  
mockService.Expect(x =&gt; x.MarkUsersGenerated(null), o =&gt; o.IgnoreArguments());
  
var userRecords = TestOperation(new GenerateTestData(), new UserWriteToService(service));
  
  
mockService.VerifyAllExpectations();
  
}
  
  
The test given in the demo works, but I think its a product of rhino mocks blurring the lines between a mock and a stub. From a purist point of view, you should never test (aka have expectations) for a stubbed object. Stubbed objects enable you to isolate aspects of the system under test, but they arent (ignoring rhino mocks) testable.
</description><link>http://ayende.com/4438/rhino-etl-video#comment4</link><guid>http://ayende.com/4438/rhino-etl-video#comment4</guid><pubDate>Tue, 23 Mar 2010 18:24:31 GMT</pubDate></item><item><title>pb commented on Rhino ETL Video</title><description>Below is the code from the test - what is your recommendation?
  
  
        [TestMethod]
  
        public void CanWriteToService()
  
        {
  
            var service = MockRepository.GenerateStub
&lt;iuserservice();
  
            var userRecords = TestOperation(
  
                new GenerateTestData(),
  
                new UserWriteToService(service)
  
            );
  
  
            service.AssertWasCalled(x =&gt; x.MarkUsersGenerated(null), o =&gt; o.IgnoreArguments());
  
        }
  
&gt;</description><link>http://ayende.com/4438/rhino-etl-video#comment3</link><guid>http://ayende.com/4438/rhino-etl-video#comment3</guid><pubDate>Mon, 22 Mar 2010 21:56:49 GMT</pubDate></item><item><title>P commented on Rhino ETL Video</title><description>At around 66min into the video, the presenter used rhino mocks to stub out a service call and then asserted that the service was called in the ETL process.
  
  
From a perspective that is 100% dogmatic regarding mocks vs stubs, the presenter should have generated a mock, set an expectation that the service would be invoked in the ETL process, and then verified the expectations on the mock. Is this correct?
  
  
Let the war begin! (... and yes my next comment will be about dynamic sql vs stored procs) =D
</description><link>http://ayende.com/4438/rhino-etl-video#comment2</link><guid>http://ayende.com/4438/rhino-etl-video#comment2</guid><pubDate>Sat, 20 Mar 2010 17:16:23 GMT</pubDate></item><item><title>MattMc3 commented on Rhino ETL Video</title><description>Paul also posted an article on Code Project about Rhino ETL last year: 
[www.codeproject.com/KB/cs/ETLWithCSharp.aspx](http://www.codeproject.com/KB/cs/ETLWithCSharp.aspx)  
  
Not a bad intro.
  
</description><link>http://ayende.com/4438/rhino-etl-video#comment1</link><guid>http://ayende.com/4438/rhino-etl-video#comment1</guid><pubDate>Thu, 18 Mar 2010 18:37:26 GMT</pubDate></item></channel></rss>