jolicode / elastically

🔍 JoliCode's Elastica wrapper to bootstrap Elasticsearch PHP integrations
248 stars 37 forks source link

Change the port used in tests #56

Closed damienalexandre closed 2 years ago

damienalexandre commented 3 years ago

We use the default 9200 port for all the tests, but as we run some destructive requests to Elasticsearch, maybe all tests should try to connect on another, safer port.

That way there is no data destruction risk if someone runs the tests locally on his own ES server.

darthf1 commented 3 years ago

It would be nice if the port could be defined in general; not just in tests. I currently have 2 ES local instances running; 1 for normal dev use and 1 which is used for local testing.

Currently using api-platform, which has read support for ES. By using that, I have an ELASTICSEARCH_URL env variable defined, which has a value of protocol://host:port (currently http://elasticsearch:9200). Maybe this env variable can be re-used in elastically? Or maybe it's possible to allow the same value for the ELASTICSEARCH_HOST env variable, but then its not just a HOST anymore...

By allowing to define a port, in dev environment I can connect to port 9200, and in test environment I can connect to 9222 (or whichever port anyone prefers).

damienalexandre commented 3 years ago

Hi, I think you can already configure Elastica with an URL:

https://github.com/ruflin/Elastica/blob/8ecc5cdadd5bf0b69c1eb20e56246a940b43bdb7/tests/ClientTest.php#L71

Is that what you need?

darthf1 commented 3 years ago

Ah! Most definitely. I stared blind at the example, not realizing its actually passing the $config to the Elastica\Client constructor. (see ClientConfiguration for other options)

Note for whoever needs it: the url needs a / (forward slash) suffixed. So:

  JoliCode\Elastically\Client:
    arguments:
      $config:
        url: '%env(ELASTICSEARCH_URL)%/'