Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ArchiveWebTest.php « Integration « PHPUnit « tests - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 49c61792c7f14be317ba5a588dc49452953842dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
 * Piwik - free/libre analytics platform
 *
 * @link    http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */

use Piwik\Option;

/**
 * Tests to call the archive.php script via web and check there is no error,
 * @group Integration
 */
class Test_Piwik_Integration_ArchiveWebTest extends IntegrationTestCase
{
    public static $fixture = null; // initialized below class definition

    public function testWebArchiving()
    {
        if(self::isMysqli() && self::isTravisCI()) {
            $this->markTestSkipped('Skipping on Mysqli as it randomly fails.');
        }
        self::$fixture->setUp();
        self::deleteArchiveTables();

        $host  = Fixture::getRootUrl();
        $token = Fixture::getTokenAuth();

        $urlTmp = Option::get('piwikUrl');
        Option::set('piwikUrl', $host . 'tests/PHPUnit/proxy/index.php');

        $streamContext = stream_context_create(array('http' => array('timeout' => 180)));

        $url = $host . 'tests/PHPUnit/proxy/archive.php?token_auth=' . $token . '&forcelogtoscreen=1';
        $output = file_get_contents($url, 0, $streamContext);

        // ignore random build issues
        if (empty($output) || strpos($output, \Piwik\CronArchive::NO_ERROR) === false) {
            $message = "This test has failed. Because it sometimes randomly fails, we skip the test, and ignore this failure.\n";
            $message .= "If you see this message often, or in every build, please investigate as this should only be a random and rare occurence!\n";
            $message .= "\n\narchive web failed: " . $output . "\n\nurl used: $url";
            $this->markTestSkipped($message);
        }

        if (!empty($urlTmp)) {
            Option::set('piwikUrl', $urlTmp);
        } else {
            Option::delete('piwikUrl');
        }

        $this->assertContains('Starting Piwik reports archiving...', $output);
        $this->assertContains('Archived website id = 1', $output);
        $this->assertContains('Done archiving!', $output);
        $this->compareArchivePhpOutputAgainstExpected($output);
    }

    private function compareArchivePhpOutputAgainstExpected($output)
    {
        $fileName = 'test_ArchiveCronTest_archive_php_cron_output.txt';
        list($pathProcessed, $pathExpected) = static::getProcessedAndExpectedDirs();

        $expectedOutputFile = $pathExpected . $fileName;

        try {
            $this->assertTrue(is_readable($expectedOutputFile));
            $this->assertEquals(file_get_contents($expectedOutputFile), $output);
        } catch (Exception $ex) {
            $this->comparisonFailures[] = $ex;
        }
    }
}

Test_Piwik_Integration_ArchiveWebTest::$fixture = new Test_Piwik_Fixture_ManySitesImportedLogs();
Test_Piwik_Integration_ArchiveWebTest::$fixture->addSegments = true;