Closed jpahullo closed 6 months ago
Looking for a good example of adding support for a new db-type, found this commit b82d0ac (adding mariadb support).
I was facing problems defining new database and new users. Looking at the container-entrypoint.sh from gvenzl/oracle-xe I reached to this pieces that works from CLI (what is expected to be used by the getCreateDatabaseCommand()
method. However, it is specific to this oracle image, since it requires to define file paths. For instance, moodle-db-oracle is based on another image with different file paths.
Creating database (dbname
to be replaced by the proper db name):
sqlplus -s / as sysdba <<EOF
-- Exit on any errors
WHENEVER SQLERROR EXIT SQL.SQLCODE
CREATE PLUGGABLE DATABASE dbname \
ADMIN USER PDBADMIN IDENTIFIED BY "dbname" \
FILE_NAME_CONVERT=('pdbseed','dbname') \
DEFAULT TABLESPACE USERS \
DATAFILE '${ORACLE_BASE}/oradata/${ORACLE_SID}/dbname/users01.dbf' \
SIZE 1m AUTOEXTEND ON NEXT 10m MAXSIZE UNLIMITED;
ALTER PLUGGABLE DATABASE dbname OPEN READ WRITE;
ALTER PLUGGABLE DATABASE dbname SAVE STATE;
exit;
EOF
Creating a user to the default db (username
and password
to be replaced by the proper values):
sqlplus -s / as sysdba <<EOF
-- Exit on any errors
WHENEVER SQLERROR EXIT SQL.SQLCODE
ALTER SESSION SET CONTAINER=XEPDB1;
CREATE USER username IDENTIFIED BY "password" QUOTA UNLIMITED ON USERS;
GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE MATERIALIZED VIEW TO username;
exit;
EOF
Create user on the specific moodle db (username
and password
to be replaced by the proper values):
sqlplus -s / as sysdba <<EOF
-- Exit on any errors
WHENEVER SQLERROR EXIT SQL.SQLCODE
ALTER SESSION SET CONTAINER=dbname;
CREATE USER username IDENTIFIED BY "password" QUOTA UNLIMITED ON USERS;
GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE MATERIALIZED VIEW TO username;
exit;
EOF
Manually, I created a container locally with this command:
docker run -p 1521:1521 -e ORACLE_RANDOM_PASSWORD=yes -e APP_USER=moodle -e APP_USER_PASSWORD=moodle gvenzl/oracle-xe
Then, after being created, use the above commands inside docker exec -it container-name bash
. They will work.
Finally, as a connection testing I run:
bash-4.4$ sqlplus -s username/password@localhost/dbname <<EOF
> -- Exit on any errors
> WHENEVER SQLERROR EXIT SQL.SQLCODE
>
> ALTER SESSION SET CONTAINER=dbname;
>
> select 'success' as result from dual;
> exit;
> EOF
Session altered.
RESULT
-------
success
bash-4.4$
So, I think there should be the 3 commands altogether as a result of the invokation of OracleDatabase::getCreateDatabaseCommand()
method.
Finally, retried with moodlehq/moodle-db-oracle and it works on GHA. Maybe yesterday there was some networking problem or so when I tried.
Finally, retried with moodlehq/moodle-db-oracle and it works on GHA. Maybe yesterday there was some networking problem or so when I tried.
Shouldn't that be -r2
: https://hub.docker.com/r/moodlehq/moodle-db-oracle-r2 ?
Yes, thanks, I tried that version.
I'm facing this problem:
[info] Initialize test suite
[debug] Initialize PHPUnit
RUN php -d log_errors=1 -d error_log=NULL /home/runner/work/moodle-plugin-ci/moodle-plugin-ci/moodle/admin/tool/behat/cli/util_single_run.php --install
OUT !!! <p>Error: database table prefix is too long (oracle)</p>
OUT <p>The site administrator must fix this problem. Maximum length for table prefixes in oracle is 2 characters.</p> !!!
OUT
OUT Debug info:
OUT Error code: prefixtoolong
OUT Stack trace: * line 142 of /lib/dml/oci_native_moodle_database.php: dml_exception thrown
OUT * line 340 of /lib/dmllib.php: call to oci_native_moodle_database->connect()
OUT * line 630 of /lib/setup.php: call to setup_DB()
OUT * line 121 of /admin/tool/behat/cli/util_single_run.php: call to require()
OUT
RES 1 Command did not run successfully
RUN php -d log_errors=1 -d error_log=NULL /home/runner/work/moodle-plugin-ci/moodle-plugin-ci/moodle/admin/tool/phpunit/cli/util.php --install
OUT !!! <p>Error: database table prefix is too long (oracle)</p>
OUT <p>The site administrator must fix this problem. Maximum length for table prefixes in oracle is 2 characters.</p> !!!
OUT
OUT Debug info:
OUT Error code: prefixtoolong
OUT Stack trace: * line 142 of /lib/dml/oci_native_moodle_database.php: dml_exception thrown
OUT * line 340 of /lib/dmllib.php: call to oci_native_moodle_database->connect()
OUT * line 630 of /lib/setup.php: call to setup_DB()
OUT * line 219 of /lib/phpunit/bootstrap.php: call to require()
OUT * line 83 of /admin/tool/phpunit/cli/util.php: call to require()
OUT
RES 1 Command did not run successfully
I cannot reach the point where this prefix is set up.
One step further. PHP driver oci8 is not present.
Hi @jpahullo,
you could borrow the "way" to install oci8
from https://github.com/moodlehq/moodle-php-apache:
or give https://github.com/marketplace/actions/setup-php-action#heavy_plus_sign-php-extension-support a try:
- name: Setup PHP with fail-fast
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
extensions: oci8
env:
fail-fast: true
HTH, Matteo
Hi @scara ! It seems we "read" our minds. I was thinking exactly like that, or either from the ci process from moodle.org.
Thanks for the info! Sure it will help!
Other option is to build docker images with all dependencies and extensions included, like we did at https://hub.docker.com/r/sred/php-apache-oracle/tags?page=1&ordering=last_updated, so that image is already built, gaining in set up time and reducing total time cost of testing and deployment of testing environments (set up once, and reused any number of times)
I tried the second options and at least for php 7.4 it works correctly. Now, I'm facing troubles autenticating the user. Trying putting credentials on the install command.
I'm putting the credentials into the OracleDatabase.php class in order to simplify the set up of CI on GHA
It seems now it will work somehow. However, I can see this error output:
[debug] Initialize PHPUnit
RUN php -d log_errors=1 -d error_log=NULL /home/runner/work/moodle-plugin-ci/moodle-plugin-ci/moodle/admin/tool/behat/cli/util_single_run.php --install
ERR Default exception handler: Exception - Call to a member function is_temptable() on null Debug:
ERR Error code: generalexceptionmessage
ERR * line 229 of /lib/ddl/sql_generator.php: Error thrown
ERR * line 100 of /lib/ddl/database_manager.php: call to sql_generator->table_exists()
ERR * line 466 of /question/engine/upgrade/upgradelib.php: call to database_manager->table_exists()
ERR * line 736 of /lib/environmentlib.php: call to quiz_attempts_upgraded()
ERR * line 482 of /lib/environmentlib.php: call to environment_custom_checks()
ERR * line 106 of /lib/environmentlib.php: call to environment_check()
ERR * line 455 of /lib/installlib.php: call to check_moodle_environment()
ERR * line 91 of /lib/behat/classes/util.php: call to install_cli_database()
ERR * line 162 of /admin/tool/behat/cli/util_single_run.php: call to behat_util::install_site()
ERR
ERR
OUT !!! Exception - Call to a member function is_temptable() on null !!!
OUT !!
OUT Error code: generalexceptionmessage !!
OUT !! Stack trace: * line 229 of /lib/ddl/sql_generator.php: Error thrown
OUT * line 100 of /lib/ddl/database_manager.php: call to sql_generator->table_exists()
OUT * line 466 of /question/engine/upgrade/upgradelib.php: call to database_manager->table_exists()
OUT * line 736 of /lib/environmentlib.php: call to quiz_attempts_upgraded()
OUT * line 482 of /lib/environmentlib.php: call to environment_custom_checks()
OUT * line 106 of /lib/environmentlib.php: call to environment_check()
OUT * line 455 of /lib/installlib.php: call to check_moodle_environment()
OUT * line 91 of /lib/behat/classes/util.php: call to install_cli_database()
OUT * line 162 of /admin/tool/behat/cli/util_single_run.php: call to behat_util::install_site()
OUT !!
OUT
RES 1 Command did not run successfully
RUN php -d log_errors=1 -d error_log=NULL /home/runner/work/moodle-plugin-ci/moodle-plugin-ci/moodle/admin/tool/phpunit/cli/util.php --install
OUT -->System
on lib/ddl/sql_generator.php:229
is:
229 if ($this->temptables->is_temptable($tablename)) {
230 return true;
231 }
and $this->temptables can be null, as it is instantiated. So, maybe this is a bug to solve in Moodle core?
The error makes fail the step, even though Moodle is installed properly.
How is it supposed to proceed?
Hi @jpahullo,
I'd test the same Moodle core i.e branch MOODLE_311_STABLE
using https://github.com/moodlehq/moodle-docker, locally to you machine (MOODLE_DOCKER_DB=oracle
, MOODLE_DOCKER_PHP_VERSION=7.4
) to exclude any local issue but a Moodle code one, when running on Oracle.
I doubt there is an issue when installing Moodle in Oracle or launching units but... who knows?
At a quick glance, wondering if the issue is in just the Behat install i.e. you should test with the tool above a Behat run under Oracle:
[info] Starting install
[info] Cloning Moodle
...
[info] Moodle assets
[debug] Creating Moodle data directories
...
[debug] Create Moodle database
...
[debug] Creating Moodle's config file
[debug] <?php // Moodle configuration file
...
[info] Install plugins
...
[info] Installing local_ci
[info] Copying plugin from /home/runner/work/moodle-plugin-ci/moodle-local_ci to /home/runner/work/moodle-plugin-ci/moodle-plugin-ci/moodle/local/ci
[debug] Created config file at /home/runner/work/moodle-plugin-ci/moodle-plugin-ci/moodle/local/ci/.moodle-plugin-ci.yml
...
[info] Install global dependencies
...
[info] Install npm dependencies
...
[info] Initialize test suite
RES Command ran successfully
...
RUN php -d log_errors=1 -d error_log=NULL /home/runner/work/moodle-plugin-ci/moodle-plugin-ci/moodle/admin/tool/behat/cli/util_single_run.php --install
ERR Default exception handler: Exception - Call to a member function is_temptable() on null Debug:
HTH, Matteo
Hi @scara !
I created a patch for the tracker's issue. The {{$this->temptables}} from sql_generator.php can be null, so I think it must be checked if it is null, bypass it.
I will try to run it locally and check if the error is reproduced, either installing Moodle, phpunit tables or behat tables.
Thanks!
Hi @jpahullo,
thanks!
I'm not completely sold on that check: I mean, it's sane but I wonder if that null
comes from running Behat on Oracle, which could be broken for other reasons.
For the reader convenience, this is the Tracker ref: MDL-72318.
HTH, Matteo
Hi!
I'm finding that local in my computer I cannot build the oracle db instance.
I'm using the latest version of moodle-docker and the master branch from moodle.
The logs of the container oracle db shows this:
$ docker logs -f moodledocker_db_1
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Shutting down Oracle Database 11g Express Edition instance.
Stopping Oracle Net Listener.
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
/usr/sbin/startup.sh: running /docker-entrypoint-initdb.d/01-moodle-user.sql
SQL*Plus: Release 11.2.0.2.0 Production on Thu Aug 12 08:45:46 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: Enter password:
ERROR:
ORA-12547: TNS:lost contact
Enter user-name:
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Shutting down Oracle Database 11g Express Edition instance.
Stopping Oracle Net Listener.
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
/usr/sbin/startup.sh: running /docker-entrypoint-initdb.d/01-moodle-user.sql
SQL*Plus: Release 11.2.0.2.0 Production on Thu Aug 12 08:51:22 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: Enter password:
ERROR:
ORA-12547: TNS:lost contact
Enter user-name:
And the checker shows again and again Waiting for oracle to come up...
.
I'm using this settings:
MOODLE_DOCKER_WWWROOT=/path/to/moodle.org/moodle
MOODLE_DOCKER_WEB_PORT=8000
MOODLE_DOCKER_DB=oracle
MOODLE_DOCKER_PHP_VERSION=7.4
And the containers shows this:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd1a395eeb82 moodlehq/moodle-php-apache:7.3 "docker-php-entrypoi…" 13 minutes ago Up 13 minutes 127.0.0.1:8000->80/tcp moodledocker_webserver_1
bb1b8d09405d moodlehq/moodle-db-oracle-r2 "/bin/sh -c '/usr/sb…" 13 minutes ago Up 8 minutes 22/tcp, 1521/tcp, 8080/tcp moodledocker_db_1
80e50ad9c101 mailhog/mailhog "MailHog" 13 minutes ago Up 13 minutes 1025/tcp, 8025/tcp moodledocker_mailhog_1
828a77f2c355 moodlehq/moodle-exttests "docker-php-entrypoi…" 13 minutes ago Up 13 minutes 80/tcp moodledocker_exttests_1
a432fd8974df selenium/standalone-firefox:2.53.1 "/opt/bin/entry_poin…" 13 minutes ago Up 13 minutes 4444/tcp moodledocker_selenium_1
Any suggestion?
Checked that I'm using the latest moodlehq/moodle-db-oracle image
I stopped and removed all containers and built them again, with the same result.
Entering to the oracle db container, I cannot login into db with the sqlplus, like sqlplus system/oracle as sysdba
. Any combination fails to log in, using credentials from https://github.com/wnameless/docker-oracle-xe-11g.
Removing local docker image and trying again. I'm trying individual commands from startup.sh from moodlehq/moodle-db-oracle and they didn't work from command line inside the oracle container
@jpahullo - I'm just confirming that Oracle with PHP7.4 tests do work locally using unmodified Moodle tools/source:
$ export -p | grep MOODLE_DOCKER
declare -x MOODLE_DOCKER_DB="oracle"
declare -x MOODLE_DOCKER_PHP_VERSION="7.4"
declare -x MOODLE_DOCKER_SELENIUM_VNC_PORT="54321"
declare -x MOODLE_DOCKER_WWWROOT="/opt/moodle/master/src"
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07063bd99166 moodlehq/moodle-php-apache:7.4 "docker-php-entrypoi…" 21 minutes ago Up 21 minutes 127.0.0.1:8000->80/tcp docker_webserver_1
017d11157b13 selenium/standalone-firefox-debug:2.53.1 "/opt/bin/entry_poin…" 21 minutes ago Up 21 minutes 4444/tcp, 127.0.0.1:54321->5900/tcp docker_selenium_1
99a09014f516 moodlehq/moodle-db-oracle-r2 "/bin/sh -c '/usr/sb…" 21 minutes ago Up 21 minutes 22/tcp, 1521/tcp, 8080/tcp docker_db_1
49364d8689d5 moodlehq/moodle-exttests "docker-php-entrypoi…" 21 minutes ago Up 21 minutes 80/tcp docker_exttests_1
9fd9edcf031e mailhog/mailhog "MailHog" 21 minutes ago Up 21 minutes 1025/tcp, 8025/tcp docker_mailhog_1
$ bin/moodle-docker-compose exec webserver phpdbg -qrr vendor/bin/phpunit --filter test_map_userinfo_to_fields
Moodle 4.0dev (Build: 20210805)
Php: 7.4.21, oci: 11.2.0.2.0, OS: Linux 4.15.0-142-generic x86_64
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
.... 4 / 4 (100%)
Time: 00:00.632, Memory: 599.00 MB
OK (4 tests, 8 assertions)
$ bin/moodle-docker-compose exec --user www-data webserver php admin/tool/behat/cli/run.php --name="When you choose custom fields, these should be displayed in the 'Participants' screen"
Running single behat site:
Moodle 4.0dev (Build: 20210805)
Php: 7.4.21, oci: 11.2.0.2.0, OS: Linux 4.15.0-142-generic x86_64
Run optional tests:
- Accessibility: No
Server OS "Linux", Browser: "firefox"
Started at 12-08-2021, 17:49
.........
1 scenario (1 passed)
9 steps (9 passed)
0m9.50s (52.97Mb)
I agree with @scara - this doesn't seem like it should require any changes elsewhere, so the error is likely somewhere in the changes proposed here
No success. Still failing. I open an issue on the moodlehq/moodle-db-oracle.
Ups! Thanks for the info @paulholden. Incredible.
If you do docker images
, which is the image id for the oracle? Mine is this:
moodlehq/moodle-db-oracle-r2 latest cbccc731cb4a 7 months ago 2.1GB
In addition, please, @paulholden, do you think you could provide us the logs for the Moodle installation for phpunit tests and behat tests? I think tests inside the moodle-plugin-ci would pass, but it fails because of that exception about invoking a method on null. I mean, the problem could appear only during the behat iinitialization or phpunit initialization of their db tables. Thanks in advance.
Hi @jpahullo,
moodlehq/moodle-db-oracle-r2 latest cbccc731cb4a 7 months ago 2.1GB
On my Docker Engine:
$ docker pull moodlehq/moodle-db-oracle-r2
Using default tag: latest
latest: Pulling from moodlehq/moodle-db-oracle-r2
5667fdb72017: Pull complete
d83811f270d5: Pull complete
ee671aafb583: Pull complete
7fc152dfb3a6: Pull complete
51896e240a72: Pull complete
64e16b57ee0a: Pull complete
18e53bbb289b: Pull complete
Digest: sha256:dbcdb20e1919abb180235fd0d3d30998de58de116bdcaf955d2e169de2700dfb
Status: Downloaded newer image for moodlehq/moodle-db-oracle-r2:latest
docker.io/moodlehq/moodle-db-oracle-r2:latest
$ docker images | grep oracle
moodlehq/moodle-db-oracle-r2 latest cbccc731cb4a 7 months ago 2.1GB
I'll give it a try on my side within this day.
HTH, Matteo
Hi @jpahullo, back again, I've run the Behat setup using https://github.com/moodlehq/moodle-docker:
MOODLE_311_STABLE
# export MOODLE_DOCKER_WWWROOT=/path/to/MOODLE_311_STABLE/ # export MOODLE_DOCKER_DB=oracle # export MOODLE_DOCKER_PHP_VERSION=7.4 # cp config.docker-template.php $MOODLE_DOCKER_WWWROOT/config.php # bin/moodle-docker-compose up -d Creating network "moodle-docker_default" with the default driver Pulling exttests (moodlehq/moodle-exttests:)... latest: Pulling from moodlehq/moodle-exttests 000eee12ec04: Pull complete 8ae4f9fcfeea: Pull complete 60f22fbbd07a: Pull complete ccc7a63ad75f: Pull complete a2427b8dd6e7: Pull complete 91cac3b30184: Pull complete d6e40015fc10: Pull complete 54695fdb10a7: Pull complete 500ca11be45f: Pull complete 86b2805859cf: Pull complete c61685fa4f4f: Pull complete 0bf989f9dbbb: Pull complete 01848ea209b5: Pull complete 0f6a22a6d1b5: Pull complete Digest: sha256:72be6bc970756127610cae7fc3e31d27a2a6041e02245cb1a2961f70ea5e58b8 Status: Downloaded newer image for moodlehq/moodle-exttests:latest Creating moodle-docker_db_1 ... done Creating moodle-docker_mailhog_1 ... done Creating moodle-docker_exttests_1 ... done Creating moodle-docker_selenium_1 ... done Creating moodle-docker_webserver_1 ... done # bin/moodle-docker-wait-for-db Waiting for oracle to come up... Waiting for oracle to come up... # bin/moodle-docker-compose exec webserver php admin/tool/behat/cli/init.php Installing dependencies from lock file (including require-dev) Verifying lock file contents can be installed on current platform. Package operations: 76 installs, 0 updates, 0 removals - Downloading behat/gherkin (v4.8.0) - Downloading symfony/polyfill-mbstring (v1.22.1) - Downloading symfony/polyfill-ctype (v1.22.1) - Downloading symfony/dom-crawler (v4.4.24) - Downloading symfony/browser-kit (v4.4.24) - Downloading symfony/css-selector (v5.2.9) - Downloading behat/mink (v1.8.1) - Downloading behat/mink-browserkit-driver (v1.3.4) - Downloading behat/transliterator (v1.3.0) - Downloading symfony/polyfill-php72 (v1.22.1) - Downloading symfony/polyfill-intl-normalizer (v1.22.1) - Downloading symfony/polyfill-intl-idn (v1.22.1) - Downloading ralouphie/getallheaders (3.0.3) - Downloading psr/http-message (1.0.1) - Downloading guzzlehttp/psr7 (1.8.2) - Downloading guzzlehttp/promises (1.4.1) - Downloading guzzlehttp/guzzle (6.5.5) - Downloading fabpot/goutte (v3.3.1) - Downloading mikey179/vfsstream (v1.6.8) - Downloading symfony/polyfill-php80 (v1.22.1) - Downloading symfony/process (v5.2.7) - Downloading php-webdriver/webdriver (1.11.0) - Downloading oleg-andreyev/mink-phpwebdriver (v1.0.1) - Downloading symfony/filesystem (v5.2.7) - Downloading symfony/deprecation-contracts (v2.4.0) - Downloading symfony/config (v5.2.8) - Downloading symfony/yaml (v5.2.9) - Downloading symfony/translation-contracts (v2.4.0) - Downloading symfony/translation (v5.2.9) - Downloading psr/event-dispatcher (1.0.0) - Downloading symfony/event-dispatcher-contracts (v2.4.0) - Downloading symfony/event-dispatcher (v5.2.4) - Downloading psr/container (1.1.1) - Downloading symfony/service-contracts (v2.4.0) - Downloading symfony/dependency-injection (v5.2.9) - Downloading symfony/polyfill-intl-grapheme (v1.22.1) - Downloading symfony/string (v5.2.8) - Downloading symfony/polyfill-php73 (v1.22.1) - Downloading symfony/console (v5.2.8) - Downloading behat/behat (v3.8.1) - Downloading friends-of-behat/mink-extension (dev-master 586ffcc) - Downloading behat/mink-goutte-driver (v1.2.1) - Downloading moodlehq/behat-extension (v3.400.5) - Downloading webmozart/assert (1.10.0) - Downloading phpdocumentor/reflection-common (2.2.0) - Downloading phpdocumentor/type-resolver (1.4.0) - Downloading phpdocumentor/reflection-docblock (5.2.2) - Downloading sebastian/version (3.0.2) - Downloading sebastian/type (2.3.1) - Downloading sebastian/resource-operations (3.0.3) - Downloading sebastian/recursion-context (4.0.4) - Downloading sebastian/object-reflector (2.0.4) - Downloading sebastian/object-enumerator (4.0.4) - Downloading sebastian/global-state (5.0.2) - Downloading sebastian/exporter (4.0.3) - Downloading sebastian/environment (5.1.3) - Downloading sebastian/diff (4.0.4) - Downloading sebastian/comparator (4.0.6) - Downloading sebastian/code-unit (1.0.8) - Downloading sebastian/cli-parser (1.0.1) - Downloading phpunit/php-timer (5.0.3) - Downloading phpunit/php-text-template (2.0.4) - Downloading phpunit/php-invoker (3.1.1) - Downloading phpunit/php-file-iterator (3.0.5) - Downloading theseer/tokenizer (1.2.0) - Downloading nikic/php-parser (v4.10.5) - Downloading sebastian/lines-of-code (1.0.3) - Downloading sebastian/complexity (2.0.2) - Downloading sebastian/code-unit-reverse-lookup (2.0.3) - Downloading phpunit/php-code-coverage (9.2.6) - Downloading doctrine/instantiator (1.4.0) - Downloading phpspec/prophecy (1.13.0) - Downloading phar-io/version (3.1.0) - Downloading phar-io/manifest (2.0.1) - Downloading myclabs/deep-copy (1.10.2) - Downloading phpunit/phpunit (9.5.4) 0/76 [>---------------------------] 0% 6/76 [==>-------------------------] 7% 10/76 [===>------------------------] 13% 16/76 [=====>----------------------] 21% 21/76 [=======>--------------------] 27% 27/76 [=========>------------------] 35% 30/76 [===========>----------------] 39% 35/76 [============>---------------] 46% 40/76 [==============>-------------] 52% 45/76 [================>-----------] 59% 55/76 [====================>-------] 72% 59/76 [=====================>------] 77% 69/76 [=========================>--] 90% 75/76 [===========================>] 98% 76/76 [============================] 100% - Installing behat/gherkin (v4.8.0): Extracting archive - Installing symfony/polyfill-mbstring (v1.22.1): Extracting archive - Installing symfony/polyfill-ctype (v1.22.1): Extracting archive - Installing symfony/dom-crawler (v4.4.24): Extracting archive - Installing symfony/browser-kit (v4.4.24): Extracting archive - Installing symfony/css-selector (v5.2.9): Extracting archive - Installing behat/mink (v1.8.1): Extracting archive - Installing behat/mink-browserkit-driver (v1.3.4): Extracting archive - Installing behat/transliterator (v1.3.0): Extracting archive - Installing symfony/polyfill-php72 (v1.22.1): Extracting archive - Installing symfony/polyfill-intl-normalizer (v1.22.1): Extracting archive - Installing symfony/polyfill-intl-idn (v1.22.1): Extracting archive - Installing ralouphie/getallheaders (3.0.3): Extracting archive - Installing psr/http-message (1.0.1): Extracting archive - Installing guzzlehttp/psr7 (1.8.2): Extracting archive - Installing guzzlehttp/promises (1.4.1): Extracting archive - Installing guzzlehttp/guzzle (6.5.5): Extracting archive - Installing fabpot/goutte (v3.3.1): Extracting archive - Installing mikey179/vfsstream (v1.6.8): Extracting archive - Installing symfony/polyfill-php80 (v1.22.1): Extracting archive - Installing symfony/process (v5.2.7): Extracting archive - Installing php-webdriver/webdriver (1.11.0): Extracting archive - Installing oleg-andreyev/mink-phpwebdriver (v1.0.1): Extracting archive - Installing symfony/filesystem (v5.2.7): Extracting archive - Installing symfony/deprecation-contracts (v2.4.0): Extracting archive - Installing symfony/config (v5.2.8): Extracting archive - Installing symfony/yaml (v5.2.9): Extracting archive - Installing symfony/translation-contracts (v2.4.0): Extracting archive - Installing symfony/translation (v5.2.9): Extracting archive - Installing psr/event-dispatcher (1.0.0): Extracting archive - Installing symfony/event-dispatcher-contracts (v2.4.0): Extracting archive - Installing symfony/event-dispatcher (v5.2.4): Extracting archive - Installing psr/container (1.1.1): Extracting archive - Installing symfony/service-contracts (v2.4.0): Extracting archive - Installing symfony/dependency-injection (v5.2.9): Extracting archive - Installing symfony/polyfill-intl-grapheme (v1.22.1): Extracting archive - Installing symfony/string (v5.2.8): Extracting archive - Installing symfony/polyfill-php73 (v1.22.1): Extracting archive - Installing symfony/console (v5.2.8): Extracting archive - Installing behat/behat (v3.8.1): Extracting archive - Installing friends-of-behat/mink-extension (dev-master 586ffcc): Extracting archive - Installing behat/mink-goutte-driver (v1.2.1): Extracting archive - Installing moodlehq/behat-extension (v3.400.5): Extracting archive - Installing webmozart/assert (1.10.0): Extracting archive - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive - Installing phpdocumentor/type-resolver (1.4.0): Extracting archive - Installing phpdocumentor/reflection-docblock (5.2.2): Extracting archive - Installing sebastian/version (3.0.2): Extracting archive - Installing sebastian/type (2.3.1): Extracting archive - Installing sebastian/resource-operations (3.0.3): Extracting archive - Installing sebastian/recursion-context (4.0.4): Extracting archive - Installing sebastian/object-reflector (2.0.4): Extracting archive - Installing sebastian/object-enumerator (4.0.4): Extracting archive - Installing sebastian/global-state (5.0.2): Extracting archive - Installing sebastian/exporter (4.0.3): Extracting archive - Installing sebastian/environment (5.1.3): Extracting archive - Installing sebastian/diff (4.0.4): Extracting archive - Installing sebastian/comparator (4.0.6): Extracting archive - Installing sebastian/code-unit (1.0.8): Extracting archive - Installing sebastian/cli-parser (1.0.1): Extracting archive - Installing phpunit/php-timer (5.0.3): Extracting archive - Installing phpunit/php-text-template (2.0.4): Extracting archive - Installing phpunit/php-invoker (3.1.1): Extracting archive - Installing phpunit/php-file-iterator (3.0.5): Extracting archive - Installing theseer/tokenizer (1.2.0): Extracting archive - Installing nikic/php-parser (v4.10.5): Extracting archive - Installing sebastian/lines-of-code (1.0.3): Extracting archive - Installing sebastian/complexity (2.0.2): Extracting archive - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive - Installing phpunit/php-code-coverage (9.2.6): Extracting archive - Installing doctrine/instantiator (1.4.0): Extracting archive - Installing phpspec/prophecy (1.13.0): Extracting archive - Installing phar-io/version (3.1.0): Extracting archive - Installing phar-io/manifest (2.0.1): Extracting archive - Installing myclabs/deep-copy (1.10.2): Extracting archive - Installing phpunit/phpunit (9.5.4): Extracting archive 0/76 [>---------------------------] 0% 10/76 [===>------------------------] 13% 29/76 [==========>-----------------] 38% 46/76 [================>-----------] 60% 59/76 [=====================>------] 77% 76/76 [============================] 100% Generating autoload files 49 packages you are using are looking for funding. Use the `composer fund` command to find out more! -->System ++ Success ++ -->antivirus_clamav ++ Success ++ -->availability_completion ++ Success ++ -->availability_date ++ Success ++ -->availability_grade ++ Success ++ -->availability_group ++ Success ++ -->availability_grouping ++ Success ++ -->availability_profile ++ Success ++ -->qtype_calculated ++ Success ++ -->qtype_calculatedmulti ++ Success ++ -->qtype_calculatedsimple ++ Success ++ -->qtype_ddimageortext ++ Success ++ -->qtype_ddmarker ++ Success ++ -->qtype_ddwtos ++ Success ++ -->qtype_description ++ Success ++ -->qtype_essay ++ Success ++ -->qtype_gapselect ++ Success ++ -->qtype_match ++ Success ++ -->qtype_missingtype ++ Success ++ -->qtype_multianswer ++ Success ++ -->qtype_multichoice ++ Success ++ -->qtype_numerical ++ Success ++ -->qtype_random ++ Success ++ -->qtype_randomsamatch ++ Success ++ -->qtype_shortanswer ++ Success ++ -->qtype_truefalse ++ Success ++ -->mod_assign ++ Success ++ -->mod_assignment ++ Success ++ -->mod_book ++ Success ++ -->mod_chat ++ Success ++ -->mod_choice ++ Success ++ -->mod_data ++ Success ++ -->mod_feedback ++ Success ++ -->mod_folder ++ Success ++ -->mod_forum ++ Success ++ -->mod_glossary ++ Success ++ -->mod_h5pactivity ++ Success ++ -->mod_imscp ++ Success ++ -->mod_label ++ Success ++ -->mod_lesson ++ Success ++ -->mod_lti ++ Success ++ -->mod_page ++ Success ++ -->mod_quiz ++ Success ++ -->mod_resource ++ Success ++ -->mod_scorm ++ Success ++ -->mod_survey ++ Success ++ -->mod_url ++ Success ++ -->mod_wiki ++ Success ++ -->mod_workshop ++ Success ++ -->auth_cas ++ Success ++ -->auth_db ++ Success ++ -->auth_email ++ Success ++ -->auth_ldap ++ Success ++ -->auth_lti ++ Success ++ -->auth_manual ++ Success ++ -->auth_mnet ++ Success ++ -->auth_nologin ++ Success ++ -->auth_none ++ Success ++ -->auth_oauth2 ++ Success ++ -->auth_shibboleth ++ Success ++ -->auth_webservice ++ Success ++ -->calendartype_gregorian ++ Success ++ -->customfield_checkbox ++ Success ++ -->customfield_date ++ Success ++ -->customfield_select ++ Success ++ -->customfield_text ++ Success ++ -->customfield_textarea ++ Success ++ -->enrol_category ++ Success ++ -->enrol_cohort ++ Success ++ -->enrol_database ++ Success ++ -->enrol_fee ++ Success ++ -->enrol_flatfile ++ Success ++ -->enrol_guest ++ Success ++ -->enrol_imsenterprise ++ Success ++ -->enrol_ldap ++ Success ++ -->enrol_lti ++ Success ++ -->enrol_manual ++ Success ++ -->enrol_meta ++ Success ++ -->enrol_mnet ++ Success ++ -->enrol_paypal ++ Success ++ -->enrol_self ++ Success ++ -->message_airnotifier ++ Success ++ -->message_email ++ Success ++ -->message_jabber ++ Success ++ -->message_popup ++ Success ++ -->block_accessreview ++ Success ++ -->block_activity_modules ++ Success ++ -->block_activity_results ++ Success ++ -->block_admin_bookmarks ++ Success ++ -->block_badges ++ Success ++ -->block_blog_menu ++ Success ++ -->block_blog_recent ++ Success ++ -->block_blog_tags ++ Success ++ -->block_calendar_month ++ Success ++ -->block_calendar_upcoming ++ Success ++ -->block_comments ++ Success ++ -->block_completionstatus ++ Success ++ -->block_course_list ++ Success ++ -->block_course_summary ++ Success ++ -->block_feedback ++ Success ++ -->block_globalsearch ++ Success ++ -->block_glossary_random ++ Success ++ -->block_html ++ Success ++ -->block_login ++ Success ++ -->block_lp ++ Success ++ -->block_mentees ++ Success ++ -->block_mnet_hosts ++ Success ++ -->block_myoverview ++ Success ++ -->block_myprofile ++ Success ++ -->block_navigation ++ Success ++ -->block_news_items ++ Success ++ -->block_online_users ++ Success ++ -->block_private_files ++ Success ++ -->block_quiz_results ++ Success ++ -->block_recent_activity ++ Success ++ -->block_recentlyaccessedcourses ++ Success ++ -->block_recentlyaccesseditems ++ Success ++ -->block_rss_client ++ Success ++ -->block_search_forums ++ Success ++ -->block_section_links ++ Success ++ -->block_selfcompletion ++ Success ++ -->block_settings ++ Success ++ -->block_site_main_menu ++ Success ++ -->block_social_activities ++ Success ++ -->block_starredcourses ++ Success ++ -->block_tag_flickr ++ Success ++ -->block_tag_youtube ++ Success ++ -->block_tags ++ Success ++ -->block_timeline ++ Success ++ -->media_html5audio ++ Success ++ -->media_html5video ++ Success ++ -->media_swf ++ Success ++ -->media_videojs ++ Success ++ -->media_vimeo ++ Success ++ -->media_youtube ++ Success ++ -->filter_activitynames ++ Success ++ -->filter_algebra ++ Success ++ -->filter_censor ++ Success ++ -->filter_data ++ Success ++ -->filter_displayh5p ++ Success ++ -->filter_emailprotect ++ Success ++ -->filter_emoticon ++ Success ++ -->filter_glossary ++ Success ++ -->filter_mathjaxloader ++ Success ++ -->filter_mediaplugin ++ Success ++ -->filter_multilang ++ Success ++ -->filter_tex ++ Success ++ -->filter_tidy ++ Success ++ -->filter_urltolink ++ Success ++ -->editor_atto ++ Success ++ -->editor_textarea ++ Success ++ -->editor_tinymce ++ Success ++ -->format_singleactivity ++ Success ++ -->format_social ++ Success ++ -->format_topics ++ Success ++ -->format_weeks ++ Success ++ -->dataformat_csv ++ Success ++ -->dataformat_excel ++ Success ++ -->dataformat_html ++ Success ++ -->dataformat_json ++ Success ++ -->dataformat_ods ++ Success ++ -->dataformat_pdf ++ Success ++ -->profilefield_checkbox ++ Success ++ -->profilefield_datetime ++ Success ++ -->profilefield_menu ++ Success ++ -->profilefield_social ++ Success ++ -->profilefield_text ++ Success ++ -->profilefield_textarea ++ Success ++ -->report_backups ++ Success ++ -->report_competency ++ Success ++ -->report_completion ++ Success ++ -->report_configlog ++ Success ++ -->report_courseoverview ++ Success ++ -->report_eventlist ++ Success ++ -->report_infectedfiles ++ Success ++ -->report_insights ++ Success ++ -->report_log ++ Success ++ -->report_loglive ++ Success ++ -->report_outline ++ Success ++ -->report_participation ++ Success ++ -->report_performance ++ Success ++ -->report_progress ++ Success ++ -->report_questioninstances ++ Success ++ -->report_security ++ Success ++ -->report_stats ++ Success ++ -->report_status ++ Success ++ -->report_usersessions ++ Success ++ -->gradeexport_ods ++ Success ++ -->gradeexport_txt ++ Success ++ -->gradeexport_xls ++ Success ++ -->gradeexport_xml ++ Success ++ -->gradeimport_csv ++ Success ++ -->gradeimport_direct ++ Success ++ -->gradeimport_xml ++ Success ++ -->gradereport_grader ++ Success ++ -->gradereport_history ++ Success ++ -->gradereport_outcomes ++ Success ++ -->gradereport_overview ++ Success ++ -->gradereport_singleview ++ Success ++ -->gradereport_user ++ Success ++ -->gradingform_guide ++ Success ++ -->gradingform_rubric ++ Success ++ -->mlbackend_php ++ Success ++ -->mlbackend_python ++ Success ++ -->mnetservice_enrol ++ Success ++ -->webservice_rest ++ Success ++ -->webservice_soap ++ Success ++ -->webservice_xmlrpc ++ Success ++ -->repository_areafiles ++ Success ++ -->repository_boxnet ++ Success ++ -->repository_contentbank ++ Success ++ -->repository_coursefiles ++ Success ++ -->repository_dropbox ++ Success ++ -->repository_equella ++ Success ++ -->repository_filesystem ++ Success ++ -->repository_flickr ++ Success ++ -->repository_flickr_public ++ Success ++ -->repository_googledocs ++ Success ++ -->repository_local ++ Success ++ -->repository_merlot ++ Success ++ -->repository_nextcloud ++ Success ++ -->repository_onedrive ++ Success ++ -->repository_picasa ++ Success ++ -->repository_recent ++ Success ++ -->repository_s3 ++ Success ++ -->repository_skydrive ++ Success ++ -->repository_upload ++ Success ++ -->repository_url ++ Success ++ -->repository_user ++ Success ++ -->repository_webdav ++ Success ++ -->repository_wikimedia ++ Success ++ -->repository_youtube ++ Success ++ -->portfolio_boxnet ++ Success ++ -->portfolio_download ++ Success ++ -->portfolio_flickr ++ Success ++ -->portfolio_googledocs ++ Success ++ -->portfolio_mahara ++ Success ++ -->portfolio_picasa ++ Success ++ -->search_simpledb ++ Success ++ -->search_solr ++ Success ++ -->qbehaviour_adaptive ++ Success ++ -->qbehaviour_adaptivenopenalty ++ Success ++ -->qbehaviour_deferredcbm ++ Success ++ -->qbehaviour_deferredfeedback ++ Success ++ -->qbehaviour_immediatecbm ++ Success ++ -->qbehaviour_immediatefeedback ++ Success ++ -->qbehaviour_informationitem ++ Success ++ -->qbehaviour_interactive ++ Success ++ -->qbehaviour_interactivecountback ++ Success ++ -->qbehaviour_manualgraded ++ Success ++ -->qbehaviour_missing ++ Success ++ -->qformat_aiken ++ Success ++ -->qformat_blackboard_six ++ Success ++ -->qformat_examview ++ Success ++ -->qformat_gift ++ Success ++ -->qformat_missingword ++ Success ++ -->qformat_multianswer ++ Success ++ -->qformat_webct ++ Success ++ -->qformat_xhtml ++ Success ++ -->qformat_xml ++ Success ++ -->tool_analytics ++ Success ++ -->tool_availabilityconditions ++ Success ++ -->tool_behat ++ Success ++ -->tool_brickfield ++ Success ++ -->tool_capability ++ Success ++ -->tool_cohortroles ++ Success ++ -->tool_componentlibrary ++ Success ++ -->tool_customlang ++ Success ++ -->tool_dataprivacy ++ Success ++ -->tool_dbtransfer ++ Success ++ -->tool_filetypes ++ Success ++ -->tool_generator ++ Success ++ -->tool_health ++ Success ++ -->tool_httpsreplace ++ Success ++ -->tool_innodb ++ Success ++ -->tool_installaddon ++ Success ++ -->tool_langimport ++ Success ++ -->tool_licensemanager ++ Success ++ -->tool_log ++ Success ++ -->tool_lp ++ Success ++ -->tool_lpimportcsv ++ Success ++ -->tool_lpmigrate ++ Success ++ -->tool_messageinbound ++ Success ++ -->tool_mobile ++ Success ++ -->tool_monitor ++ Success ++ -->tool_moodlenet ++ Success ++ -->tool_multilangupgrade ++ Success ++ -->tool_oauth2 ++ Success ++ -->tool_phpunit ++ Success ++ -->tool_policy ++ Success ++ -->tool_profiling ++ Success ++ -->tool_recyclebin ++ Success ++ -->tool_replace ++ Success ++ -->tool_spamcleaner ++ Success ++ -->tool_task ++ Success ++ -->tool_templatelibrary ++ Success ++ -->tool_unsuproles ++ Success ++ -->tool_uploadcourse ++ Success ++ -->tool_uploaduser ++ Success ++ -->tool_usertours ++ Success ++ -->tool_xmldb ++ Success ++ -->cachestore_apcu ++ Success ++ -->cachestore_file ++ Success ++ -->cachestore_memcached ++ Success ++ -->cachestore_mongodb ++ Success ++ -->cachestore_redis ++ Success ++ -->cachestore_session ++ Success ++ -->cachestore_static ++ Success ++ -->cachelock_file ++ Success ++ -->fileconverter_googledrive ++ Success ++ -->fileconverter_unoconv ++ Success ++ -->contenttype_h5p ++ Success ++ -->theme_boost ++ Success ++ -->theme_classic ++ Success ++ -->h5plib_v124 ++ Success ++ -->paygw_paypal ++ Success ++ -->assignsubmission_comments ++ Success ++ -->assignsubmission_file ++ Success ++ -->assignsubmission_onlinetext ++ Success ++ -->assignfeedback_comments ++ Success ++ -->assignfeedback_editpdf ++ Success ++ -->assignfeedback_file ++ Success ++ -->assignfeedback_offline ++ Success ++ -->assignment_offline ++ Success ++ -->assignment_online ++ Success ++ -->assignment_upload ++ Success ++ -->assignment_uploadsingle ++ Success ++ -->booktool_exportimscp ++ Success ++ -->booktool_importhtml ++ Success ++ -->booktool_print ++ Success ++ -->datafield_checkbox ++ Success ++ -->datafield_date ++ Success ++ -->datafield_file ++ Success ++ -->datafield_latlong ++ Success ++ -->datafield_menu ++ Success ++ -->datafield_multimenu ++ Success ++ -->datafield_number ++ Success ++ -->datafield_picture ++ Success ++ -->datafield_radiobutton ++ Success ++ -->datafield_text ++ Success ++ -->datafield_textarea ++ Success ++ -->datafield_url ++ Success ++ -->datapreset_imagegallery ++ Success ++ -->forumreport_summary ++ Success ++ -->ltiservice_basicoutcomes ++ Success ++ -->ltiservice_gradebookservices ++ Success ++ -->ltiservice_memberships ++ Success ++ -->ltiservice_profile ++ Success ++ -->ltiservice_toolproxy ++ Success ++ -->ltiservice_toolsettings ++ Success ++ -->quiz_grading ++ Success ++ -->quiz_overview ++ Success ++ -->quiz_responses ++ Success ++ -->quiz_statistics ++ Success ++ -->quizaccess_delaybetweenattempts ++ Success ++ -->quizaccess_ipaddress ++ Success ++ -->quizaccess_numattempts ++ Success ++ -->quizaccess_offlineattempts ++ Success ++ -->quizaccess_openclosedate ++ Success ++ -->quizaccess_password ++ Success ++ -->quizaccess_seb ++ Success ++ -->quizaccess_securewindow ++ Success ++ -->quizaccess_timelimit ++ Success ++ -->scormreport_basic ++ Success ++ -->scormreport_graphs ++ Success ++ -->scormreport_interactions ++ Success ++ -->scormreport_objectives ++ Success ++ -->workshopform_accumulative ++ Success ++ -->workshopform_comments ++ Success ++ -->workshopform_numerrors ++ Success ++ -->workshopform_rubric ++ Success ++ -->workshopallocation_manual ++ Success ++ -->workshopallocation_random ++ Success ++ -->workshopallocation_scheduled ++ Success ++ -->workshopeval_best ++ Success ++ -->atto_accessibilitychecker ++ Success ++ -->atto_accessibilityhelper ++ Success ++ -->atto_align ++ Success ++ -->atto_backcolor ++ Success ++ -->atto_bold ++ Success ++ -->atto_charmap ++ Success ++ -->atto_clear ++ Success ++ -->atto_collapse ++ Success ++ -->atto_emojipicker ++ Success ++ -->atto_emoticon ++ Success ++ -->atto_equation ++ Success ++ -->atto_fontcolor ++ Success ++ -->atto_h5p ++ Success ++ -->atto_html ++ Success ++ -->atto_image ++ Success ++ -->atto_indent ++ Success ++ -->atto_italic ++ Success ++ -->atto_link ++ Success ++ -->atto_managefiles ++ Success ++ -->atto_media ++ Success ++ -->atto_noautolink ++ Success ++ -->atto_orderedlist ++ Success ++ -->atto_recordrtc ++ Success ++ -->atto_rtl ++ Success ++ -->atto_strike ++ Success ++ -->atto_subscript ++ Success ++ -->atto_superscript ++ Success ++ -->atto_table ++ Success ++ -->atto_title ++ Success ++ -->atto_underline ++ Success ++ -->atto_undo ++ Success ++ -->atto_unorderedlist ++ Success ++ -->tinymce_ctrlhelp ++ Success ++ -->tinymce_managefiles ++ Success ++ -->tinymce_moodleemoticon ++ Success ++ -->tinymce_moodleimage ++ Success ++ -->tinymce_moodlemedia ++ Success ++ -->tinymce_moodlenolink ++ Success ++ -->tinymce_pdw ++ Success ++ -->tinymce_spellchecker ++ Success ++ -->tinymce_wrap ++ Success ++ -->logstore_database ++ Success ++ -->logstore_legacy ++ Success ++ -->logstore_standard ++ Success ++ Acceptance tests site installed Creating Behat configuration ... done in 1.03 seconds. Building theme CSS for boost [ltr] ... done in 1.2 seconds. Building theme CSS for classic [ltr] ... done in 1.12 seconds. Testing environment themes built Acceptance tests environment enabled on http://webserver, to run the tests use: vendor/bin/behat --config /var/www/behatdata/behatrun/behat/behat.yml
That run required a long time compared to other DB types: slow but w/o any issue. Maybe, you should try to "wait" for the DB Server to become available.
HTH, Matteo
Hi @scara!
Thanks for the info. It's very weird, really weird. I can see from your logs that it took just 2 "waits" for the oracle db being ready. I left it for half an hour and no result. And running the docker logs -f moodledocker_db_1
showed the result from the previous comment.
I'll try again for sure. I'll let you know.
Thanks!
Jordi
I proceeded the way you did and I the errors persist:
$ docker logs -f moodledocker_db_1
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Shutting down Oracle Database 11g Express Edition instance.
Stopping Oracle Net Listener.
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
/usr/sbin/startup.sh: running /docker-entrypoint-initdb.d/01-moodle-user.sql
SQL*Plus: Release 11.2.0.2.0 Production on Fri Aug 13 10:50:28 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: Enter password:
ERROR:
ORA-12547: TNS:lost contact
Enter user-name:
No luck.
I'll stop all containers, docker system prune -a and I'll try again
I did it and still the error inside the oracle container startup.sh does not work:
$ ./start-docker
+ source .env
++ MOODLE_DOCKER_WWWROOT=/home/jordi/SREd/moodle.org/moodle
++ MOODLE_DOCKER_WEB_PORT=8000
++ MOODLE_DOCKER_DB=oracle
++ MOODLE_DOCKER_PHP_VERSION=7.4
+ cut -d = -f1
+ read line
+ export MOODLE_DOCKER_WWWROOT
+ read line
+ export MOODLE_DOCKER_WEB_PORT
+ read line
+ export MOODLE_DOCKER_DB
+ read line
+ export MOODLE_DOCKER_PHP_VERSION
+ read line
+ ./bin/moodle-docker-compose up -d
Creating network "moodledocker_default" with the default driver
Pulling exttests (moodlehq/moodle-exttests:latest)...
latest: Pulling from moodlehq/moodle-exttests
000eee12ec04: Pull complete
8ae4f9fcfeea: Pull complete
60f22fbbd07a: Pull complete
ccc7a63ad75f: Pull complete
a2427b8dd6e7: Pull complete
91cac3b30184: Pull complete
d6e40015fc10: Pull complete
54695fdb10a7: Pull complete
500ca11be45f: Pull complete
86b2805859cf: Pull complete
c61685fa4f4f: Pull complete
0bf989f9dbbb: Pull complete
01848ea209b5: Pull complete
0f6a22a6d1b5: Pull complete
Digest: sha256:72be6bc970756127610cae7fc3e31d27a2a6041e02245cb1a2961f70ea5e58b8
Status: Downloaded newer image for moodlehq/moodle-exttests:latest
Pulling db (moodlehq/moodle-db-oracle-r2:latest)...
latest: Pulling from moodlehq/moodle-db-oracle-r2
5667fdb72017: Pull complete
d83811f270d5: Pull complete
ee671aafb583: Pull complete
7fc152dfb3a6: Pull complete
51896e240a72: Pull complete
64e16b57ee0a: Pull complete
18e53bbb289b: Pull complete
Digest: sha256:dbcdb20e1919abb180235fd0d3d30998de58de116bdcaf955d2e169de2700dfb
Status: Downloaded newer image for moodlehq/moodle-db-oracle-r2:latest
Pulling mailhog (mailhog/mailhog:latest)...
latest: Pulling from mailhog/mailhog
df20fa9351a1: Pull complete
ed8968b2872e: Pull complete
a92cc7c5fd73: Pull complete
f17c8f1adafb: Pull complete
03954754c53a: Pull complete
60493946972a: Pull complete
368ee3bc1dbb: Pull complete
Digest: sha256:8d76a3d4ffa32a3661311944007a415332c4bb855657f4f6c57996405c009bea
Status: Downloaded newer image for mailhog/mailhog:latest
Pulling webserver (moodlehq/moodle-php-apache:7.4)...
7.4: Pulling from moodlehq/moodle-php-apache
b4d181a07f80: Pull complete
78b85dd8f014: Pull complete
8589b26a90be: Pull complete
f5af5d641946: Pull complete
614ec6f0b8d6: Pull complete
12b28f3797fb: Pull complete
96bcb7d2e6b0: Pull complete
09a46dfaa772: Pull complete
1a85b508a14e: Pull complete
c6fd9c89235a: Pull complete
40b955b2d455: Pull complete
fda03b9af7e2: Pull complete
570ea029c915: Pull complete
33896b419cda: Pull complete
b636e10e0567: Pull complete
90453f2e1636: Pull complete
ec36ba073b30: Pull complete
b27170bafa1c: Pull complete
7277fa7a5dc2: Pull complete
Digest: sha256:cf5eab312ede190a30ea7ac87b776b33f925419089a43e5c1a7aa169d941be3a
Status: Downloaded newer image for moodlehq/moodle-php-apache:7.4
Pulling selenium (selenium/standalone-firefox:2.53.1)...
2.53.1: Pulling from selenium/standalone-firefox
cad964aed91d: Pull complete
3a80a22fea63: Pull complete
50de990d7957: Pull complete
61e032b8f2cb: Pull complete
9f03ce1741bf: Pull complete
23b84691f9a2: Pull complete
1f1667297256: Pull complete
e4bc09a9d3b6: Pull complete
47592bc70a93: Pull complete
719dfe03ca53: Pull complete
714f82dc9591: Pull complete
e5f5c0bcf29d: Pull complete
457e8ed4985d: Pull complete
b24566c33966: Pull complete
b73b2c7604a1: Pull complete
f0c6dda3bc97: Pull complete
6a19c85d6d4e: Pull complete
6926806ab6b4: Pull complete
Digest: sha256:3d6386d06633bb226e867b573e804105f0c50ea04ea649d08ab97d9a8c76c639
Creating moodledocker_exttests_1 ... done
Creating moodledocker_db_1 ... done
Creating moodledocker_mailhog_1 ... done
Creating moodledocker_mailhog_1 ...
Creating moodledocker_webserver_1 ... done
Creating moodledocker_webserver_1 ...
+ ./bin/moodle-docker-wait-for-db
Waiting for oracle to come up...
Waiting for oracle to come up...
Waiting for oracle to come up...
Waiting for oracle to come up...
Waiting for oracle to come up...
^C
Then, in the oracle container:
$ docker logs -f moodledocker_db_1
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Shutting down Oracle Database 11g Express Edition instance.
Stopping Oracle Net Listener.
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
/usr/sbin/startup.sh: running /docker-entrypoint-initdb.d/01-moodle-user.sql
SQL*Plus: Release 11.2.0.2.0 Production on Fri Aug 13 11:14:18 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: Enter password:
ERROR:
ORA-12547: TNS:lost contact
Enter user-name:
I'm really sorry, but I cannot start an oracle container to continue with this issue.
When I run the command detailed in the moodlehq/moodle-db-oracle, I still see the same error:
$ docker run --name db0 -p 1521:1521 moodlehq/moodle-db-oracle-r2
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
ERROR:
ORA-12547: TNS:lost contact
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Shutting down Oracle Database 11g Express Edition instance.
Stopping Oracle Net Listener.
Starting Oracle Net Listener.
Starting Oracle Database 11g Express Edition instance.
/usr/sbin/startup.sh: running /docker-entrypoint-initdb.d/01-moodle-user.sql
SQL*Plus: Release 11.2.0.2.0 Production on Fri Aug 13 11:20:07 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: Enter password:
ERROR:
ORA-12547: TNS:lost contact
Enter user-name:
By the way, the script start-docker
is a bash script built by myself for commodity:
$ cat start-docker
#!/bin/bash -x
source .env
cut -d '=' -f1 < .env | while read line; do
export $line;
done
./bin/moodle-docker-compose up -d
./bin/moodle-docker-wait-for-db
echo "Moodle started!"
jpax360:/media/jordi/SREd/moodle.org/moodle-docker ⎇ master*
$ cat stop-docker
#!/bin/bash
source .env
cut -d '=' -f1 < .env | while read line; do
export $line;
done
./bin/moodle-docker-compose stop
echo "Moodle stopped!"
jpax360:/media/jordi/SREd/moodle.org/moodle-docker ⎇ master*
$ cat destroy-docker
#!/bin/bash
source .env
cut -d '=' -f1 < .env | while read line; do
export $line;
done
./bin/moodle-docker-compose down
echo "Moodle dockers destroyed!"
jpax360:/media/jordi/SREd/moodle.org/moodle-docker ⎇ master*
$
Hi @jpahullo, I'll admin I'm now lost in what it is you are trying to do/prove here
Are you able to run tests on Oracle using standard/expected commands (e.g. the exact ones @scara & I have previously posted in comments to this thread) locally? Without any external tooling other than that provided by https://github.com/moodlehq/moodle-docker
In addition, please, @paulholden, do you think you could provide us the logs for the Moodle installation for phpunit tests and behat tests?
The logs contained nothing out of the ordinary, they completed without fail and I was able to run tests immediately after
Thanks @paulholden.
Sorry if I'm not totally clear.
You can build a local instance with moodle-docker using an oracle db without effort. However, I can't. I always see the logs from the oracle container I showed before.
What I need is first:
Why I need to complete these 3 steps?
Githbub actions shows a problem accessing a method on null during the behat tests initialization (i.e., the Moodle db tables for running behat tests), and then it stops.
I provided a patch for it in core (lib/ddl/sql_generator.php), since that attribute can be null as stated in the phpdocs.
However, @scara suggests that there is something on the behat initialitzation that produces such an error (accessing a method on null), and only on the behat initialization.
So, in summary, I would like to reproduce the scenario locally, but I can't.
Let me know if I explained badly by my side.
I also tried the commands:
docker run --name db0base -p 1521:1521 wnameless/oracle-xe-11g-r2
docker exec -it db0base bash
# sqlplus sys/oracle as sysdba
# And also the oracle 18 image:
docker run --name db0base -p 1521:1521 wnameless/oracle-xe-11g-r2:18.04
docker exec -it db0base bash
# sqlplus sys/oracle as sysdba
and they both show me the same error:
$ docker exec -it db0base bash
root@ed2086c3fab3:/# sqlplus system/oracle as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Fri Aug 13 11:52:05 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: ^[[A^C
root@ed2086c3fab3:/# sqlplus sys/oracle as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Fri Aug 13 11:52:29 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: sys
Enter password:
ERROR:
ORA-12547: TNS:lost contact
Enter user-name: ^C
root@ed2086c3fab3:/# exit
exit
So, I do not know how to proceed right now. I cannot start an oracle db container, neither with the moodlehq/moodle-db-oracle nor with base docker image wnameless/oracle-xe-11g-r2.
I'm just blocked, stucked.
If you can make the tests we commented before (the 3 steps locally), it would be great.
Hi @jpahullo, could you share the versions of your docker stack? If you've the latest versions of both the upstream code and the images, maybe the reason is there.
Mine:
# arch
x86_64
# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
# docker version
Client: Docker Engine - Community
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:49 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:54:13 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
# docker-compose version
docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
HTH, Matteo
Hi,
as far as this is quite old and Oracle is being deprecated and will be removed in a couple of versions, I am going to close this now.
Reference: https://moodle.org/mod/forum/discuss.php?d=456122
I checked the created issues and I didn't realize some issue is related to this, so I'm creating it.
As stated in Moodle Dev Telegram chat, It would be really useful to support Oracle (this issue) and mssql (issue #92).
I've tried adding Oracle support in one plugin and then checked that only mysql, pgsql and mariadb are supported db-types.
As I can see, I think it is necessary mainly to add an implementation class of any db-type under https://github.com/moodlehq/moodle-plugin-ci/tree/master/src/Installer/Database.
My original idea was to use the docker image for Oracle used under moodlehq/moodle-docker. However, Github Actions require public docker hub images (if I understand it correct) and it seems it isn't. So, I was trying another db image, gvenzl/oracle-xe (supporting 18c and 11 Oracle versions). I successfully managed to build the image, but then I realized moodle-plugin-ci does not support it.
My last trials can be found here. One example is this:
One really useful point of that oracle image is that is has a builtin checker for db being ready. It takes a bit of time however:
The important bits of the yml are the following:
This image requires non-empty passwords, so I needed to set up non-empty passwords on the ci installing: