You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafficserver.apache.org by Alan Cabrera <li...@toolazydogs.com> on 2014/02/25 04:51:01 UTC

Re: TDD/Unit testing ATS plugins

I wanted to start goofing around with this in a public place so people can comment/participate.  Would it make sense to do this on github and if it ever gels into something useful I could submit a patch?


Regards,
Alan

On Jan 10, 2014, at 11:41 AM, Alan Cabrera <li...@toolazydogs.com> wrote:

> +1 a good mocked library would be awesome.  
> 
> Do more experienced ATS developers know of any blockers to us writing a mock library for testing?
> 
> 
> Regards,
> Alan
> 
> On Jan 10, 2014, at 11:08 AM, Shu Kit Chan <ch...@gmail.com> wrote:
> 
>> That's just unit tests for utilities and helper classes for the plugin.
>> I also want a stub library, too, for writing unit tests for plugin.
>> 
>> 
>> On Fri, Jan 10, 2014 at 10:59 AM, James Peach <jp...@apache.org> wrote:
>> 
>>> On Jan 3, 2014, at 8:48 AM, Alan D. Cabrera <li...@toolazydogs.com> wrote:
>>> 
>>>> 
>>>> On Jan 2, 2014, at 9:04 AM, James Peach <jp...@apache.org> wrote:
>>>> 
>>>>> On Dec 31, 2013, at 2:44 PM, Alan D. Cabrera <li...@toolazydogs.com>
>>> wrote:
>>>>> 
>>>>>> 
>>>>>> On Dec 31, 2013, at 1:53 PM, James Peach <jp...@apache.org> wrote:
>>>>>> 
>>>>>>> On Dec 31, 2013, at 8:44 AM, Alan D. Cabrera <li...@toolazydogs.com>
>>> wrote:
>>>>>>> 
>>>>>>>> I'm looking for an example of an ATS plugin that has extensive unit
>>> tests.
>>>>>>> 
>>>>>>> There are none.
>>>>>>> 
>>>>>>>> I'm having problems linking my Boost unit tests against the plugin
>>> library for obvious reasons, it's a module not a shared library.
>>>>>>>> 
>>>>>>>> I tried setting up an internal static library that the tests would
>>> link against but can't seem to get the object files directly included into
>>> the ATS plugin.
>>>>>>> 
>>>>>>> There's no reason, in principle, that this would not work. For many
>>> plugins it would be reasonable to separate core functions from the Traffic
>>> Server bindings, and use a TDD approach for developing the core.
>>>>>> 
>>>>>> Yes, but Autotools is getting in the way.  I can't seem to get those
>>> core functions, which are in the static library that's shared by the plugin
>>> and tests, into the ATS plugin module.  This is the Autotools "example"
>>> that I'm looking for.
>>>>> 
>>>>> You should be able to build the core as an autotools convenience
>>> library, then link that into the test harness and the plugin.
>>>> 
>>>> Yes, I agree but getting that autotools convenience library to be
>>> included in the plugin module is what is causing problems for me.  I
>>> reference the convenience library in my plugin module but the object files
>>> do not get included within.  I could make it into a shared library but that
>>> would make things messier, imo.
>>> 
>>> I just remembered that the ESI plugin does this ....
>>> 
>>> 
>>> https://github.com/apache/trafficserver/blob/master/plugins/experimental/esi/Makefile.am
>>> 
>>> J
>>> 
> 


Re: TDD/Unit testing ATS plugins

Posted by Leif Hedstrom <zw...@apache.org>.

> On Feb 24, 2014, at 8:51 PM, Alan Cabrera <li...@toolazydogs.com> wrote:
> 
> I wanted to start goofing around with this in a public place so people can comment/participate.  Would it make sense to do this on github and if it ever gels into something useful I could submit a patch?

Yep, just fork the official ATS repo on GitHub, and when done you can make a pull request there. 

Cheers,

