elastic-enterprise-search 0.3.0 → 7.13.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) 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.10.0.beta.1.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 +49 -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 +27 -147
  32. data/Rakefile +48 -1
  33. data/docs/guide/app-search-api.asciidoc +186 -0
  34. data/docs/guide/connecting.asciidoc +171 -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 +16 -0
  43. data/docs/guide/release_notes/index.asciidoc +14 -0
  44. data/docs/guide/workplace-search-api.asciidoc +138 -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 +46 -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 +81 -15
  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 +62 -80
  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 +49 -0
  95. data/lib/elastic/workplace-search/api/add_user_permissions.rb +54 -0
  96. data/lib/elastic/workplace-search/api/content_source.rb +49 -0
  97. data/lib/elastic/workplace-search/api/create_analytics_event.rb +59 -0
  98. data/lib/elastic/workplace-search/api/create_content_source.rb +52 -0
  99. data/lib/elastic/workplace-search/api/create_external_identity.rb +53 -0
  100. data/lib/elastic/workplace-search/api/delete_all_documents.rb +49 -0
  101. data/lib/elastic/workplace-search/api/delete_content_source.rb +49 -0
  102. data/lib/elastic/workplace-search/api/delete_documents.rb +51 -0
  103. data/lib/elastic/workplace-search/api/delete_external_identity.rb +53 -0
  104. data/lib/elastic/workplace-search/api/document.rb +53 -0
  105. data/lib/elastic/workplace-search/api/external_identity.rb +53 -0
  106. data/lib/elastic/workplace-search/api/index_documents.rb +52 -0
  107. data/lib/elastic/workplace-search/api/list_content_sources.rb +48 -0
  108. data/lib/elastic/workplace-search/api/list_external_identities.rb +51 -0
  109. data/lib/elastic/workplace-search/api/list_permissions.rb +51 -0
  110. data/lib/elastic/workplace-search/api/put_content_source.rb +55 -0
  111. data/lib/elastic/workplace-search/api/put_external_identity.rb +56 -0
  112. data/lib/elastic/workplace-search/api/put_user_permissions.rb +54 -0
  113. data/lib/elastic/workplace-search/api/remove_user_permissions.rb +54 -0
  114. data/lib/elastic/workplace-search/api/search.rb +60 -0
  115. data/lib/elastic/workplace-search/api/user_permissions.rb +53 -0
  116. data/lib/elastic/workplace-search/workplace_search.rb +89 -0
  117. data/spec/app-search/api_count_analytics_spec.rb +34 -0
  118. data/spec/app-search/api_curations_spec.rb +97 -0
  119. data/spec/app-search/api_documents_spec.rb +102 -0
  120. data/spec/app-search/api_engines_spec.rb +67 -0
  121. data/spec/app-search/api_log_clickthrough_spec.rb +34 -0
  122. data/spec/app-search/api_logs_spec.rb +36 -0
  123. data/spec/app-search/api_meta_engines_spec.rb +72 -0
  124. data/spec/app-search/api_query_suggestion_spec.rb +39 -0
  125. data/spec/app-search/api_schema_spec.rb +48 -0
  126. data/spec/app-search/api_search_and_multi_search_spec.rb +48 -0
  127. data/spec/app-search/api_search_settings_spec.rb +76 -0
  128. data/spec/app-search/api_spec_helper.rb +14 -0
  129. data/spec/app-search/api_synonyms_spec.rb +79 -0
  130. data/spec/app-search/api_top_clicks_analytics_spec.rb +44 -0
  131. data/spec/app-search/api_top_queries_analytics_spec.rb +34 -0
  132. data/spec/app-search/client_spec.rb +88 -0
  133. data/spec/app-search/date_spec.rb +69 -0
  134. data/spec/enterprise-search/client_spec.rb +107 -0
  135. data/spec/enterprise-search/request_spec.rb +136 -0
  136. data/spec/enterprise-search/utils_spec.rb +46 -0
  137. data/spec/fixtures/vcr/app_search/add_meta_engine_source.yml +109 -0
  138. data/spec/fixtures/vcr/app_search/api_documents.yml +56 -0
  139. data/spec/fixtures/vcr/app_search/api_index_documents.yml +57 -0
  140. data/spec/fixtures/vcr/app_search/api_log_clickthrough.yml +54 -0
  141. data/spec/fixtures/vcr/app_search/api_logs.yml +70 -0
  142. data/spec/fixtures/vcr/app_search/api_put_schema.yml +109 -0
  143. data/spec/fixtures/vcr/app_search/api_put_search_settings.yml +56 -0
  144. data/spec/fixtures/vcr/app_search/api_query_suggestion.yml +59 -0
  145. data/spec/fixtures/vcr/app_search/api_reset_search_settings.yml +56 -0
  146. data/spec/fixtures/vcr/app_search/api_schema.yml +56 -0
  147. data/spec/fixtures/vcr/app_search/api_search_settings.yml +56 -0
  148. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics.yml +55 -0
  149. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics_query.yml +55 -0
  150. data/spec/fixtures/vcr/app_search/api_top_queries_analytics.yml +55 -0
  151. data/spec/fixtures/vcr/app_search/count_analytics.yml +55 -0
  152. data/spec/fixtures/vcr/app_search/create_and_update_document.yml +107 -0
  153. data/spec/fixtures/vcr/app_search/create_curation.yml +113 -0
  154. data/spec/fixtures/vcr/app_search/create_engine.yml +55 -0
  155. data/spec/fixtures/vcr/app_search/create_meta_engine.yml +56 -0
  156. data/spec/fixtures/vcr/app_search/create_synonym_set.yml +56 -0
  157. data/spec/fixtures/vcr/app_search/delete_curation.yml +56 -0
  158. data/spec/fixtures/vcr/app_search/delete_engine.yml +55 -0
  159. data/spec/fixtures/vcr/app_search/delete_meta_engine_source.yml +56 -0
  160. data/spec/fixtures/vcr/app_search/delete_synonym_set.yml +56 -0
  161. data/spec/fixtures/vcr/app_search/get_curation.yml +56 -0
  162. data/spec/fixtures/vcr/app_search/get_engine.yml +55 -0
  163. data/spec/fixtures/vcr/app_search/index_and_delete_document.yml +107 -0
  164. data/spec/fixtures/vcr/app_search/list_curations.yml +56 -0
  165. data/spec/fixtures/vcr/app_search/list_documents.yml +57 -0
  166. data/spec/fixtures/vcr/app_search/list_engines.yml +55 -0
  167. data/spec/fixtures/vcr/app_search/list_synonym_sets.yml +56 -0
  168. data/spec/fixtures/vcr/app_search/multi_query_search.yml +63 -0
  169. data/spec/fixtures/vcr/app_search/put_curation.yml +113 -0
  170. data/spec/fixtures/vcr/app_search/put_synonym_set.yml +56 -0
  171. data/spec/fixtures/vcr/app_search/search.yml +57 -0
  172. data/spec/fixtures/vcr/app_search/single_query_search.yml +60 -0
  173. data/spec/fixtures/vcr/app_search/synonym_set.yml +56 -0
  174. data/spec/fixtures/vcr/workplace_search/create_analytics_event.yml +55 -0
  175. data/spec/fixtures/vcr/workplace_search/oauth_request_token.yml +57 -0
  176. data/spec/fixtures/vcr/workplace_search/search_request.yml +60 -0
  177. data/spec/integration/enterprise_search_api_spec.rb +100 -0
  178. data/spec/integration/workplace_search_spec.rb +253 -0
  179. data/spec/spec_helper.rb +27 -14
  180. data/spec/webmock_requires.rb +4 -0
  181. data/spec/workplace-search/client_spec.rb +77 -0
  182. data/spec/workplace-search/create_analytics_event_spec.rb +59 -0
  183. data/spec/workplace-search/search_spec.rb +53 -0
  184. metadata +266 -45
  185. data/.circleci/config.yml +0 -68
  186. data/.travis.yml +0 -15
  187. data/NOTICE.txt +0 -3
  188. data/lib/elastic/enterprise-search.rb +0 -7
  189. data/lib/elastic/enterprise-search/client/content_source_documents.rb +0 -46
  190. data/lib/elastic/enterprise-search/client/permissions.rb +0 -30
  191. data/logo-enterprise-search.png +0 -0
  192. data/spec/client/content_source_documents_spec.rb +0 -55
  193. data/spec/client/permissions_spec.rb +0 -75
  194. data/spec/configuration_spec.rb +0 -19
  195. data/spec/fixtures/vcr/add_user_permissions.yml +0 -55
  196. data/spec/fixtures/vcr/async_create_or_update_document_success.yml +0 -51
  197. data/spec/fixtures/vcr/destroy_documents_success.yml +0 -51
  198. data/spec/fixtures/vcr/get_user_permissions.yml +0 -55
  199. data/spec/fixtures/vcr/list_all_permissions.yml +0 -55
  200. data/spec/fixtures/vcr/list_all_permissions_with_paging.yml +0 -55
  201. data/spec/fixtures/vcr/remove_user_permissions.yml +0 -55
  202. data/spec/fixtures/vcr/update_user_permissions.yml +0 -55
