Hi Chris,

Thanks for the answer, I'm in the process of pushing the for-review-only PR.

See below for some additional comments.

On 28/12/2014 14:13, Chris Price wrote:
> On Sat, Dec 27, 2014 at 8:39 AM, Brice Figureau
> <[email protected] <mailto:[email protected]>>
> 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.

I started writing the test before reading your answer and went with this
last solution. It has the merit of testing the full stack.

I will see how I can add some lighter tests. My problem was testing that
my routes and ring-handler were behaving correctly. I'll study the
pointers you sent to see if there's something lighter than the full
stack that can apply.


>     And finally, would it be OK for me to publish the current code as a PR
>     (not to be merged) to gather comments and reviews of the code, as this
>     is my first clojure code, there's certainly tons of issues :)
> 
> 
> Definitely!  If you could just prefix the subject with "(FOR REVIEW
> ONLY)" or similar, that would be helpful... and we will have to
> prioritize review against other deliverables, obviously, but we'd be
> happy to look at it.

Of course, I don't expect an immediate answer :)
Based on my spare time this days, I think I will slowly try to improve
the PR.

> On a related note: we need to either start including Puppet Server
> tickets/PRs in the weekly public OSS PR triage meetings, or we need to
> start scheduling some public triage meetings specifically for Puppet
> Server.  Any thoughts?

It all depends on how much external PR you expect. I think it might make
sense at start to just include those PRs in the weekly triage meetings.
Then if the number of PRs increases, it might be time to schedule a
specific triage meetings.

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/54A025D3.3070409%40daysofwonder.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to