diff --git a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php index 22a5a0391673f..73886cb4d712c 100644 --- a/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php +++ b/src/Symfony/Component/Cache/DataCollector/CacheDataCollector.php @@ -143,6 +143,8 @@ private function calculateStatistics(): array } } elseif ('save' === $call->name) { ++$statistics[$name]['writes']; + } elseif ('saveDeferred' === $call->name) { + ++$statistics[$name]['writes']; } elseif ('deleteItem' === $call->name) { ++$statistics[$name]['deletes']; } diff --git a/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php b/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php index 7a2f36abb4df3..d7e1af0916b56 100644 --- a/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php +++ b/src/Symfony/Component/Cache/Tests/DataCollector/CacheDataCollectorTest.php @@ -86,6 +86,46 @@ public function testSavedEventDataCollector() $this->assertEquals($statistics[self::INSTANCE_NAME]['writes'], 1, 'writes'); } + public function testSaveDeferredEventWithoutExplicitCommitDataCollector() + { + $traceableAdapterEvent = new \stdClass(); + $traceableAdapterEvent->name = 'saveDeferred'; + $traceableAdapterEvent->start = 0; + $traceableAdapterEvent->end = 0; + + $statistics = $this->getCacheDataCollectorStatisticsFromEvents([$traceableAdapterEvent]); + + $this->assertSame(1, $statistics[self::INSTANCE_NAME]['calls'], 'calls'); + $this->assertSame(0, $statistics[self::INSTANCE_NAME]['reads'], 'reads'); + $this->assertSame(0, $statistics[self::INSTANCE_NAME]['hits'], 'hits'); + $this->assertSame(0, $statistics[self::INSTANCE_NAME]['misses'], 'misses'); + $this->assertSame(1, $statistics[self::INSTANCE_NAME]['writes'], 'writes'); + } + + public function testSaveDeferredEventWithExplicitCommitDataCollector() + { + $traceableAdapterSaveDeferredEvent = new \stdClass(); + $traceableAdapterSaveDeferredEvent->name = 'saveDeferred'; + $traceableAdapterSaveDeferredEvent->start = 0; + $traceableAdapterSaveDeferredEvent->end = 0; + + $traceableAdapterCommitEvent = new \stdClass(); + $traceableAdapterCommitEvent->name = 'commit'; + $traceableAdapterCommitEvent->start = 0; + $traceableAdapterCommitEvent->end = 0; + + $statistics = $this->getCacheDataCollectorStatisticsFromEvents([ + $traceableAdapterSaveDeferredEvent, + $traceableAdapterCommitEvent, + ]); + + $this->assertSame(2, $statistics[self::INSTANCE_NAME]['calls'], 'calls'); + $this->assertSame(0, $statistics[self::INSTANCE_NAME]['reads'], 'reads'); + $this->assertSame(0, $statistics[self::INSTANCE_NAME]['hits'], 'hits'); + $this->assertSame(0, $statistics[self::INSTANCE_NAME]['misses'], 'misses'); + $this->assertSame(1, $statistics[self::INSTANCE_NAME]['writes'], 'writes'); + } + public function testCollectBeforeEnd() { $adapter = new TraceableAdapter(new NullAdapter());