'Piwik\Tests\Integration\Archive\CustomArchiver', ); } } /** * @group PluginsArchiver * @group PluginsArchiverTest * @group Core */ class PluginsArchiverTest extends IntegrationTestCase { /** * @var PluginsArchiver */ private $pluginsArchiver; public function setUp(): void { parent::setUp(); Fixture::createWebsite('2015-01-01 00:00:00'); Fixture::createWebsite('2015-01-01 00:00:00'); Fixture::createWebsite('2015-01-01 00:00:00'); $this->pluginsArchiver = new CustomPluginsArchiver($this->createArchiveProcessorParameters()); } private function createArchiveProcessorParameters() { $oPeriod = PeriodFactory::makePeriodFromQueryParams('UTC', 'day', '2015-01-01'); $segment = new Segment(false, array(1)); $params = new Parameters(new Site(1), $oPeriod, $segment); return $params; } public function testPurgeOutdatedArchivesPurgesCorrectTemporaryArchivesWhileKeepingNewerTemporaryArchivesWithBrowserTriggeringEnabled() { $this->expectException(\Piwik\ArchiveProcessor\PluginsArchiverException::class); $this->expectExceptionCode(42); $this->expectExceptionMessage('Failed query foo bar - in plugin MyPluginName'); $this->pluginsArchiver->callAggregateAllPlugins(1, 1); } public function testArchiveMultipleSites() { self::expectNotToPerformAssertions(); Piwik::addAction('ArchiveProcessor.Parameters.getIdSites', function (&$idSites, $period) { if (count($idSites) === 1 && reset($idSites) === 1) { $idSites = array(2,3); } }); Piwik::addAction('ArchiveProcessor.shouldAggregateFromRawData', function (&$shouldAggregateRawData, Parameters $params) { // needed as by default we would only aggregate for single site if ($params->isDayArchive()) { $shouldAggregateRawData = true; } }); $this->pluginsArchiver = new PluginsArchiver($this->createArchiveProcessorParameters()); $this->pluginsArchiver->callAggregateCoreMetrics(); $this->pluginsArchiver->callAggregateAllPlugins(1, 1, $forceArchivingWithoutVisits = true); } }