On 28/12/2014 14:13, Chris Price wrote: > On Sat, Dec 27, 2014 at 8:39 AM, Brice Figureau > <brice-pup...@daysofwonder.com <mailto:brice-pup...@daysofwonder.com>> > wrote: > The second problem I'm facing is testing the service. I have a coverage > of the various core functions (the ones producing the metadata > themself), but I struggle to see how to test whole endpoint from a given > request. > > Is there any pointers I should look at? > > > There are several different levels that you can test at, and it can be a > bit tricky to determine the most appropriate one... here are a few examples. > > If you want to test the ring request/response logic but you don't really > need to spin up a full Jetty instance to do it, you can do something > like this: > > https://github.com/puppetlabs/puppet-server/blob/dc81dbca89b206e00163c7d53d806e6c51c33ed0/test/unit/puppetlabs/services/master/master_core_test.clj#L12-L13 > > If you want to spin up a Jetty to test a ring app but you don't need the > full trapperkeeper stack, we have the with-test-webserver utility in the > tk-j9 testutils: > > Docs: > https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/d1f4fea3be52a937bd2f82fc512d274022cc8f49/doc/test-utils.md#with-test-webserver > Example usage: > https://github.com/puppetlabs/trapperkeeper-webserver-jetty9/blob/ad61d23dd7d3ccd7ebf96d93bc0b684d058d335d/test/clj/puppetlabs/trapperkeeper/services/webserver/jetty9_core_test.clj#L67 > > If you want to test via a trapperkeeper instance but w/o the full Puppet > Server stack, you can use the TK testutils, e.g. `with-app-with-config`: > > Docs: > https://github.com/puppetlabs/trapperkeeper/wiki/Test-Utils#with-app-with-config > Example: > https://github.com/puppetlabs/puppet-server/blob/0b5118f89d78e17e473fbdecd5414a7307b3668c/test/unit/puppetlabs/services/jruby/jruby_puppet_service_test.clj#L31 > > Finally, if you need a full death-star Puppet Server integration test > (which we don't find we usually need), we have a new testutil macro > called `with-puppetserver-running`: > > https://github.com/puppetlabs/puppet-server/blob/dc81dbca89b206e00163c7d53d806e6c51c33ed0/test/integration/puppetlabs/services/jruby/puppet_environments_int_test.clj#L112 > > That last one is pretty new and we probably need to build up some more > helper functions, test utilities, and best practices around it, though.
So I tried two of the above methods with great success, but in the case I'm focusing on it's not enough. Since it's a reimplementation of one of the ruby puppet service, I think what I should test is that the outcome of a given request by the clojure code is equivalent to what the ruby part would have returned. I think this is doable by using calling the request-handler service and comparing the result to what the clojure service would return. What do you think about that? -- Brice Figureau My Blog: http://www.masterzen.fr/ -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/54A14641.1030207%40daysofwonder.com. For more options, visit https://groups.google.com/d/optout.