Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Search for the Holy Grail (and test it once found)

Search for the Holy Grail (and test it once found)

Grails is awesome! agreed? Good!

Now, search and testing facilities have become such a basic commodity in applications that it's almost taken for granted.

But as a Grails developer you face limitations and concerns: is the library well maintained? Does it fit the framework's paradigm?

After nominating the winners, we’ll show you the advantages of our tools of choice and take a deep dive into the juicy details.

This talk will provide short overviews and comparisons in the search for 2 pieces of the holy grail - good search and testing facilities.

3d73332968c0bf62e1ece7299deb8b37?s=128

Baruch Sadogursky

September 10, 2013
Tweet

Transcript

  1. © 2013 SpringOne 2GX. All rights reserved. Do not distribute

    without permission. Searching For the Grail And Test it once found…
  2. Agenda –Talklet A: Searching in Grail s _____

  3. –Talklet A: Searching in Grail s –Talklet B: Testing in

    Grail s Agenda _____
  4. –Talklet A: Searching in Grail s –Talklet B: Testing in

    Grail s Agenda _____
  5. None
  6. None
  7. None
  8. None
  9. None
  10. None
  11. Requirements ___________

  12. Requirements –Download binaries ___________

  13. Requirements –Download binaries –Web application ___________

  14. Requirements –Download binaries –Web application –REST API ___________

  15. Requirements –Download binaries –Web application –REST API –Backend services ___________

  16. None
  17. None
  18. None
  19. None
  20. None
  21. None
  22. None
  23. None
  24. None
  25. None
  26. Requirements ___________

  27. Requirements –Rapid Application Development ___________

  28. Requirements –Rapid Application Development –Flexible schema ___________

  29. Requirements –Rapid Application Development –Flexible schema –Java Back ground ___________

  30. Requirements –Rapid Application Development –Flexible schema –Java Back ground –Stateless

    ___________
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. None
  38. None
  39. None
  40. • • – • – –

  41. None
  42. None
  43. None
  44. None
  45. None
  46. None
  47. Requirements ___________

  48. Requirements –Standalone server ___________

  49. None
  50. None
  51. None
  52. None
  53. None
  54. None
  55. None
  56. None
  57. Requirements –Standalone server ___________

  58. Requirements –Standalone server –Grail s integration for event-driven indexing ___________

  59. None
  60. Laziness the most prominent characteristic of a developer

  61. Requirements –Standalone server –Grail s integration for event-driven indexing ___________

  62. Requirements –Standalone server –Grail s integration for event-driven indexing –Not

    only hibernate ___________
  63. None
  64. Requirements –Standalone server –Grail s integration for event-driven indexing –Not

    only hibernate ___________
  65. Requirements –Standalone server –Grail s integration for event-driven indexing –Not

    only hibernate –Embedded mode ___________
  66. Wouldn’t it be dreamy to have search up and running

    during development?
  67. Requirements –Standalone server –Grail s integration for event-driven indexing –Not

    only hibernate –Embedded mode ___________
  68. None
  69. None
  70. None
  71. None
  72. –Blazing Fast!

  73. –Blazing Fast! –Standalone scalable server

  74. –Blazing Fast! –Standalone scalable server –No embedding

  75. –Blazing Fast! –Standalone scalable server –No embedding –Grail s plugin...

  76. None
  77. Requirement How is it?

  78. Requirement How is it? Standalone server Good one!

  79. Requirement How is it? Standalone server Good one! Event driven

    indexes Nope :(
  80. Requirement How is it? Standalone server Good one! Event driven

    indexes Nope :( Grail s integration You must be kidding
  81. Requirement How is it? Standalone server Good one! Event driven

    indexes Nope :( Grail s integration You must be kidding Embedding Native in JVM?
  82. None
  83. Requirement How is it? Standalone server Good one! Event driven

    indexes Nope :( Grail s integration You must be kidding Embedding Native in JVM? How about “no”.
  84. ==

  85. None
  86. None
  87. None
  88. Requirement How is it?

  89. Requirement How is it? Grail s Integration

  90. None
  91. Requirement How is it? Grail s Integration Good one! Event

    driven index
  92. None
  93. Requirement How is it? Grail s Integration Good one! Event

    driven index Good one! (not sure about mongo) Embedding This is how it works
  94. static searchable = true

  95. static searchable = { except = ['field1'] field2 boost: 2.0

    }
  96. None
  97. None
  98. def result = Domain.search('query')

  99. def result = searchableService.search('query')

  100. Requirement How is it? Grail s Integration Good one! Event

    driven index Good one! (not sure about mongo) Embedding This is how it works Standalone server Nope :(
  101. None
  102. None
  103. Requirement How is it?

  104. Requirement How is it? Standalone server

  105. None
  106. Requirement How is it? Standalone server Hell, yeah!

  107. Requirement How is it? Standalone server Hell, yeah! Embedded mode

  108. None
  109. None
  110. Requirement How is it? Standalone server Hell, yeah! Embedded mode

    blocked
  111. Requirement How is it? Standalone server Hell, yeah! Embedded mode

    blocked Event driven index Yes, but fal se by default?!
  112. Requirement How is it? Standalone server Hell, yeah! Embedded mode

    blocked Event driven index Yes, but fal se by default?! Grail s integration
  113. None
  114. None
  115. None
  116. None
  117. None
  118. grails start-solr & grails stop-solr

  119. static enableSolrSearch = true

  120. static solrAutoIndex = true

  121. def result = Domain.searchSolr('query')

  122. def result = solrService.search('query')

  123. ...there’s more...

  124. -GASP-

  125. None
  126. Requirement How is it? Standalone server Hell, yeah! Embedded mode

    blocked Event driven index Yes, but fal se by default?! Grail s integration Fail in so many ways
  127. None
  128. None
  129. Requirement How is it?

  130. Requirement How is it? Standalone server Why, sure! Embedded mode

  131. elasticSearch { client.mode = 'local' }

  132. elasticSearch { client.mode = 'transport' }

  133. Requirement How is it? Standalone server Why, sure! Embedded mode

    One flag change
  134. Requirement How is it? Standalone server Why, sure! Embedded mode

    One flag change Grail s integration
  135. static searchable = true static searchable = { … }

    Looks familiar?
  136. None
  137. None
  138. None
  139. None
  140. None
  141. Requirement How is it? Standalone server Why, sure! Embedded mode

    One flag change Grail s integration Noam’s plugin
  142. Requirement How is it? Standalone server Why, sure! Embedded mode

    One flag change Grail s integration Noam’s fork Event driven index Noam’s fork
  143. None
  144. Show me the code!

  145. None
  146. None
  147. None
  148. "Never in the field of software development was so much

    owed by so many to so few lines of code".
  149. None
  150. Show me the code!

  151. None
  152. None
  153. None
  154. None
  155. None
  156. None
  157. None
  158. None
  159. None
  160. None
  161. None
  162. None
  163. None
  164. None
  165. Show me the code!

  166. None