@@ -0,0 +1,12 @@
1
+ ---
2
+ - job:
3
+ name: elastic+enterprise-search-ruby+7.10.0.beta.1
4
+ display-name: 'elastic / enterprise-search-ruby # 7.10.0.beta.1'
5
+ description: Testing the enterprise-search-ruby 7.10.0.beta.1 branch.
6
+ junit_results: "*-junit.xml"
7
+ parameters:
8
+ - string:
9
+ name: branch_specifier
10
+ default: refs/heads/7.10.0.beta.1
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,49 @@
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 RUBY_VERSION: ${RUBY_VERSION}\033[0m"
18
+ echo -e "\033[34;1mINFO:\033[0m RUNSCRIPTS: ${RUNSCRIPTS}\033[0m"
19
+ echo -e "\033[34;1mINFO:\033[0m URL: ${elasticsearch_url}\033[0m"
20
+
21
+ echo -e "\033[34;1mINFO:\033[0m pinging Elasticsearch ..\033[0m"
22
+ curl --insecure --fail $external_elasticsearch_url/_cluster/health?pretty
23
+
24
+ if [[ "$RUNSCRIPTS" = *"enterprise-search"* ]]; then
25
+ enterprise_search_url="http://localhost:3002"
26
+ echo -e "\033[34;1mINFO:\033[0m pinging Enterprise Search ..\033[0m"
27
+ curl -I --fail $enterprise_search_url
28
+ fi
29
+
30
+ echo -e "\033[32;1mSUCCESS:\033[0m successfully started the ${STACK_VERSION} stack.\033[0m"
31
+
32
+ echo -e "\033[32;1mBUILD: \033[31mRuby \e[0m container.\033[0m"
33
+
34
+ docker build \
35
+ --file .ci/Dockerfile \
36
+ --tag elastic/enterprise-search-ruby \
37
+ --build-arg RUBY_VERSION=${RUBY_VERSION} \
38
+ .
39
+
40
+ echo -e "\033[32;1mRUN: \033[31mRuby \e[0m container.\033[0m"
41
+
42
+ docker run \
43
+ --network ${network_name} \
44
+ --name enterprise-search-ruby \
45
+ --env "ELASTIC_ENTERPRISE_HOST=http://${CONTAINER_NAME}:3002" \
46
+ --rm \
47
+ --volume `pwd`:/code/enterprise-search-ruby \
48
+ elastic/enterprise-search-ruby \
49
+ 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.13-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