On Dec 31, 2013, at 2:44 PM, Alan D. Cabrera <l...@toolazydogs.com> wrote:
> > On Dec 31, 2013, at 1:53 PM, James Peach <jpe...@apache.org> wrote: > >> On Dec 31, 2013, at 8:44 AM, Alan D. Cabrera <l...@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. > The dearth of specific replies tells me that everyone likely does integration > testing only. That, or everyone is getting ready for the new year's eve > festivities. ;) > >> For the remainder of the tests, I'd recommend an integration testing >> approach. There is a very simple integration test harness in the ci/tsqa >> directory on master. You can use that to set up an independent ATS >> installation and drive integration tests through it. > > I'll take a look at that. > >> Finally, the core has the concept of "action tags", which are useful for >> testing, but not exposed through the API. Action tags would let you test >> corner cases, by setting tags to force particular APIs to fail, for example. > > Interesting. Where can I see examples of this form of testing? It's not really used in testing right now, but that's an obvious application. If you search for "is_action_tag_set()" in the source, you can see a number of examples. J