opensearch-ruby 2.0.3 → 3.4.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 (444) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +80 -46
  4. data/USER_GUIDE.md +149 -0
  5. data/bin/opensearch_ruby_console +4 -34
  6. data/lib/opensearch/api/actions/abort_benchmark.rb +49 -0
  7. data/lib/opensearch/api/actions/benchmark.rb +88 -0
  8. data/lib/opensearch/api/actions/bulk.rb +91 -0
  9. data/lib/opensearch/api/actions/cat/aliases.rb +79 -0
  10. data/lib/opensearch/api/actions/cat/all_pit_segments.rb +45 -0
  11. data/lib/opensearch/api/actions/cat/allocation.rb +83 -0
  12. data/lib/opensearch/api/actions/cat/cluster_manager.rb +54 -0
  13. data/lib/opensearch/api/actions/cat/count.rb +75 -0
  14. data/lib/opensearch/api/actions/cat/fielddata.rb +77 -0
  15. data/lib/opensearch/api/actions/cat/health.rb +72 -0
  16. data/lib/opensearch/api/actions/cat/help.rb +61 -0
  17. data/lib/opensearch/api/actions/cat/indices.rb +93 -0
  18. data/lib/opensearch/api/actions/cat/master.rb +73 -0
  19. data/lib/opensearch/api/actions/cat/nodeattrs.rb +73 -0
  20. data/lib/opensearch/api/actions/cat/nodes.rb +82 -0
  21. data/lib/opensearch/api/actions/cat/params_registry.rb +69 -0
  22. data/lib/opensearch/api/actions/cat/pending_tasks.rb +76 -0
  23. data/lib/opensearch/api/actions/cat/pit_segments.rb +48 -0
  24. data/lib/opensearch/api/actions/cat/plugins.rb +75 -0
  25. data/lib/opensearch/api/actions/cat/recovery.rb +84 -0
  26. data/lib/opensearch/api/actions/cat/repositories.rb +73 -0
  27. data/lib/opensearch/api/actions/cat/segments.rb +76 -0
  28. data/lib/opensearch/api/actions/cat/shards.rb +85 -0
  29. data/lib/opensearch/api/actions/cat/snapshots.rb +82 -0
  30. data/lib/opensearch/api/actions/cat/tasks.rb +77 -0
  31. data/lib/opensearch/api/actions/cat/templates.rb +80 -0
  32. data/lib/opensearch/api/actions/cat/thread_pool.rb +84 -0
  33. data/lib/opensearch/api/actions/clear_scroll.rb +62 -0
  34. data/lib/opensearch/api/actions/cluster/allocation_explain.rb +67 -0
  35. data/lib/opensearch/api/actions/cluster/delete_component_template.rb +68 -0
  36. data/lib/opensearch/api/actions/cluster/delete_voting_config_exclusions.rb +59 -0
  37. data/lib/opensearch/api/actions/cluster/exists_component_template.rb +70 -0
  38. data/lib/opensearch/api/actions/cluster/get_component_template.rb +70 -0
  39. data/lib/opensearch/api/actions/cluster/get_settings.rb +67 -0
  40. data/lib/opensearch/api/actions/cluster/health.rb +88 -0
  41. data/lib/opensearch/api/actions/cluster/params_registry.rb +69 -0
  42. data/lib/opensearch/api/actions/cluster/pending_tasks.rb +64 -0
  43. data/lib/opensearch/api/actions/cluster/post_voting_config_exclusions.rb +63 -0
  44. data/lib/opensearch/api/actions/cluster/put_component_template.rb +72 -0
  45. data/lib/opensearch/api/actions/cluster/put_settings.rb +68 -0
  46. data/{spec/unit/wrapper_gem_spec.rb → lib/opensearch/api/actions/cluster/remote_info.rb} +20 -17
  47. data/lib/opensearch/api/actions/cluster/reroute.rb +72 -0
  48. data/lib/opensearch/api/actions/cluster/state.rb +87 -0
  49. data/lib/opensearch/api/actions/cluster/stats.rb +68 -0
  50. data/lib/opensearch/api/actions/count.rb +96 -0
  51. data/lib/opensearch/api/actions/create.rb +60 -0
  52. data/lib/opensearch/api/actions/create_pit.rb +45 -0
  53. data/lib/opensearch/api/actions/dangling_indices/delete_dangling_index.rb +70 -0
  54. data/lib/opensearch/api/actions/dangling_indices/import_dangling_index.rb +69 -0
  55. data/lib/opensearch/api/actions/dangling_indices/list_dangling_indices.rb +51 -0
  56. data/lib/opensearch/api/actions/dangling_indices/params_registry.rb +69 -0
  57. data/lib/opensearch/api/actions/delete.rb +89 -0
  58. data/lib/opensearch/api/actions/delete_all_pits.rb +26 -0
  59. data/lib/opensearch/api/actions/delete_by_query.rb +133 -0
  60. data/lib/opensearch/api/actions/delete_by_query_rethrottle.rb +62 -0
  61. data/lib/opensearch/api/actions/delete_pit.rb +30 -0
  62. data/lib/opensearch/api/actions/delete_script.rb +66 -0
  63. data/lib/opensearch/api/actions/exists.rb +94 -0
  64. data/lib/opensearch/api/actions/exists_source.rb +89 -0
  65. data/lib/opensearch/api/actions/explain.rb +99 -0
  66. data/lib/opensearch/api/actions/features/get_features.rb +61 -0
  67. data/lib/opensearch/api/actions/features/params_registry.rb +69 -0
  68. data/lib/opensearch/api/actions/features/reset_features.rb +55 -0
  69. data/lib/opensearch/api/actions/field_caps.rb +78 -0
  70. data/lib/opensearch/api/actions/get.rb +93 -0
  71. data/lib/opensearch/api/actions/get_all_pits.rb +26 -0
  72. data/lib/opensearch/api/actions/get_script.rb +64 -0
  73. data/lib/opensearch/api/actions/get_script_context.rb +53 -0
  74. data/lib/opensearch/api/actions/get_script_languages.rb +53 -0
  75. data/lib/opensearch/api/actions/get_source.rb +87 -0
  76. data/lib/opensearch/api/actions/http/connect.rb +28 -0
  77. data/lib/opensearch/api/actions/http/delete.rb +28 -0
  78. data/lib/opensearch/api/actions/http/get.rb +28 -0
  79. data/lib/opensearch/api/actions/http/head.rb +28 -0
  80. data/lib/opensearch/api/actions/http/options.rb +28 -0
  81. data/lib/opensearch/api/actions/http/patch.rb +28 -0
  82. data/lib/opensearch/api/actions/http/post.rb +28 -0
  83. data/lib/opensearch/api/actions/http/put.rb +28 -0
  84. data/lib/opensearch/api/actions/http/request.rb +27 -0
  85. data/lib/opensearch/api/actions/http/trace.rb +28 -0
  86. data/lib/opensearch/api/actions/index.rb +96 -0
  87. data/lib/opensearch/api/actions/indices/add_block.rb +78 -0
  88. data/lib/opensearch/api/actions/indices/analyze.rb +71 -0
  89. data/lib/opensearch/api/actions/indices/clear_cache.rb +79 -0
  90. data/lib/opensearch/api/actions/indices/clone.rb +75 -0
  91. data/lib/opensearch/api/actions/indices/close.rb +76 -0
  92. data/lib/opensearch/api/actions/indices/create.rb +71 -0
  93. data/lib/opensearch/api/actions/indices/delete.rb +78 -0
  94. data/lib/opensearch/api/actions/indices/delete_alias.rb +72 -0
  95. data/lib/opensearch/api/actions/indices/delete_index_template.rb +68 -0
  96. data/lib/opensearch/api/actions/indices/delete_template.rb +72 -0
  97. data/lib/opensearch/api/actions/indices/disk_usage.rb +76 -0
  98. data/lib/opensearch/api/actions/indices/exists.rb +79 -0
  99. data/lib/opensearch/api/actions/indices/exists_alias.rb +82 -0
  100. data/lib/opensearch/api/actions/indices/exists_index_template.rb +72 -0
  101. data/lib/opensearch/api/actions/indices/exists_template.rb +75 -0
  102. data/lib/opensearch/api/actions/indices/field_usage_stats.rb +74 -0
  103. data/lib/opensearch/api/actions/indices/flush.rb +74 -0
  104. data/lib/opensearch/api/actions/indices/forcemerge.rb +76 -0
  105. data/lib/opensearch/api/actions/indices/get.rb +78 -0
  106. data/lib/opensearch/api/actions/indices/get_alias.rb +79 -0
  107. data/lib/opensearch/api/actions/indices/get_field_mapping.rb +83 -0
  108. data/lib/opensearch/api/actions/indices/get_index_template.rb +72 -0
  109. data/lib/opensearch/api/actions/indices/get_mapping.rb +81 -0
  110. data/lib/opensearch/api/actions/indices/get_settings.rb +87 -0
  111. data/lib/opensearch/api/actions/indices/get_template.rb +72 -0
  112. data/lib/opensearch/api/actions/indices/get_upgrade.rb +75 -0
  113. data/lib/opensearch/api/actions/indices/open.rb +76 -0
  114. data/lib/opensearch/api/actions/indices/params_registry.rb +69 -0
  115. data/lib/opensearch/api/actions/indices/put_alias.rb +73 -0
  116. data/lib/opensearch/api/actions/indices/put_index_template.rb +72 -0
  117. data/lib/opensearch/api/actions/indices/put_mapping.rb +82 -0
  118. data/lib/opensearch/api/actions/indices/put_settings.rb +83 -0
  119. data/lib/opensearch/api/actions/indices/put_template.rb +72 -0
  120. data/lib/opensearch/api/actions/indices/recovery.rb +68 -0
  121. data/lib/opensearch/api/actions/indices/refresh.rb +70 -0
  122. data/lib/opensearch/api/actions/indices/resolve_index.rb +68 -0
  123. data/lib/opensearch/api/actions/indices/rollover.rb +81 -0
  124. data/lib/opensearch/api/actions/indices/segments.rb +72 -0
  125. data/lib/opensearch/api/actions/indices/shard_stores.rb +72 -0
  126. data/lib/opensearch/api/actions/indices/shrink.rb +77 -0
  127. data/lib/opensearch/api/actions/indices/simulate_index_template.rb +71 -0
  128. data/lib/opensearch/api/actions/indices/simulate_template.rb +73 -0
  129. data/lib/opensearch/api/actions/indices/split.rb +77 -0
  130. data/lib/opensearch/api/actions/indices/stats.rb +100 -0
  131. data/lib/opensearch/api/actions/indices/update_aliases.rb +66 -0
  132. data/lib/opensearch/api/actions/indices/upgrade.rb +79 -0
  133. data/lib/opensearch/api/actions/indices/validate_query.rb +99 -0
  134. data/{Gemfile → lib/opensearch/api/actions/info.rb} +19 -8
  135. data/lib/opensearch/api/actions/ingest/delete_pipeline.rb +68 -0
  136. data/lib/opensearch/api/actions/ingest/geo_ip_stats.rb +51 -0
  137. data/lib/opensearch/api/actions/ingest/get_pipeline.rb +70 -0
  138. data/lib/opensearch/api/actions/ingest/params_registry.rb +69 -0
  139. data/lib/opensearch/api/actions/ingest/processor_grok.rb +51 -0
  140. data/lib/opensearch/api/actions/ingest/put_pipeline.rb +70 -0
  141. data/lib/opensearch/api/actions/ingest/simulate.rb +69 -0
  142. data/lib/opensearch/api/actions/mget.rb +86 -0
  143. data/lib/opensearch/api/actions/msearch.rb +105 -0
  144. data/lib/opensearch/api/actions/msearch_template.rb +89 -0
  145. data/lib/opensearch/api/actions/mtermvectors.rb +102 -0
  146. data/lib/opensearch/api/actions/nodes/hot_threads.rb +81 -0
  147. data/lib/opensearch/api/actions/nodes/info.rb +75 -0
  148. data/lib/opensearch/api/actions/nodes/params_registry.rb +69 -0
  149. data/lib/opensearch/api/actions/nodes/reload_secure_settings.rb +67 -0
  150. data/lib/opensearch/api/actions/nodes/shutdown.rb +65 -0
  151. data/lib/opensearch/api/actions/nodes/stats.rb +96 -0
  152. data/lib/opensearch/api/actions/nodes/usage.rb +73 -0
  153. data/lib/opensearch/api/actions/params_registry.rb +67 -0
  154. data/lib/opensearch/api/actions/ping.rb +54 -0
  155. data/lib/opensearch/api/actions/put_script.rb +76 -0
  156. data/lib/opensearch/api/actions/rank_eval.rb +77 -0
  157. data/lib/opensearch/api/actions/reindex.rb +76 -0
  158. data/lib/opensearch/api/actions/reindex_rethrottle.rb +62 -0
  159. data/{spec/integration/security_disabled/validation_integration_spec.rb → lib/opensearch/api/actions/remote/info.rb} +17 -11
  160. data/lib/opensearch/api/actions/remote_store/restore.rb +43 -0
  161. data/lib/opensearch/api/actions/render_search_template.rb +62 -0
  162. data/lib/opensearch/api/actions/scripts_painless_execute.rb +59 -0
  163. data/lib/opensearch/api/actions/scroll.rb +78 -0
  164. data/lib/opensearch/api/actions/search.rb +161 -0
  165. data/lib/opensearch/api/actions/search_shards.rb +74 -0
  166. data/lib/opensearch/api/actions/search_template.rb +96 -0
  167. data/lib/opensearch/api/actions/security/change_password.rb +39 -0
  168. data/lib/opensearch/api/actions/security/create_action_group.rb +42 -0
  169. data/lib/opensearch/api/actions/security/create_role.rb +43 -0
  170. data/lib/opensearch/api/actions/security/create_role_mapping.rb +43 -0
  171. data/lib/opensearch/api/actions/security/create_tenant.rb +42 -0
  172. data/lib/opensearch/api/actions/security/create_user.rb +43 -0
  173. data/lib/opensearch/api/actions/security/delete_action_group.rb +41 -0
  174. data/lib/opensearch/api/actions/security/delete_distinguished_names.rb +41 -0
  175. data/lib/opensearch/api/actions/security/delete_role.rb +41 -0
  176. data/lib/opensearch/api/actions/security/delete_role_mapping.rb +41 -0
  177. data/lib/opensearch/api/actions/security/delete_tenant.rb +41 -0
  178. data/lib/opensearch/api/actions/security/delete_user.rb +41 -0
  179. data/lib/opensearch/api/actions/security/flush_cache.rb +36 -0
  180. data/lib/opensearch/api/actions/security/get_account_details.rb +36 -0
  181. data/lib/opensearch/api/actions/security/get_action_group.rb +41 -0
  182. data/lib/opensearch/api/actions/security/get_action_groups.rb +36 -0
  183. data/lib/opensearch/api/actions/security/get_audit_configuration.rb +36 -0
  184. data/lib/opensearch/api/actions/security/get_certificates.rb +36 -0
  185. data/lib/opensearch/api/actions/security/get_configuration.rb +36 -0
  186. data/lib/opensearch/api/actions/security/get_distinguished_names.rb +39 -0
  187. data/lib/opensearch/api/actions/security/get_role.rb +41 -0
  188. data/lib/opensearch/api/actions/security/get_role_mapping.rb +41 -0
  189. data/lib/opensearch/api/actions/security/get_role_mappings.rb +36 -0
  190. data/lib/opensearch/api/actions/security/get_roles.rb +36 -0
  191. data/lib/opensearch/api/actions/security/get_tenant.rb +41 -0
  192. data/lib/opensearch/api/actions/security/get_tenants.rb +36 -0
  193. data/lib/opensearch/api/actions/security/get_user.rb +41 -0
  194. data/lib/opensearch/api/actions/security/get_users.rb +36 -0
  195. data/lib/opensearch/api/actions/security/health.rb +36 -0
  196. data/lib/opensearch/api/actions/security/patch_action_group.rb +42 -0
  197. data/lib/opensearch/api/actions/security/patch_action_groups.rb +37 -0
  198. data/lib/opensearch/api/actions/security/patch_audit_configuration.rb +39 -0
  199. data/lib/opensearch/api/actions/security/patch_configuration.rb +39 -0
  200. data/lib/opensearch/api/actions/security/patch_distinguished_names.rb +39 -0
  201. data/lib/opensearch/api/actions/security/patch_role.rb +43 -0
  202. data/lib/opensearch/api/actions/security/patch_role_mapping.rb +43 -0
  203. data/lib/opensearch/api/actions/security/patch_role_mappings.rb +39 -0
  204. data/lib/opensearch/api/actions/security/patch_roles.rb +39 -0
  205. data/lib/opensearch/api/actions/security/patch_tenant.rb +43 -0
  206. data/lib/opensearch/api/actions/security/patch_tenants.rb +39 -0
  207. data/lib/opensearch/api/actions/security/patch_user.rb +43 -0
  208. data/lib/opensearch/api/actions/security/patch_users.rb +39 -0
  209. data/lib/opensearch/api/actions/security/reload_http_certificates.rb +36 -0
  210. data/lib/opensearch/api/actions/security/reload_transport_certificates.rb +36 -0
  211. data/lib/opensearch/api/actions/security/update_audit_configuration.rb +39 -0
  212. data/lib/opensearch/api/actions/security/update_configuration.rb +39 -0
  213. data/lib/opensearch/api/actions/security/update_distinguished_names.rb +42 -0
  214. data/lib/opensearch/api/actions/shutdown/delete_node.rb +60 -0
  215. data/lib/opensearch/api/actions/shutdown/get_node.rb +62 -0
  216. data/lib/opensearch/api/actions/shutdown/params_registry.rb +69 -0
  217. data/lib/opensearch/api/actions/shutdown/put_node.rb +62 -0
  218. data/lib/opensearch/api/actions/snapshot/cleanup_repository.rb +68 -0
  219. data/lib/opensearch/api/actions/snapshot/clone.rb +76 -0
  220. data/lib/opensearch/api/actions/snapshot/create.rb +73 -0
  221. data/lib/opensearch/api/actions/snapshot/create_repository.rb +72 -0
  222. data/lib/opensearch/api/actions/snapshot/delete.rb +74 -0
  223. data/lib/opensearch/api/actions/snapshot/delete_repository.rb +72 -0
  224. data/lib/opensearch/api/actions/snapshot/get.rb +82 -0
  225. data/lib/opensearch/api/actions/snapshot/get_features.rb +61 -0
  226. data/lib/opensearch/api/actions/snapshot/get_repository.rb +73 -0
  227. data/lib/opensearch/api/actions/snapshot/params_registry.rb +69 -0
  228. data/lib/opensearch/api/actions/snapshot/repository_analyze.rb +84 -0
  229. data/lib/opensearch/api/actions/snapshot/restore.rb +73 -0
  230. data/lib/opensearch/api/actions/snapshot/status.rb +79 -0
  231. data/lib/opensearch/api/actions/snapshot/verify_repository.rb +68 -0
  232. data/lib/opensearch/api/actions/tasks/cancel.rb +76 -0
  233. data/lib/opensearch/api/actions/tasks/get.rb +68 -0
  234. data/lib/opensearch/api/actions/tasks/list.rb +75 -0
  235. data/lib/opensearch/api/actions/tasks/params_registry.rb +69 -0
  236. data/lib/opensearch/api/actions/termvectors.rb +108 -0
  237. data/lib/opensearch/api/actions/update.rb +99 -0
  238. data/lib/opensearch/api/actions/update_by_query.rb +137 -0
  239. data/lib/opensearch/api/actions/update_by_query_rethrottle.rb +62 -0
  240. data/{spec/integration/security_enabled/validation_integration_spec.rb → lib/opensearch/api/namespace/cat.rb} +19 -12
  241. data/lib/opensearch/api/namespace/cluster.rb +47 -0
  242. data/lib/opensearch/api/namespace/common.rb +72 -0
  243. data/lib/opensearch/api/namespace/dangling_indices.rb +47 -0
  244. data/lib/opensearch/api/namespace/features.rb +47 -0
  245. data/lib/opensearch/api/namespace/http.rb +30 -0
  246. data/lib/opensearch/api/namespace/indices.rb +47 -0
  247. data/lib/opensearch/api/namespace/ingest.rb +47 -0
  248. data/lib/opensearch/api/namespace/nodes.rb +47 -0
  249. data/lib/opensearch/api/namespace/remote.rb +47 -0
  250. data/lib/opensearch/api/namespace/remote_store.rb +30 -0
  251. data/lib/opensearch/api/namespace/security.rb +30 -0
  252. data/lib/opensearch/api/namespace/shutdown.rb +47 -0
  253. data/lib/opensearch/api/namespace/snapshot.rb +47 -0
  254. data/lib/opensearch/api/namespace/tasks.rb +47 -0
  255. data/lib/opensearch/api/utils.rb +296 -0
  256. data/lib/opensearch/api.rb +104 -0
  257. data/lib/opensearch/dsl/search/aggregation.rb +112 -0
  258. data/lib/opensearch/dsl/search/aggregations/avg.rb +49 -0
  259. data/lib/opensearch/dsl/search/aggregations/cardinality.rb +56 -0
  260. data/lib/opensearch/dsl/search/aggregations/children.rb +63 -0
  261. data/lib/opensearch/dsl/search/aggregations/composite.rb +68 -0
  262. data/lib/opensearch/dsl/search/aggregations/date_histogram.rb +64 -0
  263. data/lib/opensearch/dsl/search/aggregations/date_range.rb +59 -0
  264. data/lib/opensearch/dsl/search/aggregations/extended_stats.rb +48 -0
  265. data/lib/opensearch/dsl/search/aggregations/filter.rb +54 -0
  266. data/lib/opensearch/dsl/search/aggregations/filters.rb +59 -0
  267. data/lib/opensearch/dsl/search/aggregations/geo_bounds.rb +68 -0
  268. data/lib/opensearch/dsl/search/aggregations/geo_distance.rb +63 -0
  269. data/lib/opensearch/dsl/search/aggregations/geohash_grid.rb +59 -0
  270. data/lib/opensearch/dsl/search/aggregations/global.rb +52 -0
  271. data/{spec/integration/security_disabled/client_integration_spec.rb → lib/opensearch/dsl/search/aggregations/histogram.rb} +29 -29
  272. data/lib/opensearch/dsl/search/aggregations/ip_range.rb +55 -0
  273. data/lib/opensearch/dsl/search/aggregations/max.rb +49 -0
  274. data/lib/opensearch/dsl/search/aggregations/min.rb +49 -0
  275. data/lib/opensearch/dsl/search/aggregations/missing.rb +59 -0
  276. data/lib/opensearch/dsl/search/aggregations/nested.rb +57 -0
  277. data/lib/opensearch/dsl/search/aggregations/percentile_ranks.rb +58 -0
  278. data/lib/opensearch/dsl/search/aggregations/percentiles.rb +57 -0
  279. data/lib/opensearch/dsl/search/aggregations/pipeline/avg_bucket.rb +58 -0
  280. data/lib/opensearch/dsl/search/aggregations/pipeline/bucket_script.rb +60 -0
  281. data/lib/opensearch/dsl/search/aggregations/pipeline/bucket_selector.rb +59 -0
  282. data/lib/opensearch/dsl/search/aggregations/pipeline/bucket_sort.rb +111 -0
  283. data/lib/opensearch/dsl/search/aggregations/pipeline/cumulative_sum.rb +57 -0
  284. data/lib/opensearch/dsl/search/aggregations/pipeline/derivative.rb +58 -0
  285. data/lib/opensearch/dsl/search/aggregations/pipeline/extended_stats_bucket.rb +58 -0
  286. data/lib/opensearch/dsl/search/aggregations/pipeline/max_bucket.rb +58 -0
  287. data/lib/opensearch/dsl/search/aggregations/pipeline/min_bucket.rb +58 -0
  288. data/lib/opensearch/dsl/search/aggregations/pipeline/moving_avg.rb +66 -0
  289. data/lib/opensearch/dsl/search/aggregations/pipeline/percentiles_bucket.rb +60 -0
  290. data/lib/opensearch/dsl/search/aggregations/pipeline/serial_diff.rb +60 -0
  291. data/lib/opensearch/dsl/search/aggregations/pipeline/stats_bucket.rb +58 -0
  292. data/lib/opensearch/dsl/search/aggregations/pipeline/sum_bucket.rb +58 -0
  293. data/lib/opensearch/dsl/search/aggregations/range.rb +77 -0
  294. data/lib/opensearch/dsl/search/aggregations/reverse_nested.rb +61 -0
  295. data/lib/opensearch/dsl/search/aggregations/scripted_metric.rb +63 -0
  296. data/lib/opensearch/dsl/search/aggregations/significant_terms.rb +69 -0
  297. data/lib/opensearch/dsl/search/aggregations/stats.rb +61 -0
  298. data/lib/opensearch/dsl/search/aggregations/sum.rb +49 -0
  299. data/lib/opensearch/dsl/search/aggregations/terms.rb +66 -0
  300. data/lib/opensearch/dsl/search/aggregations/top_hits.rb +59 -0
  301. data/lib/opensearch/dsl/search/aggregations/value_count.rb +49 -0
  302. data/lib/opensearch/dsl/search/base_aggregation_component.rb +83 -0
  303. data/lib/opensearch/dsl/search/base_component.rb +191 -0
  304. data/lib/opensearch/dsl/search/base_compound_filter_component.rb +124 -0
  305. data/lib/opensearch/dsl/search/filter.rb +82 -0
  306. data/lib/opensearch/dsl/search/filters/and.rb +70 -0
  307. data/lib/opensearch/dsl/search/filters/bool.rb +103 -0
  308. data/lib/opensearch/dsl/search/filters/exists.rb +56 -0
  309. data/lib/opensearch/dsl/search/filters/geo_bounding_box.rb +69 -0
  310. data/lib/opensearch/dsl/search/filters/geo_distance.rb +81 -0
  311. data/lib/opensearch/dsl/search/filters/geo_distance_range.rb +56 -0
  312. data/lib/opensearch/dsl/search/filters/geo_polygon.rb +65 -0
  313. data/lib/opensearch/dsl/search/filters/geo_shape.rb +59 -0
  314. data/lib/opensearch/dsl/search/filters/geohash_cell.rb +71 -0
  315. data/lib/opensearch/dsl/search/filters/has_child.rb +98 -0
  316. data/lib/opensearch/dsl/search/filters/has_parent.rb +97 -0
  317. data/lib/opensearch/dsl/search/filters/ids.rb +56 -0
  318. data/lib/opensearch/dsl/search/filters/indices.rb +101 -0
  319. data/lib/opensearch/dsl/search/filters/limit.rb +55 -0
  320. data/lib/opensearch/dsl/search/filters/match_all.rb +52 -0
  321. data/lib/opensearch/dsl/search/filters/missing.rb +58 -0
  322. data/lib/opensearch/dsl/search/filters/nested.rb +91 -0
  323. data/lib/opensearch/dsl/search/filters/not.rb +98 -0
  324. data/lib/opensearch/dsl/search/filters/or.rb +70 -0
  325. data/lib/opensearch/dsl/search/filters/prefix.rb +53 -0
  326. data/lib/opensearch/dsl/search/filters/query.rb +77 -0
  327. data/lib/opensearch/dsl/search/filters/range.rb +63 -0
  328. data/lib/opensearch/dsl/search/filters/regexp.rb +58 -0
  329. data/lib/opensearch/dsl/search/filters/script.rb +56 -0
  330. data/lib/opensearch/dsl/search/filters/term.rb +55 -0
  331. data/lib/opensearch/dsl/search/filters/terms.rb +56 -0
  332. data/lib/opensearch/dsl/search/filters/type.rb +58 -0
  333. data/lib/opensearch/dsl/search/highlight.rb +117 -0
  334. data/lib/opensearch/dsl/search/options.rb +80 -0
  335. data/lib/opensearch/dsl/search/queries/bool.rb +110 -0
  336. data/lib/opensearch/dsl/search/queries/boosting.rb +57 -0
  337. data/lib/opensearch/dsl/search/queries/common.rb +62 -0
  338. data/lib/opensearch/dsl/search/queries/constant_score.rb +90 -0
  339. data/lib/opensearch/dsl/search/queries/dis_max.rb +59 -0
  340. data/lib/opensearch/dsl/search/queries/exists.rb +68 -0
  341. data/lib/opensearch/dsl/search/queries/filtered.rb +101 -0
  342. data/lib/opensearch/dsl/search/queries/function_score.rb +122 -0
  343. data/lib/opensearch/dsl/search/queries/fuzzy.rb +69 -0
  344. data/lib/opensearch/dsl/search/queries/fuzzy_like_this.rb +61 -0
  345. data/lib/opensearch/dsl/search/queries/fuzzy_like_this_field.rb +60 -0
  346. data/lib/opensearch/dsl/search/queries/geo_shape.rb +54 -0
  347. data/lib/opensearch/dsl/search/queries/has_child.rb +82 -0
  348. data/lib/opensearch/dsl/search/queries/has_parent.rb +82 -0
  349. data/lib/opensearch/dsl/search/queries/ids.rb +52 -0
  350. data/lib/opensearch/dsl/search/queries/indices.rb +58 -0
  351. data/lib/opensearch/dsl/search/queries/match.rb +66 -0
  352. data/lib/opensearch/dsl/search/queries/match_all.rb +50 -0
  353. data/lib/opensearch/dsl/search/queries/match_phrase.rb +56 -0
  354. data/lib/opensearch/dsl/search/queries/match_phrase_prefix.rb +55 -0
  355. data/lib/opensearch/dsl/search/queries/more_like_this.rb +88 -0
  356. data/lib/opensearch/dsl/search/queries/multi_match.rb +69 -0
  357. data/lib/opensearch/dsl/search/queries/nested.rb +80 -0
  358. data/lib/opensearch/dsl/search/queries/prefix.rb +54 -0
  359. data/lib/opensearch/dsl/search/queries/query_string.rb +75 -0
  360. data/lib/opensearch/dsl/search/queries/range.rb +71 -0
  361. data/lib/opensearch/dsl/search/queries/regexp.rb +55 -0
  362. data/lib/opensearch/dsl/search/queries/script_score.rb +62 -0
  363. data/lib/opensearch/dsl/search/queries/simple_query_string.rb +64 -0
  364. data/lib/opensearch/dsl/search/queries/span_first.rb +52 -0
  365. data/lib/opensearch/dsl/search/queries/span_multi.rb +52 -0
  366. data/lib/opensearch/dsl/search/queries/span_near.rb +56 -0
  367. data/lib/opensearch/dsl/search/queries/span_not.rb +57 -0
  368. data/lib/opensearch/dsl/search/queries/span_or.rb +52 -0
  369. data/lib/opensearch/dsl/search/queries/span_term.rb +50 -0
  370. data/lib/opensearch/dsl/search/queries/template.rb +55 -0
  371. data/lib/opensearch/dsl/search/queries/term.rb +50 -0
  372. data/lib/opensearch/dsl/search/queries/terms.rb +51 -0
  373. data/lib/opensearch/dsl/search/queries/top_children.rb +82 -0
  374. data/lib/opensearch/dsl/search/queries/wildcard.rb +54 -0
  375. data/lib/opensearch/dsl/search/query.rb +82 -0
  376. data/lib/opensearch/dsl/search/sort.rb +83 -0
  377. data/lib/opensearch/dsl/search/suggest.rb +52 -0
  378. data/lib/opensearch/dsl/search.rb +282 -0
  379. data/lib/opensearch/dsl/utils.rb +49 -0
  380. data/lib/opensearch/dsl.rb +69 -0
  381. data/lib/opensearch/transport/client.rb +362 -0
  382. data/lib/opensearch/transport/redacted.rb +82 -0
  383. data/lib/opensearch/transport/transport/base.rb +451 -0
  384. data/lib/opensearch/transport/transport/connections/collection.rb +134 -0
  385. data/lib/opensearch/transport/transport/connections/connection.rb +168 -0
  386. data/lib/opensearch/transport/transport/connections/selector.rb +100 -0
  387. data/lib/opensearch/transport/transport/errors.rb +97 -0
  388. data/lib/opensearch/transport/transport/http/curb.rb +139 -0
  389. data/lib/opensearch/transport/transport/http/faraday.rb +101 -0
  390. data/lib/opensearch/transport/transport/http/manticore.rb +188 -0
  391. data/lib/opensearch/transport/transport/loggable.rb +92 -0
  392. data/lib/opensearch/transport/transport/response.rb +47 -0
  393. data/lib/opensearch/transport/transport/serializer/multi_json.rb +61 -0
  394. data/lib/opensearch/transport/transport/sniffer.rb +110 -0
  395. data/lib/opensearch/transport.rb +44 -0
  396. data/lib/opensearch/version.rb +1 -1
  397. data/lib/opensearch-dsl.rb +27 -0
  398. data/lib/opensearch.rb +12 -12
  399. data/opensearch-ruby.gemspec +69 -0
  400. data/spec/spec_helper.rb +95 -4
  401. data/test/dsl/integration/search_aggregation_children_test.rb +91 -0
  402. data/test/dsl/integration/search_aggregation_geo_test.rb +112 -0
  403. data/test/dsl/integration/search_aggregation_nested_test.rb +129 -0
  404. data/test/dsl/integration/search_aggregations_test.rb +288 -0
  405. data/test/dsl/integration/search_filters_test.rb +290 -0
  406. data/test/dsl/integration/search_options_test.rb +54 -0
  407. data/test/dsl/integration/search_query_test.rb +98 -0
  408. data/test/dsl/integration/search_size_from_test.rb +71 -0
  409. data/test/dsl/integration/search_sort_test.rb +57 -0
  410. data/test/dsl/integration/search_suggest_test.rb +107 -0
  411. data/test/dsl/integration/search_test.rb +81 -0
  412. data/test/dsl/test_helper.rb +95 -0
  413. data/test/dsl/unit/dsl_test.rb +44 -0
  414. data/test/dsl/unit/search_aggregation_test.rb +96 -0
  415. data/test/dsl/unit/search_base_aggregation_component_test.rb +66 -0
  416. data/test/dsl/unit/search_base_component_test.rb +210 -0
  417. data/test/dsl/unit/search_filter_test.rb +84 -0
  418. data/test/dsl/unit/search_highlight_test.rb +103 -0
  419. data/test/dsl/unit/search_options_test.rb +114 -0
  420. data/test/dsl/unit/search_query_test.rb +88 -0
  421. data/test/dsl/unit/search_size_from_test.rb +68 -0
  422. data/test/dsl/unit/search_sort_test.rb +91 -0
  423. data/test/dsl/unit/search_suggest_test.rb +46 -0
  424. data/test/dsl/unit/search_test.rb +268 -0
  425. data/test/dsl/unit/utils_test.rb +47 -0
  426. data/test/transport/integration/transport_test.rb +117 -0
  427. data/test/transport/profile/client_benchmark_test.rb +141 -0
  428. data/test/transport/test_helper.rb +97 -0
  429. data/test/transport/unit/connection_test.rb +145 -0
  430. data/test/transport/unit/response_test.rb +46 -0
  431. data/test/transport/unit/serializer_test.rb +42 -0
  432. data/test/transport/unit/transport_base_test.rb +673 -0
  433. data/test/transport/unit/transport_curb_test.rb +143 -0
  434. data/test/transport/unit/transport_faraday_test.rb +237 -0
  435. data/test/transport/unit/transport_manticore_test.rb +191 -0
  436. data.tar.gz.sig +0 -0
  437. metadata +502 -191
  438. metadata.gz.sig +0 -0
  439. data/.gitignore +0 -21
  440. data/Rakefile +0 -69
  441. data/opensearch.gemspec +0 -81
  442. data/spec/integration/security_enabled/client_integration_spec.rb +0 -43
  443. data/spec/unit/opensearch_product_validation_spec.rb +0 -198
  444. /data/{LICENSE → LICENSE.txt} +0 -0
@@ -0,0 +1,143 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ require_relative '../test_helper'
28
+
29
+ if JRUBY
30
+ puts "'#{File.basename(__FILE__)}' not supported on JRuby #{RUBY_VERSION}"
31
+ else
32
+ require 'opensearch/transport/transport/http/curb'
33
+ require 'curb'
34
+
35
+ class OpenSearch::Transport::Transport::HTTP::FaradayTest < Minitest::Test
36
+ include OpenSearch::Transport::Transport::HTTP
37
+
38
+ context "Curb transport" do
39
+ setup do
40
+ @transport = Curb.new :hosts => [ { :host => 'foobar', :port => 1234 } ]
41
+ end
42
+
43
+ should "implement host_unreachable_exceptions" do
44
+ assert_instance_of Array, @transport.host_unreachable_exceptions
45
+ end
46
+
47
+ should "implement __build_connections" do
48
+ assert_equal 1, @transport.hosts.size
49
+ assert_equal 1, @transport.connections.size
50
+
51
+ assert_instance_of ::Curl::Easy, @transport.connections.first.connection
52
+ assert_equal 'http://foobar:1234', @transport.connections.first.connection.url
53
+ end
54
+
55
+ should "perform the request" do
56
+ @transport.connections.first.connection.expects(:http).returns(stub_everything)
57
+ @transport.perform_request 'GET', '/'
58
+ end
59
+
60
+ should "set body for GET request" do
61
+ @transport.connections.first.connection.expects(:put_data=).with('{"foo":"bar"}')
62
+ @transport.connections.first.connection.expects(:http).with(:GET).returns(stub_everything)
63
+ @transport.perform_request 'GET', '/', {}, '{"foo":"bar"}'
64
+ end
65
+
66
+ should "perform request with headers" do
67
+ @transport.connections.first.connection.expects(:put_data=).with('{"foo":"bar"}')
68
+ @transport.connections.first.connection.expects(:http).with(:POST).returns(stub_everything)
69
+ @transport.connections.first.connection.headers.expects(:merge!).with("Content-Type" => "application/x-ndjson")
70
+
71
+ @transport.perform_request 'POST', '/', {}, {:foo => 'bar'}, {"Content-Type" => "application/x-ndjson"}
72
+ end
73
+
74
+ should "set body for PUT request" do
75
+ @transport.connections.first.connection.expects(:put_data=)
76
+ @transport.connections.first.connection.expects(:http).with(:PUT).returns(stub_everything)
77
+ @transport.perform_request 'PUT', '/', {}, {:foo => 'bar'}
78
+ end
79
+
80
+ should "serialize the request body" do
81
+ @transport.connections.first.connection.expects(:http).with(:POST).returns(stub_everything)
82
+ @transport.serializer.expects(:dump)
83
+ @transport.perform_request 'POST', '/', {}, {:foo => 'bar'}
84
+ end
85
+
86
+ should "not serialize a String request body" do
87
+ @transport.connections.first.connection.expects(:http).with(:POST).returns(stub_everything)
88
+ @transport.serializer.expects(:dump).never
89
+ @transport.perform_request 'POST', '/', {}, '{"foo":"bar"}'
90
+ end
91
+
92
+ should "set application/json response header" do
93
+ @transport.connections.first.connection.expects(:http).with(:GET).returns(stub_everything)
94
+ @transport.connections.first.connection.expects(:body_str).returns('{"foo":"bar"}')
95
+ @transport.connections.first.connection.expects(:header_str).returns('HTTP/1.1 200 OK\r\nContent-Type: application/json; charset=UTF-8\r\nContent-Length: 311\r\n\r\n')
96
+ response = @transport.perform_request 'GET', '/'
97
+
98
+ assert_equal 'application/json', response.headers['content-type']
99
+ end
100
+
101
+ should "handle HTTP methods" do
102
+ @transport.connections.first.connection.expects(:http).with(:HEAD).returns(stub_everything)
103
+ @transport.connections.first.connection.expects(:http).with(:GET).returns(stub_everything)
104
+ @transport.connections.first.connection.expects(:http).with(:PUT).returns(stub_everything)
105
+ @transport.connections.first.connection.expects(:http).with(:POST).returns(stub_everything)
106
+ @transport.connections.first.connection.expects(:http).with(:DELETE).returns(stub_everything)
107
+
108
+ %w| HEAD GET PUT POST DELETE |.each { |method| @transport.perform_request method, '/' }
109
+
110
+ assert_raise(ArgumentError) { @transport.perform_request 'FOOBAR', '/' }
111
+ end
112
+
113
+ should "properly pass the Content-Type header option" do
114
+ transport = Curb.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => { :transport_options => { :headers => { 'Content-Type' => 'foo/bar' } } }
115
+
116
+ assert_equal "foo/bar", transport.connections.first.connection.headers["Content-Type"]
117
+ end
118
+
119
+ should "allow to set options for Curb" do
120
+ transport = Curb.new :hosts => [ { :host => 'foobar', :port => 1234 } ] do |curl|
121
+ curl.headers["User-Agent"] = "myapp-0.0"
122
+ end
123
+
124
+ assert_equal "myapp-0.0", transport.connections.first.connection.headers["User-Agent"]
125
+ end
126
+
127
+ should "set the credentials if passed" do
128
+ transport = Curb.new :hosts => [ { :host => 'foobar', :port => 1234, :user => 'foo', :password => 'bar' } ]
129
+ assert_equal 'foo', transport.connections.first.connection.username
130
+ assert_equal 'bar', transport.connections.first.connection.password
131
+ end
132
+
133
+ should "use global http configuration" do
134
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ],
135
+ :options => { :http => { :scheme => 'https', :user => 'U', :password => 'P' } }
136
+
137
+ assert_equal 'https://U:P@foobar:1234/', transport.connections.first.full_url('')
138
+ end
139
+ end
140
+
141
+ end
142
+
143
+ end
@@ -0,0 +1,237 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ require_relative '../test_helper'
28
+
29
+ class OpenSearch::Transport::Transport::HTTP::FaradayTest < Minitest::Test
30
+ include OpenSearch::Transport::Transport::HTTP
31
+
32
+ context "Faraday transport" do
33
+ setup do
34
+ @transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ]
35
+ end
36
+
37
+ should "implement host_unreachable_exceptions" do
38
+ assert_instance_of Array, @transport.host_unreachable_exceptions
39
+ end
40
+
41
+ should "implement __build_connections" do
42
+ assert_equal 1, @transport.hosts.size
43
+ assert_equal 1, @transport.connections.size
44
+
45
+ assert_instance_of ::Faraday::Connection, @transport.connections.first.connection
46
+ assert_equal 'http://foobar:1234/', @transport.connections.first.connection.url_prefix.to_s
47
+ end
48
+
49
+ should "perform the request" do
50
+ @transport.connections.first.connection.expects(:run_request).returns(stub_everything)
51
+ @transport.perform_request 'GET', '/'
52
+ end
53
+
54
+ should "return a Response" do
55
+ @transport.connections.first.connection.expects(:run_request).returns(stub_everything)
56
+ response = @transport.perform_request 'GET', '/'
57
+ assert_instance_of OpenSearch::Transport::Transport::Response, response
58
+ end
59
+
60
+ should "properly prepare the request" do
61
+ @transport.connections.first.connection.expects(:run_request).with do |method, url, body, headers|
62
+ assert_equal :post, method
63
+ assert_equal '{"foo":"bar"}', body
64
+ assert_nil headers['Accept']
65
+ true
66
+ end.returns(stub_everything)
67
+
68
+ @transport.perform_request 'POST', '/', {}, {:foo => 'bar'}
69
+ end
70
+
71
+ should "properly prepare the request with custom headers" do
72
+ @transport.connections.first.connection.expects(:run_request).with do |method, url, body, headers|
73
+ assert_equal :post, method
74
+ assert_equal '{"foo":"bar"}', body
75
+ assert_nil headers['Accept']
76
+ assert_equal "application/x-ndjson", headers['Content-Type']
77
+ true
78
+ end.returns(stub_everything)
79
+
80
+ @transport.perform_request 'POST', '/', {}, {:foo => 'bar'}, {"Content-Type" => "application/x-ndjson"}
81
+ end
82
+
83
+ should "properly pass the Content-Type header option" do
84
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => { :transport_options => { :headers => { 'Content-Type' => 'foo/bar' } } }
85
+
86
+ transport.connections.first.connection.expects(:run_request).with do |method, url, body, headers|
87
+ assert_equal 'foo/bar', headers['Content-Type']
88
+ true
89
+ end.returns(stub_everything)
90
+
91
+ transport.perform_request 'GET', '/'
92
+ end
93
+
94
+ should "serialize the request body" do
95
+ @transport.connections.first.connection.expects(:run_request).returns(stub_everything)
96
+ @transport.serializer.expects(:dump)
97
+ @transport.perform_request 'POST', '/', {}, {:foo => 'bar'}
98
+ end
99
+
100
+ should "not serialize a String request body" do
101
+ @transport.connections.first.connection.expects(:run_request).returns(stub_everything)
102
+ @transport.serializer.expects(:dump).never
103
+ @transport.perform_request 'POST', '/', {}, '{"foo":"bar"}'
104
+ end
105
+
106
+ should "pass the selector_class options to collection" do
107
+ @transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ],
108
+ :options => { :selector_class => OpenSearch::Transport::Transport::Connections::Selector::Random }
109
+ assert_instance_of OpenSearch::Transport::Transport::Connections::Selector::Random,
110
+ @transport.connections.selector
111
+ end
112
+
113
+ should "pass the selector option to collection" do
114
+ @transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ],
115
+ :options => { :selector => OpenSearch::Transport::Transport::Connections::Selector::Random.new }
116
+ assert_instance_of OpenSearch::Transport::Transport::Connections::Selector::Random,
117
+ @transport.connections.selector
118
+ end
119
+
120
+ should "pass a configuration block to the Faraday constructor" do
121
+ config_block = lambda do |f|
122
+ f.response :logger
123
+ f.path_prefix = '/moo'
124
+ end
125
+
126
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ], &config_block
127
+
128
+ handlers = transport.connections.first.connection.builder.handlers
129
+
130
+ assert_equal 1, handlers.size
131
+ assert handlers.include?(::Faraday::Response::Logger), "#{handlers.inspect} does not include <::Faraday::Adapter::Logger>"
132
+
133
+ assert_equal '/moo', transport.connections.first.connection.path_prefix
134
+ assert_equal 'http://foobar:1234/moo', transport.connections.first.connection.url_prefix.to_s
135
+ end
136
+
137
+ should "pass transport_options to the Faraday constructor" do
138
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ],
139
+ :options => { :transport_options => {
140
+ :request => { :open_timeout => 1 },
141
+ :headers => { :foo_bar => 'bar' },
142
+ :ssl => { :verify => false }
143
+ }
144
+ }
145
+
146
+ assert_equal 1, transport.connections.first.connection.options.open_timeout
147
+ assert_equal 'bar', transport.connections.first.connection.headers['Foo-Bar']
148
+ assert_equal false, transport.connections.first.connection.ssl.verify?
149
+ end
150
+
151
+ should "merge in parameters defined in the Faraday connection parameters" do
152
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ],
153
+ :options => { :transport_options => {
154
+ :params => { :format => 'yaml' }
155
+ }
156
+ }
157
+ # transport.logger = Logger.new(STDERR)
158
+
159
+ transport.connections.first.connection.expects(:run_request).
160
+ with do |method, url, params, body|
161
+ assert_match(/\?format=yaml/, url)
162
+ true
163
+ end.
164
+ returns(stub_everything)
165
+
166
+ transport.perform_request 'GET', ''
167
+ end
168
+
169
+ should "not overwrite request parameters with the Faraday connection parameters" do
170
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ],
171
+ :options => { :transport_options => {
172
+ :params => { :format => 'yaml' }
173
+ }
174
+ }
175
+ # transport.logger = Logger.new(STDERR)
176
+
177
+ transport.connections.first.connection.expects(:run_request).
178
+ with do |method, url, params, body|
179
+ assert_match(/\?format=json/, url)
180
+ true
181
+ end.
182
+ returns(stub_everything)
183
+
184
+ transport.perform_request 'GET', '', { :format => 'json' }
185
+ end
186
+
187
+ should "set the credentials if passed" do
188
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234, :user => 'foo', :password => 'bar' } ]
189
+ assert_equal 'Basic Zm9vOmJhcg==', transport.connections.first.connection.headers['Authorization']
190
+ end
191
+
192
+ should "set the credentials if they exist in options" do
193
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ],
194
+ :options => { :user => 'foo', :password => 'bar' }
195
+ assert_equal 'Basic Zm9vOmJhcg==', transport.connections.first.connection.headers['Authorization']
196
+ end
197
+
198
+ should "override options credentials if passed explicitly" do
199
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234, :user => 'foo', :password => 'bar' },
200
+ { :host => 'foobar2', :port => 1234 } ],
201
+ :options => { :user => 'foo2', :password => 'bar2' }
202
+ assert_equal 'Basic Zm9vOmJhcg==', transport.connections.first.connection.headers['Authorization']
203
+ assert_equal 'Basic Zm9vMjpiYXIy', transport.connections[1].connection.headers['Authorization']
204
+ end
205
+
206
+ should "set connection scheme to https if passed" do
207
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234, :scheme => 'https' } ]
208
+
209
+ assert_instance_of ::Faraday::Connection, transport.connections.first.connection
210
+ assert_equal 'https://foobar:1234/', transport.connections.first.connection.url_prefix.to_s
211
+ end
212
+
213
+ should "set connection scheme to https if it exist in options" do
214
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234} ],
215
+ :options => { :scheme => 'https' }
216
+
217
+ assert_instance_of ::Faraday::Connection, transport.connections.first.connection
218
+ assert_equal 'https://foobar:1234/', transport.connections.first.connection.url_prefix.to_s
219
+ end
220
+
221
+ should "override options scheme if passed explicitly" do
222
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234, :scheme => 'http'} ],
223
+ :options => { :scheme => 'https' }
224
+
225
+ assert_instance_of ::Faraday::Connection, transport.connections.first.connection
226
+ assert_equal 'http://foobar:1234/', transport.connections.first.connection.url_prefix.to_s
227
+ end
228
+
229
+ should "use global http configuration" do
230
+ transport = Faraday.new :hosts => [ { :host => 'foobar', :port => 1234 } ],
231
+ :options => { :http => { :scheme => 'https', :user => 'U', :password => 'P' } }
232
+
233
+ assert_equal 'https://U:P@foobar:1234/', transport.connections.first.full_url('')
234
+ end
235
+ end
236
+
237
+ end
@@ -0,0 +1,191 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ #
3
+ # The OpenSearch Contributors require contributions made to
4
+ # this file be licensed under the Apache-2.0 license or a
5
+ # compatible open source license.
6
+ #
7
+ # Modifications Copyright OpenSearch Contributors. See
8
+ # GitHub history for details.
9
+ #
10
+ # Licensed to Elasticsearch B.V. under one or more contributor
11
+ # license agreements. See the NOTICE file distributed with
12
+ # this work for additional information regarding copyright
13
+ # ownership. Elasticsearch B.V. licenses this file to you under
14
+ # the Apache License, Version 2.0 (the "License"); you may
15
+ # not use this file except in compliance with the License.
16
+ # You may obtain a copy of the License at
17
+ #
18
+ # http://www.apache.org/licenses/LICENSE-2.0
19
+ #
20
+ # Unless required by applicable law or agreed to in writing,
21
+ # software distributed under the License is distributed on an
22
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
23
+ # KIND, either express or implied. See the License for the
24
+ # specific language governing permissions and limitations
25
+ # under the License.
26
+
27
+ require_relative '../test_helper'
28
+
29
+ unless JRUBY
30
+ version = ( defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'Ruby' ) + ' ' + RUBY_VERSION
31
+ puts "SKIP: '#{File.basename(__FILE__)}' only supported on JRuby (you're running #{version})"
32
+ else
33
+ require 'opensearch/transport/transport/http/manticore'
34
+ require 'manticore'
35
+
36
+ class OpenSearch::Transport::Transport::HTTP::ManticoreTest < Minitest::Test
37
+ include OpenSearch::Transport::Transport::HTTP
38
+
39
+ context "Manticore transport" do
40
+ setup do
41
+ @transport = Manticore.new :hosts => [ { :host => '127.0.0.1', :port => 8080 } ]
42
+ end
43
+
44
+ should "implement host_unreachable_exceptions" do
45
+ assert_instance_of Array, @transport.host_unreachable_exceptions
46
+ end
47
+
48
+ should "implement __build_connections" do
49
+ assert_equal 1, @transport.hosts.size
50
+ assert_equal 1, @transport.connections.size
51
+
52
+ assert_instance_of ::Manticore::Client, @transport.connections.first.connection
53
+ end
54
+
55
+ should "not close connections in __close_connections" do
56
+ assert_equal 1, @transport.connections.size
57
+ @transport.__close_connections
58
+ assert_equal 1, @transport.connections.size
59
+ end
60
+
61
+ should "perform the request" do
62
+ @transport.connections.first.connection.expects(:get).returns(stub_everything)
63
+ @transport.perform_request 'GET', '/'
64
+ end
65
+
66
+ should "set body for GET request" do
67
+ @transport.connections.first.connection.expects(:get).
68
+ with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
69
+ :headers => {"Content-Type" => "application/json",
70
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
71
+ @transport.perform_request 'GET', '/', {}, '{"foo":"bar"}'
72
+ end
73
+
74
+ should "set body for PUT request" do
75
+ @transport.connections.first.connection.expects(:put).
76
+ with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
77
+ :headers => {"Content-Type" => "application/json",
78
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
79
+ @transport.perform_request 'PUT', '/', {}, {:foo => 'bar'}
80
+ end
81
+
82
+ should "serialize the request body" do
83
+ @transport.connections.first.connection.expects(:post).
84
+ with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
85
+ :headers => {"Content-Type" => "application/json",
86
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
87
+ @transport.perform_request 'POST', '/', {}, {'foo' => 'bar'}
88
+ end
89
+
90
+ should "set custom headers for PUT request" do
91
+ @transport.connections.first.connection.expects(:put).
92
+ with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
93
+ :headers => {"Content-Type" => "application/json",
94
+ "User-Agent" => @transport.send(:user_agent_header)}})
95
+ .returns(stub_everything)
96
+ @transport.perform_request 'PUT', '/', {}, '{"foo":"bar"}', {"Content-Type" => "application/x-ndjson"}
97
+ end
98
+
99
+ should "not serialize a String request body" do
100
+ @transport.connections.first.connection.expects(:post).
101
+ with('http://127.0.0.1:8080/', {:body => '{"foo":"bar"}',
102
+ :headers => {"Content-Type" => "application/json",
103
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
104
+ @transport.serializer.expects(:dump).never
105
+ @transport.perform_request 'POST', '/', {}, '{"foo":"bar"}'
106
+ end
107
+
108
+ should "set application/json header" do
109
+ options = {
110
+ :headers => { "content-type" => "application/json"}
111
+ }
112
+
113
+ transport = Manticore.new :hosts => [ { :host => 'localhost', :port => 8080 } ], :options => options
114
+
115
+ transport.connections.first.connection.stub("http://localhost:8080/", :body => "\"\"", :headers => {"Content-Type" => "application/x-ndjson",
116
+ "User-Agent" => @transport.send(:user_agent_header)}, :code => 200 )
117
+
118
+ response = transport.perform_request 'GET', '/', {}
119
+ assert_equal response.status, 200
120
+ end
121
+
122
+ should "set headers from 'transport_options'" do
123
+ options = {
124
+ :transport_options => {
125
+ :headers => { "Content-Type" => "foo/bar"}
126
+ }
127
+ }
128
+
129
+ transport = Manticore.new :hosts => [ { :host => 'localhost', :port => 8080 } ], :options => options
130
+
131
+ assert_equal('foo/bar', transport.connections.first.connection.instance_variable_get(:@options)[:headers]['Content-Type'])
132
+ # TODO: Needs to check @request_options
133
+ end
134
+
135
+ should "handle HTTP methods" do
136
+ @transport.connections.first.connection.expects(:delete).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
137
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
138
+ @transport.connections.first.connection.expects(:head).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
139
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
140
+ @transport.connections.first.connection.expects(:get).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
141
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
142
+ @transport.connections.first.connection.expects(:put).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
143
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
144
+ @transport.connections.first.connection.expects(:post).with('http://127.0.0.1:8080/', { headers: {"Content-Type" => "application/json",
145
+ "User-Agent" => @transport.send(:user_agent_header)}}).returns(stub_everything)
146
+
147
+ %w| HEAD GET PUT POST DELETE |.each { |method| @transport.perform_request method, '/' }
148
+
149
+ assert_raise(ArgumentError) { @transport.perform_request 'FOOBAR', '/' }
150
+ end
151
+
152
+ should "allow to set options for Manticore" do
153
+ options = { :headers => {"User-Agent" => "myapp-0.0" }}
154
+ transport = Manticore.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => options
155
+ transport.connections.first.connection
156
+ .expects(:get)
157
+ .with do |host, _options|
158
+ assert_equal 'myapp-0.0', _options[:headers]['User-Agent']
159
+ true
160
+ end
161
+ .returns(stub_everything)
162
+
163
+ transport.perform_request 'GET', '/', {}
164
+ end
165
+
166
+ should "allow to set ssl options for Manticore" do
167
+ options = {
168
+ :ssl => {
169
+ :truststore => "test.jks",
170
+ :truststore_password => "test",
171
+ :verify => false
172
+ }
173
+ }
174
+
175
+ ::Manticore::Client.expects(:new).with(options)
176
+ transport = Manticore.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => options
177
+ end
178
+
179
+ should "pass :transport_options to Manticore::Client" do
180
+ options = {
181
+ :transport_options => { :potatoes => 1 }
182
+ }
183
+
184
+ ::Manticore::Client.expects(:new).with(:potatoes => 1, :ssl => {})
185
+ transport = Manticore.new :hosts => [ { :host => 'foobar', :port => 1234 } ], :options => options
186
+ end
187
+ end
188
+
189
+ end
190
+
191
+ end
data.tar.gz.sig CHANGED
Binary file