Coming from the DrupalCI sprint debrief call today, it was raised that we really need firm answers to the following questions prior to deployment.

For the "simplest thing that can possibly be deployed" to make Drupal 8 shippable:

In general, we only need patch-level testing against one environment, generally aiming toward the most common setup users are likely to have (which in the case of Drupal 8 is PHP 5.5 and MySQL 5.5, based on stats below). So that's #1 in the following list of required environments:

  1. PHP 5.5 & MySQL 5.5
  2. PHP 5.6 & MySQL 5.5
  3. PHP 7 & MySQL 5.5
  4. PHP 5.5 & SQLite 3.6.8
  5. PHP 5.5 & PostgreSQL 9.1
  6. PHP 5.5 & PostgreSQL 9.4

Additionally, we need:

  • Nightly testing with emails upon failure including a diff against the previous night's result for environments that do not currently pass the test suite in HEAD. (probably #3-6.) The committers adopt a policy of reverting things that introduce a new failure.
  • Commit-level testing of combinations that do pass in HEAD (currently #1 and possibly #2).
  • Patch-level testing of #1 with an option of on-demand patch-level testing for other combinations. We need this so that we can test issues that are likely to regress alternate databases against those databases, and to confirm that fixes for a specific environment actually fix them.
  • All of this easily visible in the UI and issue queue.

Then we can decide whether to increase the test rate for #3-#6 once they pass, weighing the benefit against the extra resource requirements.

If any of those items would take long to implement though, please say so, because maybe we can get away with less than that, or substitute one of those capabilities for something easier to implement. Having even one of those bullet points up and running sooner would be better than additional weeks/months of not having any of them.

Resources

Note that PHP 5.3 is also very common so is probably what we want to test D6/D7 against (we can't test D8 against it because D8 requires 5.4.5).

Current State of DrupalCI In Production

DrupalCI testing is now enabled on production for Drupal Core and Contrib. The automated testing tab now shows the DrupalCI tests and test configuration matrix below the PIFT/PIFR tests. All of the MVP environments exist. The test summary 'bubbles' on this page link through to the test history for that environment.

Hitlist for DrupalCI MVP (Drupal 8 blockers)

DrupalCI MVP - Drupal 8 Blockers
Order Issue Assignment Comments
1 #2524426: [meta] DrupalCI pgsql Random exceptions, fails, testbot issues isntall Needs support of pgsql core devs
2 #2508567: DrupalCI SQLite random failures isntall Needs support of sqlite core devs
3 #2539496: PHP 7 testing needs recent builds and needs to display the build number isntall
4 #2538462: Contrib Testing Test discovery not working for d6/d7 jthorson?, mixologic
5 #2518026: Notify core maintainers (and anyone who wants to subscribe) of test failures (for a branch & environment) with a diff against the previous nights result drumm

8.x release candidate 'very nice to haves':

DrupalCI MVP - Drupal 8 very nice to haves
Order Issue Assignment Comments
n/a #2495411: Make simpletest fail a test when it detects pages that need more than 64MB Core devs
De-prioritized #2552853: MySQL and MariaDB test results should be consistent Unassigned Official MVP spec says we support MySQL not MariaDB, this should be followup, not blocker
Complete
Order Issue Assignment Comments
n/a #2518008: Improve the XML output/parsing of the test runner mixologic, lars-skjærlund
n/a Re-test/Add-Test UI drumm
n/a PHP7 Environment isntall
n/a #2517980: [DrupalCI Integration] Enable patch testing drumm

Issues blocking retiring the legacy testbots are being prioritized here: #2534132: Disable Legacy Testbots and use drupalCI as our testing infrastructure

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

drumm’s picture

Issue summary: View changes
alexpott’s picture

alexpott’s picture

Thinking about:

What level of testing on each? (per-patch; per-commit; periodically, and if so, what period?)

It would be nice if all patches had PHPUnit tests run on all supported PHP minor versions - it only takes a minute to do a full PHPUnit run.

xjm’s picture

I do not think that it is a requirement to test the full matrix of all databases vs. PHP versions etc. as the chance of having a failure that only occurs on PHP 5.5. with SQLite is low. I think the minimum requirement is to test core's supported databases in the minimum supported version, and core's supported PHP versions. We should test combinations that make it easiest to quickly identify the potential cause of the failure:

  1. PHP 5.4 & MySQL/Maria
  2. PHP 5.5 & MySQL/Maria
  3. PHP 5.6 & MySQL/Maria
  4. PHP 7 & MySQL/Maria
  5. PHP 5.4 & SQLite
  6. PHP 5.4 & PostgreSQL

I do not consider different cache backends, PHP configurations, etc. a release blocker; all that should wait until much later.

In terms of timing, I think the minimum requirement that we have is:

  • Nightly testing with emails upon failure including a diff against the previous night's result for environments that do not currently pass the test suite in HEAD. (AFAIK in my list above this would be #3-6.) The committers adopt a policy of reverting things that introduce a new failure.
  • Commit-level testing of combinations that do pass in HEAD (currently #1 and I think #2).
  • Patch-level testing of #1 with an option of on-demand patch-level testing for other combinations. We need this so that we can test issues that are likely to regress alternate databases against those databases, and to confirm that fixes for a specific environment actually... fix.
  • All of this easily visible in the UI and issue queue.

Then we can decide whether to increase the test rate for #3-#6 once they pass, weighing the benefit against the extra resource requirements.

I like @alexpott's suggestion of running PHPunit tests on all of #1-6 on the patch level as well since the resource overhead is minimal. We could also test simply installation and the database component tests per patch as well to save resources while getting most of the benefit.

effulgentsia’s picture

+1 to the 6 combinations and 4 bullet points in #4 as being a good viable state. If any of those items would take long to implement though, please say so, because maybe we can get away with less than that, or substitute one of those capabilities for something easier to implement. Having even one of those bullet points up and running sooner would be better than additional weeks/months of not having any of them.

webchick’s picture

What version of MySQL/Maria, PostgreSQL, and SQLite? Minimum?

xjm’s picture

@webchick, yeah, I think it should be just the minimum supported version for each.

webchick’s picture

Sitting with Daniel and Sascha at dev days... Their 2 cents:

- PHP 5.4 + Maria - patch-level testing. If it fails, return a fail. Test this FIRST before running.
- everything else - every 24 hours testing of HEAD to catch regressions, along with an indicator of +/- fails versus the last run. If we do these as patch-level tests, we will vastly increase testing time and/or amazon cost required. We can always revert any patches that introduce new fails in any environment.

IMO, we also need to add PHP 5.3 for Drupal 7. That's got the highest install base ATM. I don't have the URL but google "PHP usage stats" or something like that.

That's the MVP. In the "ASAP after that" phase:

PHPUnit testing against all PHP versions + Maria. Later, all kernel tests.

In the "would be very nice" phase:

- testbot goes to all needs review issues, and tries to apply the latest patch (not run tests necessarily, since most will not apply, and this way to could be done very fast).

Note: This is typed from my phone so might not be 100% :)

catch’s picture

+1 to #4, we might want to tweak things later but this would be a great point to start from.

webchick’s picture

Assigned: Unassigned » webchick

Ok great. Working on updating the issue summary.

webchick’s picture

Issue summary: View changes
Status: Active » Reviewed & tested by the community

Ok, think that covers it.

webchick’s picture

Issue summary: View changes

$HTML--;

webchick’s picture

Issue summary: View changes

Small clarification.

hestenet’s picture

The association team met up to review these MVP requirements this morning and wanted make some clarifications and ask a couple questions.

With respect to MySQL/MariaDB - for now, wherever the requirements list above says "MySQL/MariaDB" we'll be opting for MySQL. At the same time we want to note that in the long run we may not want to treat these as interchangeable, as MariaDB may begin to diverge in some future versions.

Regarding Postgres - During the Portland sprint we came to conclusion that we'd prefer to support Postgres 9.1.2 as our minimum version. We know that 8.3 is still considered an official minimum, per: https://www.drupal.org/requirements but PHP 8 is well past end of life.

That decision isn't really ours to make of course - but this issue makes the case for 9.1.2 as well: #2464481: PostgreSQL: deal with case insensitivity

So is it satisfactory to use MySQL where ever MySQL/MariaDB has been suggested above and to build Maria containers sometime post MVP?

And can we at least strongly consider 9.1.2 as minimum version for Postgres on the new testbots?

webchick’s picture

Unless anyone else disagrees:

So is it satisfactory to use MySQL where ever MySQL/MariaDB has been suggested above and to build Maria containers sometime post MVP?

Yep. This is inline with using whatever would be the most common platform, and MariaDB definitely isn't it. My understanding is also that they're more or less inline until a later version of 5.5.

And can we at least strongly consider 9.1.2 as minimum version for Postgres on the new testbots?

I think having any version of PostgreSQL at all is preferable to having no version of PostgreSQL so tentatively +1 on 9.1.2. However, it'd feel better if core went the same route. ATM though there doesn't look like there's a strong consensus for a version move in #2464481: PostgreSQL: deal with case insensitivity yet. One of the objections was that moving to 9.1.2 would expose new test failures, and https://www.drupal.org/node/2464481#comment-9787239 seems to back that up.

So definitely yes to strongly consider. But it might be easier to move to 8.3 in the "MVP" version, unless other folks from the DrupalCI team want to chime in at the core issue with why 8.3 is bad mojo.

mradcliffe’s picture

PostgreSQL 8.3 is EOL on Centos 5 and 6 as well. 9.1.2 probably should be the earliest version to support.

On Ubuntu 14.04 (Trusty), which the testbots run on, the earliest version is PostgreSQL 8.4 though earlier versions are still supported on older Ubuntu versions.

xjm’s picture

Thanks @hestenet and @mradcliffe. I filed #2477413: Increase minimum version requirement for Postgres to 9.1.2 to discuss increasing the supported minimum version for core for 8.x. (I think one dedicated PHP 5.3/MySQL bot is sufficient for D7 testing, so we don't need to worry about supporting testing on the versions of Postgres supported by D7.)

catch’s picture

Doesn't the current infrastructure run MariaDB? Either way I think it's OK to treat them as interchangeable until we don't.

I'd personally tend towards testing later versions of postgres (i.e. not the minimum, but the current stable). At least this way if core raises its requirements, then no need to update the bot at the same time.

Also in terms of postgres/sqlite testing if we have one bot, I'd probably tend towards current PHP stable on those too (i.e. 5.5) - since again if we drop support for PHP 5.4 it would just mean stopping sending 8.x patches to that bot, not 'HEAD broken' on postgres/sqlite until an upgrade of PHP on those.

Don't have a strong preference, just seems like it could be less disruptive when core requirements change.

Crell’s picture

If PHP 5.5 is what we are going to list as the recommended version, I'm fine with having testbots run that. However, we should at least still run a linting pass on 5.4 to catch accidental use of newer language features as 5.5 does have a few convenience shortcuts that we don't want people to use accidentally (yet). Functionality-wise, the 5.4->5.5 upgrade is, as I understand it, smooth enough that we likely don't need the full test suite run on both.

catch’s picture

However, we should at least still run a linting pass on 5.4

That would be covered by the MySQL + PHP 5.4 bot. MySQL we'll have tests with every major PHP version.

For 5.5 testing I was specifically talking about the postgres and sqlite bots which at least to start with will only test on one PHP version each.

We'll get commit-level (not patch-level) testing on everything that's expected to pass if I understand things correctly. And a test run every 24 hours for environments with known failures.

drumm’s picture

Issue summary: View changes

Doesn't the current infrastructure run MariaDB? Either way I think it's OK to treat them as interchangeable until we don't.

Yes, for Drupal.org sites. The DrupalCI containers do not necessarily need to follow.

So is it satisfactory to use MySQL where ever MySQL/MariaDB has been suggested above and to build Maria containers sometime post MVP?

Yep. This is inline with using whatever would be the most common platform, and MariaDB definitely isn't it. My understanding is also that they're more or less inline until a later version of 5.5.

Updating the issue summary for this.

hestenet’s picture

As we drill down into this a bit further we realized we could use a bit more clarification around this requirement:

  • Nightly testing with emails upon failure including a diff against the previous night's result for environments that do not currently pass the test suite in HEAD. (probably #3-6.) The committers adopt a policy of reverting things that introduce a new failure.
  • Could someone unpack what they'd like to see for the diff against the previous night's result a bit further?

    Is this diff a diff of which tests were passing/failing the previous night vs. which passed/failed in the latest run? Or is there something more specific needed?

    webchick’s picture

    I'll run this past the core committer team tomorrow for more specifics, but IMO it's a diff of which tests were passing/failing versus the previous night's run.

    Basically, we want to be able to catch things like this:

    https://www.drupal.org/node/1867518#comment-9894315

    http://d8pgbot.erwanderbar.de/ / http://d8sqlitebot.erwanderbar.de/ do this currently by providing an aggregate +/- number and a link to the complete log of a test run for more details.

    amateescu’s picture

    For the "ideal state" side of things, I think that sometime in future when everything works properly, patch-level testing for core should be done on the fastest possible PHP / DB combination, which probably means PHP 7 & SQLite in memory/tmpfs.

    webchick’s picture

    Issue tags: +revisit July 1 2015

    We spoke about the various "fix it or nix it" critical issues on our Drupal core branch maintainer call today. While there's no way to know when we're going to hit the "~5 critical issue" threshold, the DA is in the process of planning a D8 Accelerate sprint from July 2 - 8. So July 1 is a logical date set as the deadline for things like PostgreSQL support.

    Mixologic’s picture

    Issue tags: +blocked by drupalci
    hestenet’s picture

    Issue summary: View changes

    As further discussed in: [2477413] - For the DrupalCI MVP we'll be able to provide Postgres 9.1.18 and 9.4.4 (rather than Postgres 8.3). At this time that issue is awaiting RTBC, but there seems to be consensus. Updating the issue summary here accordingly.

    hestenet’s picture

    Issue summary: View changes
    daffie’s picture

    Issue summary: View changes

    Dries has approved #2296557: [policy] Require PHP 5.5. So the lowest PHP version we are going to use is 5.5. Updated the issue summary to reflect this.

    hestenet’s picture

    Issue summary: View changes

    Adding some much needed detail into the DA's work on deploying the DrupalCI MVP. My apologies that more of these updates weren't included here in real-time!

    DrupalCI MVP Deployment to Drupal.org

    On June 11th the DA demoed the DrupalCI integration with Drupal.org with some of the core maintainers. We collected some initial feedback, asked some questions, and set out the path to bring DrupalCI into production over the course of the next two weeks. The main architectural shift with this MVP proposal was to remove the results server component of DrupalCI in favor of directly parsing test results on the Jenkins/Dispatcher instance and exposing those results on Drupal.org.

    On June 17th the DA enabled DrupalCI in production for branch and commit testing for Drupal Core. The automated testing tab now shows the DrupalCI tests and test configuration matrix below the PIFT/PIFR tests. At the same time we enabled some initial jobs for the environments that were stable. (In particular, holding off on the Postgres testing as we worked to make the results we were getting from these bots more consistent). We emailed a number of the core maintainers to let them know that these tests were now available.

    Shortly after these initial tests were enabled the minimum version of php for Drupal 8 was increased to php 5.5, so we updated the tests accordingly.

    On June 23rd the DA enabled testing of Postgres on Drupal.org after better stablizing the Postgres bots. However - we are still seeing some inconsistencies in test results from one run to the next on the Postgres bots - and could still use the assistance of core devs working on Postgres support (particularly those who have stable containers running locally) in fixing up the stability of our Postgres environment.

    @Drumm also created test history pages on Drupal.org which can be seen by clicking through any of the test result summaries on the Automated Testing tab of the project, (and will be available wherever else those summaries appear, such as next to a patch in an issue). The test history page provides a summary and meta data about the most current test, as well as a link to the results in Jenkins. It also provides a history of the past tests run in the same environment.

    Since that time we have 1) begun rearchitecting the jobs in Jenkins to better allow us to provide a diff against the previous results for each environment - a precursor to enabling the email notifications to core maintainers, and 2) begun improving the Junit/XML output of the test runner to provide a better organization of the test results (by group) and expose additional detail, such as debug messages that are available in the qa.drupal.org version of the tests results.

    I'll update the results summary with the current hit list, link in or create issues for those where appropriate, and also list some items that are out of scope for initial deployment, but that will need to be done to retire PIFT/PIFR.

    (As a sidenote - we had some breakthroughs that enabled us to dramatically improve the stability of the old testbots, so that maintaining those bots has required much less labor, saving us from being pulled away from this work. Thank you @mixologic!)

    hestenet’s picture

    Issue summary: View changes
    hestenet’s picture

    Issue summary: View changes
    webchick’s picture

    Thank you SO MUCH for that update!!

    webchick’s picture

    So by way of an update on the Drupal 8 core side...

    • This past week we've had the D8 Accelerate "Lemon" sprint where a butt-load of critical issues were fixed, bringing our current total down to 17.
    • Of those 17 issues, two of them are blocked on testbots running PHP 5.5: #2508231: Raise minimum required version of PHP to 5.5.9 (which makes this requirement change for D8) and #2493911: Update guzzle, goutte and mink-goutte-driver to the latest release (which depends on that one getting done).
    • The momentum around criticals right now makes it possible, though certainly not certain, that the next D8 beta might be our last D8 beta (!).
    • We would really like to put the PHP 5.5 requirement in the next beta, so we can get some wider testing and shake out any fallout bugs prior to RC1.
    • The release managers have been talking (nothing definitively announced yet) about releasing the next beta next week, on July 15. (We can be a bit flexible with that date by a few days / up to a week, but August 5 would essentially be our "drop-dead" date for RC1 if we want to have a prayer of releasing Drupal 8.0.0 prior to DrupalCon Barcelona, and we need at least a couple of weeks before that to allow for testing.)

    So I know there is branch-level testing with the new testbot happening on https://www.drupal.org/node/3060/qa and it seems to be passing pretty reliably (yay!). But we're still not seeing patch-level testing for DrupalCI, and that's the level of testing we would need in order to raise the requirement since obviously without that, all of our tests would fail the old PIFT bots running PHP 5.4. :P

    I'm not sure how close DrupalCI patch testing is to completion... we might need to update the PIFT bots instead as a short-term solution?

    TL;DR: Any ETA when PHP 5.5 bots will be available for D8? :D

    basic’s picture

    Support for PHP 5.5 was mostly complete for the PIFR/PIFT bots already, and @isntall finished the pieces missing there. In short:

    • We have bots ready to run PHP 5.5 on pifr/pift
    • @drumm was waiting to update d.o to request the PHP 5.5 bots based core devs need (we NEED to have it on the pifr/pift ones because we need DCI patch testing along side pifr/pift patch testing to verify we are regression free)
    • Since we want to raise that minimum requirement to 5.5 on the 15th (middle of next week) we’re out of time to turn on DCI patch testing and have any reasonable length of time to do side by side testing
    • We need to schedule this change in a change record/change notice for next week and coordinate with core devs the time we switch pifr/pift to 5.5
    chx’s picture

    Let me ask (this is vital for one of my patches): will these bots have opcache on? I presume yes otherwise they'd be very slow but I need to ask.

    isntall’s picture

    chx: For DrupalCI Opcache has been enabled by default . So will APCu. And for the old testbots on qa.d.o we will also have Opcache and APCu enabled by default.

    effulgentsia’s picture

    We need to schedule this change in a change record/change notice for next week and coordinate with core devs the time we switch pifr/pift to 5.5

    Sorry if this is a stupid question, but why not just do it? Like as soon as someone with the necessary creds is able to perform the switch? I'm assuming we're only talking about making this switch for testing 8.x patches, in which case, how would this impact core devs in a way that requires coordination? As far as I'm concerned, the sooner it happens the better, no need to wait until the 15th.

    webchick’s picture

    Yeah, I would agree there. If the switch to PHP 5.5 wasn't made until the 15th, that means we'd have to postpone the beta until at least July 17th, because we'd be committing two big patches which would need at least a couple of days to check for regressions that were accidentally introduced and could only be caught with manual testing. And that assumes the bot switchover to PHP 5.5 introduces absolutely no fall-out problems testbot-wise, and it's only core's bugs we need to deal with (though I personally can't remember a change we've made to PIFT/PIFR that's ever gone 100% right the first time. :P)

    It'd be awesome if it could instead happen either later this week or early next week.

    webchick’s picture

    THAT SAID, I seem to recall that PIFR/PIFT isn't smart enough to run different PHP versions on different versions of Drupal. And if that's the case, we would need to check very carefully to make sure that we didn't kill automated testing in D7 and especially D6 in the process.

    Berdir’s picture

    Drupal 8 is already running on 5.4 while 7 and 6 still uses 5.3. So switching 5.4 to 5.5 should not affect them?

    Fabianx’s picture

    #38: I am pretty happy they want to coordinate with core-devs.

    i.e. if they had "just" done the testbot migration in the middle of "Lemon", that would have severely impacted productivity.

    In that regard (and because there could be problems), I think it is good to warn in advance.

    +1 to warn one or two days in advance (more is not necessary though).

    webchick’s picture

    #41: Oh, whew! Carry on then. :)

    #42: Yep, fully agreed. All I was saying is "please don't switch it the same day as the beta, we need a couple of days to shake out any issues." :)

    xjm’s picture

    Today is the last day of the sprint. If infra is ready, I'd recommend announcing the 5.5 change for perhaps Friday July 10, or if weekend deployment is an option, over the weekend? I agree on "sooner the better" in general.

    Mixologic’s picture

    The current plan is to build a php5.5.9 testbot today, and manually force it to grab the patch from https://www.drupal.org/node/2508231#comment-10096748, though that currently doesnt appear to apply, may need a reroll? (https://dispatcher.drupalci.org/job/php5.5_mysql5.5/19/console)

    Mixologic’s picture

    We're running into difficulties on getting the legacy testbots running 5.5.9 (they are on debian wheezy), so in the interests of time we're going to go ahead with legacy testbots on 5.5.26.

    Currently, the DCI testbots are running on 5.5.23. We're working on downgrading the container to 5.5.9.

    If our smoke test succeeds and we proceed with the legacy testbot upgrade, we will have 5.5.26 in parallel with 5.5.23.

    During that time, green patches will be "greenish" - meaning that there is a slim chance that any patch going in could be impacted by whatever php fixes were put into place between 5.5.9 and 5.5.26, and that there may be one or more 'new fails' revealed once we start using the drupalCI containers at 5.5.9.

    Hopefully thats acceptable risk, otherwise we can spend a lot more time trying to figure out how to get the legacy testbots on 5.5.9.

    catch’s picture

    I don't think 5.5.26/23 is a problem at all tbh.

    webchick’s picture

    Yeah, agreed. Please don't spend a lot of any cycles on downgrading. If it turns out there are massive differences between 5.5.9 and 5.5.2[whatever] we can always spin up 5.5.9 as one of the alternate environments sometime in the next few months.

    The blocker is 5.5.* not 5.5.9.

    David_Rothstein’s picture

    Issue summary: View changes
    FileSize
    73.93 KB

    Wow, it's really cool the multi-environment testing is live!

    Why isn't it turned on for Drupal 7, though? I seem to have the power to turn it on via the UI (and would like to) but don't want to if it will break something. Will it?

    In the short term, this is actually more important for Drupal 7 than Drupal 8, since there are hundreds of thousands of live Drupal 7 sites actually running with these various combinations of PHP/database versions...

    More specifically I'm asking about doing this:

    Proposed changes to enable multi-environment testing for Drupal 7 core

    drumm’s picture

    D7 has some differences we haven't been looking for yet. runtests.sh is in a different location, which we have set up: http://cgit.drupalcode.org/project_issue_file_test/tree/includes/pift_ci.... The best way to help is to run the test runner containers locally against D7 to see if tests pass, and if other environment variables need to be set.

    Within 8.x, core maintainers should go ahead and re-configure as necessary.

    By the way, if any of those select boxes don't make sense to run, maybe 8.x with PHP 5.4, some of those select boxes can be removed to declutter things. This should help out contrib maintainers, so the test combinations are helpful.

    webchick’s picture

    Drupal 8 on PHP 5.4 (or below) definitely doesn't make sense anymore, so if removing that possibility is possible (heh), that sounds great.

    drumm’s picture

    Drupal 8 on PHP 5.4 (or below) definitely doesn't make sense anymore, so if removing that possibility is possible (heh), that sounds great.

    Done.

    tvn’s picture

    Category: Task » Plan
    jibran’s picture

    I don't know where to post this but can we test patches in #2530640: PHP 7 testing issue on PHP 7 & MySQL 5.5?

    webchick’s picture

    Yeah, seems like we're still missing PHP 7. https://www.drupal.org/node/2534516/qa/5273240 shows only:

    Test PHP 5.4 & MySQL 5.5
    Retest PHP 5.5 & MySQL 5.5
    Test PHP 5.6 & MySQL 5.5
    Test PHP 5.4 & SQLite 3.8
    Test PHP 5.5 & SQLite 3.8
    Test PHP 5.5 & PostgreSQL 9.1

    webchick’s picture

    And incidentally, we can drop all PHP 5.4 combos from this list for D8.

    webchick’s picture

    However, when PHP 7 is added to that list, you get there by clicking the "Add tests" link on a test result:

    Add tests link on a test result.

    This takes you to a list of checkboxes where you can queue different environments for test/re-test.

    hestenet’s picture

    Issue summary: View changes
    catch’s picture

    We may need to consider testing on both MariaDB and MySQL.

    https://www.drupal.org/node/2228217#comment-10134064 (via @alexpott) shows a local fail on MySQL (without long index support) whereas MariaDB passed.

    alexpott’s picture

    Also Drupal\system\Tests\Entity\EntityDefinitionUpdateTest fails locally for long indexes.

    morgantocker’s picture

    @catch, @alexpott: this is a false pass due to configuration (strict sql mode is now enabled by newer versions of MySQL; it is not in MariaDB, where this is a warning instead). The same issue is discussed in https://www.drupal.org/node/1314214#comment-9984519

    Summary of discussion:
    - Truncation is unsafe on unique indexes because a constraint can not safely be applied.
    - It is mostly safe on selective non-unique indexes.
    - Thus "not-safe" to rely on database truncation by disabling strict sql mode to create tables.
    - A more complete fix is available in 5.7, where the barracuda file format + innodb_large_prefix is enabled by default. This allows indexes up to 3072 bytes.

    morgantocker’s picture

    There are a number of features which have been removed or deprecated in MySQL 5.7. May I suggest adding it to the test-matrix as well, so that no features are introduced which specifically make use of what is intended to be removed?

    See: http://mysqlserverteam.com/removal-and-deprecation-in-mysql-5-7/

    hestenet’s picture

    Issue summary: View changes

    Updating the summary to reflect that:

    • Contrib testing is now enabled
    • PHP 7 testing is enabled

    Also - this has been called out through some back channels, but please update: #2534132: Disable Legacy Testbots and use drupalCI as our testing infrastructure if you see any regressions between old bots to new, issues with the test output, etc -- basically any feedback you have not covered by existing issues that would prevent turning off the old testbots.

    David_Rothstein’s picture

    Awesome!

    It looks like PHP 7 testing is only an option for Drupal 8 though (not Drupal 7) - any reason?

    I'm also wondering about the fact that PHP 5.3 is not an option, even though the legacy testbots run on that (but will bring that up in more detail at #2534132: Disable Legacy Testbots and use drupalCI as our testing infrastructure). If a project decides to enable the new options now (and e.g. selects "PHP 5.4 & MySQL 5.5" as the one to run on "Issues & commit") would that mean they lose the ability to test patches on PHP 5.3 with the old testbot?

    hestenet’s picture

    Getting 5.3 running in DrupalCI is definitely part of the plan (it's hiding in the issue summary up there under "Not in the scope of MVP, but required so that we can retire PIFT/PIFR" probably needs its own child issue at this point). Getting those bots working and getting CI working for D7 in general is definitely a next major priority.

    David_Rothstein’s picture

    Ah thanks, sorry I missed that. Well it's now mentioned explicitly at #2534132: Disable Legacy Testbots and use drupalCI as our testing infrastructure too, which is probably a good thing :)

    hestenet’s picture

    Issue summary: View changes

    Definitely a good thing. Added a new child issue(#2538042: DrupalCI PHP 5.3 containers need to be stable and available for testing ) and updated the summary

    drumm’s picture

    It looks like PHP 7 testing is only an option for Drupal 8 though (not Drupal 7) - any reason?

    I assumed Drupal 7 wasn't going to support PHP 7. I can add that as an option if testing there is useful.

    webchick’s picture

    In all likelihood, D7 will still be around for another 5+ years, so I think making PHP7 pass on it makes a lot of sense.

    catch’s picture

    Following up to #59 for both the short and long term, I think we should change the default test runner to a MySQL or MariaDB configuration that doesn't support long indexes - then patches added indexes that are too long will fail and we won't break HEAD. afaik that's the only issue we have where MySQL version/variant matters at the moment.

    Multiple MySQL/MariaDB testing would be great to have down the line for other things that might come up, but even if we have that, the default should be as strict as we support.

    xjm’s picture

    On #2534132: Disable Legacy Testbots and use drupalCI as our testing infrastructure @David_Rothstein pointed out that we probably need a 5.3 environment for D7 testing only.

    Berdir’s picture

    Based on a test run I did, it looked like D7 actually had fewer issues with PHP 7, at least the sort that requires API changes (like renaming String/Null/... classes). So enabling certainly doesn't hurt.

    Yay, PHP 7 testing.

    Would be awesome to include a php --version into the build output so it's clear against what we are testing exactly. For example, a lot of those reported exceptions have been fixed a while back, see https://bugs.php.net/bug.php?id=69996.

    If you look at my test results in #2454439: [META] Support PHP 7, there were new PHP 7 changes and bugs every other week that broke stuff again. So it would be pretty important to have an up to date PHP7 build that is updated from time to time, e.g. with the latest beta/alpha version or just build it again every few weeks until we have a stable release. Is that possible? That would allow us to quickly identify regressions/changes in PHP7.

    morgantocker’s picture

    @catch, what did you think about my comment re: 5.7 deprecation? ( http://mysqlserverteam.com/removal-and-deprecation-in-mysql-5-7/ ) I ran the d8 test-suite some time back and it didn't appear to be using any features scheduled to be removed, but it's possible they could be introduced. This is a similar-ish problem to PHP7.

    catch’s picture

    @morgantocker that's good to add to 'ideal state', I don't think it's 'minimal state' at all. Changing the default to not support long indexes feels like 'minimal state' though.

    David_Rothstein’s picture

    I assumed Drupal 7 wasn't going to support PHP 7. I can add that as an option if testing there is useful.

    Please do - thanks! It's not something that's badly needed right away, but as others pointed out above it will be needed eventually.

    The initial tests Berdir did with PHP 7 on Drupal 7 are at #2454439-31: [META] Support PHP 7 - so even before people are ready to use Drupal 7 on PHP 7 in practice, it's still useful to have a testbot keep track of any progress on that issue (rather than having to run the tests manually).

    drumm’s picture

    7 for 7 is enabled now.

    Some contrib projects have proactively enabled DrupalCI testing for Drupal 7.x modules, and you can see how it fails, https://dispatcher.drupalci.org/job/php5.6_mysql5.5/38/console. I'm not the expert on this, I think the SQLite DB used by SimpleTest for results is set up a bit differently in D7.

    For contrib, and even core, do go ahead and remove the legacy testing when DrupalCI is meeting your needs.

    hestenet’s picture

    Issue summary: View changes
    webchick’s picture

    Tagged a few issues this evening as blocked by drupalci. I'm not 100% positive they are, but there's definitely some overlap:

    Suggestion from @catch (via @xjm) was that we might be able to work around these failures by at least temporarily using single concurrency for the SQLite and Postgres builds, which could be acceptable since these test suites mostly only run nightly. Is that an option to get more reliable results from DrupalCI until any other issues are resolved?

    YesCT’s picture

    @Berdir in #72

    include a php --version into the build output

    I guess that would be #2204253: Output PHP version of testbot environment in review log

    webchick’s picture

    Title: [policy, no patch] Determine both the "minimum viable" and "ideal state" of PHP/database/etc. versions » [policy, no patch] Determine the "minimum viable" state of DrupalCI to ship Drupal 8
    Status: Reviewed & tested by the community » Active

    Turning this issue into more of a "grab bag" so we have one centralized place to discuss this.

    We had a pow-wow today with most of the core committers (@xjm, @alexbronstein, @alexpott, @catch) as well as most of the DA tech team (@drumm, @basic, @isntall, @joshuami, @Mixologic, @hestenet, @japerry... hope I didn't forget anyone!) to go through the list at #2267715: [meta] Drupal.org (websites/infra) blockers to a Drupal 8 RC1.

    DrupalCI currently supports the following environments:

    PHP 5.4 & MySQL 5.5
    PHP 5.5 & MySQL 5.5
    PHP 5.6 & MySQL 5.5
    PHP 7 & MySQL 5.5
    PHP 5.4 & SQLite 3.8
    PHP 5.5 & SQLite 3.8
    PHP 5.5 & PostgreSQL 9.1

    The one combination we're missing from the issue summary is PHP 5.5 & PostgreSQL 9.4 but I don't know why we'd need to test against two PostgreSQL versions as a "must-have." Testing against PostgreSQL at all is light years beyond our previous capabilities. This appears to have been added by @hestenet in #27, but I would suggest removing it and putting 9.4 in the nice-to-have bucket.

    As a result, I closed out both #697220: Run tests on all supported database servers and #1867192: Testbots need to run on 5.4, 5.5, 5.6 and 7. Hooray!!

    That said, there is still more work to do in terms of unblocking Drupal 8 RC1:

    1. SQLite isn't passing: https://www.drupal.org/pift-ci-job/17289 (current stats 13,218 pass, 9 fail). There was some debate on whether SQLite ever actually passed, given the random fails in #2508567: DrupalCI SQLite random failures. One theory was that those random fails were caused by concurrency, but even turning concurrency off doesn't help.

    2. PostgreSQL not only isn't passing, but seems to only be running ~100 tests atm: https://www.drupal.org/pift-ci-job/17287 Something appears to have gone awry August 13, 2015 - 17:21 when results bumped from 93,455 pass, 201 fail to 12,744 pass, 58 fail and then again on August 11, 2015 - 11:38 when they bumped down to 203 pass, 30 fail.

    3. catch brought up in #70 a weird environment issue we hit with MariaDB that MySQL testbots didn't catch. Rather than spin up a whole new MariaDB environment, suggestion was to configure the bots to turn off long index support on MySQL.

    4. PHP 7 support doesn't really help us until #2539496: PHP 7 testing needs recent builds and needs to display the build number is done.

    5. In the opposite direction, we are trying to get in #2495411: Make simpletest fail a test when it detects pages that need more than 64MB to help with the D8 critical issue #2497185: [no patch] Create standardized core profiling scenarios and start tracking metrics for them. That's passing on DrupalCI, but failing on PIFT.

    I think that was everything, but please feel free to amend if I skipped something!

    mradcliffe’s picture

    #2 is my fault. I had success running a certain configuration and asked @isntall to try it to see if it would fix random exceptions, but it ended up not being successfully on AWS. The commit has been reverted, but the container may not have been rebuilt yet.

    hestenet’s picture

    Issue summary: View changes
    hestenet’s picture

    Issue summary: View changes
    hestenet’s picture

    hestenet’s picture

    Going to do some reorganization on the issue summary here so that we're only tracking the D8 blockers in this issue and that we use #2534132: Disable Legacy Testbots and use drupalCI as our testing infrastructure for the disable legacy testbots hit list. Also going to add some more insight into our priority order and who on the DA team is working on these.

    hestenet’s picture

    Issue summary: View changes

    Branched feature requests for the Drupal 8.1.x to a new issue #2553289: [meta] Feature requests for DrupalCI to support Drupal 8.1.x

    hestenet’s picture

    Issue summary: View changes
    hestenet’s picture

    Issue summary: View changes
    hestenet’s picture

    Issue summary: View changes
    catch’s picture

    Issue summary: View changes
    webchick’s picture

    Was talking about this today with @catch and @effulgentsia.

    We might actually be done here, because...

    1. #2524426: [meta] DrupalCI pgsql Random exceptions, fails, testbot issues appears to have been tracked down to a regression on the Drupal core side: #2548725: Fix regression to menu serialization in upgrade path that causes thousands of errors in PostgreSQL (need to confirm with @mradcliffe)
    2. #2508567: DrupalCI SQLite random failures and #2539496: PHP 7 testing needs recent builds and needs to display the build number are done.
    3. #2538462: Contrib Testing Test discovery not working for d6/d7 and #2518026: Notify core maintainers (and anyone who wants to subscribe) of test failures (for a branch & environment) with a diff against the previous nights result seem like they're more appropriate blocking #2534132: Disable Legacy Testbots and use drupalCI as our testing infrastructure than RC1.
    4. #2495411: Make simpletest fail a test when it detects pages that need more than 64MB and #2552853: MySQL and MariaDB test results should be consistent are (very) nice to haves.

    The only issues left in the blocked by drupalci queue are self-referential to this issue and the pgsql issue.

    So, once we get confirmation that core and not drupalci is the problem there, we may be able to mark this sucker fixed! :)

    webchick’s picture

    Title: [policy, no patch] Determine the "minimum viable" state of DrupalCI to ship Drupal 8 » [plan] Remove blockers to the "minimum viable" state of DrupalCI to ship Drupal 8 RC1
    Status: Active » Reviewed & tested by the community

    For better visibility...

    webchick’s picture

    Status: Reviewed & tested by the community » Fixed

    Discussed with most of the other core committers yesterday—@xjm, @catch, @alexpott, @effulgentsia—and they agreed that in terms of blocking D8, DrupalCI is in a "done enough" state. Hooray!

    Since #2538462: Contrib Testing Test discovery not working for d6/d7 and #2518026: Notify core maintainers (and anyone who wants to subscribe) of test failures (for a branch & environment) with a diff against the previous nights result are now children of #2534132: Disable Legacy Testbots and use drupalCI as our testing infrastructure, I think we can call this one fixed! WOOHOO! Thanks, DA!!! :D

    Status: Fixed » Closed (fixed)

    Automatically closed - issue fixed for 2 weeks with no activity.