<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[54047] trunk: Site Health: Some documentation and test improvements for `WP_Site_Health`:</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/54047">54047</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/54047","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>SergeyBiryukov</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2022-09-01 15:26:29 +0000 (Thu, 01 Sep 2022)</dd>
</dl>
<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Site Health: Some documentation and test improvements for `WP_Site_Health`:
* Add a `@coversDefaultClass` annotation to address `@covers ::get_test_page_cache" is invalid` notices.
* Rename data providers to start with the `data_` prefix and match the test method names, for consistency.
* Move data providers next to the test methods they are used in.
* Move `::get_test_page_cache()` closer to `::get_test_persistent_object_cache()`, for a bit more predictable placement.
* Fix a typo in `::get_test_persistent_object_cache()` description.
Follow-up to <a href="https://core.trac.wordpress.org/changeset/53955">[53955]</a>, <a href="https://core.trac.wordpress.org/changeset/54043">[54043]</a>, <a href="https://core.trac.wordpress.org/changeset/54044">[54044]</a>, <a href="https://core.trac.wordpress.org/changeset/54045">[54045]</a>.
See <a href="https://core.trac.wordpress.org/ticket/56041">#56041</a>.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpadminincludesclasswpsitehealthphp">trunk/src/wp-admin/includes/class-wp-site-health.php</a></li>
<li><a href="#trunktestsphpunittestssitehealthphp">trunk/tests/phpunit/tests/site-health.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpadminincludesclasswpsitehealthphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-admin/includes/class-wp-site-health.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-admin/includes/class-wp-site-health.php 2022-09-01 06:10:43 UTC (rev 54046)
+++ trunk/src/wp-admin/includes/class-wp-site-health.php 2022-09-01 15:26:29 UTC (rev 54047)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -351,7 +351,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px"> * Test if plugins are outdated, or unnecessary.
</span><span class="cx" style="display: block; padding: 0 10px"> *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * The tests checks if your plugins are up to date, and encourages you to remove any
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * The test checks if your plugins are up to date, and encourages you to remove any
</ins><span class="cx" style="display: block; padding: 0 10px"> * that are not in use.
</span><span class="cx" style="display: block; padding: 0 10px"> *
</span><span class="cx" style="display: block; padding: 0 10px"> * @since 5.2.0
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1667,120 +1667,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Tests if a full page cache is available.
- *
- * @since 6.1.0
- *
- * @return array The test result.
- */
- public function get_test_page_cache() {
- $description = '<p>' . __( 'Page cache enhances the speed and performance of your site by saving and serving static pages instead of calling for a page every time a user visits.' ) . '</p>';
- $description .= '<p>' . __( 'Page cache is detected by looking for an active page cache plugin as well as making three requests to the homepage and looking for one or more of the following HTTP client caching response headers:' ) . '</p>';
- $description .= '<code>' . implode( '</code>, <code>', array_keys( $this->get_page_cache_headers() ) ) . '.</code>';
-
- $result = array(
- 'badge' => array(
- 'label' => __( 'Performance' ),
- 'color' => 'blue',
- ),
- 'description' => wp_kses_post( $description ),
- 'test' => 'page_cache',
- 'status' => 'good',
- 'label' => '',
- 'actions' => sprintf(
- '<p><a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a></p>',
- __( 'https://wordpress.org/support/article/optimization/#Caching' ),
- __( 'Learn more about page cache' ),
- /* translators: Accessibility text. */
- __( '(opens in a new tab)' )
- ),
- );
-
- $page_cache_detail = $this->get_page_cache_detail();
-
- if ( is_wp_error( $page_cache_detail ) ) {
- $result['label'] = __( 'Unable to detect the presence of page cache' );
- $result['status'] = 'recommended';
- $error_info = sprintf(
- /* translators: 1: Error message, 2: Error code. */
- __( 'Unable to detect page cache due to possible loopback request problem. Please verify that the loopback request test is passing. Error: %1$s (Code: %2$s)' ),
- $page_cache_detail->get_error_message(),
- $page_cache_detail->get_error_code()
- );
- $result['description'] = wp_kses_post( "<p>$error_info</p>" ) . $result['description'];
- return $result;
- }
-
- $result['status'] = $page_cache_detail['status'];
-
- switch ( $page_cache_detail['status'] ) {
- case 'recommended':
- $result['label'] = __( 'Page cache is not detected but the server response time is OK' );
- break;
- case 'good':
- $result['label'] = __( 'Page cache is detected and the server response time is good' );
- break;
- default:
- if ( empty( $page_cache_detail['headers'] ) && ! $page_cache_detail['advanced_cache_present'] ) {
- $result['label'] = __( 'Page cache is not detected and the server response time is slow' );
- } else {
- $result['label'] = __( 'Page cache is detected but the server response time is still slow' );
- }
- }
-
- $page_cache_test_summary = array();
-
- if ( empty( $page_cache_detail['response_time'] ) ) {
- $page_cache_test_summary[] = '<span class="dashicons dashicons-dismiss"></span> ' . __( 'Server response time could not be determined. Verify that loopback requests are working.' );
- } else {
-
- $threshold = $this->get_good_response_time_threshold();
- if ( $page_cache_detail['response_time'] < $threshold ) {
- $page_cache_test_summary[] = '<span class="dashicons dashicons-yes-alt"></span> ' . sprintf(
- /* translators: 1: The response time in milliseconds, 2: The recommended threshold in milliseconds. */
- __( 'Median server response time was %1$s milliseconds. This is less than the recommended %2$s milliseconds threshold.' ),
- number_format_i18n( $page_cache_detail['response_time'] ),
- number_format_i18n( $threshold )
- );
- } else {
- $page_cache_test_summary[] = '<span class="dashicons dashicons-warning"></span> ' . sprintf(
- /* translators: 1: The response time in milliseconds, 2: The recommended threshold in milliseconds. */
- __( 'Median server response time was %1$s milliseconds. It should be less than the recommended %2$s milliseconds threshold.' ),
- number_format_i18n( $page_cache_detail['response_time'] ),
- number_format_i18n( $threshold )
- );
- }
-
- if ( empty( $page_cache_detail['headers'] ) ) {
- $page_cache_test_summary[] = '<span class="dashicons dashicons-warning"></span> ' . __( 'No client caching response headers were detected.' );
- } else {
- $headers_summary = '<span class="dashicons dashicons-yes-alt"></span>';
- $headers_summary .= ' ' . sprintf(
- /* translators: %d: Number of caching headers. */
- _n(
- 'There was %d client caching response header detected:',
- 'There were %d client caching response headers detected:',
- count( $page_cache_detail['headers'] )
- ),
- count( $page_cache_detail['headers'] )
- );
- $headers_summary .= ' <code>' . implode( '</code>, <code>', $page_cache_detail['headers'] ) . '</code>.';
- $page_cache_test_summary[] = $headers_summary;
- }
- }
-
- if ( $page_cache_detail['advanced_cache_present'] ) {
- $page_cache_test_summary[] = '<span class="dashicons dashicons-yes-alt"></span> ' . __( 'A page cache plugin was detected.' );
- } elseif ( ! ( is_array( $page_cache_detail ) && ! empty( $page_cache_detail['headers'] ) ) ) {
- // Note: This message is not shown if client caching response headers were present since an external caching layer may be employed.
- $page_cache_test_summary[] = '<span class="dashicons dashicons-warning"></span> ' . __( 'A page cache plugin was not detected.' );
- }
-
- $result['description'] .= '<ul><li>' . implode( '</li><li>', $page_cache_test_summary ) . '</li></ul>';
- return $result;
- }
-
- /**
</del><span class="cx" style="display: block; padding: 0 10px"> * Check if the HTTP API can handle SSL/TLS requests.
</span><span class="cx" style="display: block; padding: 0 10px"> *
</span><span class="cx" style="display: block; padding: 0 10px"> * @since 5.2.0
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2378,10 +2264,122 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Tests if sites uses persistent object cache.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Tests if a full page cache is available.
</ins><span class="cx" style="display: block; padding: 0 10px"> *
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Checks if site uses persistent object cache or recommends to use it if not.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @since 6.1.0
</ins><span class="cx" style="display: block; padding: 0 10px"> *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @return array The test result.
+ */
+ public function get_test_page_cache() {
+ $description = '<p>' . __( 'Page cache enhances the speed and performance of your site by saving and serving static pages instead of calling for a page every time a user visits.' ) . '</p>';
+ $description .= '<p>' . __( 'Page cache is detected by looking for an active page cache plugin as well as making three requests to the homepage and looking for one or more of the following HTTP client caching response headers:' ) . '</p>';
+ $description .= '<code>' . implode( '</code>, <code>', array_keys( $this->get_page_cache_headers() ) ) . '.</code>';
+
+ $result = array(
+ 'badge' => array(
+ 'label' => __( 'Performance' ),
+ 'color' => 'blue',
+ ),
+ 'description' => wp_kses_post( $description ),
+ 'test' => 'page_cache',
+ 'status' => 'good',
+ 'label' => '',
+ 'actions' => sprintf(
+ '<p><a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s <span class="screen-reader-text">%3$s</span><span aria-hidden="true" class="dashicons dashicons-external"></span></a></p>',
+ __( 'https://wordpress.org/support/article/optimization/#Caching' ),
+ __( 'Learn more about page cache' ),
+ /* translators: Accessibility text. */
+ __( '(opens in a new tab)' )
+ ),
+ );
+
+ $page_cache_detail = $this->get_page_cache_detail();
+
+ if ( is_wp_error( $page_cache_detail ) ) {
+ $result['label'] = __( 'Unable to detect the presence of page cache' );
+ $result['status'] = 'recommended';
+ $error_info = sprintf(
+ /* translators: 1: Error message, 2: Error code. */
+ __( 'Unable to detect page cache due to possible loopback request problem. Please verify that the loopback request test is passing. Error: %1$s (Code: %2$s)' ),
+ $page_cache_detail->get_error_message(),
+ $page_cache_detail->get_error_code()
+ );
+ $result['description'] = wp_kses_post( "<p>$error_info</p>" ) . $result['description'];
+ return $result;
+ }
+
+ $result['status'] = $page_cache_detail['status'];
+
+ switch ( $page_cache_detail['status'] ) {
+ case 'recommended':
+ $result['label'] = __( 'Page cache is not detected but the server response time is OK' );
+ break;
+ case 'good':
+ $result['label'] = __( 'Page cache is detected and the server response time is good' );
+ break;
+ default:
+ if ( empty( $page_cache_detail['headers'] ) && ! $page_cache_detail['advanced_cache_present'] ) {
+ $result['label'] = __( 'Page cache is not detected and the server response time is slow' );
+ } else {
+ $result['label'] = __( 'Page cache is detected but the server response time is still slow' );
+ }
+ }
+
+ $page_cache_test_summary = array();
+
+ if ( empty( $page_cache_detail['response_time'] ) ) {
+ $page_cache_test_summary[] = '<span class="dashicons dashicons-dismiss"></span> ' . __( 'Server response time could not be determined. Verify that loopback requests are working.' );
+ } else {
+
+ $threshold = $this->get_good_response_time_threshold();
+ if ( $page_cache_detail['response_time'] < $threshold ) {
+ $page_cache_test_summary[] = '<span class="dashicons dashicons-yes-alt"></span> ' . sprintf(
+ /* translators: 1: The response time in milliseconds, 2: The recommended threshold in milliseconds. */
+ __( 'Median server response time was %1$s milliseconds. This is less than the recommended %2$s milliseconds threshold.' ),
+ number_format_i18n( $page_cache_detail['response_time'] ),
+ number_format_i18n( $threshold )
+ );
+ } else {
+ $page_cache_test_summary[] = '<span class="dashicons dashicons-warning"></span> ' . sprintf(
+ /* translators: 1: The response time in milliseconds, 2: The recommended threshold in milliseconds. */
+ __( 'Median server response time was %1$s milliseconds. It should be less than the recommended %2$s milliseconds threshold.' ),
+ number_format_i18n( $page_cache_detail['response_time'] ),
+ number_format_i18n( $threshold )
+ );
+ }
+
+ if ( empty( $page_cache_detail['headers'] ) ) {
+ $page_cache_test_summary[] = '<span class="dashicons dashicons-warning"></span> ' . __( 'No client caching response headers were detected.' );
+ } else {
+ $headers_summary = '<span class="dashicons dashicons-yes-alt"></span>';
+ $headers_summary .= ' ' . sprintf(
+ /* translators: %d: Number of caching headers. */
+ _n(
+ 'There was %d client caching response header detected:',
+ 'There were %d client caching response headers detected:',
+ count( $page_cache_detail['headers'] )
+ ),
+ count( $page_cache_detail['headers'] )
+ );
+ $headers_summary .= ' <code>' . implode( '</code>, <code>', $page_cache_detail['headers'] ) . '</code>.';
+ $page_cache_test_summary[] = $headers_summary;
+ }
+ }
+
+ if ( $page_cache_detail['advanced_cache_present'] ) {
+ $page_cache_test_summary[] = '<span class="dashicons dashicons-yes-alt"></span> ' . __( 'A page cache plugin was detected.' );
+ } elseif ( ! ( is_array( $page_cache_detail ) && ! empty( $page_cache_detail['headers'] ) ) ) {
+ // Note: This message is not shown if client caching response headers were present since an external caching layer may be employed.
+ $page_cache_test_summary[] = '<span class="dashicons dashicons-warning"></span> ' . __( 'A page cache plugin was not detected.' );
+ }
+
+ $result['description'] .= '<ul><li>' . implode( '</li><li>', $page_cache_test_summary ) . '</li></ul>';
+ return $result;
+ }
+
+ /**
+ * Tests if the site uses persistent object cache and recommends to use it if not.
+ *
</ins><span class="cx" style="display: block; padding: 0 10px"> * @since 6.1.0
</span><span class="cx" style="display: block; padding: 0 10px"> *
</span><span class="cx" style="display: block; padding: 0 10px"> * @return array The test result.
</span></span></pre></div>
<a id="trunktestsphpunittestssitehealthphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/tests/phpunit/tests/site-health.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/tests/phpunit/tests/site-health.php 2022-09-01 06:10:43 UTC (rev 54046)
+++ trunk/tests/phpunit/tests/site-health.php 2022-09-01 15:26:29 UTC (rev 54047)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2,6 +2,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px"> * @group site-health
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ *
+ * @coversDefaultClass WP_Site_Health
</ins><span class="cx" style="display: block; padding: 0 10px"> */
</span><span class="cx" style="display: block; padding: 0 10px"> class Tests_Site_Health extends WP_UnitTestCase {
</span><span class="cx" style="display: block; padding: 0 10px"> public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -110,7 +112,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px"> * @ticket 56041
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @dataProvider data_page_cache_test
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @dataProvider data_get_page_cache
</ins><span class="cx" style="display: block; padding: 0 10px"> * @covers ::get_test_page_cache()
</span><span class="cx" style="display: block; padding: 0 10px"> * @covers ::get_page_cache_detail()
</span><span class="cx" style="display: block; padding: 0 10px"> * @covers ::get_page_cache_headers()
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -202,66 +204,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @group ms-excluded
- * @ticket 56040
- */
- public function test_object_cache_default_thresholds() {
- $wp_site_health = new WP_Site_Health();
-
- $this->assertFalse(
- $wp_site_health->should_suggest_persistent_object_cache()
- );
- }
-
-
- /**
- * @group ms-required
- * @ticket 56040
- */
- public function test_object_cache_default_thresholds_on_multisite() {
- $wp_site_health = new WP_Site_Health();
- $this->assertTrue(
- $wp_site_health->should_suggest_persistent_object_cache()
- );
- }
-
- /**
- * @ticket 56040
- */
- public function test_object_cache_thresholds_check_can_be_bypassed() {
- $wp_site_health = new WP_Site_Health();
- add_filter( 'site_status_should_suggest_persistent_object_cache', '__return_true' );
-
- $this->assertTrue(
- $wp_site_health->should_suggest_persistent_object_cache()
- );
- }
-
- /**
- * @dataProvider thresholds
- * @ticket 56040
- */
- public function test_object_cache_thresholds( $threshold, $count ) {
- $wp_site_health = new WP_Site_Health();
- add_filter(
- 'site_status_persistent_object_cache_thresholds',
- function ( $thresholds ) use ( $threshold, $count ) {
- return array_merge( $thresholds, array( $threshold => $count ) );
- }
- );
-
- $this->assertTrue(
- $wp_site_health->should_suggest_persistent_object_cache()
- );
- }
-
- /**
- * Gets response data for get_test_page_cache().
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Data provider for test_get_page_cache().
+ *
+ * Gets response data for WP_Site_Health::get_test_page_cache().
+ *
</ins><span class="cx" style="display: block; padding: 0 10px"> * @ticket 56041
</span><span class="cx" style="display: block; padding: 0 10px"> *
</span><span class="cx" style="display: block; padding: 0 10px"> * @return array[]
</span><span class="cx" style="display: block; padding: 0 10px"> */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- public function data_page_cache_test() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function data_get_page_cache() {
</ins><span class="cx" style="display: block; padding: 0 10px"> $recommended_label = 'Page cache is not detected but the server response time is OK';
</span><span class="cx" style="display: block; padding: 0 10px"> $good_label = 'Page cache is detected and the server response time is good';
</span><span class="cx" style="display: block; padding: 0 10px"> $critical_label = 'Page cache is not detected and the server response time is slow';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -408,11 +359,65 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px">
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * Data provider.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @group ms-excluded
+ * @ticket 56040
+ */
+ public function test_object_cache_default_thresholds() {
+ $wp_site_health = new WP_Site_Health();
+
+ $this->assertFalse(
+ $wp_site_health->should_suggest_persistent_object_cache()
+ );
+ }
+
+
+ /**
+ * @group ms-required
+ * @ticket 56040
+ */
+ public function test_object_cache_default_thresholds_on_multisite() {
+ $wp_site_health = new WP_Site_Health();
+ $this->assertTrue(
+ $wp_site_health->should_suggest_persistent_object_cache()
+ );
+ }
+
+ /**
+ * @ticket 56040
+ */
+ public function test_object_cache_thresholds_check_can_be_bypassed() {
+ $wp_site_health = new WP_Site_Health();
+ add_filter( 'site_status_should_suggest_persistent_object_cache', '__return_true' );
+
+ $this->assertTrue(
+ $wp_site_health->should_suggest_persistent_object_cache()
+ );
+ }
+
+ /**
+ * @dataProvider data_object_cache_thresholds
+ * @ticket 56040
+ */
+ public function test_object_cache_thresholds( $threshold, $count ) {
+ $wp_site_health = new WP_Site_Health();
+ add_filter(
+ 'site_status_persistent_object_cache_thresholds',
+ function ( $thresholds ) use ( $threshold, $count ) {
+ return array_merge( $thresholds, array( $threshold => $count ) );
+ }
+ );
+
+ $this->assertTrue(
+ $wp_site_health->should_suggest_persistent_object_cache()
+ );
+ }
+
+ /**
+ * Data provider for test_object_cache_thresholds().
</ins><span class="cx" style="display: block; padding: 0 10px"> *
</span><span class="cx" style="display: block; padding: 0 10px"> * @ticket 56040
</span><span class="cx" style="display: block; padding: 0 10px"> */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- public function thresholds() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function data_object_cache_thresholds() {
</ins><span class="cx" style="display: block; padding: 0 10px"> return array(
</span><span class="cx" style="display: block; padding: 0 10px"> array( 'comments_count', 0 ),
</span><span class="cx" style="display: block; padding: 0 10px"> array( 'posts_count', 0 ),
</span></span></pre>
</div>
</div>
</body>
</html>