3 namespace Friendica\Test\src\Core\Cache;
5 use Friendica\Core\Cache;
6 use Friendica\Factory\CacheDriverFactory;
7 use Friendica\Test\Util\DbaCacheMockTrait;
10 * @runTestsInSeparateProcesses
11 * @preserveGlobalState disabled
13 class DatabaseCacheDriverTest extends CacheTest
15 use DbaCacheMockTrait;
17 public function setUp()
19 $this->mockUtcNow($this->startTime);
21 $this->mockConnected();
24 // The first "clear" at setup
25 $this->mockClear(false, true, 2);
30 protected function getInstance()
32 $this->cache = CacheDriverFactory::create('database');
36 public function tearDown()
38 $this->cache->clear(false);
44 * @dataProvider dataSimple
46 public function testSimple($value1, $value2)
49 $this->mockGet('value1', null, $this->startTime, 1);
52 $this->mockSet('value1', $value1, Cache::FIVE_MINUTES, $this->startTime, true, 1);
53 $this->mockGet('value1', $value1, $this->startTime, 1);
56 $this->mockSet('value1', $value2, Cache::FIVE_MINUTES, $this->startTime, true, 1);
57 $this->mockGet('value1', $value2, $this->startTime, 1);
60 $this->mockSet('value2', $value1, Cache::FIVE_MINUTES, $this->startTime, true, 1);
61 $this->mockGet('value2', $value1, $this->startTime, 1);
64 $this->mockGet('not_set', null, $this->startTime, 1);
67 $this->mockDelete('value1', true, 1);
68 $this->mockGet('value1', null, $this->startTime, 1);
70 parent::testSimple($value1, $value2);
75 * @dataProvider dataSimple
77 public function testClear($value1, $value2, $value3, $value4)
80 $this->mockSet('1_value1', $value1, Cache::FIVE_MINUTES, $this->startTime, true, 1);
81 $this->mockSet('1_value2', $value2, Cache::FIVE_MINUTES, $this->startTime, true, 1);
82 $this->mockSet('2_value1', $value3, Cache::FIVE_MINUTES, $this->startTime, true, 1);
83 $this->mockSet('3_value1', $value4, Cache::FIVE_MINUTES, $this->startTime, true, 1);
85 $this->mockGet('1_value1', $value1, $this->startTime, 2);
86 $this->mockGet('1_value2', $value2, $this->startTime, 2);
87 $this->mockGet('2_value1', $value3, $this->startTime, 2);
88 $this->mockGet('3_value1', $value4, $this->startTime, 2);
91 $this->mockClear(true, true, 1);
92 $this->mockClear(false, true, 1);
95 $this->mockGet('1_value1', null, $this->startTime, 1);
96 $this->mockGet('1_value2', null, $this->startTime, 1);
97 $this->mockGet('2_value3', null, $this->startTime, 1);
98 $this->mockGet('3_value4', null, $this->startTime, 1);
100 parent::testClear($value1, $value2, $value3, $value4);
105 * @dataProvider dataTypesInCache
107 public function testDifferentTypesInCache($data)
109 $this->mockSet('val', $data, Cache::FIVE_MINUTES, $this->startTime, true, 1);
110 $this->mockGet('val', $data, $this->startTime, 1);
112 parent::testDifferentTypesInCache($data);
117 * @dataProvider dataSimple
119 public function testGetAllKeys($value1, $value2, $value3)
121 $this->mockSet('value1', $value1, Cache::FIVE_MINUTES, $this->startTime, true, 1);
122 $this->mockSet('value2', $value2,Cache::FIVE_MINUTES, $this->startTime, true, 1);
123 $this->mockSet('test_value3', $value3, Cache::FIVE_MINUTES, $this->startTime, true, 1);
128 ['k' => 'test_value3'],
131 $this->mockGetAllKeys(null, $result, $this->startTime, 1);
134 ['k' => 'test_value3'],
137 $this->mockGetAllKeys('test', $result, $this->startTime, 1);
139 parent::testGetAllKeys($value1, $value2, $value3);