lando / platformsh

The Official Platform.sh Lando Plugin
https://docs.lando.dev/platformsh
GNU General Public License v3.0
6 stars 4 forks source link

Complete ES tests #3

Open reynoldsalec opened 2 years ago

reynoldsalec commented 2 years ago

We want to have examples (ie tests) for all of the P.sh services.

The basic process for creating these is fairly simple...

1) Copy an existing example directory (ex: examples/mariadb-10.2) 2) Reconfigure the config files to run the correct service and version. platform.app.yaml', '.platform/services.yaml' are probably the primary ones, although you'll want to signify the correct service version in all files. 3) Create Leia-legible tests in the README.md based on example commands found in the P.sh docs. 4) Experiment running those tests, both individually and finally as a suite (after generating testsyarn run generate:testsand runningyarn run test:functional`

Services we're targeting (in rough order of priority):

MariaDB

MySQL

Oracle MySQL [SHOULD CREATE ISSUE TO ADD SUPPORT FOR THIS]

Legacy Mariadb

Legacy MySQL

PostgresSQL -> In progress (awaiting feedback)

Redis

Memcached

Solr

Elasticsearch -> In progress

Varnish

MongoDB

RabbitMQ

Headless Chrome

InfluxDB

Kafka

Other important things

Integrations (eg init a site from Platform and doing a lando pull)

Nice to have

reynoldsalec commented 2 years ago

One issue I'm noticing; any test that involves running a command on the app container fails because of this output that occurs upon sshing into the container:

/bin/sh: 1: /helpers/psh-exec.sh,/bin/sh,-c,if: not found

pirog commented 2 years ago

@reynoldsalec update here: the command is now yarn test:leia.

Also, if we are all going to work on this want to make a checklist of all the services in the issue so we don't overlap?

reynoldsalec commented 2 years ago

Copying over the maria tests, it does look like the issues I've been seeing locally aren't impacting GitHub Actions (good).

However, the tests for mariadb-10.5 are failing (bad). It looks like something in P.sh's startup scripts may be failing to setup the database correctly; in the Lando logs I see many errors along these lines...

mariadb_1  | runsv mysql-cluster: fatal: unable to lock supervise/lock: temporary failure
mariadb_1  | runsv idmapd: fatal: unable to lock supervise/lock: temporary failure
mariadb_1  | runsv mysql-standalone: fatal: unable to lock supervise/lock: temporary failure
mariadb_1  | runsv mysql-failure: fatal: unable to lock supervise/lock: temporary failure
mariadb_1  | runsv mysql-cluster: fatal: unable to lock supervise/lock: temporary failure

I tried debugging by ssh-ing into the mariadb container; I was unable to connect to the database via the mysql command (mysql -u user -P 3306 -h mariadb main) so I tried running the P.sh start script (/etc/platform/start) again as root, which looks like it produces a Connection refused error:

Traceback (most recent call last):
  File "./start", line 6, in <module>
    service.start()
  File "/usr/lib/python2.7/dist-packages/platformsh/agent/service.py", line 230, in start
    self.boot_wait_for_services()
  File "/etc/platform/config.py", line 715, in boot_wait_for_services
    super(StateAwareService, self).boot_wait_for_services()
  File "/etc/platform/config.py", line 168, in boot_wait_for_services
    self._tcp_connect()
  File "/usr/lib/python2.7/dist-packages/platformsh/agent/util.py", line 109, in retried_function
    return function(*args, **kwargs)
  File "/etc/platform/config.py", line 485, in _tcp_connect
    socket.socket().connect(("127.0.0.1", 3306))
  File "/usr/lib/python2.7/dist-packages/gevent/_socket2.py", line 272, in connect
    raise error(err, strerror(err))
socket.error: [Errno 111] Connection refused
pirog commented 2 years ago

@reynoldsalec added some more checkboxes. The other thing we will want to do explicitly is test out php but we can do that in a separate PR for "languages" instead of "services"