Skip to content

Commit

Permalink
Added samples, updated links. (#218)
Browse files Browse the repository at this point in the history
* Added samples.

Signed-off-by: dblock <[email protected]>

* Added integration-min to skip running tests w/plugins.

Signed-off-by: dblock <[email protected]>

---------

Signed-off-by: dblock <[email protected]>
  • Loading branch information
dblock authored Aug 9, 2024
1 parent afee32d commit 73c4b11
Show file tree
Hide file tree
Showing 17 changed files with 105 additions and 65 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ jobs:
composer run unit
integration-test-elasticsearch:
name: Tntegration Test (Elasticsearch)
name: Integration Test (Elasticsearch)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand Down Expand Up @@ -175,7 +175,7 @@ jobs:
OPENSEARCH_URL: 'http://localhost:9200'

integration-test-opensearch:
name: Tntegration Test (OpenSearch)
name: Integration Test (OpenSearch)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand Down Expand Up @@ -234,7 +234,7 @@ jobs:
OPENSEARCH_URL: 'http://localhost:9200'

integration-test-opensearch-strong-password:
name: Tntegration Test (OpenSearch w/Strong Password)
name: Integration Test (OpenSearch w/Strong Password)
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand All @@ -244,6 +244,8 @@ jobs:
search-server-image:
- opensearchproject/opensearch:2.12.0
- opensearchproject/opensearch:2.13.0
- opensearchproject/opensearch:2.14.0
- opensearchproject/opensearch:2.15.0
services:
search-server:
image: ${{ matrix.search-server-image }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test_unreleased.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
fail-fast: false
matrix:
opensearch_ref: [ '1.x', '2.x', '2.0', 'main' ]
opensearch_ref: [ '1.x', '2.x', 'main' ]
steps:
- name: Checkout PHP Client
uses: actions/checkout@v2
Expand Down Expand Up @@ -73,6 +73,6 @@ jobs:

- name: Integration tests
run: |
composer run integration
composer run integration-min
env:
OPENSEARCH_URL: 'http://localhost:9200'
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
### Added
- Generate endpoints from OpenSearch API Specification ([#194](https://github.com/opensearch-project/opensearch-php/pull/194))
- Added workflow for automated API update using OpenSearch API specification ([#209](https://github.com/opensearch-project/opensearch-php/pull/209))
- Added samples ([#218](https://github.com/opensearch-project/opensearch-php/pull/218))
### Changed
### Deprecated
### Removed
Expand Down
10 changes: 9 additions & 1 deletion DEVELOPER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,15 @@ If you don't have a running server, you can start one with Docker using `docker

The integration tests are using by default following address `https://admin:admin@localhost:9200`. This can be changed by setting the environment variable `OPENSEARCH_URL` to a different url.

To run the integration tests, you can use `composer run integration`
To run the integration tests, you can use `composer run integration-min` for just OpenSearch or `composer run integration` for OpenSearch and its plugins.

```bash
export OPENSEARCH_PASSWORD=myStrongPassword123!
export OPENSEARCH_URL=https://admin:$OPENSEARCH_PASSWORD@localhost:9200

composer run integration
```


### Static analyse and code style checker

Expand Down
25 changes: 13 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,39 +10,40 @@

## Welcome!

**opensearch-php** is [a community-driven, open source fork](https://aws.amazon.com/blogs/opensource/introducing-opensearch/) of elasticsearch-php licensed under the [Apache v2.0 License](https://github.com/opensearch-project/opensearch-php/blob/main/LICENSE). For more information, see [opensearch.org](https://opensearch.org/).
**opensearch-php** is [a community-driven, open source fork](https://aws.amazon.com/blogs/opensource/introducing-opensearch/) of elasticsearch-php licensed under the [Apache v2.0 License](LICENSE). For more information, see [opensearch.org](https://opensearch.org/).

## Project Resources

* [Project Website](https://opensearch.org/)
* [User Guide And Sample Code](https://github.com/opensearch-project/opensearch-php/blob/main/USER_GUIDE.md)
* [Developer Guide](https://github.com/opensearch-project/opensearch-php/blob/main/DEVELOPER_GUIDE.md)
* [User Guide](USER_GUIDE.md)
* [Samples](samples)
* [Developer Guide](DEVELOPER_GUIDE.md)
* [Downloads](https://opensearch.org/downloads.html).
* [Documentation](https://opensearch.org/docs/latest/)
* Need help? Try [Forums](https://discuss.opendistrocommunity.dev/)
* [Project Principles](https://opensearch.org/#principles)
* [Contributing to OpenSearch](https://github.com/opensearch-project/opensearch-php/blob/main/CONTRIBUTING.md)
* [Maintainer Responsibilities](https://github.com/opensearch-project/opensearch-php/blob/main/MAINTAINERS.md)
* [Release Management](https://github.com/opensearch-project/opensearch-php/blob/main/RELEASING.md)
* [Admin Responsibilities](https://github.com/opensearch-project/opensearch-php/blob/main/ADMINS.md)
* [Security](https://github.com/opensearch-project/opensearch-php/blob/main/SECURITY.md)
* [Contributing to OpenSearch](CONTRIBUTING.md)
* [Maintainer Responsibilities](MAINTAINERS.md)
* [Release Management](RELEASING.md)
* [Admin Responsibilities](ADMINS.md)
* [Security](SECURITY.md)

## Code of Conduct

This project has adopted the [Amazon Open Source Code of Conduct](https://github.com/opensearch-project/opensearch-php/blob/main/CODE_OF_CONDUCT.md). For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq), or contact [[email protected]](mailto:[email protected]) with any additional questions or comments.
This project has adopted the [Amazon Open Source Code of Conduct](CODE_OF_CONDUCT.md). For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq), or contact [[email protected]](mailto:[email protected]) with any additional questions or comments.

## Sample code

See [Sample Code](https://github.com/opensearch-project/opensearch-php/blob/main/USER_GUIDE.md).
See [Sample Code](USER_GUIDE.md).

## Compatibility with OpenSearch

See [Compatibility](COMPATIBILITY.md).

## License

This project is licensed under the [Apache v2.0 License](https://github.com/opensearch-project/opensearch-php/blob/main/LICENSE).
This project is licensed under the [Apache v2.0 License](LICENSE).

## Copyright

Copyright OpenSearch Contributors. See [NOTICE](https://github.com/opensearch-project/opensearch-php/blob/main/NOTICE) for details.
Copyright OpenSearch Contributors. See [NOTICE](NOTICE) for details.
3 changes: 3 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@
"integration": [
"phpunit --group Integration"
],
"integration-min": [
"phpunit --group Integration-Min"
],
"phpunit": [
"phpunit"
],
Expand Down
15 changes: 15 additions & 0 deletions samples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
### OpenSearch PHP Client Samples

Start an OpenSearch instance.

```
docker run -d -p 9200:9200 -p 9600:9600 -e "discovery.type=single-node" -e "OPENSEARCH_INITIAL_ADMIN_PASSWORD=myStrongPassword123!" opensearchproject/opensearch:latest
```

Run sample.

```
export OPENSEARCH_PASSWORD=myStrongPassword123!
composer install
composer run index
```
18 changes: 18 additions & 0 deletions samples/composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "opensearch-php/samples",
"description": "OpenSearch PHP client samples.",
"type": "project",
"authors": [],
"scripts": {
"index": ["php index.php"]
},
"repositories": [
{
"type": "path",
"url": "../"
}
],
"require": {
"opensearch-project/opensearch-php": "dev-main"
}
}
23 changes: 23 additions & 0 deletions samples/index.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

/**
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

require_once __DIR__ . '/vendor/autoload.php';

$client = OpenSearch\ClientBuilder::fromConfig([
'Hosts' => [
'https://localhost:9200'
],
'BasicAuthentication' => ['admin', getenv('OPENSEARCH_PASSWORD')],
'Retries' => 2,
'SSLVerification' => false
]);

$info = $client->info();

echo "{$info['version']['distribution']}: {$info['version']['number']}\n";

?>
1 change: 1 addition & 0 deletions tests/ClientIntegrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
*
* @subpackage Tests
* @group Integration
* @group Integration-Min
*/
class ClientIntegrationTest extends \PHPUnit\Framework\TestCase
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
*
* @subpackage Tests/SniffingConnectionPoolTest
* @group Integration
* @group Integration-Min
*/
class SniffingConnectionPoolIntegrationTest extends TestCase
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
*
* @subpackage Tests/StaticConnectionPoolTest
* @group Integration
* @group Integration-Min
*/
class StaticConnectionPoolIntegrationTest extends \PHPUnit\Framework\TestCase
{
Expand Down
1 change: 1 addition & 0 deletions tests/Endpoints/CreateIntegrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
*
* @subpackage Tests\Endpoints
* @group Integration
* @group Integration-Min
*/
class CreateIntegrationTest extends \PHPUnit\Framework\TestCase
{
Expand Down
1 change: 1 addition & 0 deletions tests/Endpoints/CreatePointInTimeIntegrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
*
* @subpackage Tests\Endpoints
* @group Integration
* @group Integration-Min
*/
class CreatePointInTimeIntegrationTest extends \PHPUnit\Framework\TestCase
{
Expand Down
1 change: 1 addition & 0 deletions tests/Endpoints/DeletePointInTimeIntegrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
*
* @subpackage Tests\Endpoints
* @group Integration
* @group Integration-Min
*/
class DeletePointInTimeIntegrationTest extends \PHPUnit\Framework\TestCase
{
Expand Down
6 changes: 3 additions & 3 deletions tests/Endpoints/MlNamespaceIntegrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public function testRegisterModelGroup()
{
$client = Utility::getClient();

if (!Utility::isOpenSearchVersionAtLeast($client, '2.8.0') || !Utility::isOpenSearchVersionAtmost($client, '2.x')) {
if (!Utility::isOpenSearchVersionAtLeast($client, '2.8.0')) {
$this->markTestSkipped('Ml plugin tests require OpenSearch >= 2.8.0');
}

Expand All @@ -47,7 +47,7 @@ public function testgetModels()
{
$client = Utility::getClient();

if (!Utility::isOpenSearchVersionAtLeast($client, '2.12.0') || !Utility::isOpenSearchVersionAtmost($client, '2.x')) {
if (!Utility::isOpenSearchVersionAtLeast($client, '2.12.0')) {
$this->markTestSkipped('Ml plugin tests require OpenSearch >= 2.12.0');
}

Expand All @@ -59,7 +59,7 @@ public function testsearchModels()
{
$client = Utility::getClient();

if (!Utility::isOpenSearchVersionAtLeast($client, '2.12.0') || !Utility::isOpenSearchVersionAtmost($client, '2.x')) {
if (!Utility::isOpenSearchVersionAtLeast($client, '2.12.0')) {
$this->markTestSkipped('Ml plugin tests require OpenSearch >= 2.12.0');
}

Expand Down
51 changes: 7 additions & 44 deletions tests/Utility.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,35 +79,7 @@ public static function isOpenSearchVersionAtLeast(Client $client, string $versio
return false;
}
$versionNumber = $versionInfo['number'];
return version_compare($versionNumber, $version) >= 0;
}

/**
* Check if cluster is OpenSearch and version is less than the specified version.
*/
public static function isOpenSearchVersionAtMost(Client $client, string $version): bool
{
$versionInfo = self::getVersion($client);
$distribution = $versionInfo['distribution'] ?? null;
if ($distribution !== 'opensearch') {
return false;
}
$versionNumber = $versionInfo['number'];
return version_compare($versionNumber, $version, '<');
}

/**
* Check if cluster is Elasticsearch and version is greater than or equal to specified version.
*/
public static function isElasticSearchVersionAtLeast(Client $client, string $version): bool
{
$versionInfo = self::getVersion($client);
$distribution = $versionInfo['distribution'] ?? null;
if ($distribution === 'opensearch') {
return false;
}
$versionNumber = $versionInfo['number'];
return version_compare($versionNumber, $version) >= 0;
return version_compare($versionNumber, $version, '>=');
}

private static function getVersion(Client $client): array
Expand Down Expand Up @@ -137,10 +109,7 @@ public static function cleanUpCluster(Client $client): void
*/
private static function wipeCluster(Client $client): void
{
if (self::isElasticSearchVersionAtLeast($client, '7.4.0')) {
self::deleteAllSLMPolicies($client);
}

self::deleteAllSLMPolicies($client);
self::wipeSnapshots($client);
self::wipeDataStreams($client);
self::wipeAllIndices($client);
Expand Down Expand Up @@ -229,12 +198,10 @@ private static function deleteAllSLMPolicies(Client $client): void
private static function wipeDataStreams(Client $client): void
{
try {
if (self::isElasticSearchVersionAtLeast($client, '7.9.0')) {
$client->indices()->deleteDataStream([
'name' => '*',
'expand_wildcards' => 'all'
]);
}
$client->indices()->deleteDataStream([
'name' => '*',
'expand_wildcards' => 'all'
]);
} catch (OpenSearchException $e) {
// We hit a version of ES that doesn't understand expand_wildcards, try again without it
try {
Expand All @@ -255,14 +222,10 @@ private static function wipeDataStreams(Client $client): void
*/
private static function wipeAllIndices(Client $client): void
{
$expand = 'open,closed';
if (self::isElasticSearchVersionAtLeast($client, '7.7.0')) {
$expand .= ',hidden';
}
try {
$client->indices()->delete([
'index' => '*,-.ds-ilm-history-*',
'expand_wildcards' => $expand
'expand_wildcards' => 'open,closed,hidden'
]);
} catch (Exception $e) {
if ($e->getCode() != '404') {
Expand Down

0 comments on commit 73c4b11

Please sign in to comment.