-- Leif 
> 
> 
> Regards,
> Alan
> 
>> On Jan 10, 2014, at 11:41 AM, Alan Cabrera <li...@toolazydogs.com> wrote:
>> 
>> +1 a good mocked library would be awesome.  
>> 
>> Do more experienced ATS developers know of any blockers to us writing a mock library for testing?
>> 
>> 
>> Regards,
>> Alan
>> 
>>> On Jan 10, 2014, at 11:08 AM, Shu Kit Chan <ch...@gmail.com> wrote:
>>> 
>>> That's just unit tests for utilities and helper classes for the plugin.
>>> I also want a stub library, too, for writing unit tests for plugin.
>>> 
>>> 
>>>> On Fri, Jan 10, 2014 at 10:59 AM, James Peach <jp...@apache.org> wrote:
>>>> 
>>>>> On Jan 3, 2014, at 8:48 AM, Alan D. Cabrera <li...@toolazydogs.com> wrote:
>>>>> 
>>>>> 
>>>>>> On Jan 2, 2014, at 9:04 AM, James Peach <jp...@apache.org> wrote:
>>>>>> 
>>>>>> On Dec 31, 2013, at 2:44 PM, Alan D. Cabrera <li...@toolazydogs.com>
>>>> wrote:
>>>>>> 
>>>>>>> 
>>>>>>>> On Dec 31, 2013, at 1:53 PM, James Peach <jp...@apache.org> wrote:
>>>>>>>> 
>>>>>>>> On Dec 31, 2013, at 8:44 AM, Alan D. Cabrera <li...@toolazydogs.com>
>>>> wrote:
>>>>>>>> 
>>>>>>>>> I'm looking for an example of an ATS plugin that has extensive unit
>>>> tests.
>>>>>>>> 
>>>>>>>> There are none.
>>>>>>>> 
>>>>>>>>> I'm having problems linking my Boost unit tests against the plugin
>>>> library for obvious reasons, it's a module not a shared library.
>>>>>>>>> 
>>>>>>>>> I tried setting up an internal static library that the tests would
>>>> link against but can't seem to get the object files directly included into
>>>> the ATS plugin.
>>>>>>>> 
>>>>>>>> There's no reason, in principle, that this would not work. For many
>>>> plugins it would be reasonable to separate core functions from the Traffic
>>>> Server bindings, and use a TDD approach for developing the core.
>>>>>>> 
>>>>>>> Yes, but Autotools is getting in the way.  I can't seem to get those
>>>> core functions, which are in the static library that's shared by the plugin
>>>> and tests, into the ATS plugin module.  This is the Autotools "example"
>>>> that I'm looking for.
>>>>>> 
>>>>>> You should be able to build the core as an autotools convenience
>>>> library, then link that into the test harness and the plugin.
>>>>> 
>>>>> Yes, I agree but getting that autotools convenience library to be
>>>> included in the plugin module is what is causing problems for me.  I
>>>> reference the convenience library in my plugin module but the object files
>>>> do not get included within.  I could make it into a shared library but that
>>>> would make things messier, imo.
>>>> 
>>>> I just remembered that the ESI plugin does this ....
>>>> 
>>>> 
>>>> https://github.com/apache/trafficserver/blob/master/plugins/experimental/esi/Makefile.am
>>>> 
>>>> J
> 

Re: TDD/Unit testing ATS plugins

Posted by Alan Cabrera <li...@toolazydogs.com>.
Thanks!  I’m going to start tinkering around in 

https://github.com/maguro/trafficserver

Feel free to watch or, even better, help!


Regards,
Alan

On Feb 25, 2014, at 3:07 PM, James Peach <jp...@apache.org> wrote:

> On Feb 24, 2014, at 7:51 PM, Alan Cabrera <li...@toolazydogs.com> wrote:
> 
>> I wanted to start goofing around with this in a public place so people can comment/participate.  Would it make sense to do this on github and if it ever gels into something useful I could submit a patch?
> 
> Take a look at ci/tsqa. I started a little integration test harness there. We also now have the --enable-example-plugins build option which installed the example plugins for testing purposes ...
> 
>> 
>> 
>> Regards,
>> Alan
>> 
>> On Jan 10, 2014, at 11:41 AM, Alan Cabrera <li...@toolazydogs.com> wrote:
>> 
>>> +1 a good mocked library would be awesome.  
>>> 
>>> Do more experienced ATS developers know of any blockers to us writing a mock library for testing?
>>> 
>>> 
>>> Regards,
>>> Alan
>>> 
>>> On Jan 10, 2014, at 11:08 AM, Shu Kit Chan <ch...@gmail.com> wrote:
>>> 
>>>> That's just unit tests for utilities and helper classes for the plugin.
>>>> I also want a stub library, too, for writing unit tests for plugin.
>>>> 
>>>> 
>>>> On Fri, Jan 10, 2014 at 10:59 AM, James Peach <jp...@apache.org> wrote:
>>>> 
>>>>> On Jan 3, 2014, at 8:48 AM, Alan D. Cabrera <li...@toolazydogs.com> wrote:
>>>>> 
>>>>>> 
>>>>>> On Jan 2, 2014, at 9:04 AM, James Peach <jp...@apache.org> wrote:
>>>>>> 
>>>>>>> On Dec 31, 2013, at 2:44 PM, Alan D. Cabrera <li...@toolazydogs.com>
>>>>> wrote:
>>>>>>> 
>>>>>>>> 
>>>>>>>> On Dec 31, 2013, at 1:53 PM, James Peach <jp...@apache.org> wrote:
>>>>>>>> 
>>>>>>>>> On Dec 31, 2013, at 8:44 AM, Alan D. Cabrera <li...@toolazydogs.com>
>>>>> wrote:
>>>>>>>>> 
>>>>>>>>>> I'm looking for an example of an ATS plugin that has extensive unit
>>>>> tests.
>>>>>>>>> 
>>>>>>>>> There are none.
>>>>>>>>> 
>>>>>>>>>> I'm having problems linking my Boost unit tests against the plugin
>>>>> library for obvious reasons, it's a module not a shared library.
>>>>>>>>>> 
>>>>>>>>>> I tried setting up an internal static library that the tests would
>>>>> link against but can't seem to get the object files directly included into
>>>>> the ATS plugin.
>>>>>>>>> 
>>>>>>>>> There's no reason, in principle, that this would not work. For many
>>>>> plugins it would be reasonable to separate core functions from the Traffic
>>>>> Server bindings, and use a TDD approach for developing the core.
>>>>>>>> 
>>>>>>>> Yes, but Autotools is getting in the way.  I can't seem to get those
>>>>> core functions, which are in the static library that's shared by the plugin
>>>>> and tests, into the ATS plugin module.  This is the Autotools "example"
>>>>> that I'm looking for.
>>>>>>> 
>>>>>>> You should be able to build the core as an autotools convenience
>>>>> library, then link that into the test harness and the plugin.
>>>>>> 
>>>>>> Yes, I agree but getting that autotools convenience library to be
>>>>> included in the plugin module is what is causing problems for me.  I
>>>>> reference the convenience library in my plugin module but the object files
>>>>> do not get included within.  I could make it into a shared library but that
>>>>> would make things messier, imo.
>>>>> 
>>>>> I just remembered that the ESI plugin does this ....
>>>>> 
>>>>> 
>>>>> https://github.com/apache/trafficserver/blob/master/plugins/experimental/esi/Makefile.am
>>>>> 
>>>>> J
>>>>> 
>>> 
>> 
> 


