Where are the tests for the file transactions?

On Tue, Jun 16, 2009 at 10:32 AM, Roelof Blom <[email protected]> wrote:

> I will apply your patch and run it on Windows 7 RC1.
>
> For future patches I would love that you don't use R# reformat as it adds a
> lot of noise.
>
> -- Roelof
>
>
> On Tue, Jun 16, 2009 at 4:39 AM, Henrik Feldt <[email protected]> wrote:
>
>>
>> Well, the thing is that the majority of the changes aren't to already
>> existing code; it was barely changed (besides re-ordering through
>> re-sharper). 1000+ lines is the FileTransaction doing p/invoke into
>> kernel32.dll and methods when for example deleting recursively with TxF.
>> Changes to the core files, TransactionInterceptor is adding new meta-data
>> and also when inspecting, a new list with methodinfos for those methods
>> wanting the tx injected.
>>
>> It seems to be working OK and I got tests for it and they pass. I haven't
>> been able to find any bugs now for over a month, so I'm fairly confident
>> it
>> works. Now, I don't plan on releasing just from that patch, but I kind of
>> need it as a baseline so I can add some other unit tests and have someone
>> running Mono and XP test it: the patch is tested on Vista but not on any
>> other Windows, so this is what I need help with; if people could apply the
>> patch and just try it, it would be nice (since I have changed a lot of
>> castle's code locally).
>>
>> So, I feel you can apply the patch and run the tests.
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of hammett
>> Sent: den 16 juni 2009 02:30
>> To: [email protected]
>> Subject: Re: Castle Transactions
>>
>>
>> I checked the list and seems very cool. It will, though, de-stabilize what
>> we have, right? You may want to consider release what we have first, then
>> make such big changes. If you're confident the changes are stable, then
>> let
>> us know too.
>>
>>
>> On Mon, Jun 15, 2009 at 1:37 PM, Henrik Feldt<[email protected]> wrote:
>> >
>> > Can I get a vote on whether the _functionality_ described below is to
>> > be added, from the rest of the people on this list, please? [+1,
>> > -1].Choice();
>> >
>> > Then, I would appreciate something on the _actual_ implemented
>> > functionality as well. [+1, -1].Choice();
>> >
>> > Either we do it or we don't do it. Very simple. Either way we should
>> > release v.1.x or v.2.0 of the service and stop delaying. I thought I
>> > was going to do PM on this project so we can start releasing stuff?
>> >
>> > Cheers
>> >
>> > -----Original Message-----
>> > From: [email protected]
>> > [mailto:[email protected]] On Behalf Of Henrik
>> > Feldt
>> > Sent: den 9 juni 2009 07:15
>> > To: [email protected]
>> > Subject: RE: Castle Transactions
>> >
>> >
>> > Alright, thanks for answering, it helps planning.
>> >
>> > I don't have time right now to do a long write-up I'm afraid, so it
>> > would be better to go by unit tests, in terms of what it does,
>> > however, here are the major features of the changes:
>> >
>> > * Introducing IMapPath to bridge gap between desktop and web
>> > development with the same tools, mostly used when referring to the
>> > same folder as is the "current folder": "~/plugins" for example.
>> > * Introducing IFileAdapter and IDictionaryAdapter to wrap either Win32
>> > API calls xor static File class calls in System.IO, or on linux
>> > possible calls to whatever DTC or file transaction APIs are available.
>> > Injected with dependency injection.
>> > * Introducing FileTransaction, plus its resource adapter with many
>> > lines of code, because p/invoke is lengthier to write code for.
>> > Contains most logic for many of the methods of the static class File,
>> but
>> implemented with FtX.
>> >        - FtX is used by Windows Update: " There are three core
>> > features in Windows Vista and Windows Server "Longhorn" that now make
>> > use of Transactional NTFS: Windows Update, System Restore, and Task
>> > Scheduler. All of these use TxF to write files to the file system
>> > within the scope of a transaction in order to handle rollback/commit
>> > in case of any exceptions, such as a system reboot due to a loss of
>> power."
>> > http://msdn.microsoft.com/en-us/magazine/cc163388.aspx as you probably
>> > already know.
>> >        - I personally haven't been able to find a wrapper for C# for
>> > this, so I believe it's something good to add to the project.
>> >        - I have tested this class extensively on my own projects so
>> > I'm pretty confident it works. If it doesn't, I'd like that input and
>> > is possible a repro.
>> >        - The class inherits things IFileTransaction, but doesn't
>> > implement everything; relies on explicit interface implementations in
>> > order to specify similar operations of files and directories which are
>> > both file system objects (i-nodes)
>> >        - By integrating with PathUtil which I built, some bugs with
>> > finding the root of a path in .net are corrected, by the use of regular
>> expressions.
>> > I think I put the test-case for it in the patch, but this as well has
>> > been tested a lot.
>> >        - Supports UNC naming of paths, but this hasn't been
>> > extensively quality assured, so there may be cases where it's relying
>> > on some part of .Net's IO namespace which doesn't support it.
>> > * Introducing SafeTxHandle which by its inheritance chain extends
>> > CriticalFinalizerObject, and hence is a good way of improving
>> > reliability in the code. Since it's a safe handle, the finalizer is
>> > guaranteed to run and hence won't leak resources. Also, things
>> > inheriting this object will be weakly ordered to go before objects not
>> > inheriting it when GCed. See this article for more info:
>> > http://msdn.microsoft.com/en-us/magazine/dd419661.aspx
>> > * The Transaction Integration infrastructure (interceptor) has been
>> > extended to allow you to inject transactions into the method using it
>> > with the InjectTransactionAttribute class.
>> >
>> > So this is it. I've also personally integrated this with the
>> > NHibernateIntegration project so that persisted configurations are
>> > transacted; obviously very easy; just create a delegating class and
>> > slap [Transaction] on top of them, and redirect all File. and
>> > Directory. calls to use IFileAdapter and IDirectoryAdapter, and you're
>> done.
>> >
>> > I can't fathom a "small code spike" for this. It's either or;
>> > implement a part of it with transactions and ALL of your file accesses
>> > need to use the same transactions of by definition of isolation in
>> > ACID, you won't be able to see the changes to the file system. (!)
>> >
>> > So this is it, not much more, I'm afraid. I hope you have gained an
>> > insight into the patch and can make a decision from this, or otherwise
>> > will let me know!
>> >
>> > Regards,
>> > Henrik
>> >
>> >
>> > -----Original Message-----
>> > From: [email protected]
>> > [mailto:[email protected]] On Behalf Of hammett
>> > Sent: den 9 juni 2009 00:53
>> > To: [email protected]
>> > Subject: Re: Castle Transactions
>> >
>> >
>> > I took a peak at the patch. Seems very promising!
>> > But I agree with Roelof, big changes should happen in small steps.
>> >
>> > Thanks
>> >
>> > On Mon, Jun 8, 2009 at 11:37 AM, Roelof Blom<[email protected]>
>> wrote:
>> >> Henrik,
>> >>
>> >> I've seen your patch and was quite overwhelmed by the sheer amount of
>> >> changes, pPerhaps you should start by explaining what your patch is
>> >> supposed to do; you sent a 4000+ line patch file out of the blue
>> >> stating 'AutomaticTransactionManagement needs to be updated with a
>> >> bit of code [...]'. Start a discussion to gain feedback, supply a
>> >> small code spike, try to gather interest for your feature on the list
>> >> and/or
>> > UserVoice.
>> >>
>> >> A sample spec like this
>> >> http://using.castleproject.org/display/AR/NHEventListenerSpecs would
>> >> also be a good thing for such a complex feature you are proposing.
>> >>
>> >> -- Roelof.
>> >>
>> >>
>> >>
>> >> On Mon, Jun 8, 2009 at 7:46 PM, Henrik Feldt <[email protected]> wrote:
>> >>>
>> >>> However, considering I can’t commit nor get anyone answering my
>> >>> e-mails about this (the patch I sent + testing it out), how am I
>> >>> supposed to get somewhere with this? If I’m supposedly in charge of
>> >>> the transaction project, surely I could have access to that specific
>> >>> part of the trunk or otherwise have someone actually commit my
>> changes?
>> >>>
>> >>>
>> >>>
>> >>> From: [email protected]
>> >>> [mailto:[email protected]] On Behalf Of Henrik
>> >>> Feldt
>> >>> Sent: den 31 maj 2009 15:22
>> >>> To: [email protected]
>> >>> Subject: RE: Castle Transactions
>> >>>
>> >>>
>> >>>
>> >>> Man, you’re great to have when I hadn’t slept for way too long! J
>> >>>
>> >>>
>> >>>
>> >>> From: [email protected]
>> >>> [mailto:[email protected]] On Behalf Of Roelof
>> >>> Blom
>> >>> Sent: den 31 maj 2009 07:52
>> >>> To: [email protected]
>> >>> Subject: Re: Castle Transactions
>> >>>
>> >>>
>> >>>
>> >>> Check Environment.OSVersion.Platform?
>> >>>
>> >>> On Sun, May 31, 2009 at 2:00 AM, Henrik Feldt <[email protected]> wrote:
>> >>>
>> >>> If there is something similar for Mono, that would be great, because
>> >>> we wouldn’t need platform-specific compiles…
>> >>>
>> >>>
>> >>>
>> >>> Regards,
>> >>>
>> >>> Henrik
>> >>>
>> >>>
>> >>>
>> >>> From: [email protected]
>> >>> [mailto:[email protected]] On Behalf Of Roelof
>> >>> Blom
>> >>> Sent: den 30 maj 2009 23:51
>> >>>
>> >>> To: [email protected]
>> >>> Subject: Re: Castle Transactions
>> >>>
>> >>>
>> >>>
>> >>> You need to check at runtime, don't you? Use something like this
>> >>>
>> >>> if(Environment.OSVersion.Version.Major > 5) { /* vista and above */
>> >>> }
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> On Sun, May 31, 2009 at 12:16 AM, Henrik Feldt <[email protected]> wrote:
>> >>>
>> >>> Actually, no, because it’s built on the vista kernel and hence
>> >>> supports TxF and TxR, but I’m not sure what to do about Win5 and
>> >>> lesser. Is there some sort of compile-constant for it? This is the
>> >>> way it currently looks, and I think I need something pre-vista and
>> >>> not
>> > just MONO:
>> >>>
>> >>>
>> >>>
>> >>> Example:
>> >>>
>> >>> /// <summary>
>> >>>
>> >>> /// Deletes a folder recursively.
>> >>>
>> >>> /// </summary>
>> >>>
>> >>> /// <param name="path"></param>
>> >>>
>> >>> public void Delete(string path)
>> >>>
>> >>> {
>> >>>
>> >>>            AssertAllowed(path);
>> >>>
>> >>> #if !MONO
>> >>>
>> >>>            IFileTransaction tx;
>> >>>
>> >>>            if (HasTransaction(out tx))
>> >>>
>> >>>            {
>> >>>
>> >>>                       ((IDirectoryAdapter)tx).Delete(path);
>> >>>
>> >>>                       return;
>> >>>
>> >>>            }
>> >>>
>> >>> #endif
>> >>>
>> >>>            Directory.Delete(path);
>> >>>
>> >>> }
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> From: [email protected]
>> >>> [mailto:[email protected]] On Behalf Of Roelof
>> >>> Blom
>> >>> Sent: den 30 maj 2009 20:15
>> >>>
>> >>> To: [email protected]
>> >>> Subject: Re: Castle Transactions
>> >>>
>> >>>
>> >>>
>> >>> Non-Vista would also be Windows 7 RC?
>> >>>
>> >>> On Sat, May 30, 2009 at 9:03 PM, Henrik Feldt <[email protected]> wrote:
>> >>>
>> >>> Cool, np. I’ve changed it. Quite ready to commit now. I guess it’s
>> >>> patching that’s it for me, right…
>> >>>
>> >>>
>> >>>
>> >>> I need someone to test on non-vista systems and mono to make sure
>> >>> the new code paths don’t become activated. Volunteers?
>> >>>
>> >>>
>> >>>
>> >>> Cheers,
>> >>>
>> >>> Henke
>> >>>
>> >>>
>> >>>
>> >>> From: [email protected]
>> >>> [mailto:[email protected]] On Behalf Of Jonathon
>> >>> Rossi
>> >>> Sent: den 30 maj 2009 16:18
>> >>> To: [email protected]
>> >>> Subject: Re: Castle Transactions
>> >>>
>> >>>
>> >>>
>> >>> Shouldn't it be using Castle's ILogger in Castle.Core, which
>> >>> indirectly can depend on log4net.
>> >>>
>> >>> On Sat, May 30, 2009 at 8:34 PM, Henrik Feldt <[email protected]> wrote:
>> >>>
>> >>> Can we make it depend on log4net?
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Jono
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>
>> >>
>> >> >
>> >>
>> >
>> >
>> >
>> > --
>> > Cheers,
>> > hammett
>> > http://hammett.castleproject.org/
>> >
>> >
>> >
>> >
>> >
>> > >
>> >
>>
>>
>>
>> --
>> Cheers,
>> hammett
>> http://hammett.castleproject.org/
>>
>>
>>
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Development List" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to