[dev] Continuous Integration for Horde (was: Re: [commits] Horde branch master updated. 1e394986ba8dd83a6f2854f51c361f72fce9e7b5)

Chuck Hagenbuch chuck at horde.org
Sat Feb 27 18:46:10 UTC 2010


Quoting Gunnar Wrobel <p at rdus.de>:

> Hi Jan,
>
> Quoting Jan Schneider <jan at horde.org>:
>
>> I'm not talking for Michael obviously, but I'm still gonna add my two cent.
>>
>> Zitat von Gunnar Wrobel <p at rdus.de>:
>>
>>> Hi Micheal,
>>>
>>> Quoting Michael M Slusarz <slusarz at horde.org>:
>>>
>>> [snip]
>>>
>>>>
>>>> commit e48b8a54fc54a179be749967a6a8b6b73cc1162e
>>>> Author: Michael M Slusarz <slusarz at curecanti.org>
>>>> Date:   Mon Feb 15 23:27:31 2010 -0700
>>>>
>>>>  Another Notification rewrite.
>>>>
>>>>  First, fix Bug #8870. Fixed by removing Nag specific event type
>>>>  (nag.alarm).  However, this was just a symptom of a larger problem.
>>>>
>>>>  The problem: using application specific Notification handlers to handle
>>>>  application specific event types.  The problem comes when switching
>>>>  between applications.  Since these application handlers don't have any
>>>>  knowledge of each other, events created by one handler may not be able
>>>>  to be displayed when notify() was eventually called, because another
>>>>  status handler had replaced the original handler.
>>>>
>>>>  The solution: all notifications need to be handled by a single,
>>>>  centralized source - namely, the horde-level handlers.  Application
>>>>  specific details are instead injected into the horde-level handler to
>>>>  extend behavior.
>>>>
>>>>  While reworking the code, also provided opportunity to remove all
>>>>  application-specific code from Notification.  Horde-specific
>>>>  instantiation (i.e. adding Horde logging and Alarm decorators) is now
>>>>  done in Horde_Core rather than in the base Notification object.
>>>
>>> Cool, great! Thanks.
>>>
>>>>
>>>>  Additionally, rework some of the complexity added to the package.  I
>>>>  believe the goal of the recent Notification changes was to make the
>>>>  Notification package testable and/or usable outside of a base Horde
>>>>  install.
>>>
>>> Doing such a rewrite for testing purposes would seem wrong to me.  
>>> The  only intention was to make the package usable outside of a  
>>> standard  Horde installation.
>>>
>>> I hope it is okay to transform Horde framework packages this way.  
>>> My  expectation has always been that the framework packages should  
>>> work  that way and be as independent of each other as reasonable.  
>>> Probably  originates from the fact that the Kolab server always  
>>> relied to a  larger degree on the framework than on the  
>>> applications. This has been  somewhat difficult in the past  
>>> because of the tendency to use global  scope in the current code.  
>>> But things are improving of course.
>>
>> This expectation is absolutely correct.
>>
>>> One question concerning the unit tests: I added them because they  
>>> are  required to a certain degree by the project where I'm using  
>>> the  Horde_Notification package. I am however not 100% certain if  
>>> these  tests are useful to the Horde project. I see a tendency  
>>> towards  PHPUnit testing within Horde. But we are also ignoring  
>>> them to a  certain degree as we don't seem to care much if they  
>>> break. And I feel  that at that point unit tests may become more  
>>> of a nuisance rather  than being helpful.
>>
>> We rather need more tests than less. The fact that they break from  
>> time to time is probably due to us not having used tests that much  
>> in the past. We still have to get used to run them after each  
>> change. Some continuous integration would probably help too, but I  
>> don't see anyone having the resources at the moment to set this up.
>
> I have a high interest in doing so but of course it is always hard  
> to find the time. Nevertheless it is important to me as I consider  
> running the tests manually before each commit to be a little bit of  
> an additional burden and hard to enforce. For many commits one can  
> assumes that no test was affected. So one commits right away. Of  
> course sometimes this assumption does not hold. I consider it  
> sufficient to get an email from your friendly build bot in these  
> cases.
>
> I've seen the system in action for the past half year and it is  
> indeed very helpful to have it.
>
> A while ago I have briefly looked at some of the available  
> solutions. I admit I don't like the Java approaches like  
> phpUnderControl very much. The project that uses Horde_Notification  
> and that I'm involved in runs bitten (http://bitten.edgewall.org/).  
> It is trac based and coded in Python. It is not bad but I still  
> consider it too much of an overhead for Horde. We don't need another  
> source code viewer that links potential build failures with commits.
>
> So I lean towards something really lightweight that basically runs  
> framework/bin/test_framework for each commit and sends a mail to  
> dev at horde.org on failure. A build report and a link to git.horde.org  
> should be possible.
>
> Would that match your expectations?

Not speaking for Jan, but that sounds like a great first step to me...

-chuck


More information about the dev mailing list