elastic-enterprise-search 0.2.1 → 7.12.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 (201) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/.gitignore +1 -0
  3. data/.ci/Dockerfile +12 -0
  4. data/.ci/certs/README.md +50 -0
  5. data/.ci/certs/ca.crt +20 -0
  6. data/.ci/certs/ca.key +27 -0
  7. data/.ci/certs/testnode.crt +21 -0
  8. data/.ci/certs/testnode.key +27 -0
  9. data/.ci/certs/testnode_no_san.crt +19 -0
  10. data/.ci/certs/testnode_no_san.key +27 -0
  11. data/.ci/functions/cleanup.sh +67 -0
  12. data/.ci/functions/imports.sh +59 -0
  13. data/.ci/functions/wait-for-container.sh +36 -0
  14. data/.ci/jobs/defaults.yml +69 -0
  15. data/.ci/jobs/elastic+enterprise-search-ruby+7.11.yml +12 -0
  16. data/.ci/jobs/elastic+enterprise-search-ruby+master.yml +12 -0
  17. data/.ci/jobs/elastic+enterprise-search-ruby+pull-request.yml +19 -0
  18. data/.ci/run-elasticsearch.sh +127 -0
  19. data/.ci/run-enterprise-search.sh +71 -0
  20. data/.ci/run-local.sh +14 -0
  21. data/.ci/run-repository.sh +47 -0
  22. data/.ci/run-tests +27 -0
  23. data/.ci/test-matrix.yml +14 -0
  24. data/.github/workflows/rubocop.yml +15 -0
  25. data/.github/workflows/testing.yml +40 -0
  26. data/.gitignore +4 -0
  27. data/.rubocop.yml +52 -0
  28. data/CONTRIBUTING.md +43 -0
  29. data/Gemfile +23 -1
  30. data/{LICENSE.txt → LICENSE} +33 -32
  31. data/README.md +29 -93
  32. data/Rakefile +48 -1
  33. data/docs/guide/app-search-api.asciidoc +186 -0
  34. data/docs/guide/connecting.asciidoc +125 -0
  35. data/docs/guide/development.asciidoc +42 -0
  36. data/docs/guide/enterprise-search-api.asciidoc +46 -0
  37. data/docs/guide/index.asciidoc +19 -0
  38. data/docs/guide/installation.asciidoc +18 -0
  39. data/docs/guide/overview.asciidoc +59 -0
  40. data/docs/guide/release_notes/710.asciidoc +4 -0
  41. data/docs/guide/release_notes/711.asciidoc +27 -0
  42. data/docs/guide/release_notes/712.asciidoc +26 -0
  43. data/docs/guide/release_notes/index.asciidoc +14 -0
  44. data/docs/guide/workplace-search-api.asciidoc +121 -0
  45. data/elastic-enterprise-search.gemspec +49 -12
  46. data/lib/elastic-enterprise-search.rb +20 -1
  47. data/lib/elastic/.rubocop.yml +6 -0
  48. data/lib/elastic/app-search/api/add_meta_engine_source.rb +51 -0
  49. data/lib/elastic/app-search/api/api_logs.rb +62 -0
  50. data/lib/elastic/app-search/api/count_analytics.rb +52 -0
  51. data/lib/elastic/app-search/api/create_curation.rb +54 -0
  52. data/lib/elastic/app-search/api/create_engine.rb +53 -0
  53. data/lib/elastic/app-search/api/create_synonym_set.rb +51 -0
  54. data/lib/elastic/app-search/api/curation.rb +53 -0
  55. data/lib/elastic/app-search/api/delete_curation.rb +53 -0
  56. data/lib/elastic/app-search/api/delete_documents.rb +51 -0
  57. data/lib/elastic/app-search/api/delete_engine.rb +50 -0
  58. data/lib/elastic/app-search/api/delete_meta_engine_source.rb +51 -0
  59. data/lib/elastic/app-search/api/delete_synonym_set.rb +53 -0
  60. data/lib/elastic/app-search/api/documents.rb +51 -0
  61. data/lib/elastic/app-search/api/engine.rb +50 -0
  62. data/lib/elastic/app-search/api/index_documents.rb +51 -0
  63. data/lib/elastic/app-search/api/list_curations.rb +52 -0
  64. data/lib/elastic/app-search/api/list_documents.rb +52 -0
  65. data/lib/elastic/app-search/api/list_engines.rb +49 -0
  66. data/lib/elastic/app-search/api/list_synonym_sets.rb +52 -0
  67. data/lib/elastic/app-search/api/log_clickthrough.rb +57 -0
  68. data/lib/elastic/app-search/api/multi_search.rb +51 -0
  69. data/lib/elastic/app-search/api/put_curation.rb +57 -0
  70. data/lib/elastic/app-search/api/put_documents.rb +51 -0
  71. data/lib/elastic/app-search/api/put_schema.rb +51 -0
  72. data/lib/elastic/app-search/api/put_search_settings.rb +51 -0
  73. data/lib/elastic/app-search/api/put_synonym_set.rb +54 -0
  74. data/lib/elastic/app-search/api/query_suggestion.rb +54 -0
  75. data/lib/elastic/app-search/api/reset_search_settings.rb +50 -0
  76. data/lib/elastic/app-search/api/schema.rb +50 -0
  77. data/lib/elastic/app-search/api/search.rb +50 -0
  78. data/lib/elastic/app-search/api/search_settings.rb +50 -0
  79. data/lib/elastic/app-search/api/synonym_set.rb +53 -0
  80. data/lib/elastic/app-search/api/top_clicks_analytics.rb +54 -0
  81. data/lib/elastic/app-search/api/top_queries_analytics.rb +53 -0
  82. data/lib/elastic/app-search/app_search.rb +82 -0
  83. data/lib/elastic/enterprise-search/api/health.rb +43 -0
  84. data/lib/elastic/enterprise-search/api/put_read_only.rb +44 -0
  85. data/lib/elastic/enterprise-search/api/read_only.rb +43 -0
  86. data/lib/elastic/enterprise-search/api/stats.rb +45 -0
  87. data/lib/elastic/enterprise-search/api/version.rb +43 -0
  88. data/lib/elastic/enterprise-search/client.rb +90 -52
  89. data/lib/elastic/enterprise-search/configuration.rb +32 -16
  90. data/lib/elastic/enterprise-search/exceptions.rb +19 -0
  91. data/lib/elastic/enterprise-search/request.rb +59 -81
  92. data/lib/elastic/enterprise-search/utils.rb +28 -1
  93. data/lib/elastic/enterprise-search/version.rb +20 -1
  94. data/lib/elastic/enterprise_search.rb +38 -0
  95. data/lib/elastic/workplace-search/api/add_user_permissions.rb +54 -0
  96. data/lib/elastic/workplace-search/api/create_analytics_event.rb +59 -0
  97. data/lib/elastic/workplace-search/api/create_external_identity.rb +51 -0
  98. data/lib/elastic/workplace-search/api/delete_documents.rb +51 -0
  99. data/lib/elastic/workplace-search/api/delete_external_identity.rb +53 -0
  100. data/lib/elastic/workplace-search/api/external_identity.rb +53 -0
  101. data/lib/elastic/workplace-search/api/index_documents.rb +52 -0
  102. data/lib/elastic/workplace-search/api/list_external_identities.rb +51 -0
  103. data/lib/elastic/workplace-search/api/list_permissions.rb +51 -0
  104. data/lib/elastic/workplace-search/api/put_external_identity.rb +54 -0
  105. data/lib/elastic/workplace-search/api/put_user_permissions.rb +54 -0
  106. data/lib/elastic/workplace-search/api/remove_user_permissions.rb +54 -0
  107. data/lib/elastic/workplace-search/api/search.rb +60 -0
  108. data/lib/elastic/workplace-search/api/user_permissions.rb +53 -0
  109. data/lib/elastic/workplace-search/workplace_search.rb +84 -0
  110. data/spec/app-search/api_count_analytics_spec.rb +34 -0
  111. data/spec/app-search/api_curations_spec.rb +97 -0
  112. data/spec/app-search/api_documents_spec.rb +102 -0
  113. data/spec/app-search/api_engines_spec.rb +67 -0
  114. data/spec/app-search/api_log_clickthrough_spec.rb +34 -0
  115. data/spec/app-search/api_logs_spec.rb +36 -0
  116. data/spec/app-search/api_meta_engines_spec.rb +72 -0
  117. data/spec/app-search/api_query_suggestion_spec.rb +39 -0
  118. data/spec/app-search/api_schema_spec.rb +48 -0
  119. data/spec/app-search/api_search_and_multi_search_spec.rb +48 -0
  120. data/spec/app-search/api_search_settings_spec.rb +76 -0
  121. data/spec/app-search/api_spec_helper.rb +14 -0
  122. data/spec/app-search/api_synonyms_spec.rb +79 -0
  123. data/spec/app-search/api_top_clicks_analytics_spec.rb +44 -0
  124. data/spec/app-search/api_top_queries_analytics_spec.rb +34 -0
  125. data/spec/app-search/client_spec.rb +88 -0
  126. data/spec/app-search/date_spec.rb +69 -0
  127. data/spec/enterprise-search/client_spec.rb +107 -0
  128. data/spec/enterprise-search/request_spec.rb +136 -0
  129. data/spec/enterprise-search/utils_spec.rb +46 -0
  130. data/spec/fixtures/vcr/app_search/add_meta_engine_source.yml +109 -0
  131. data/spec/fixtures/vcr/app_search/api_documents.yml +56 -0
  132. data/spec/fixtures/vcr/app_search/api_index_documents.yml +57 -0
  133. data/spec/fixtures/vcr/app_search/api_log_clickthrough.yml +54 -0
  134. data/spec/fixtures/vcr/app_search/api_logs.yml +70 -0
  135. data/spec/fixtures/vcr/app_search/api_put_schema.yml +109 -0
  136. data/spec/fixtures/vcr/app_search/api_put_search_settings.yml +56 -0
  137. data/spec/fixtures/vcr/app_search/api_query_suggestion.yml +59 -0
  138. data/spec/fixtures/vcr/app_search/api_reset_search_settings.yml +56 -0
  139. data/spec/fixtures/vcr/app_search/api_schema.yml +56 -0
  140. data/spec/fixtures/vcr/app_search/api_search_settings.yml +56 -0
  141. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics.yml +55 -0
  142. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics_query.yml +55 -0
  143. data/spec/fixtures/vcr/app_search/api_top_queries_analytics.yml +55 -0
  144. data/spec/fixtures/vcr/app_search/count_analytics.yml +55 -0
  145. data/spec/fixtures/vcr/app_search/create_and_update_document.yml +107 -0
  146. data/spec/fixtures/vcr/app_search/create_curation.yml +113 -0
  147. data/spec/fixtures/vcr/app_search/create_engine.yml +55 -0
  148. data/spec/fixtures/vcr/app_search/create_meta_engine.yml +56 -0
  149. data/spec/fixtures/vcr/app_search/create_synonym_set.yml +56 -0
  150. data/spec/fixtures/vcr/app_search/delete_curation.yml +56 -0
  151. data/spec/fixtures/vcr/app_search/delete_engine.yml +55 -0
  152. data/spec/fixtures/vcr/app_search/delete_meta_engine_source.yml +56 -0
  153. data/spec/fixtures/vcr/app_search/delete_synonym_set.yml +56 -0
  154. data/spec/fixtures/vcr/app_search/get_curation.yml +56 -0
  155. data/spec/fixtures/vcr/app_search/get_engine.yml +55 -0
  156. data/spec/fixtures/vcr/app_search/index_and_delete_document.yml +107 -0
  157. data/spec/fixtures/vcr/app_search/list_curations.yml +56 -0
  158. data/spec/fixtures/vcr/app_search/list_documents.yml +57 -0
  159. data/spec/fixtures/vcr/app_search/list_engines.yml +55 -0
  160. data/spec/fixtures/vcr/app_search/list_synonym_sets.yml +56 -0
  161. data/spec/fixtures/vcr/app_search/multi_query_search.yml +63 -0
  162. data/spec/fixtures/vcr/app_search/put_curation.yml +113 -0
  163. data/spec/fixtures/vcr/app_search/put_synonym_set.yml +56 -0
  164. data/spec/fixtures/vcr/app_search/search.yml +57 -0
  165. data/spec/fixtures/vcr/app_search/single_query_search.yml +60 -0
  166. data/spec/fixtures/vcr/app_search/synonym_set.yml +56 -0
  167. data/spec/fixtures/vcr/workplace_search/add_user_permissions.yml +53 -0
  168. data/spec/fixtures/vcr/workplace_search/clear_user_permissions.yml +53 -0
  169. data/spec/fixtures/vcr/workplace_search/create_analytics_event.yml +55 -0
  170. data/spec/fixtures/vcr/workplace_search/create_external_identity.yml +53 -0
  171. data/spec/fixtures/vcr/workplace_search/delete_documents.yml +53 -0
  172. data/spec/fixtures/vcr/workplace_search/delete_external_identity.yml +53 -0
  173. data/spec/fixtures/vcr/workplace_search/index_documents.yml +55 -0
  174. data/spec/fixtures/vcr/workplace_search/list_external_identities.yml +53 -0
  175. data/spec/fixtures/vcr/workplace_search/list_permissions.yml +53 -0
  176. data/spec/fixtures/vcr/workplace_search/oauth_request_token.yml +57 -0
  177. data/spec/fixtures/vcr/workplace_search/put_external_identity.yml +53 -0
  178. data/spec/fixtures/vcr/workplace_search/put_user_permissions.yml +103 -0
  179. data/spec/fixtures/vcr/workplace_search/remove_user_permissions.yml +53 -0
  180. data/spec/fixtures/vcr/workplace_search/retrieve_external_identity.yml +53 -0
  181. data/spec/fixtures/vcr/workplace_search/search_request.yml +60 -0
  182. data/spec/fixtures/vcr/workplace_search/user_permissions_empty.yml +53 -0
  183. data/spec/integration/enterprise_search_api_spec.rb +96 -0
  184. data/spec/spec_helper.rb +27 -14
  185. data/spec/webmock_requires.rb +4 -0
  186. data/spec/workplace-search/client_spec.rb +77 -0
  187. data/spec/workplace-search/create_analytics_event_spec.rb +59 -0
  188. data/spec/workplace-search/documents_spec.rb +80 -0
  189. data/spec/workplace-search/external_identities_spec.rb +84 -0
  190. data/spec/workplace-search/permissions_spec.rb +136 -0
  191. data/spec/workplace-search/search_spec.rb +53 -0
  192. metadata +272 -28
  193. data/.circleci/config.yml +0 -68
  194. data/.travis.yml +0 -15
  195. data/NOTICE.txt +0 -3
  196. data/lib/elastic/enterprise-search.rb +0 -7
  197. data/logo-enterprise-search.png +0 -0
  198. data/spec/client_spec.rb +0 -57
  199. data/spec/configuration_spec.rb +0 -19
  200. data/spec/fixtures/vcr/async_create_or_update_document_success.yml +0 -51
  201. data/spec/fixtures/vcr/destroy_documents_success.yml +0 -51
@@ -0,0 +1,12 @@
1
+ ---
2
+ - job:
3
+ name: elastic+enterprise-search-ruby+7.11
4
+ display-name: 'elastic / enterprise-search-ruby # 7.11'
5
+ description: Testing the enterprise-search-ruby 7.11 branch.
6
+ junit_results: "*-junit.xml"
7
+ parameters:
8
+ - string:
9
+ name: branch_specifier
10
+ default: refs/heads/7.11
11
+ description: the Git branch specifier to build (<branchName>, <tagName>,
12
+ <commitId>, etc.)
@@ -0,0 +1,12 @@
1
+ ---
2
+ - job:
3
+ name: elastic+enterprise-search-ruby+master
4
+ display-name: 'elastic / enterprise-search-ruby # master'
5
+ description: Testing the enterprise-search-ruby master branch.
6
+ junit_results: "*-junit.xml"
7
+ parameters:
8
+ - string:
9
+ name: branch_specifier
10
+ default: refs/heads/master
11
+ description: the Git branch specifier to build (<branchName>, <tagName>,
12
+ <commitId>, etc.)
@@ -0,0 +1,19 @@
1
+ ---
2
+ - job:
3
+ name: elastic+enterprise-search-ruby+pull-request
4
+ display-name: 'elastic / enterprise-search-ruby # pull-request'
5
+ description: Testing of enterprise-search-ruby pull requests.
6
+ junit_results: "*-junit.xml"
7
+ scm:
8
+ - git:
9
+ branches:
10
+ - ${ghprbActualCommit}
11
+ refspec: +refs/pull/*:refs/remotes/origin/pr/*
12
+ triggers:
13
+ - github-pull-request:
14
+ org-list:
15
+ - elastic
16
+ allow-whitelist-orgs-as-admins: true
17
+ github-hooks: true
18
+ status-context: clients-ci
19
+ cancel-builds-on-update: true
@@ -0,0 +1,127 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Launch one or more Elasticsearch nodes via the Docker image,
4
+ # to form a cluster suitable for running the REST API tests.
5
+ #
6
+ # Export the STACK_VERSION variable, eg. '8.0.0-SNAPSHOT'.
7
+ # Export the TEST_SUITE variable, eg. 'free' or 'platinum' defaults to 'free'.
8
+ # Export the NUMBER_OF_NODES variable to start more than 1 node
9
+
10
+ # Version 1.2.0
11
+ # - Initial version of the run-elasticsearch.sh script
12
+ # - Deleting the volume should not dependent on the container still running
13
+ # - Fixed `ES_JAVA_OPTS` config
14
+ # - Moved to STACK_VERSION and TEST_VERSION
15
+ # - Refactored into functions and imports
16
+ # - Support NUMBER_OF_NODES
17
+ # - Added 5 retries on docker pull for fixing transient network errors
18
+
19
+ script_path=$(dirname $(realpath -s $0))
20
+ source $script_path/functions/imports.sh
21
+ set -euo pipefail
22
+
23
+ echo -e "\033[34;1mINFO:\033[0m Take down node if called twice with the same arguments (DETACH=true) or on seperate terminals \033[0m"
24
+ cleanup_node $es_node_name
25
+
26
+ master_node_name=${es_node_name}
27
+ cluster_name=${moniker}${suffix}
28
+
29
+ declare -a volumes
30
+ environment=($(cat <<-END
31
+ --env node.name=$es_node_name
32
+ --env cluster.name=$cluster_name
33
+ --env cluster.initial_master_nodes=$master_node_name
34
+ --env discovery.seed_hosts=$master_node_name
35
+ --env cluster.routing.allocation.disk.threshold_enabled=false
36
+ --env bootstrap.memory_lock=true
37
+ --env node.attr.testattr=test
38
+ --env path.repo=/tmp
39
+ --env repositories.url.allowed_urls=http://snapshot.test*
40
+ END
41
+ ))
42
+ if [[ "$TEST_SUITE" == "platinum" ]]; then
43
+ environment+=($(cat <<-END
44
+ --env ELASTIC_PASSWORD=$elastic_password
45
+ --env xpack.license.self_generated.type=trial
46
+ --env xpack.security.enabled=true
47
+ --env xpack.security.http.ssl.enabled=true
48
+ --env xpack.security.http.ssl.verification_mode=certificate
49
+ --env xpack.security.http.ssl.key=certs/testnode.key
50
+ --env xpack.security.http.ssl.certificate=certs/testnode.crt
51
+ --env xpack.security.http.ssl.certificate_authorities=certs/ca.crt
52
+ --env xpack.security.transport.ssl.enabled=true
53
+ --env xpack.security.transport.ssl.key=certs/testnode.key
54
+ --env xpack.security.transport.ssl.certificate=certs/testnode.crt
55
+ --env xpack.security.transport.ssl.certificate_authorities=certs/ca.crt
56
+ END
57
+ ))
58
+ volumes+=($(cat <<-END
59
+ --volume $ssl_cert:/usr/share/elasticsearch/config/certs/testnode.crt
60
+ --volume $ssl_key:/usr/share/elasticsearch/config/certs/testnode.key
61
+ --volume $ssl_ca:/usr/share/elasticsearch/config/certs/ca.crt
62
+ END
63
+ ))
64
+ fi
65
+
66
+ cert_validation_flags=""
67
+ if [[ "$TEST_SUITE" == "platinum" ]]; then
68
+ cert_validation_flags="--insecure --cacert /usr/share/elasticsearch/config/certs/ca.crt --resolve ${es_node_name}:443:127.0.0.1"
69
+ fi
70
+
71
+ # Pull the container, retry on failures up to 5 times with
72
+ # short delays between each attempt. Fixes most transient network errors.
73
+ docker_pull_attempts=0
74
+ until [ "$docker_pull_attempts" -ge 5 ]
75
+ do
76
+ docker pull docker.elastic.co/elasticsearch/"$elasticsearch_container" && break
77
+ docker_pull_attempts=$((docker_pull_attempts+1))
78
+ echo "Failed to pull image, retrying in 10 seconds (retry $docker_pull_attempts/5)..."
79
+ sleep 10
80
+ done
81
+
82
+ NUMBER_OF_NODES=${NUMBER_OF_NODES-1}
83
+ http_port=9200
84
+ for (( i=0; i<$NUMBER_OF_NODES; i++, http_port++ )); do
85
+ node_name=${es_node_name}$i
86
+ node_url=${external_elasticsearch_url/9200/${http_port}}$i
87
+ if [[ "$i" == "0" ]]; then node_name=$es_node_name; fi
88
+ environment+=($(cat <<-END
89
+ --env node.name=$node_name
90
+ END
91
+ ))
92
+ echo "$i: $http_port $node_url "
93
+ volume_name=${node_name}-${suffix}-data
94
+ volumes+=($(cat <<-END
95
+ --volume $volume_name:/usr/share/elasticsearch/data${i}
96
+ END
97
+ ))
98
+
99
+ # make sure we detach for all but the last node if DETACH=false (default) so all nodes are started
100
+ local_detach="true"
101
+ if [[ "$i" == "$((NUMBER_OF_NODES-1))" ]]; then local_detach=$DETACH; fi
102
+ echo -e "\033[34;1mINFO:\033[0m Starting container $node_name \033[0m"
103
+ set -x
104
+ docker run \
105
+ --name "$node_name" \
106
+ --network "$network_name" \
107
+ --env "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
108
+ "${environment[@]}" \
109
+ "${volumes[@]}" \
110
+ --publish "$http_port":9200 \
111
+ --ulimit nofile=65536:65536 \
112
+ --ulimit memlock=-1:-1 \
113
+ --detach="$local_detach" \
114
+ --health-cmd="curl $cert_validation_flags --fail $elasticsearch_url/_cluster/health || exit 1" \
115
+ --health-interval=2s \
116
+ --health-retries=20 \
117
+ --health-timeout=2s \
118
+ --rm \
119
+ docker.elastic.co/elasticsearch/"$elasticsearch_container";
120
+
121
+ set +x
122
+ if wait_for_container "$es_node_name" "$network_name"; then
123
+ echo -e "\033[32;1mSUCCESS:\033[0m Running on: $node_url\033[0m"
124
+ fi
125
+
126
+ done
127
+
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Launch one App Search node via the Docker image,
4
+ # to form a cluster suitable for running the REST API tests.
5
+ #
6
+ # Export the STACK_VERSION variable, eg. '8.0.0-SNAPSHOT'.
7
+
8
+ # Version 1.1.0
9
+ # - Initial version of the run-app-search.sh script
10
+ # - Refactored .ci version
11
+
12
+ script_path=$(dirname $(realpath -s $0))
13
+ source $script_path/functions/imports.sh
14
+ set -euo pipefail
15
+
16
+ CONTAINER_NAME=${CONTAINER_NAME-enterprise-search}
17
+ APP_SEARCH_SECRET_SESSION_KEY=${APP_SEARCH_SECRET_SESSION_KEY-int_test_secret}
18
+
19
+ echo -e "\033[34;1mINFO:\033[0m Take down node if called twice with the same arguments (DETACH=true) or on seperate terminals \033[0m"
20
+ cleanup_node $CONTAINER_NAME
21
+
22
+ http_port=3002
23
+ url=http://127.0.0.1:${http_port}
24
+
25
+ # Pull the container, retry on failures up to 5 times with
26
+ # short delays between each attempt. Fixes most transient network errors.
27
+ docker_pull_attempts=0
28
+ until [ "$docker_pull_attempts" -ge 5 ]
29
+ do
30
+ docker pull docker.elastic.co/enterprise-search/enterprise-search:"$STACK_VERSION" && break
31
+ docker_pull_attempts=$((docker_pull_attempts+1))
32
+ echo "Failed to pull image, retrying in 10 seconds (retry $docker_pull_attempts/5)..."
33
+ sleep 10
34
+ done
35
+
36
+ echo -e "\033[34;1mINFO:\033[0m Starting container $CONTAINER_NAME \033[0m"
37
+ set -x
38
+ docker run \
39
+ --name "$CONTAINER_NAME" \
40
+ --network "$network_name" \
41
+ --env "elasticsearch.host=$elasticsearch_url" \
42
+ --env "elasticsearch.username=elastic" \
43
+ --env "elasticsearch.password=$elastic_password" \
44
+ --env "ENT_SEARCH_DEFAULT_PASSWORD=$elastic_password" \
45
+ --env "secret_management.encryption_keys=[$APP_SEARCH_SECRET_SESSION_KEY]" \
46
+ --env "enterprise_search.listen_port=$http_port" \
47
+ --env "log_level=info" \
48
+ --env "hide_version_info=false" \
49
+ --env "worker.threads=2" \
50
+ --env "allow_es_settings_modification=true" \
51
+ --env "JAVA_OPTS=-Xms1g -Xmx2g" \
52
+ --env "elasticsearch.ssl.enabled=true" \
53
+ --env "elasticsearch.ssl.verify=true" \
54
+ --env "elasticsearch.ssl.certificate=/usr/share/app-search/config/certs/testnode.crt" \
55
+ --env "elasticsearch.ssl.certificate_authority=/usr/share/app-search/config/certs/ca.crt" \
56
+ --env "elasticsearch.ssl.key=/usr/share/app-search/config/certs/testnode.key" \
57
+ --volume $ssl_cert:/usr/share/app-search/config/certs/testnode.crt \
58
+ --volume $ssl_key:/usr/share/app-search/config/certs/testnode.key \
59
+ --volume $ssl_ca:/usr/share/app-search/config/certs/ca.crt \
60
+ --publish "$http_port":3002 \
61
+ --detach="$DETACH" \
62
+ --health-cmd="curl --insecure --fail ${url} || exit 1" \
63
+ --health-interval=30s \
64
+ --health-retries=50 \
65
+ --health-timeout=10s \
66
+ --rm \
67
+ docker.elastic.co/enterprise-search/enterprise-search:"$STACK_VERSION";
68
+
69
+ if wait_for_container "$CONTAINER_NAME" "$network_name"; then
70
+ echo -e "\033[32;1mSUCCESS:\033[0m Running on: ${url}\033[0m"
71
+ fi
data/.ci/run-local.sh ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ export TEST_SUITE=platinum
4
+ export CONTAINER_NAME=enterprise-search
5
+
6
+ script_path=$(dirname $(realpath -s $0))
7
+ source $script_path/functions/imports.sh
8
+ set -euo pipefail
9
+
10
+ echo -e "\033[1m>>>>> Start [$STACK_VERSION container] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
11
+ DETACH=true bash .ci/run-elasticsearch.sh
12
+
13
+ echo -e "\033[1m>>>>> Running run-enterprise-search.sh >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
14
+ bash .ci/run-enterprise-search.sh
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Called by entry point `run-test` use this script to add your repository specific test commands
4
+ #
5
+ # Once called Elasticsearch is up and running
6
+ #
7
+ # Its recommended to call `imports.sh` as defined here so that you get access to all variables defined there
8
+ #
9
+ # Any parameters that test-matrix.yml defines should be declared here with appropiate defaults
10
+
11
+ script_path=$(dirname $(realpath -s $0))
12
+ source $script_path/functions/imports.sh
13
+ set -euo pipefail
14
+
15
+ echo -e "\033[34;1mINFO:\033[0m VERSION: ${STACK_VERSION}\033[0m"
16
+ echo -e "\033[34;1mINFO:\033[0m TEST_SUITE: ${TEST_SUITE}\033[0m"
17
+ echo -e "\033[34;1mINFO:\033[0m RUNSCRIPTS: ${RUNSCRIPTS}\033[0m"
18
+ echo -e "\033[34;1mINFO:\033[0m URL: ${elasticsearch_url}\033[0m"
19
+
20
+ echo -e "\033[34;1mINFO:\033[0m pinging Elasticsearch ..\033[0m"
21
+ curl --insecure --fail $external_elasticsearch_url/_cluster/health?pretty
22
+
23
+ if [[ "$RUNSCRIPTS" = *"enterprise-search"* ]]; then
24
+ enterprise_search_url="http://localhost:3002"
25
+ echo -e "\033[34;1mINFO:\033[0m pinging Enterprise Search ..\033[0m"
26
+ curl -I --fail $enterprise_search_url
27
+ fi
28
+
29
+ echo -e "\033[32;1mSUCCESS:\033[0m successfully started the ${STACK_VERSION} stack.\033[0m"
30
+
31
+ echo -e "\033[32;1mBUILD: \033[31mRuby \e[0m container.\033[0m"
32
+
33
+ docker build \
34
+ --file .ci/Dockerfile \
35
+ --tag elastic/enterprise-search-ruby \
36
+ .
37
+
38
+ echo -e "\033[32;1mRUN: \033[31mRuby \e[0m container.\033[0m"
39
+
40
+ docker run \
41
+ --network ${network_name} \
42
+ --name enterprise-search-ruby \
43
+ --env "ELASTIC_ENTERPRISE_HOST=http://${CONTAINER_NAME}:3002" \
44
+ --rm \
45
+ --volume `pwd`:/code/enterprise-search-ruby \
46
+ elastic/enterprise-search-ruby \
47
+ rake spec:integration
data/.ci/run-tests ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Version 1.1
4
+ # - Moved to .ci folder and seperated out `run-repository.sh`
5
+ # - Add `$RUNSCRIPTS` env var for running Elasticsearch dependent products
6
+ export TEST_SUITE=platinum
7
+ export CONTAINER_NAME=enterprise-search
8
+ export RUNSCRIPTS=enterprise-search
9
+
10
+ script_path=$(dirname $(realpath -s $0))
11
+ source $script_path/functions/imports.sh
12
+ set -euo pipefail
13
+
14
+ echo -e "\033[1m>>>>> Start [$STACK_VERSION container] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
15
+ DETACH=true bash .ci/run-elasticsearch.sh
16
+
17
+ if [[ -n "$RUNSCRIPTS" ]]; then
18
+ for RUNSCRIPT in ${RUNSCRIPTS//,/ } ; do
19
+ echo -e "\033[1m>>>>> Running run-$RUNSCRIPT.sh >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
20
+ CONTAINER_NAME=${RUNSCRIPT} \
21
+ DETACH=true \
22
+ bash .ci/run-${RUNSCRIPT}.sh
23
+ done
24
+ fi
25
+
26
+ echo -e "\033[1m>>>>> Repository specific tests >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m"
27
+ bash .ci/run-repository.sh
@@ -0,0 +1,14 @@
1
+ ---
2
+ RUBY_VERSION:
3
+ - 3.0
4
+ - 2.7
5
+ - 2.6
6
+ - 2.5
7
+
8
+ STACK_VERSION:
9
+ - 7.x-SNAPSHOT
10
+
11
+ TEST_SUITE:
12
+ - platinum
13
+
14
+ exclude: ~
@@ -0,0 +1,15 @@
1
+ name: rubocop
2
+ on: [push, pull_request]
3
+
4
+ jobs:
5
+ rubocop:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - uses: actions/checkout@v2
9
+ - uses: ruby/setup-ruby@v1
10
+ with:
11
+ ruby-version: 2.7
12
+ - name: Run Rubocop
13
+ run: |
14
+ bundle install
15
+ bundle exec rubocop
@@ -0,0 +1,40 @@
1
+ name: master
2
+ on: [push, pull_request]
3
+
4
+ jobs:
5
+ test-ruby:
6
+ env:
7
+ ENDPOINT: http://localhost:8080
8
+ strategy:
9
+ matrix:
10
+ ruby: [ 2.5, 2.6, 2.7, 3.0 ]
11
+
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+ - uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: ${{ matrix.ruby }}
18
+ - name: Build and test with Rake
19
+ run: |
20
+ ruby -v
21
+ bundle install
22
+ bundle exec rake spec:client
23
+ test-jruby:
24
+ env:
25
+ ENDPOINT: http://localhost:3002/api/ws/v1
26
+ strategy:
27
+ fail-fast: false
28
+ matrix:
29
+ ruby: [ jruby-9.2 ]
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - uses: actions/checkout@v2
33
+ - uses: ruby/setup-ruby@v1
34
+ with:
35
+ ruby-version: ${{ matrix.ruby }}
36
+ - name: Build and test with Rake
37
+ run: |
38
+ ruby -v
39
+ bundle install
40
+ bundle exec rake spec:client
data/.gitignore CHANGED
@@ -8,3 +8,7 @@ pkg/*
8
8
  .ruby-gemset
9
9
  .yardoc
10
10
  doc
11
+ .#*
12
+ *junit.xml
13
+ .byebug_history
14
+ coverage
data/.rubocop.yml ADDED
@@ -0,0 +1,52 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.5
3
+ Layout/EndAlignment:
4
+ AutoCorrect: true
5
+ Style/StringLiterals:
6
+ EnforcedStyle: single_quotes
7
+ Layout/LineLength:
8
+ Max: 120
9
+ Style/SymbolArray:
10
+ EnforcedStyle: brackets
11
+ Style/WordArray:
12
+ EnforcedStyle: brackets
13
+ Layout/EmptyLinesAroundAttributeAccessor:
14
+ Enabled: true
15
+ Layout/SpaceAroundMethodCallOperator:
16
+ Enabled: true
17
+ Lint/DeprecatedOpenSSLConstant:
18
+ Enabled: true
19
+ Lint/MixedRegexpCaptureTypes:
20
+ Enabled: true
21
+ Lint/RaiseException:
22
+ Enabled: true
23
+ Lint/StructNewOverride:
24
+ Enabled: true
25
+ Naming/FileName:
26
+ Enabled: false
27
+ Style/ExponentialNotation:
28
+ Enabled: true
29
+ Style/HashEachMethods:
30
+ Enabled: true
31
+ Style/HashTransformKeys:
32
+ Enabled: true
33
+ Style/HashTransformValues:
34
+ Enabled: true
35
+ Style/RedundantFetchBlock:
36
+ Enabled: true
37
+ Style/RedundantRegexpCharacterClass:
38
+ Enabled: true
39
+ Style/RedundantRegexpEscape:
40
+ Enabled: true
41
+ Style/SlicingWithRange:
42
+ Enabled: true
43
+ Metrics/BlockLength:
44
+ Exclude:
45
+ - 'spec/**/*'
46
+ Metrics/MethodLength:
47
+ Max: 15
48
+ Metrics/AbcSize:
49
+ Max: 20
50
+ Style/RegexpLiteral:
51
+ EnforcedStyle: mixed
52
+ AllowInnerSlashes: true