コード例 #1
0
 /**
  * {@inheritdoc}
  * @return Response
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function launch()
 {
     $output = [];
     $types = $this->getRequestedTypes();
     $enabledTypes = [];
     if (isset($this->requestArgs[self::KEY_SET])) {
         $isEnabled = (bool) (int) $this->requestArgs[self::KEY_SET];
         $changedTypes = $this->cacheManager->setEnabled($types, $isEnabled);
         if ($isEnabled) {
             $enabledTypes = $changedTypes;
         }
         if ($changedTypes) {
             $output[] = 'Changed cache status:';
             foreach ($changedTypes as $type) {
                 $output[] = sprintf('%30s: %d -> %d', $type, !$isEnabled, $isEnabled);
             }
         } else {
             $output[] = 'There is nothing to change in cache status';
         }
     }
     if (isset($this->requestArgs[self::KEY_FLUSH])) {
         $this->cacheManager->flush($types);
         $output[] = 'Flushed cache types:';
         $output[] = join("\n", $types);
     } elseif (isset($this->requestArgs[self::KEY_CLEAN])) {
         $this->cacheManager->clean($types);
         $output[] = 'Cleaned cache types:';
         $output[] = join("\n", $types);
     } elseif (isset($this->requestArgs[self::KEY_STATUS])) {
         $output[] = 'Current status:';
         foreach ($this->cacheManager->getStatus() as $cache => $status) {
             $output[] = sprintf('%30s: %d', $cache, $status);
         }
     } elseif (!empty($enabledTypes)) {
         $this->cacheManager->clean($enabledTypes);
         $output[] = 'Cleaned cache types:';
         $output[] = join("\n", $enabledTypes);
     }
     $output[] = '';
     $this->response->setBody(join("\n", $output));
     return $this->response;
 }
コード例 #2
0
 /**
  * Test flushing all cache types
  *
  * Emulates situation when some cache frontends reuse the same backend
  * Asserts that the flush is invoked only once per affected storage
  */
 public function testFlushAll()
 {
     $cacheTypes = ['foo', 'bar', 'baz'];
     $frontendFoo = $this->getMockForAbstractClass('Magento\\Framework\\Cache\\FrontendInterface');
     $frontendBar = $this->getMockForAbstractClass('Magento\\Framework\\Cache\\FrontendInterface');
     $frontendBaz = $this->getMockForAbstractClass('Magento\\Framework\\Cache\\FrontendInterface');
     $this->frontendPool->expects($this->exactly(3))->method('get')->will($this->returnValueMap([['foo', $frontendFoo], ['bar', $frontendBar], ['baz', $frontendBaz]]));
     $backendOne = $this->getMockForAbstractClass('Zend_Cache_Backend_Interface');
     $backendTwo = $this->getMockForAbstractClass('Zend_Cache_Backend_Interface');
     $frontendFoo->expects($this->once())->method('getBackend')->willReturn($backendOne);
     $frontendBar->expects($this->once())->method('getBackend')->willReturn($backendOne);
     $frontendBaz->expects($this->once())->method('getBackend')->willReturn($backendTwo);
     $backendOne->expects($this->once())->method('clean');
     $backendTwo->expects($this->once())->method('clean');
     $this->model->flush($cacheTypes);
 }