Re: TDD/Unit testing ATS plugins

Posted by James Peach <jp...@apache.org>.
On Feb 24, 2014, at 7:51 PM, Alan Cabrera <li...@toolazydogs.com> wrote:

> I wanted to start goofing around with this in a public place so people can comment/participate.  Would it make sense to do this on github and if it ever gels into something useful I could submit a patch?

Take a look at ci/tsqa. I started a little integration test harness there. We also now have the --enable-example-plugins build option which installed the example plugins for testing purposes ...

> 
> 
> Regards,
> Alan
> 
> On Jan 10, 2014, at 11:41 AM, Alan Cabrera <li...@toolazydogs.com> wrote:
> 
>> +1 a good mocked library would be awesome.  
>> 
>> Do more experienced ATS developers know of any blockers to us writing a mock library for testing?
>> 
>> 
>> Regards,
>> Alan
>> 
>> On Jan 10, 2014, at 11:08 AM, Shu Kit Chan <ch...@gmail.com> wrote:
>> 
>>> That's just unit tests for utilities and helper classes for the plugin.
>>> I also want a stub library, too, for writing unit tests for plugin.
>>> 
>>> 
>>> On Fri, Jan 10, 2014 at 10:59 AM, James Peach <jp...@apache.org> wrote:
>>> 
>>>> On Jan 3, 2014, at 8:48 AM, Alan D. Cabrera <li...@toolazydogs.com> wrote:
>>>> 
>>>>> 
>>>>> On Jan 2, 2014, at 9:04 AM, James Peach <jp...@apache.org> wrote:
>>>>> 
>>>>>> On Dec 31, 2013, at 2:44 PM, Alan D. Cabrera <li...@toolazydogs.com>
>>>> wrote:
>>>>>> 
>>>>>>> 
>>>>>>> On Dec 31, 2013, at 1:53 PM, James Peach <jp...@apache.org> wrote:
>>>>>>> 
>>>>>>>> On Dec 31, 2013, at 8:44 AM, Alan D. Cabrera <li...@toolazydogs.com>
>>>> wrote:
>>>>>>>> 
>>>>>>>>> I'm looking for an example of an ATS plugin that has extensive unit
>>>> tests.
>>>>>>>> 
>>>>>>>> There are none.
>>>>>>>> 
>>>>>>>>> I'm having problems linking my Boost unit tests against the plugin
>>>> library for obvious reasons, it's a module not a shared library.
>>>>>>>>> 
>>>>>>>>> I tried setting up an internal static library that the tests would
>>>> link against but can't seem to get the object files directly included into
>>>> the ATS plugin.
>>>>>>>> 
>>>>>>>> There's no reason, in principle, that this would not work. For many
>>>> plugins it would be reasonable to separate core functions from the Traffic
>>>> Server bindings, and use a TDD approach for developing the core.
>>>>>>> 
>>>>>>> Yes, but Autotools is getting in the way.  I can't seem to get those
>>>> core functions, which are in the static library that's shared by the plugin
>>>> and tests, into the ATS plugin module.  This is the Autotools "example"
>>>> that I'm looking for.
>>>>>> 
>>>>>> You should be able to build the core as an autotools convenience
>>>> library, then link that into the test harness and the plugin.
>>>>> 
>>>>> Yes, I agree but getting that autotools convenience library to be
>>>> included in the plugin module is what is causing problems for me.  I
>>>> reference the convenience library in my plugin module but the object files
>>>> do not get included within.  I could make it into a shared library but that
>>>> would make things messier, imo.
>>>> 
>>>> I just remembered that the ESI plugin does this ....
>>>> 
>>>> 
>>>> https://github.com/apache/trafficserver/blob/master/plugins/experimental/esi/Makefile.am
>>>> 
>>>> J
>>>> 
>> 
>