Skip to content

Commit 8b00aae

Browse files
committed
Added the config for running Elasticsearch with XPack
1 parent 3193c51 commit 8b00aae

File tree

12 files changed

+214
-46
lines changed

12 files changed

+214
-46
lines changed

.travis.yml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,17 @@ matrix:
1717
fast_finish: true
1818
include:
1919
- php: 7.1
20-
env: ES_VERSION="7.6.0"
20+
env: TEST_SUITE="oss"
2121
- php: 7.2
22-
env: ES_VERSION="7.6.0"
22+
env: TEST_SUITE="oss"
2323
- php: 7.3
24-
env: ES_VERSION="7.6.0"
24+
env: TEST_SUITE="oss"
2525
- php: 7.4
26-
env: ES_VERSION="7.6.0"
27-
- php: 7.4
28-
env: ES_VERSION="8.0.0-SNAPSHOT"
29-
allow_failures:
30-
- php: 7.4
31-
env: ES_VERSION="8.0.0-SNAPSHOT"
26+
env: TEST_SUITE="oss"
3227

3328
env:
3429
global:
35-
- ES_TEST_HOST=http://localhost:9200
30+
- STACK_VERSION="7.x-SNAPSHOT"
3631

3732
before_install:
3833
- ./travis/run_es_docker.sh

