metry 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. data/History.txt +5 -0
  2. data/Manifest.txt +376 -0
  3. data/README.txt +62 -0
  4. data/Rakefile +23 -0
  5. data/TODO +10 -0
  6. data/example/example.rb +22 -0
  7. data/features/app_tracking.feature +11 -0
  8. data/features/basic_tracking.feature +88 -0
  9. data/features/sample_application.feature +12 -0
  10. data/features/step_definitions/tracking.rb +35 -0
  11. data/features/step_definitions/web.rb +31 -0
  12. data/features/support/env.rb +22 -0
  13. data/lib/metry.rb +19 -0
  14. data/lib/metry/experiment.rb +25 -0
  15. data/lib/metry/memory.rb +27 -0
  16. data/lib/metry/rack/tracking.rb +51 -0
  17. data/lib/metry/tokyo.rb +153 -0
  18. data/radiant/example/CHANGELOG +611 -0
  19. data/radiant/example/CONTRIBUTORS +168 -0
  20. data/radiant/example/INSTALL +38 -0
  21. data/radiant/example/LICENSE +21 -0
  22. data/radiant/example/README +60 -0
  23. data/radiant/example/Rakefile +21 -0
  24. data/radiant/example/config/boot.rb +161 -0
  25. data/radiant/example/config/database.yml +20 -0
  26. data/radiant/example/config/environment.rb +83 -0
  27. data/radiant/example/config/environments/cucumber.rb +18 -0
  28. data/radiant/example/config/environments/development.rb +17 -0
  29. data/radiant/example/config/environments/production.rb +19 -0
  30. data/radiant/example/config/environments/test.rb +36 -0
  31. data/radiant/example/config/routes.rb +1 -0
  32. data/radiant/example/db/schema.rb +112 -0
  33. data/radiant/example/features/metry.feature +139 -0
  34. data/radiant/example/features/step_definitions/experiments.rb +12 -0
  35. data/radiant/example/features/step_definitions/radiant.rb +14 -0
  36. data/radiant/example/features/step_definitions/tracking.rb +35 -0
  37. data/radiant/example/features/step_definitions/web.rb +22 -0
  38. data/radiant/example/features/support/env.rb +52 -0
  39. data/radiant/example/public/.htaccess +40 -0
  40. data/radiant/example/public/404.html +8 -0
  41. data/radiant/example/public/500.html +8 -0
  42. data/radiant/example/public/dispatch.cgi +10 -0
  43. data/radiant/example/public/dispatch.fcgi +24 -0
  44. data/radiant/example/public/dispatch.rb +10 -0
  45. data/radiant/example/public/favicon.ico +0 -0
  46. data/radiant/example/public/images/admin/add-child.png +0 -0
  47. data/radiant/example/public/images/admin/brown-bottom-line.gif +0 -0
  48. data/radiant/example/public/images/admin/clear-page-cache.png +0 -0
  49. data/radiant/example/public/images/admin/collapse.png +0 -0
  50. data/radiant/example/public/images/admin/expand.png +0 -0
  51. data/radiant/example/public/images/admin/layout.png +0 -0
  52. data/radiant/example/public/images/admin/minus.png +0 -0
  53. data/radiant/example/public/images/admin/new-homepage.png +0 -0
  54. data/radiant/example/public/images/admin/new-layout.png +0 -0
  55. data/radiant/example/public/images/admin/new-snippet.png +0 -0
  56. data/radiant/example/public/images/admin/new-user.png +0 -0
  57. data/radiant/example/public/images/admin/page.png +0 -0
  58. data/radiant/example/public/images/admin/plus.png +0 -0
  59. data/radiant/example/public/images/admin/remove-disabled.png +0 -0
  60. data/radiant/example/public/images/admin/remove.png +0 -0
  61. data/radiant/example/public/images/admin/snippet.png +0 -0
  62. data/radiant/example/public/images/admin/spinner.gif +0 -0
  63. data/radiant/example/public/images/admin/view-site.gif +0 -0
  64. data/radiant/example/public/images/admin/virtual-page.png +0 -0
  65. data/radiant/example/public/javascripts/admin/admin.js +149 -0
  66. data/radiant/example/public/javascripts/admin/ruledtable.js +13 -0
  67. data/radiant/example/public/javascripts/admin/sitemap.js +132 -0
  68. data/radiant/example/public/javascripts/admin/tabcontrol.js +133 -0
  69. data/radiant/example/public/javascripts/application.js +2 -0
  70. data/radiant/example/public/javascripts/controls.js +963 -0
  71. data/radiant/example/public/javascripts/dragdrop.js +973 -0
  72. data/radiant/example/public/javascripts/effects.js +1128 -0
  73. data/radiant/example/public/javascripts/pngfix.js +39 -0
  74. data/radiant/example/public/javascripts/prototype.js +4320 -0
  75. data/radiant/example/public/javascripts/string.js +17 -0
  76. data/radiant/example/public/robots.txt +1 -0
  77. data/radiant/example/public/stylesheets/admin/main.css +640 -0
  78. data/radiant/example/script/about +3 -0
  79. data/radiant/example/script/autospec +5 -0
  80. data/radiant/example/script/breakpointer +3 -0
  81. data/radiant/example/script/console +3 -0
  82. data/radiant/example/script/cucumber +8 -0
  83. data/radiant/example/script/dbconsole +3 -0
  84. data/radiant/example/script/extension +5 -0
  85. data/radiant/example/script/generate +18 -0
  86. data/radiant/example/script/performance/benchmarker +3 -0
  87. data/radiant/example/script/performance/profiler +3 -0
  88. data/radiant/example/script/performance/request +3 -0
  89. data/radiant/example/script/process/inspector +3 -0
  90. data/radiant/example/script/process/reaper +3 -0
  91. data/radiant/example/script/process/spawner +3 -0
  92. data/radiant/example/script/process/spinner +3 -0
  93. data/radiant/example/script/runner +3 -0
  94. data/radiant/example/script/server +3 -0
  95. data/radiant/example/script/spec +5 -0
  96. data/radiant/example/script/spec_server +116 -0
  97. data/radiant/example/script/version +5 -0
  98. data/radiant/extension/README +3 -0
  99. data/radiant/extension/Rakefile +120 -0
  100. data/radiant/extension/lib/metry_tags.rb +25 -0
  101. data/radiant/extension/lib/tasks/metry_extension_tasks.rake +28 -0
  102. data/radiant/extension/metry_extension.rb +24 -0
  103. data/test/shared.rb +6 -0
  104. data/test/test_tokyo.rb +14 -0
  105. data/vendor/rufus-tokyo/CHANGELOG.txt +112 -0
  106. data/vendor/rufus-tokyo/CREDITS.txt +27 -0
  107. data/vendor/rufus-tokyo/LICENSE.txt +21 -0
  108. data/vendor/rufus-tokyo/README.txt +310 -0
  109. data/vendor/rufus-tokyo/Rakefile +118 -0
  110. data/vendor/rufus-tokyo/TODO.txt +25 -0
  111. data/vendor/rufus-tokyo/doc/decision_table.numbers +0 -0
  112. data/vendor/rufus-tokyo/doc/rdoc-style.css +320 -0
  113. data/vendor/rufus-tokyo/lib/rufus-edo.rb +3 -0
  114. data/vendor/rufus-tokyo/lib/rufus-tokyo.rb +3 -0
  115. data/vendor/rufus-tokyo/lib/rufus/edo.rb +39 -0
  116. data/vendor/rufus-tokyo/lib/rufus/edo/README.txt +106 -0
  117. data/vendor/rufus-tokyo/lib/rufus/edo/cabcore.rb +333 -0
  118. data/vendor/rufus-tokyo/lib/rufus/edo/cabinet/abstract.rb +219 -0
  119. data/vendor/rufus-tokyo/lib/rufus/edo/cabinet/table.rb +159 -0
  120. data/vendor/rufus-tokyo/lib/rufus/edo/error.rb +36 -0
  121. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant.rb +4 -0
  122. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant/abstract.rb +137 -0
  123. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant/table.rb +141 -0
  124. data/vendor/rufus-tokyo/lib/rufus/edo/tabcore.rb +567 -0
  125. data/vendor/rufus-tokyo/lib/rufus/tokyo.rb +58 -0
  126. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/abstract.rb +568 -0
  127. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/lib.rb +230 -0
  128. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/table.rb +753 -0
  129. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/util.rb +425 -0
  130. data/vendor/rufus-tokyo/lib/rufus/tokyo/config.rb +161 -0
  131. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia.rb +43 -0
  132. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia/lib.rb +65 -0
  133. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia/words.rb +71 -0
  134. data/vendor/rufus-tokyo/lib/rufus/tokyo/hmethods.rb +111 -0
  135. data/vendor/rufus-tokyo/lib/rufus/tokyo/query.rb +102 -0
  136. data/vendor/rufus-tokyo/lib/rufus/tokyo/transactions.rb +74 -0
  137. data/vendor/rufus-tokyo/lib/rufus/tokyo/ttcommons.rb +59 -0
  138. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant.rb +35 -0
  139. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/abstract.rb +146 -0
  140. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/lib.rb +153 -0
  141. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/table.rb +162 -0
  142. data/vendor/rufus-tokyo/rufus-tokyo.gemspec +25 -0
  143. data/vendor/rufus-tokyo/spec/cabinet_spec.rb +472 -0
  144. data/vendor/rufus-tokyo/spec/cabinetconfig_spec.rb +82 -0
  145. data/vendor/rufus-tokyo/spec/edo_cabinet_spec.rb +447 -0
  146. data/vendor/rufus-tokyo/spec/edo_ntyrant_spec.rb +299 -0
  147. data/vendor/rufus-tokyo/spec/edo_ntyrant_table_spec.rb +462 -0
  148. data/vendor/rufus-tokyo/spec/edo_table_spec.rb +560 -0
  149. data/vendor/rufus-tokyo/spec/hmethods_spec.rb +44 -0
  150. data/vendor/rufus-tokyo/spec/incr.lua +20 -0
  151. data/vendor/rufus-tokyo/spec/spec.rb +9 -0
  152. data/vendor/rufus-tokyo/spec/spec_base.rb +23 -0
  153. data/vendor/rufus-tokyo/spec/start_tyrants.sh +26 -0
  154. data/vendor/rufus-tokyo/spec/stop_tyrants.sh +9 -0
  155. data/vendor/rufus-tokyo/spec/table_spec.rb +567 -0
  156. data/vendor/rufus-tokyo/spec/tyrant_spec.rb +309 -0
  157. data/vendor/rufus-tokyo/spec/tyrant_table_spec.rb +479 -0
  158. data/vendor/rufus-tokyo/spec/util_list_spec.rb +200 -0
  159. data/vendor/rufus-tokyo/spec/util_map_spec.rb +132 -0
  160. data/vendor/rufus-tokyo/tasks/dev.rb +70 -0
  161. data/vendor/rufus-tokyo/test/bm0.rb +353 -0
  162. data/vendor/rufus-tokyo/test/bm1_compression.rb +54 -0
  163. data/vendor/rufus-tokyo/test/con0.rb +30 -0
  164. data/vendor/rufus-tokyo/test/mem.rb +49 -0
  165. data/vendor/rufus-tokyo/test/mem1.rb +44 -0
  166. data/vendor/rufus-tokyo/test/readme0.rb +17 -0
  167. data/vendor/rufus-tokyo/test/readme1.rb +21 -0
  168. data/vendor/rufus-tokyo/test/readme2.rb +15 -0
  169. data/vendor/rufus-tokyo/test/readme3.rb +24 -0
  170. data/vendor/rufus-tokyo/test/readmes_test.sh +17 -0
  171. data/vendor/webrat/.document +4 -0
  172. data/vendor/webrat/History.txt +358 -0
  173. data/vendor/webrat/MIT-LICENSE.txt +19 -0
  174. data/vendor/webrat/README.rdoc +85 -0
  175. data/vendor/webrat/Rakefile +200 -0
  176. data/vendor/webrat/install.rb +1 -0
  177. data/vendor/webrat/lib/webrat.rb +31 -0
  178. data/vendor/webrat/lib/webrat/core.rb +14 -0
  179. data/vendor/webrat/lib/webrat/core/configuration.rb +102 -0
  180. data/vendor/webrat/lib/webrat/core/elements/area.rb +31 -0
  181. data/vendor/webrat/lib/webrat/core/elements/element.rb +33 -0
  182. data/vendor/webrat/lib/webrat/core/elements/field.rb +411 -0
  183. data/vendor/webrat/lib/webrat/core/elements/form.rb +103 -0
  184. data/vendor/webrat/lib/webrat/core/elements/label.rb +31 -0
  185. data/vendor/webrat/lib/webrat/core/elements/link.rb +93 -0
  186. data/vendor/webrat/lib/webrat/core/elements/select_option.rb +35 -0
  187. data/vendor/webrat/lib/webrat/core/locators.rb +20 -0
  188. data/vendor/webrat/lib/webrat/core/locators/area_locator.rb +38 -0
  189. data/vendor/webrat/lib/webrat/core/locators/button_locator.rb +54 -0
  190. data/vendor/webrat/lib/webrat/core/locators/field_by_id_locator.rb +37 -0
  191. data/vendor/webrat/lib/webrat/core/locators/field_labeled_locator.rb +56 -0
  192. data/vendor/webrat/lib/webrat/core/locators/field_locator.rb +25 -0
  193. data/vendor/webrat/lib/webrat/core/locators/field_named_locator.rb +41 -0
  194. data/vendor/webrat/lib/webrat/core/locators/form_locator.rb +19 -0
  195. data/vendor/webrat/lib/webrat/core/locators/label_locator.rb +34 -0
  196. data/vendor/webrat/lib/webrat/core/locators/link_locator.rb +74 -0
  197. data/vendor/webrat/lib/webrat/core/locators/locator.rb +20 -0
  198. data/vendor/webrat/lib/webrat/core/locators/select_option_locator.rb +59 -0
  199. data/vendor/webrat/lib/webrat/core/logging.rb +24 -0
  200. data/vendor/webrat/lib/webrat/core/matchers.rb +4 -0
  201. data/vendor/webrat/lib/webrat/core/matchers/have_content.rb +73 -0
  202. data/vendor/webrat/lib/webrat/core/matchers/have_selector.rb +74 -0
  203. data/vendor/webrat/lib/webrat/core/matchers/have_tag.rb +21 -0
  204. data/vendor/webrat/lib/webrat/core/matchers/have_xpath.rb +147 -0
  205. data/vendor/webrat/lib/webrat/core/methods.rb +63 -0
  206. data/vendor/webrat/lib/webrat/core/mime.rb +29 -0
  207. data/vendor/webrat/lib/webrat/core/save_and_open_page.rb +48 -0
  208. data/vendor/webrat/lib/webrat/core/scope.rb +350 -0
  209. data/vendor/webrat/lib/webrat/core/session.rb +290 -0
  210. data/vendor/webrat/lib/webrat/core/xml.rb +115 -0
  211. data/vendor/webrat/lib/webrat/core/xml/hpricot.rb +19 -0
  212. data/vendor/webrat/lib/webrat/core/xml/nokogiri.rb +76 -0
  213. data/vendor/webrat/lib/webrat/core/xml/rexml.rb +24 -0
  214. data/vendor/webrat/lib/webrat/core_extensions/blank.rb +58 -0
  215. data/vendor/webrat/lib/webrat/core_extensions/deprecate.rb +8 -0
  216. data/vendor/webrat/lib/webrat/core_extensions/detect_mapped.rb +12 -0
  217. data/vendor/webrat/lib/webrat/core_extensions/meta_class.rb +6 -0
  218. data/vendor/webrat/lib/webrat/core_extensions/nil_to_param.rb +5 -0
  219. data/vendor/webrat/lib/webrat/core_extensions/tcp_socket.rb +27 -0
  220. data/vendor/webrat/lib/webrat/mechanize.rb +74 -0
  221. data/vendor/webrat/lib/webrat/merb.rb +9 -0
  222. data/vendor/webrat/lib/webrat/merb_multipart_support.rb +27 -0
  223. data/vendor/webrat/lib/webrat/merb_session.rb +80 -0
  224. data/vendor/webrat/lib/webrat/rack.rb +24 -0
  225. data/vendor/webrat/lib/webrat/rack_test.rb +32 -0
  226. data/vendor/webrat/lib/webrat/rails.rb +105 -0
  227. data/vendor/webrat/lib/webrat/rspec-rails.rb +10 -0
  228. data/vendor/webrat/lib/webrat/selenium.rb +81 -0
  229. data/vendor/webrat/lib/webrat/selenium/application_server_factory.rb +40 -0
  230. data/vendor/webrat/lib/webrat/selenium/application_servers.rb +5 -0
  231. data/vendor/webrat/lib/webrat/selenium/application_servers/base.rb +46 -0
  232. data/vendor/webrat/lib/webrat/selenium/application_servers/external.rb +26 -0
  233. data/vendor/webrat/lib/webrat/selenium/application_servers/merb.rb +50 -0
  234. data/vendor/webrat/lib/webrat/selenium/application_servers/rails.rb +44 -0
  235. data/vendor/webrat/lib/webrat/selenium/application_servers/sinatra.rb +37 -0
  236. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/button.js +19 -0
  237. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/label.js +16 -0
  238. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webrat.js +5 -0
  239. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlink.js +12 -0
  240. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratlinkwithin.js +15 -0
  241. data/vendor/webrat/lib/webrat/selenium/location_strategy_javascript/webratselectwithoption.js +5 -0
  242. data/vendor/webrat/lib/webrat/selenium/matchers.rb +4 -0
  243. data/vendor/webrat/lib/webrat/selenium/matchers/have_content.rb +66 -0
  244. data/vendor/webrat/lib/webrat/selenium/matchers/have_selector.rb +49 -0
  245. data/vendor/webrat/lib/webrat/selenium/matchers/have_tag.rb +72 -0
  246. data/vendor/webrat/lib/webrat/selenium/matchers/have_xpath.rb +45 -0
  247. data/vendor/webrat/lib/webrat/selenium/selenium_extensions.js +6 -0
  248. data/vendor/webrat/lib/webrat/selenium/selenium_rc_server.rb +84 -0
  249. data/vendor/webrat/lib/webrat/selenium/selenium_session.rb +248 -0
  250. data/vendor/webrat/lib/webrat/selenium/silence_stream.rb +18 -0
  251. data/vendor/webrat/lib/webrat/sinatra.rb +44 -0
  252. data/vendor/webrat/spec/fakes/test_session.rb +34 -0
  253. data/vendor/webrat/spec/integration/merb/Rakefile +35 -0
  254. data/vendor/webrat/spec/integration/merb/app/controllers/application.rb +2 -0
  255. data/vendor/webrat/spec/integration/merb/app/controllers/exceptions.rb +13 -0
  256. data/vendor/webrat/spec/integration/merb/app/controllers/testing.rb +27 -0
  257. data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_acceptable.html.erb +63 -0
  258. data/vendor/webrat/spec/integration/merb/app/views/exceptions/not_found.html.erb +47 -0
  259. data/vendor/webrat/spec/integration/merb/app/views/layout/application.html.erb +12 -0
  260. data/vendor/webrat/spec/integration/merb/app/views/testing/show_form.html.erb +27 -0
  261. data/vendor/webrat/spec/integration/merb/app/views/testing/upload.html.erb +9 -0
  262. data/vendor/webrat/spec/integration/merb/config/environments/development.rb +15 -0
  263. data/vendor/webrat/spec/integration/merb/config/environments/rake.rb +11 -0
  264. data/vendor/webrat/spec/integration/merb/config/environments/test.rb +14 -0
  265. data/vendor/webrat/spec/integration/merb/config/init.rb +25 -0
  266. data/vendor/webrat/spec/integration/merb/config/rack.rb +11 -0
  267. data/vendor/webrat/spec/integration/merb/config/router.rb +34 -0
  268. data/vendor/webrat/spec/integration/merb/spec/spec.opts +1 -0
  269. data/vendor/webrat/spec/integration/merb/spec/spec_helper.rb +24 -0
  270. data/vendor/webrat/spec/integration/merb/spec/webrat_spec.rb +39 -0
  271. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/app_script.rb +31 -0
  272. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/common.rb +64 -0
  273. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/gem_ext.rb +124 -0
  274. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/main.thor +150 -0
  275. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/ops.rb +93 -0
  276. data/vendor/webrat/spec/integration/merb/tasks/merb.thor/utils.rb +40 -0
  277. data/vendor/webrat/spec/integration/rack/Rakefile +5 -0
  278. data/vendor/webrat/spec/integration/rack/rack_app.rb +16 -0
  279. data/vendor/webrat/spec/integration/rack/test/test_helper.rb +20 -0
  280. data/vendor/webrat/spec/integration/rack/test/webrat_rack_test.rb +67 -0
  281. data/vendor/webrat/spec/integration/rails/Rakefile +30 -0
  282. data/vendor/webrat/spec/integration/rails/app/controllers/application.rb +15 -0
  283. data/vendor/webrat/spec/integration/rails/app/controllers/buttons_controller.rb +7 -0
  284. data/vendor/webrat/spec/integration/rails/app/controllers/fields_controller.rb +4 -0
  285. data/vendor/webrat/spec/integration/rails/app/controllers/links_controller.rb +7 -0
  286. data/vendor/webrat/spec/integration/rails/app/controllers/webrat_controller.rb +43 -0
  287. data/vendor/webrat/spec/integration/rails/app/helpers/buttons_helper.rb +2 -0
  288. data/vendor/webrat/spec/integration/rails/app/helpers/fields_helper.rb +2 -0
  289. data/vendor/webrat/spec/integration/rails/app/helpers/links_helper.rb +2 -0
  290. data/vendor/webrat/spec/integration/rails/app/views/buttons/show.html.erb +11 -0
  291. data/vendor/webrat/spec/integration/rails/app/views/fields/show.html.erb +9 -0
  292. data/vendor/webrat/spec/integration/rails/app/views/links/show.html.erb +5 -0
  293. data/vendor/webrat/spec/integration/rails/app/views/webrat/before_redirect_form.html.erb +4 -0
  294. data/vendor/webrat/spec/integration/rails/app/views/webrat/buttons.html.erb +11 -0
  295. data/vendor/webrat/spec/integration/rails/app/views/webrat/form.html.erb +28 -0
  296. data/vendor/webrat/spec/integration/rails/config/boot.rb +109 -0
  297. data/vendor/webrat/spec/integration/rails/config/environment.rb +12 -0
  298. data/vendor/webrat/spec/integration/rails/config/environments/development.rb +17 -0
  299. data/vendor/webrat/spec/integration/rails/config/environments/selenium.rb +22 -0
  300. data/vendor/webrat/spec/integration/rails/config/environments/test.rb +22 -0
  301. data/vendor/webrat/spec/integration/rails/config/initializers/inflections.rb +10 -0
  302. data/vendor/webrat/spec/integration/rails/config/initializers/mime_types.rb +5 -0
  303. data/vendor/webrat/spec/integration/rails/config/initializers/new_rails_defaults.rb +17 -0
  304. data/vendor/webrat/spec/integration/rails/config/locales/en.yml +5 -0
  305. data/vendor/webrat/spec/integration/rails/config/routes.rb +18 -0
  306. data/vendor/webrat/spec/integration/rails/public/404.html +30 -0
  307. data/vendor/webrat/spec/integration/rails/public/422.html +30 -0
  308. data/vendor/webrat/spec/integration/rails/public/500.html +33 -0
  309. data/vendor/webrat/spec/integration/rails/script/about +4 -0
  310. data/vendor/webrat/spec/integration/rails/script/console +3 -0
  311. data/vendor/webrat/spec/integration/rails/script/dbconsole +3 -0
  312. data/vendor/webrat/spec/integration/rails/script/destroy +3 -0
  313. data/vendor/webrat/spec/integration/rails/script/generate +3 -0
  314. data/vendor/webrat/spec/integration/rails/script/performance/benchmarker +3 -0
  315. data/vendor/webrat/spec/integration/rails/script/performance/profiler +3 -0
  316. data/vendor/webrat/spec/integration/rails/script/performance/request +3 -0
  317. data/vendor/webrat/spec/integration/rails/script/plugin +3 -0
  318. data/vendor/webrat/spec/integration/rails/script/process/inspector +3 -0
  319. data/vendor/webrat/spec/integration/rails/script/process/reaper +3 -0
  320. data/vendor/webrat/spec/integration/rails/script/process/spawner +3 -0
  321. data/vendor/webrat/spec/integration/rails/script/runner +3 -0
  322. data/vendor/webrat/spec/integration/rails/script/server +3 -0
  323. data/vendor/webrat/spec/integration/rails/test/integration/button_click_test.rb +80 -0
  324. data/vendor/webrat/spec/integration/rails/test/integration/fill_in_test.rb +24 -0
  325. data/vendor/webrat/spec/integration/rails/test/integration/link_click_test.rb +27 -0
  326. data/vendor/webrat/spec/integration/rails/test/integration/webrat_test.rb +97 -0
  327. data/vendor/webrat/spec/integration/rails/test/test_helper.rb +25 -0
  328. data/vendor/webrat/spec/integration/sinatra/Rakefile +5 -0
  329. data/vendor/webrat/spec/integration/sinatra/classic_app.rb +64 -0
  330. data/vendor/webrat/spec/integration/sinatra/modular_app.rb +16 -0
  331. data/vendor/webrat/spec/integration/sinatra/test/classic_app_test.rb +37 -0
  332. data/vendor/webrat/spec/integration/sinatra/test/modular_app_test.rb +18 -0
  333. data/vendor/webrat/spec/integration/sinatra/test/test_helper.rb +16 -0
  334. data/vendor/webrat/spec/private/core/configuration_spec.rb +116 -0
  335. data/vendor/webrat/spec/private/core/field_spec.rb +85 -0
  336. data/vendor/webrat/spec/private/core/link_spec.rb +24 -0
  337. data/vendor/webrat/spec/private/core/logging_spec.rb +10 -0
  338. data/vendor/webrat/spec/private/core/session_spec.rb +195 -0
  339. data/vendor/webrat/spec/private/mechanize/mechanize_session_spec.rb +81 -0
  340. data/vendor/webrat/spec/private/merb/attaches_file_spec.rb +93 -0
  341. data/vendor/webrat/spec/private/merb/merb_session_spec.rb +61 -0
  342. data/vendor/webrat/spec/private/nokogiri_spec.rb +77 -0
  343. data/vendor/webrat/spec/private/rails/attaches_file_spec.rb +81 -0
  344. data/vendor/webrat/spec/private/rails/rails_session_spec.rb +110 -0
  345. data/vendor/webrat/spec/private/selenium/application_servers/rails_spec.rb +26 -0
  346. data/vendor/webrat/spec/public/basic_auth_spec.rb +24 -0
  347. data/vendor/webrat/spec/public/check_spec.rb +191 -0
  348. data/vendor/webrat/spec/public/choose_spec.rb +118 -0
  349. data/vendor/webrat/spec/public/click_area_spec.rb +106 -0
  350. data/vendor/webrat/spec/public/click_button_spec.rb +496 -0
  351. data/vendor/webrat/spec/public/click_link_spec.rb +511 -0
  352. data/vendor/webrat/spec/public/fill_in_spec.rb +209 -0
  353. data/vendor/webrat/spec/public/locators/field_by_xpath_spec.rb +19 -0
  354. data/vendor/webrat/spec/public/locators/field_labeled_spec.rb +172 -0
  355. data/vendor/webrat/spec/public/locators/field_with_id_spec.rb +16 -0
  356. data/vendor/webrat/spec/public/matchers/contain_spec.rb +114 -0
  357. data/vendor/webrat/spec/public/matchers/have_selector_spec.rb +142 -0
  358. data/vendor/webrat/spec/public/matchers/have_tag_spec.rb +39 -0
  359. data/vendor/webrat/spec/public/matchers/have_xpath_spec.rb +136 -0
  360. data/vendor/webrat/spec/public/reload_spec.rb +10 -0
  361. data/vendor/webrat/spec/public/save_and_open_spec.rb +70 -0
  362. data/vendor/webrat/spec/public/select_date_spec.rb +112 -0
  363. data/vendor/webrat/spec/public/select_datetime_spec.rb +137 -0
  364. data/vendor/webrat/spec/public/select_spec.rb +249 -0
  365. data/vendor/webrat/spec/public/select_time_spec.rb +100 -0
  366. data/vendor/webrat/spec/public/selenium/application_server_factory_spec.rb +49 -0
  367. data/vendor/webrat/spec/public/selenium/application_servers/external_spec.rb +12 -0
  368. data/vendor/webrat/spec/public/selenium/selenium_session_spec.rb +37 -0
  369. data/vendor/webrat/spec/public/set_hidden_field_spec.rb +5 -0
  370. data/vendor/webrat/spec/public/submit_form_spec.rb +5 -0
  371. data/vendor/webrat/spec/public/visit_spec.rb +58 -0
  372. data/vendor/webrat/spec/public/within_spec.rb +177 -0
  373. data/vendor/webrat/spec/rcov.opts +1 -0
  374. data/vendor/webrat/spec/spec.opts +2 -0
  375. data/vendor/webrat/spec/spec_helper.rb +50 -0
  376. data/vendor/webrat/vendor/selenium-server.jar +0 -0
  377. metadata +442 -0
@@ -0,0 +1,200 @@
1
+
2
+ #
3
+ # Specifying rufus-tokyo
4
+ #
5
+ # Tue Jan 27 16:30:34 JST 2009
6
+ #
7
+
8
+ require File.dirname(__FILE__) + '/spec_base'
9
+
10
+ require 'rufus/tokyo'
11
+
12
+
13
+ describe 'Rufus::Tokyo::List' do
14
+
15
+ before do
16
+ @l = Rufus::Tokyo::List.new
17
+ end
18
+ after do
19
+ @l.free
20
+ end
21
+
22
+ it 'should be empty initially' do
23
+ @l.size.should.be.zero
24
+ end
25
+
26
+ it 'should respond to <<' do
27
+ l = @l << 'a'
28
+ @l.size.should.equal(1)
29
+ l.should.equal(@l)
30
+ end
31
+
32
+ it 'should respond to push' do
33
+ l = @l.push('a')
34
+ @l.size.should.equal(1)
35
+ l.should.equal(@l)
36
+ end
37
+
38
+ it 'should respond to push with multiple arguments' do
39
+ @l.push('a', 'b', 'c')
40
+ @l.size.should.equal(3)
41
+ end
42
+
43
+ it 'should respond to pop' do
44
+ @l.pop.should.be.nil
45
+ end
46
+
47
+ it 'should respond to shift' do
48
+ @l.shift.should.be.nil
49
+ end
50
+
51
+ it 'should accept strings with \\0' do
52
+ s = "tokyo#{0.chr}cabinet"
53
+ @l << s
54
+ @l.pop.should.equal(s)
55
+ end
56
+
57
+ it 'should iterate over values with \\0' do
58
+ @l << 'ab' << "c#{0.chr}d" << 'ef'
59
+ s = @l.inject('') { |s, e| s << e }
60
+ s.should.equal("abc#{0.chr}def")
61
+ end
62
+
63
+ it 'should pop values with \\0' do
64
+ s = "shinbashi#{0.chr}closet"
65
+ @l << s
66
+ @l.pop.should.equal(s)
67
+ end
68
+
69
+ it 'should shift values with \\0' do
70
+ s = "shinbashi#{0.chr}closet"
71
+ @l << s
72
+ @l.shift.should.equal(s)
73
+ end
74
+
75
+ it 'should unshift values with \\0' do
76
+ s = "shinbashi#{0.chr}closet"
77
+ @l.unshift(s)
78
+ @l[0].should.equal(s)
79
+ end
80
+
81
+ it 'should remove values with \\0' do
82
+ s = "shinbashi#{0.chr}closet"
83
+ @l << s
84
+ @l.delete_at(0).should.equal(s)
85
+ end
86
+
87
+ it 'should overwrite values with \\0' do
88
+ s0 = "shinbashi#{0.chr}closet"
89
+ s1 = "sugamo#{0.chr}drawer"
90
+ @l << s0
91
+ @l[0] = s1
92
+ @l[0].should.equal(s1)
93
+ end
94
+
95
+ #it 'should delete [multiple] values' do
96
+ # %w[ a b a c a ].each { |e| @l << e }
97
+ # @l.delete('a')
98
+ # @l.to_a.should.equal(%w[ b c ])
99
+ #end
100
+ #it 'should return the deleted value' do
101
+ # %w[ a b a c a ].each { |e| @l << e }
102
+ # @l.delete('d').should.be.nil
103
+ #end
104
+ #it 'should return the value of the default block when deleting a missing elt' do
105
+ # %w[ a b a c a ].each { |e| @l << e }
106
+ # @l.delete('d') { 'nada' }.should.equal('nada')
107
+ #end
108
+
109
+ unless defined?(JRUBY_VERSION)
110
+ it 'should not accept non-string values' do
111
+ lambda {
112
+ @l << 2
113
+ }.should.raise(ArgumentError)
114
+ end
115
+ end
116
+
117
+ end
118
+
119
+ describe 'Rufus::Tokyo::List' do
120
+
121
+ it 'should close itself and return its ruby version upon #release' do
122
+
123
+ l = Rufus::Tokyo::List.new << 'a' << 'b' << 'c'
124
+ l.release.should.equal(%w{ a b c })
125
+ l.instance_variable_get(:@list).should.be.nil
126
+ end
127
+
128
+ it 'can be created from a Ruby Array' do
129
+
130
+ l = Rufus::Tokyo::List.new(%w{ a b c })
131
+ l.pointer.is_a?(FFI::Pointer).should.be.true
132
+ end
133
+ end
134
+
135
+ describe 'Rufus::Tokyo::List' do
136
+
137
+ before do
138
+ @l = Rufus::Tokyo::List.new
139
+ @l << 'a' << 'b' << 'c' << 'd'
140
+ end
141
+ after do
142
+ @l.free
143
+ end
144
+
145
+ it 'should respond to pop' do
146
+ @l.pop.should.equal('d')
147
+ @l.size.should.equal(3)
148
+ end
149
+
150
+ it 'should respond to shift' do
151
+ @l.shift.should.equal('a')
152
+ @l.size.should.equal(3)
153
+ end
154
+
155
+ it 'should respond to unshift' do
156
+ @l.unshift('z')
157
+ @l.size.should.equal(5)
158
+ end
159
+
160
+ it 'should slice correctly' do
161
+ @l[1].should.equal('b')
162
+ @l[-1].should.equal('d')
163
+ @l[0, 2].should.equal(%w{ a b })
164
+ @l[0..-1].should.equal(%w{ a b c d })
165
+ @l[0..1].should.equal(%w{ a b })
166
+ @l[0, -1].should.be.nil
167
+ end
168
+ end
169
+
170
+ describe 'Rufus::Tokyo::List' do
171
+
172
+ before do
173
+ @l = Rufus::Tokyo::List.new
174
+ @l.push(*%w{ - - - - e })
175
+ end
176
+ after do
177
+ @l.free
178
+ end
179
+
180
+ it 'should overwrite slices (0)' do
181
+ @l[0, 3] = %w{ a b c }
182
+ @l.to_a.should.equal(%w{ a b c - e })
183
+ end
184
+
185
+ it 'should overwrite slices (1)' do
186
+ @l[1..2] = %w{ a b }
187
+ @l.to_a.should.equal(%w{ - a b - e })
188
+ end
189
+
190
+ it 'should overwrite slices (2)' do
191
+ @l[0, 2] = '?'
192
+ @l.to_a.should.equal(%w{ ? - - e })
193
+ end
194
+
195
+ it 'should overwrite slices (3)' do
196
+ @l[0..2] = '?'
197
+ @l.to_a.should.equal(%w{ ? - e })
198
+ end
199
+ end
200
+
@@ -0,0 +1,132 @@
1
+
2
+ #
3
+ # Specifying rufus-tokyo
4
+ #
5
+ # Mon Jan 26 15:10:03 JST 2009
6
+ #
7
+
8
+ require File.dirname(__FILE__) + '/spec_base'
9
+
10
+ require 'rufus/tokyo'
11
+
12
+
13
+ describe 'Rufus::Tokyo::Map' do
14
+
15
+ before do
16
+ @m = Rufus::Tokyo::Map.new
17
+ end
18
+ after do
19
+ @m.free
20
+ end
21
+
22
+ it 'should be empty initially' do
23
+ @m.size.should.be.zero
24
+ end
25
+
26
+ it 'should respond to #size and #length' do
27
+ @m.size.should.be.zero
28
+ @m.length.should.be.zero
29
+ end
30
+
31
+ it 'should return nil when there is no value for a key' do
32
+ @m['missing'].should.be.nil
33
+ end
34
+
35
+ it 'should accept input' do
36
+ @m['a'] = 'b'
37
+ @m.size.should.equal(1)
38
+ end
39
+
40
+ it 'should fetch values' do
41
+ @m['a'] = 'b'
42
+ @m['a'].should.equal('b')
43
+ end
44
+
45
+ it 'should accept and restitute strings with \\0' do
46
+ s = "shinjuku#{0.chr}jiken"
47
+ @m[s] = s
48
+ @m[s].should.equal(s)
49
+ end
50
+
51
+ it 'should delete value with \\0' do
52
+ s = "shinjuku#{0.chr}jiken"
53
+ @m[s] = s
54
+ @m.delete(s).should.equal(s)
55
+ end
56
+
57
+ it 'should iterate over values with \\0' do
58
+ s = "oumya#{0.chr}box"
59
+ (1..4).inject(@m) { |m, i| m["#{s}_k#{i}"] = "#{s}_v#{i}"; m }
60
+ a = @m.inject([]) { |a, (k, v)| a << k << v; a }
61
+ a.each { |e| e.should.match(/^oumya.box_[kv]/) }
62
+ end
63
+
64
+ unless defined?(JRUBY_VERSION)
65
+ it 'should raise an ArgumentError on non-string input' do
66
+ lambda {
67
+ @m[1] = 2
68
+ }.should.raise(ArgumentError)
69
+ lambda {
70
+ @m['a'] = 2
71
+ }.should.raise(ArgumentError)
72
+ lambda {
73
+ @m[1] = 'b'
74
+ }.should.raise(ArgumentError)
75
+ end
76
+ end
77
+ end
78
+
79
+ describe 'Rufus::Tokyo::Map class, like the Ruby Hash class,' do
80
+
81
+ it 'should respond to #[]' do
82
+ m = Rufus::Tokyo::Map[ 'a' => 'b' ]
83
+ m.class.should.equal(Rufus::Tokyo::Map)
84
+ m['a'].should.equal('b')
85
+ m.free
86
+ end
87
+ end
88
+
89
+ describe 'Rufus::Tokyo::Map, like a Ruby Hash,' do
90
+
91
+ before do
92
+ @m = Rufus::Tokyo::Map[%w{ a A b B c C }]
93
+ end
94
+ after do
95
+ @m.free
96
+ end
97
+
98
+ it 'should list keys' do
99
+ @m.keys.should.equal(%w{ a b c })
100
+ end
101
+
102
+ it 'should list values' do
103
+ @m.values.should.equal(%w{ A B C })
104
+ end
105
+
106
+ it 'should respond to merge (and return a Hash)' do
107
+ h = @m.merge('d' => 'D')
108
+ h.should.equal(::Hash[*%w{ a A b B c C d D }])
109
+ @m.size.should.equal(3)
110
+ end
111
+
112
+ it 'should respond to merge! (and return self)' do
113
+ r = @m.merge!('d' => 'D')
114
+ @m.size.should.equal(4)
115
+ r.should.equal(@m)
116
+ end
117
+ end
118
+
119
+ describe 'Rufus::Tokyo::Map, as an Enumerable,' do
120
+
121
+ before do
122
+ @m = Rufus::Tokyo::Map[%w{ a A b B c C }]
123
+ end
124
+ after do
125
+ @m.free
126
+ end
127
+
128
+ it 'should respond to collect' do
129
+ @m.inject('') { |s, (k, v)| s << "#{k}#{v}" }.should.equal('aAbBcC')
130
+ end
131
+ end
132
+
@@ -0,0 +1,70 @@
1
+ desc "tasks for handling extension libraries"
2
+ namespace :ext do
3
+
4
+ def git_repo
5
+ {
6
+ :cabinet => "git://github.com/etrepum/tokyo-cabinet.git",
7
+ :tyrant => "git://github.com/etrepum/tokyo-tyrant.git"
8
+ }
9
+ end
10
+
11
+ def extensions
12
+ [:cabinet, :tyrant]
13
+ end
14
+
15
+ def ext_root_path
16
+ File.expand_path(File.join(File.dirname(__FILE__), '..', 'ext'))
17
+ end
18
+
19
+ def ext_local_of type
20
+ File.join(ext_root_path, "tokyo-#{type}")
21
+ end
22
+
23
+ desc "creates the extensions build directory"
24
+ task :create do
25
+ mkdir_p ext_root_path
26
+ end
27
+
28
+ desc "removes the extensions build directory"
29
+ task :remove do
30
+ rm_rf ext_root_path
31
+ end
32
+
33
+ desc "builds the extensions, takes PREFIX for where to install"
34
+ task :build => [:create] do
35
+ extensions.each do |ext|
36
+ sh "cd #{ext_local_of ext} &&
37
+ ./configure --prefix=#{ENV['PREFIX'] || '/usr/local'} &&
38
+ make"
39
+ end
40
+ end
41
+
42
+ desc "installs the extensions [REQUIRES SUDO AND BUILD_ALL]"
43
+ task :install do
44
+ extensions.each do |ext|
45
+ sh "cd #{ext_local_of ext} && sudo make install"
46
+ end
47
+ end
48
+
49
+ desc "clones/pulls and builds all extensions, takes PREFIX for where to install"
50
+ task :build_all => [:create] + extensions + [:build]
51
+
52
+ desc "builds and installs all the extensions"
53
+ task :install_all => [:build_all, :install]
54
+
55
+ desc "update all the extensions"
56
+ task :update_all => extensions
57
+
58
+ extensions.each do |ext|
59
+ desc "clones and/or updates the etrepum/tokyo-#{ext} repo"
60
+ task ext => [:create] do
61
+ repo = ext_local_of ext
62
+ if ! File.directory?(repo)
63
+ sh "cd #{ext_root_path} && git clone #{git_repo[ext]}"
64
+ else
65
+ sh "cd #{repo} && git checkout master && git pull"
66
+ end
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,353 @@
1
+
2
+ #
3
+ # a bit of benchmarking
4
+ #
5
+ # some gists of runs :
6
+ #
7
+ # http://gist.github.com/60709
8
+ #
9
+
10
+ $:.unshift('lib')
11
+
12
+ require 'benchmark'
13
+
14
+ require 'date'
15
+ require 'fileutils'
16
+
17
+ require 'rubygems'
18
+
19
+
20
+ # Are the 'native'/'author' ruby bindings present ?
21
+
22
+ puts
23
+
24
+ begin
25
+ require 'tokyocabinet'
26
+ rescue LoadError
27
+ puts "Tokyo Cabinet 'native' ruby bindings not present"
28
+ end
29
+
30
+ begin
31
+ require 'tokyotyrant'
32
+ rescue LoadError
33
+ puts "Tokyo Tyrant 'native' ruby bindings not present"
34
+ end
35
+
36
+ begin
37
+ require 'memcache'
38
+ rescue LoadError
39
+ puts "\ngem memcache-client not present"
40
+ end
41
+
42
+ # moving on...
43
+
44
+ N = 10_000
45
+
46
+ puts
47
+ puts Time.now.to_s
48
+ puts "N is #{N}"
49
+ puts "ruby is #{RUBY_VERSION}"
50
+
51
+ # ==============================================================================
52
+ # bench methods
53
+ # ==============================================================================
54
+
55
+ #
56
+ # note : pre db.clear and post db.close are included.
57
+ #
58
+ def rufus_cabinet_bench (bench_title, db)
59
+
60
+ db.clear
61
+
62
+ 2.times { puts }
63
+ puts bench_title
64
+
65
+ Benchmark.benchmark(' ' * 31 + Benchmark::Tms::CAPTION, 31) do |b|
66
+
67
+ b.report('inserting one') do
68
+ db['a'] = 'A'
69
+ end
70
+ b.report('inserting N') do
71
+ N.times { |i| db["key #{i}"] = "value #{i}" }
72
+ end
73
+ b.report('finding all keys') do
74
+ db.keys
75
+ end
76
+
77
+ unless db.class.name.match(/^Rufus::Edo::/)
78
+ b.report('finding all keys (native)') do
79
+ db.keys(:native => true).free
80
+ end
81
+ end
82
+
83
+ b.report('finding all keys (pref)') do
84
+ db.keys(:prefix => 'key ')
85
+ end
86
+ b.report('finding all keys (r pref)') do
87
+ db.keys.select { |k| k[0, 4] == 'key ' }
88
+ end
89
+ b.report('finding all') do
90
+ db.values
91
+ end
92
+ b.report('iterate all') do
93
+ db.each { |k, v| }
94
+ end
95
+ b.report('find first') do
96
+ db["key #{0}"]
97
+ end
98
+ b.report('delete first') do
99
+ db.delete("key #{0}")
100
+ end
101
+
102
+ txt = 'delete_keys_with_prefix "1"'
103
+ txt += ' (M)' if db.class.name == 'Rufus::Edo::Cabinet'
104
+ b.report(txt) do
105
+ db.delete_keys_with_prefix('key 1')
106
+ end
107
+
108
+ b.report('del keys with prefix "2" (m)') do
109
+ ks = db.keys(:prefix => 'key 2')
110
+ ks.each { |k| db.delete(k) }
111
+ end
112
+ end
113
+
114
+ db.close
115
+ end
116
+
117
+ # = table ==
118
+
119
+ puts "\npreparing fake data for table tests..."
120
+
121
+ require 'faker'
122
+
123
+ DATA = (0..N - 1).collect { |i|
124
+ {
125
+ 'name' => Faker::Name.name,
126
+ 'sex' => (i % 2) ? 'male' : 'female',
127
+ 'birthday' => DateTime.new(1972, 10, 14),
128
+ 'divisions' => (i % 2) ? 'brd' : 'dev'
129
+ }
130
+ }
131
+
132
+ DATA1 = DATA.collect { |e|
133
+ h = e.dup
134
+ h['birthday'] = h['birthday'].to_s
135
+ h
136
+ }
137
+ # Tokyo Cabinet tables only do strings
138
+
139
+
140
+ # = memcache ===
141
+
142
+ #
143
+ # tiny test for memcache_client gem
144
+ #
145
+ # note : space is an illegal char in keys here !
146
+ #
147
+ def limited_bench (bench_title, db)
148
+
149
+ 2.times { puts }
150
+ puts bench_title
151
+
152
+ Benchmark.benchmark(' ' * 31 + Benchmark::Tms::CAPTION, 31) do |b|
153
+
154
+ b.report('inserting one') do
155
+ db['a'] = 'A'
156
+ end
157
+ b.report('inserting N') do
158
+ N.times { |i| db["key#{i}"] = "value #{i}" }
159
+ end
160
+ b.report('find first') do
161
+ db["key#{0}"]
162
+ end
163
+ b.report('delete first') do
164
+ db.delete("key#{0}")
165
+ end
166
+ end
167
+ end
168
+
169
+
170
+ #
171
+ # note : pre db.clear and post db.close are included.
172
+ #
173
+ def rufus_table_bench (bench_title, db)
174
+
175
+ 2.times { puts }
176
+ puts bench_title
177
+
178
+ Benchmark.benchmark(' ' * 31 + Benchmark::Tms::CAPTION, 31) do |b|
179
+
180
+ db.clear
181
+
182
+ db.clear
183
+ db.set_index('name', :lexical)
184
+
185
+ b.report('inserting data (index set)') do
186
+ DATA1.each_with_index { |e, i| db["key #{i.to_s}"] = e }
187
+ end
188
+
189
+ db.clear
190
+ db.set_index('name', :remove)
191
+
192
+ b.report('inserting data (no index)') do
193
+ DATA1.each_with_index { |e, i| db["key #{i.to_s}"] = e }
194
+ end
195
+
196
+ b.report('finding all keys') do
197
+ db.keys
198
+ end
199
+ b.report('finding all keys (pref)') do
200
+ db.keys(:prefix => 'key ')
201
+ end
202
+ b.report('finding all keys (r pref)') do
203
+ db.keys.select { |k| k[0, 4] == 'key ' }
204
+ end
205
+ b.report('finding all') do
206
+ db.query { |q| }
207
+ end
208
+ b.report('find last') do
209
+ db["key #{DATA.size.to_s}"]
210
+ end
211
+ b.report('delete last') do
212
+ db.delete("key #{DATA.size.to_s}")
213
+ end
214
+ b.report('find Alphonse') do
215
+ db.query { |q| q.add('name', :equals, DATA1[0]['name']) }
216
+ end
217
+
218
+ b.report("setting index (#{DATA.size} rows)") do
219
+ db.set_index('name', :lexical)
220
+ end
221
+
222
+ b.report('find Alphonse (index set)') do
223
+ db.query { |q| q.add('name', :equals, DATA1[0]['name']) }
224
+ end
225
+
226
+ b.report('delete_keys_with_prefix "1"') do
227
+ db.delete_keys_with_prefix('key 1')
228
+ end
229
+ #b.report('del keys with prefix "2" (m)') do
230
+ # ks = db.keys(:prefix => 'key 2')
231
+ # ks.each { |k| db.delete(k) }
232
+ #end
233
+ end
234
+
235
+ db.close
236
+ end
237
+
238
+ # ==============================================================================
239
+ # hashes
240
+ # ==============================================================================
241
+
242
+ #
243
+ # Tokyo Cabinet ===============================================================
244
+ #
245
+
246
+ require 'rufus/tokyo'
247
+
248
+ FileUtils.rm_f('tmp/test.tch')
249
+
250
+ rufus_cabinet_bench('TC', Rufus::Tokyo::Cabinet.new('tmp/test.tch'))
251
+
252
+ #
253
+ # 'native' ruby bindings
254
+ #
255
+
256
+ FileUtils.rm_f('tmp/test.tch')
257
+
258
+ if defined?(TokyoCabinet)
259
+
260
+ require 'rufus/edo'
261
+
262
+ rufus_cabinet_bench('Edo TC', Rufus::Edo::Cabinet.new('tmp/test.tch'))
263
+ end
264
+
265
+
266
+ #
267
+ # Tokyo Tyrant ================================================================
268
+ #
269
+
270
+ require 'rufus/tokyo/tyrant'
271
+
272
+ rufus_cabinet_bench('TT', Rufus::Tokyo::Tyrant.new('127.0.0.1', 45000))
273
+
274
+
275
+ #
276
+ # 'native' Tokyo Tyrant ========================================================
277
+ #
278
+
279
+ if defined?(TokyoTyrant)
280
+
281
+ require 'rufus/edo/ntyrant'
282
+
283
+ rufus_cabinet_bench('net TT', Rufus::Edo::NetTyrant.new('127.0.0.1', 45000))
284
+ end
285
+
286
+
287
+ if defined?(MemCache)
288
+
289
+ db = MemCache.new(
290
+ :compression => false,
291
+ :readonly => false,
292
+ :debug => false)
293
+ db.servers = [ '127.0.0.1:45000' ]
294
+
295
+ limited_bench('TT over memcache-client', db)
296
+
297
+ db = MemCache.new(
298
+ :compression => true,
299
+ :readonly => false,
300
+ :debug => false)
301
+ db.servers = [ '127.0.0.1:45000' ]
302
+
303
+ limited_bench('TT over memcache-client (:compression => true)', db)
304
+ end
305
+
306
+
307
+ # ==============================================================================
308
+ # tables
309
+ # ==============================================================================
310
+
311
+ #
312
+ # Tokyo Cabinet table =========================================================
313
+ #
314
+
315
+ FileUtils.rm_f('tmp/test.tct')
316
+
317
+ rufus_table_bench('TC table', Rufus::Tokyo::Table.new('tmp/test.tct'))
318
+
319
+
320
+ #
321
+ # 'native' Tokyo Cabinet table =================================================
322
+ #
323
+
324
+ FileUtils.rm_f('tmp/test.tct')
325
+
326
+
327
+ if defined?(TokyoCabinet)
328
+
329
+ require 'rufus/edo'
330
+
331
+ rufus_table_bench('Edo TC table', Rufus::Edo::Table.new('tmp/test.tct'))
332
+ end
333
+
334
+ #
335
+ # Tokyo Tyrant table ===========================================================
336
+ #
337
+
338
+ rufus_table_bench(
339
+ 'TT table', Rufus::Tokyo::TyrantTable.new('localhost', 45001))
340
+
341
+
342
+ #
343
+ # 'author' Tokyo Tyrant table ==================================================
344
+ #
345
+
346
+ if defined?(TokyoTyrant)
347
+
348
+ rufus_table_bench(
349
+ "net TT table", Rufus::Edo::NetTyrantTable.new('127.0.0.1', 45001))
350
+ end
351
+
352
+ puts
353
+