tests/Elasticsearch/Tests/ClientIntegrationTest.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,29 @@
2323
*/
2424
class ClientIntegrationTest extends \PHPUnit\Framework\TestCase
2525
{
26+
/**
27+
* ArrayLogger
28+
*/
29+
private $logger;
30+
31+
/**
32+
* @var string
33+
*/
34+
private $host;
35+
2636
public function setUp()
2737
{
28-
if (empty(getenv('ES_TEST_HOST'))) {
29-
$this->markTestSkipped('I cannot execute integration test without ES_TEST_HOST env');
38+
$this->host = Utility::getHost();
39+
if (null == $this->host) {
40+
$this->markTestSkipped('I cannot execute integration test without TEST_SUITE env');
3041
}
3142
$this->logger = new ArrayLogger();
3243
}
3344

3445
public function testLogRequestSuccessHasInfoNotEmpty()
3546
{
3647
$client = ClientBuilder::create()
37-
->setHosts([getenv('ES_TEST_HOST')])
48+
->setHosts([$this->host])
3849
->setLogger($this->logger)
3950
->build();
4051

@@ -46,7 +57,7 @@ public function testLogRequestSuccessHasInfoNotEmpty()
4657
public function testLogRequestSuccessHasPortInInfo()
4758
{
4859
$client = ClientBuilder::create()
49-
->setHosts([getenv('ES_TEST_HOST')])
60+
->setHosts([$this->host])
5061
->setLogger($this->logger)
5162
->build();
5263

@@ -58,7 +69,7 @@ public function testLogRequestSuccessHasPortInInfo()
5869
public function testLogRequestFailHasWarning()
5970
{
6071
$client = ClientBuilder::create()
61-
->setHosts([getenv('ES_TEST_HOST')])
72+
->setHosts([$this->host])
6273
->setLogger($this->logger)
6374
->build();
6475

tests/Elasticsearch/Tests/ConnectionPool/StaticConnectionPoolIntegrationTest.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Elasticsearch\Tests\ConnectionPool;
66

77
use Elasticsearch;
8+
use Elasticsearch\Tests\Utility;
89

910
/**
1011
* Class StaticConnectionPoolIntegrationTest
@@ -18,20 +19,26 @@
1819
*/
1920
class StaticConnectionPoolIntegrationTest extends \PHPUnit\Framework\TestCase
2021
{
22+
/**
23+
* @var string
24+
*/
25+
private $host;
26+
2127
public function setUp()
2228
{
23-
if (empty(getenv('ES_TEST_HOST'))) {
24-
$this->markTestSkipped(
25-
'Elasticsearch is not configured. Check the ES_TEST_HOST env in your phpunit.xml file.'
26-
);
29+
$this->host = Utility::getHost();
30+
if (null == $this->host) {
31+
$this->markTestSkipped(sprintf(
32+
"I cannot execute %s without TEST_SUITE env", __CLASS__
33+
));
2734
}
2835
}
2936

3037
// Issue #636
3138
public function test404Liveness()
3239
{
3340
$client = \Elasticsearch\ClientBuilder::create()
34-
->setHosts([getenv('ES_TEST_HOST')])
41+
->setHosts([$this->host])
3542
->setConnectionPool(\Elasticsearch\ConnectionPool\StaticConnectionPool::class)
3643
->build();
3744

tests/Elasticsearch/Tests/Utility.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
declare(strict_types = 1);
4+
5+
namespace Elasticsearch\Tests;
6+
7+
class Utility
8+
{
9+
static public function getHost(): ?string
10+
{
11+
switch (getenv('TEST_SUITE')) {
12+
case 'oss':
13+
return 'http://localhost:9200';
14+
case 'xpack':
15+
return 'https://elastic:changeme@localhost:9200';
16+
}
17+
return null;
18+
}
19+
}

tests/Elasticsearch/Tests/YamlRunnerTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,12 @@ class YamlRunnerTest extends \PHPUnit\Framework\TestCase
108108
*/
109109
public static function getHost(): string
110110
{
111-
if (getenv('ES_TEST_HOST') !== false) {
112-
return getenv('ES_TEST_HOST');
111+
$host = Utility::getHost();
112+
if (null == $host) {
113+
echo 'Environment variable TEST_SUITE (oss, xpack) not defined.';
114+
exit;
113115
}
114-
115-
echo 'Environment variable for elasticsearch test cluster (ES_TEST_HOST) not defined. Exiting yaml test';
116-
exit;
116+
return $host;
117117
}
118118

119119
public static function setUpBeforeClass()

travis/certs/ca.crt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDSTCCAjGgAwIBAgIUIwN+0zglsexRKwE1RGHvlCcmrdwwDQYJKoZIhvcNAQEL
3+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
4+
cmF0ZWQgQ0EwHhcNMTkwMjEzMDcyMjQwWhcNMjIwMjEyMDcyMjQwWjA0MTIwMAYD
5+
VQQDEylFbGFzdGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTCC
6+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANILs0JO0e7x29zeVx21qalK
7+
XKdX+AMlGJPH75wWO/Jq6YHtxt1wYIg762krOBXfG6JsFSOIwIv5VrzGGRGjSPt9
8+
OXQyXrDDiQvsBT3rpzLNdDs7KMl2tZswwv7w9ujgud0cYnS1MOpn81rfPc73DvMg
9+
xuhplofDx6fn3++PjVRU2FNiIVWyEoaxRjCeGPMBubKZYaYbQA6vYM4Z+ByG727B
10+
AyAER3t7xmvYti/EoO2hv2HQk5zgcj/Oq3AJKhnt8LH8fnfm3TnYNM1htvXqhN05
11+
vsvhvm2PHfnA5qLlSr/3W0aI/U/PqfsFDCgyRV097sMIaKkmavb0Ue7aQ7lgtp0C
12+
AwEAAaNTMFEwHQYDVR0OBBYEFDRKlCMowWR1rwxE0d1lTEQe5O71MB8GA1UdIwQY
13+
MBaAFDRKlCMowWR1rwxE0d1lTEQe5O71MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
14+
hvcNAQELBQADggEBAKbCJ95EBpeuvF70KEt6QU70k/SH1NRvM9YzKryV0D975Jvu
15+
HOSm9HgSTULeAUFZIa4oYyf3QUfVoI+2T/aQrfXA3gfrJWsHURkyNmiHOFAbYHqi
16+
xA6i249G2GTEjc1+le/M2N2CcDKAmurW6vSGK4upXQbPd6KmnhHREX74zkWjnOa+
17+
+tibbSSOCT4Tmja2DbBxAPuivU9IB1g/hIUmbYQqKffQrBJA0658tz6w63a/Q7xN
18+
pCvvbSgiMZ6qcVIcJkBT2IooYie+ax45pQECHthgIUcQAzfmIfqlU0Qfl8rDgAmn
19+
0c1o6HQjKGU2aVGgSRuaaiHaSZjbPIZVS51sOoI=
20+
-----END CERTIFICATE-----

travis/certs/ca.pem

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDSTCCAjGgAwIBAgIUIwN+0zglsexRKwE1RGHvlCcmrdwwDQYJKoZIhvcNAQEL
3+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
4+
cmF0ZWQgQ0EwHhcNMTkwMjEzMDcyMjQwWhcNMjIwMjEyMDcyMjQwWjA0MTIwMAYD
5+
VQQDEylFbGFzdGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTCC
6+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANILs0JO0e7x29zeVx21qalK
7+
XKdX+AMlGJPH75wWO/Jq6YHtxt1wYIg762krOBXfG6JsFSOIwIv5VrzGGRGjSPt9
8+
OXQyXrDDiQvsBT3rpzLNdDs7KMl2tZswwv7w9ujgud0cYnS1MOpn81rfPc73DvMg
9+
xuhplofDx6fn3++PjVRU2FNiIVWyEoaxRjCeGPMBubKZYaYbQA6vYM4Z+ByG727B
10+
AyAER3t7xmvYti/EoO2hv2HQk5zgcj/Oq3AJKhnt8LH8fnfm3TnYNM1htvXqhN05
11+
vsvhvm2PHfnA5qLlSr/3W0aI/U/PqfsFDCgyRV097sMIaKkmavb0Ue7aQ7lgtp0C
12+
AwEAAaNTMFEwHQYDVR0OBBYEFDRKlCMowWR1rwxE0d1lTEQe5O71MB8GA1UdIwQY
13+
MBaAFDRKlCMowWR1rwxE0d1lTEQe5O71MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
14+
hvcNAQELBQADggEBAKbCJ95EBpeuvF70KEt6QU70k/SH1NRvM9YzKryV0D975Jvu
15+
HOSm9HgSTULeAUFZIa4oYyf3QUfVoI+2T/aQrfXA3gfrJWsHURkyNmiHOFAbYHqi
16+
xA6i249G2GTEjc1+le/M2N2CcDKAmurW6vSGK4upXQbPd6KmnhHREX74zkWjnOa+
17+
+tibbSSOCT4Tmja2DbBxAPuivU9IB1g/hIUmbYQqKffQrBJA0658tz6w63a/Q7xN
18+
pCvvbSgiMZ6qcVIcJkBT2IooYie+ax45pQECHthgIUcQAzfmIfqlU0Qfl8rDgAmn
19+
0c1o6HQjKGU2aVGgSRuaaiHaSZjbPIZVS51sOoI=
20+
-----END CERTIFICATE-----

travis/certs/testnode.crt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDIjCCAgqgAwIBAgIUI4QU6jA1dYSCbdIA6oAb2TBEluowDQYJKoZIhvcNAQEL
3+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
4+
cmF0ZWQgQ0EwHhcNMTkwMjEzMDcyMzEzWhcNMjIwMjEyMDcyMzEzWjATMREwDwYD
5+
VQQDEwhpbnN0YW5jZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJeT
6+
yOy6EAScZxrULKjHePciiz38grivCrhFFV+dThaRCcl3DhDzb9Eny5q5iEw3WvLQ
7+
Rqmf01jncNIhaocTt66VqveXaMubbE8O0LcG6e4kpFO+JtnVF8JTARTc+ux/1uD6
8+
hO1VG/HItM7WQrQxh4hfB2u1AX2YQtoqEtXXEC+UHWfl4QzuzXjBnKCkO/L9/6Tf
9+
yNFQWXxKnIiTs8Xm9sEhhSCBJPlLTQu+MX4vR2Uwj5XZmflDUr+ZTenl9qYxL6b3
10+
SWhh/qEl4GAj1+tS7ZZOxE0237mUh3IIFYSWSaMm8K2m/BYHkLNWL5B1dMic0lsv
11+
osSoYrQuCef4HQMCitsCAwEAAaNNMEswHQYDVR0OBBYEFFMg4l1GLW8lYbwASY+r
12+
YeWYRzIiMB8GA1UdIwQYMBaAFDRKlCMowWR1rwxE0d1lTEQe5O71MAkGA1UdEwQC
13+
MAAwDQYJKoZIhvcNAQELBQADggEBAEQrgh1xALpumQTzsjxFRGque/vlKTgRs5Kh
14+
xtgapr6wjIbdq7dagee+4yNOKzS5lGVXCgwrJlHESv9qY0uumT/33vK2uduJ7NAd
15+
fR2ZzyBnhMX+mkYhmGrGYCTUMUIwOIQYa4Evis4W+LHmCIDG03l7gLHfdIBe9VMO
16+
pDZum8f6ng0MM49s8/rXODNYKw8kFyUhnfChqMi/2yggb1uUIfKlJJIchkgYjE13
17+
zuC+fjo029Pq1jeMIdxugLf/7I/8NiW1Yj9aCXevUXG1qzHFEuKAinBXYOZO/vWS
18+
LaEqOhwrzNynwgGpYAr7Rfgv4AflltYIIav4PZT03P7fbyAAf8s=
19+
-----END CERTIFICATE-----

travis/certs/testnode.key

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEpQIBAAKCAQEAl5PI7LoQBJxnGtQsqMd49yKLPfyCuK8KuEUVX51OFpEJyXcO
3+
EPNv0SfLmrmITDda8tBGqZ/TWOdw0iFqhxO3rpWq95doy5tsTw7Qtwbp7iSkU74m
4+
2dUXwlMBFNz67H/W4PqE7VUb8ci0ztZCtDGHiF8Ha7UBfZhC2ioS1dcQL5QdZ+Xh
5+
DO7NeMGcoKQ78v3/pN/I0VBZfEqciJOzxeb2wSGFIIEk+UtNC74xfi9HZTCPldmZ
6+
+UNSv5lN6eX2pjEvpvdJaGH+oSXgYCPX61Ltlk7ETTbfuZSHcggVhJZJoybwrab8
7+
FgeQs1YvkHV0yJzSWy+ixKhitC4J5/gdAwKK2wIDAQABAoIBAQCRFTJna/xy/WUu
8+
59FLR4qAOj8++JgCwACpue4oU7/vl6nffSYokWoAr2+RzG4qTX2vFi3cpA8+dGCn
9+
sLZvTi8tWzKGxBTZdg2oakzaMzLr74SeZ052iCGyrZJGbvF6Ny7srr1XEXSq6+os
10+
ZCb6pMHOhO7saBdiKMAsY8MdjTl/33AduuE6ztqv+L92xTr2g4QlbT1KvWlEgppU
11+
k4Gy7zdETkPBTSH/17ZwyGJoJICIAhbL4IpmOM4dPIg8nFkVPPpy6p0z4uGjtgnK
12+
nreZ2EKMzCafBaHn7A77gpi0OrQdl6pe0fsGqv/323YjCJPbwwl5TsoNq44DzwiX
13+
3M7XiVJxAoGBAOCne56vdN4uZmCgLVGT2JSUNVPOu4bfjrxWH6cslzrPT2Zhp3lO
14+
M4axZ3gmcervV252YEZXntXDHHCSfrECllRN1WFD63XmyQ/CkhuvZkkeRHfzL1TE
15+
EdqHOTqs4sRETZ7+RITFC81DZQkWWOKeyXMjyPBqd7RnThQHijB1c8Y5AoGBAKy6
16+
CVKBx+zz5crVD0tz4UhOmz1wRNN0CL0l+FXRuFSgbzMIvwpfiqe25crgeLHe2M2/
17+
TogdWbjZ2nUZQTzoRsSkQ6cKHpj+G/gWurp/UcHHXFVwgLSPF7c3KHDtiYq7Vqw0
18+
bvmhM03LI6+ZIPRV7hLBr7WP7UmpAiREMF7tTnmzAoGBAIkx3w3WywFQxtblmyeB
19+
qbd7F2IaE23XoxyjX+tBEQ4qQqwcoSE0v8TXHIBEwjceeX+NLVhn9ClJYVniLRq+
20+
oL3VVqVyzB4RleJZCc98e3PV1yyFx/b1Uo3pHOsXX9lKeTjKwV9v0rhFGzPEgP3M
21+
yOvXA8TG0FnM6OLUg/D6GX0JAoGAMuHS4TVOGeV3ahr9mHKYiN5vKNgrzka+VEod
22+
L9rJ/FQOrfADpyCiDen5I5ygsXU+VM3oanyK88NpcVlxOGoMft0M+OYoQVWKE7lO
23+
ZKYhBX6fGqQ7pfUJPXXIOgwfmni5fZ0sm+j63g3bg10OsiumKGxaQJgXhL1+3gQg
24+
Y7ZwibUCgYEAlZoFFvkMLjpOSaHk1z5ZZnt19X0QUIultBwkumSqMPm+Ks7+uDrx
25+
thGUCoz4ecr/ci4bIUY7mB+zfAbqnBOMxreJqCRbAIuRypo1IlWkTp8DywoDOfMW
26+
NfzjVmzJ7EJu44nGmVAi1jw4Pbseivvi1ujMCoPgaE8I1uSh144bwN8=
27+
-----END RSA PRIVATE KEY-----

travis/run_es_docker.sh

Lines changed: 63 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,66 @@
11
#!/bin/sh
2-
if [ -z $ES_VERSION ]; then
3-
echo "No ES_VERSION specified";
2+
if [ -z $STACK_VERSION ]; then
3+
echo "No STACK_VERSION specified";
44
exit 1;
5-
fi;
5+
fi
6+
7+
if [ "$TEST_SUITE" != "oss" ] && [ "$TEST_SUITE" != "xpack" ]; then
8+
echo "TEST_SUITE must be oss or xpack";
9+
exit 1;
10+
fi
11+
12+
if [ "$TEST_SUITE" = "oss" ]; then
13+
docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:${STACK_VERSION}
14+
docker network create esnet-oss;
15+
docker run \
16+
--rm \
17+
--publish 9200:9200 \
18+
--env "node.attr.testattr=test" \
19+
--env "path.repo=/tmp" \
20+
--env "repositories.url.allowed_urls=http://snapshot.*" \
21+
--env "discovery.type=single-node" \
22+
--network=esnet-oss \
23+
--name=elasticsearch-oss \
24+
--detach \
25+
docker.elastic.co/elasticsearch/elasticsearch-oss:${STACK_VERSION}
26+
docker run --network esnet-oss --rm appropriate/curl --max-time 120 --retry 120 --retry-delay 1 --retry-connrefused --show-error --silent http://elasticsearch-oss:9200
27+
else
28+
repo=$(pwd)
29+
testnodecrt="/travis/certs/testnode.crt"
30+
testnodekey="/travis/certs/testnode.key"
31+
cacrt="/travis/certs/ca.crt"
32+
33+
docker pull docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
34+
docker network create esnet;
35+
36+
docker run \
37+
--rm \
38+
--publish 9200:9200 \
39+
--env "node.attr.testattr=test" \
40+
--env "path.repo=/tmp" \
41+
--env "repositories.url.allowed_urls=http://snapshot.*" \
42+
--env "discovery.type=single-node" \
43+
--env "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
44+
--env "ELASTIC_PASSWORD=changeme" \
45+
--env "xpack.security.enabled=true" \
46+
--env "xpack.license.self_generated.type=trial" \
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+
--volume "$repo$testnodecrt:/usr/share/elasticsearch/config/certs/testnode.crt" \
57+
--volume "$repo$testnodekey:/usr/share/elasticsearch/config/certs/testnode.key" \
58+
--volume "$repo$cacrt:/usr/share/elasticsearch/config/certs/ca.crt" \
59+
--network=esnet \
60+
--name=elasticsearch \
61+
--detach \
62+
docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}
63+
64+
docker run --network esnet --rm appropriate/curl --max-time 120 --retry 120 --retry-delay 1 --retry-connrefused --show-error --silent --insecure https://elastic:changeme@elasticsearch:9200
65+
fi
666

7-
docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:${ES_VERSION}
8-
docker network create esnet-oss;
9-
docker run \
10-
--rm \
11-
--publish 9200:9200 \
12-
--env "node.attr.testattr=test" \
13-
--env "path.repo=/tmp" \
14-
--env "repositories.url.allowed_urls=http://snapshot.*" \
15-
--env "discovery.type=single-node" \
16-
--network=esnet-oss \
17-
--name=elasticsearch-oss \
18-
--detach \
19-
docker.elastic.co/elasticsearch/elasticsearch-oss:${ES_VERSION}
20-
docker run --network esnet-oss --rm appropriate/curl --max-time 120 --retry 120 --retry-delay 1 --retry-connrefused --show-error --silent http://elasticsearch-oss:9200

0 commit comments

Comments
 (0)