Skip to content

Commit 97765c1

Browse files
authored
Merge pull request #177 from splitio/task/cleanSegmentsCache
Task/clean segments cache
2 parents 7d75ea5 + d0f73b4 commit 97765c1

File tree

7 files changed

+46
-151
lines changed

7 files changed

+46
-151
lines changed

src/SplitIO/Component/Cache/SegmentCache.php

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,10 @@
55

66
class SegmentCache implements SegmentCacheInterface
77
{
8-
const KEY_REGISTER_SEGMENTS = 'SPLITIO.segments.registered';
9-
108
const KEY_SEGMENT_DATA = 'SPLITIO.segment.{segmentName}';
119

1210
const KEY_TILL_CACHED_ITEM = 'SPLITIO.segment.{segment_name}.till';
1311

14-
private static function getCacheKeyForRegisterSegments()
15-
{
16-
return self::KEY_REGISTER_SEGMENTS;
17-
}
18-
1912
private static function getCacheKeyForSegmentData($segmentName)
2013
{
2114
return str_replace('{segmentName}', $segmentName, self::KEY_SEGMENT_DATA);
@@ -26,60 +19,6 @@ private static function getCacheKeyForSinceParameter($segmentName)
2619
return str_replace('{segment_name}', $segmentName, self::KEY_TILL_CACHED_ITEM);
2720
}
2821

29-
/**
30-
* @param $segmentName
31-
* @return boolean
32-
*/
33-
public static function registerSegment($segmentName)
34-
{
35-
$cache = Di::getCache();
36-
37-
return $cache->saveItemOnList(self::getCacheKeyForRegisterSegments(), $segmentName);
38-
}
39-
40-
public static function getRegisteredSegments()
41-
{
42-
return Di::getCache()->getItemsOnList(self::getCacheKeyForRegisterSegments());
43-
}
44-
45-
/**
46-
* @param $segmentName
47-
* @param $segmentKeys
48-
* @return mixed
49-
*/
50-
public function addToSegment($segmentName, array $segmentKeys)
51-
{
52-
$cache = Di::getCache();
53-
$return = array();
54-
55-
$segmentDataKey = self::getCacheKeyForSegmentData($segmentName);
56-
57-
foreach ($segmentKeys as $key) {
58-
$return[$key] = $cache->saveItemOnList($segmentDataKey, $key);
59-
}
60-
61-
return $return;
62-
}
63-
64-
/**
65-
* @param $segmentName
66-
* @param array $segmentKeys
67-
* @return mixed
68-
*/
69-
public function removeFromSegment($segmentName, array $segmentKeys)
70-
{
71-
$cache = Di::getCache();
72-
$return = array();
73-
74-
$segmentDataKey = self::getCacheKeyForSegmentData($segmentName);
75-
76-
foreach ($segmentKeys as $key) {
77-
$return[$key] = $cache->removeItemOnList($segmentDataKey, $key);
78-
}
79-
80-
return $return;
81-
}
82-
8322
/**
8423
* @param $segmentName
8524
* @param $key
@@ -91,21 +30,6 @@ public function isInSegment($segmentName, $key)
9130
return Di::getCache()->isItemOnList($segmentDataKey, $key);
9231
}
9332

94-
/**
95-
* @param $segmentName
96-
* @param $changeNumber
97-
* @return mixed
98-
*/
99-
public function setChangeNumber($segmentName, $changeNumber)
100-
{
101-
$sinceKey = self::getCacheKeyForSinceParameter($segmentName);
102-
$since_cached_item = Di::getCache()->getItem($sinceKey);
103-
Di::getLogger()->info(">>> SINCE CACHE KEY: $sinceKey");
104-
$since_cached_item->set($changeNumber);
105-
106-
return Di::getCache()->save($since_cached_item);
107-
}
108-
10933
/**
11034
* @param $segmentName
11135
* @return mixed

src/SplitIO/Component/Cache/SegmentCacheInterface.php

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,13 @@
33

44
interface SegmentCacheInterface
55
{
6-
/**
7-
* @param $segmentName
8-
* @param $segmentKeys
9-
* @return mixed
10-
*/
11-
public function addToSegment($segmentName, array $segmentKeys);
12-
13-
/**
14-
* @param $segmentName
15-
* @param array $segmentKeys
16-
* @return mixed
17-
*/
18-
public function removeFromSegment($segmentName, array $segmentKeys);
19-
206
/**
217
* @param $segmentName
228
* @param $key
239
* @return mixed
2410
*/
2511
public function isInSegment($segmentName, $key);
2612

27-
/**
28-
* @param $segmentName
29-
* @param $changeNumber
30-
* @return mixed
31-
*/
32-
public function setChangeNumber($segmentName, $changeNumber);
33-
3413
/**
3514
* @param $segmentName
3615
* @return mixed

tests/Suite/Attributes/SdkAttributesTest.php

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,6 @@
1111

1212
class SdkAttributesTest extends \PHPUnit\Framework\TestCase
1313
{
14-
private function addSegmentsInCache()
15-
{
16-
$segmentCache = new SegmentCache();
17-
18-
//Addinng Employees Segment.
19-
$segmentEmployeesChanges = file_get_contents(__DIR__."/files/segmentEmployeesChanges.json");
20-
$this->assertJson($segmentEmployeesChanges);
21-
$segmentData = json_decode($segmentEmployeesChanges, true);
22-
$this->assertArrayHasKey('employee_1', $segmentCache->addToSegment($segmentData['name'], $segmentData['added']));
23-
24-
//Adding Human Beigns Segment.
25-
$segmentHumanBeignsChanges = file_get_contents(__DIR__."/files/segmentHumanBeignsChanges.json");
26-
$this->assertJson($segmentHumanBeignsChanges);
27-
$segmentData = json_decode($segmentHumanBeignsChanges, true);
28-
$this->assertArrayHasKey('user1', $segmentCache->addToSegment($segmentData['name'], $segmentData['added']));
29-
}
30-
3114
public function testClient()
3215
{
3316
Di::set(Di::KEY_FACTORY_TRACKER, false);
@@ -49,7 +32,8 @@ public function testClient()
4932

5033
//Populating the cache.
5134
Utils\Utils::addSplitsInCache(file_get_contents(__DIR__."/files/splitChanges.json"));
52-
$this->addSegmentsInCache();
35+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentEmployeesChanges.json"));
36+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentHumanBeignsChanges.json"));
5337

5438
//Assertions
5539
$this->inOperator($splitSdk);

tests/Suite/Component/KeysStaticMethodsTest.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,6 @@ public function testSplitGetSplitNameFromCacheKey()
4545
$this->assertEquals($splitName, 'abc');
4646
}
4747

48-
public function testSegmentGetCacheKeyForRegisterSegments()
49-
{
50-
$method = self::getStaticMethodAsPublic('SplitIO\Component\Cache\SegmentCache', 'getCacheKeyForRegisterSegments');
51-
$key = $method->invoke(null);
52-
$this->assertEquals($key, 'SPLITIO.segments.registered');
53-
}
54-
5548
public function testSegmentGetCacheKeyForSegmentData()
5649
{
5750
$method = self::getStaticMethodAsPublic('SplitIO\Component\Cache\SegmentCache', 'getCacheKeyForSegmentData');

tests/Suite/Matchers/MatchersTest.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
use SplitIO\Component\Common\Di;
1111
use \ReflectionMethod;
1212

13+
use SplitIO\Test\Utils;
14+
1315
class MatcherTest extends \PHPUnit\Framework\TestCase
1416
{
1517
private function setupSplitApp()
@@ -36,9 +38,14 @@ private function setupSplitApp()
3638

3739
private function populateSegmentCache()
3840
{
39-
SegmentCache::registerSegment('segmentA');
40-
$segmentCache = new SegmentCache();
41-
$segmentCache->addToSegment('segmentA', array('id1', 'id2', 'id3'));
41+
$segmentKey = "SPLITIO.segment.";
42+
43+
$predis = new \Predis\Client([
44+
'host' => REDIS_HOST,
45+
'port' => REDIS_PORT,
46+
], ['prefix' => TEST_PREFIX]);
47+
48+
$predis->sadd($segmentKey . 'segmentA', array('id1', 'id2', 'id3'));
4249
}
4350

4451
public function testSartsWithMatcher()
@@ -493,4 +500,9 @@ public function testBooleanMatcher()
493500
$matcher2 = new Matcher\EqualToBoolean(false);
494501
$this->assertEquals($meth->invoke($matcher2, 'ff'), false);
495502
}
503+
504+
public static function tearDownAfterClass(): void
505+
{
506+
Utils\Utils::cleanCache();
507+
}
496508
}

tests/Suite/Sdk/SdkClientTest.php

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,6 @@
1818

1919
class SdkClientTest extends \PHPUnit\Framework\TestCase
2020
{
21-
private function addSegmentsInCache()
22-
{
23-
$segmentCache = new SegmentCache();
24-
25-
//Addinng Employees Segment.
26-
$segmentEmployeesChanges = file_get_contents(__DIR__ . "/files/segmentEmployeesChanges.json");
27-
$this->assertJson($segmentEmployeesChanges);
28-
$segmentData = json_decode($segmentEmployeesChanges, true);
29-
$this->assertArrayHasKey('employee_1', $segmentCache->addToSegment(
30-
$segmentData['name'],
31-
$segmentData['added']
32-
));
33-
34-
//Adding Human Beigns Segment.
35-
$segmentHumanBeignsChanges = file_get_contents(__DIR__."/files/segmentHumanBeignsChanges.json");
36-
$this->assertJson($segmentHumanBeignsChanges);
37-
$segmentData = json_decode($segmentHumanBeignsChanges, true);
38-
$this->assertArrayHasKey('user1', $segmentCache->addToSegment($segmentData['name'], $segmentData['added']));
39-
}
40-
4121
public function testLocalClient()
4222
{
4323
Di::set(Di::KEY_FACTORY_TRACKER, false);
@@ -238,7 +218,8 @@ public function testClient()
238218

239219
//Populating the cache.
240220
Utils\Utils::addSplitsInCache(file_get_contents(__DIR__."/files/splitChanges.json"));
241-
$this->addSegmentsInCache();
221+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentEmployeesChanges.json"));
222+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentHumanBeignsChanges.json"));
242223

243224
$redisClient = ReflectiveTools::clientFromCachePool(Di::getCache());
244225

@@ -462,7 +443,8 @@ public function testCustomLog()
462443

463444
//Populating the cache.
464445
Utils\Utils::addSplitsInCache(file_get_contents(__DIR__."/files/splitChanges.json"));
465-
$this->addSegmentsInCache();
446+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentEmployeesChanges.json"));
447+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentHumanBeignsChanges.json"));
466448

467449
//Assertions
468450
$this->assertEquals('on', $splitSdk->getTreatment('user1', 'sample_feature'));
@@ -548,7 +530,8 @@ public function testGetTreatmentsWithDistinctFeatures()
548530

549531
//Populating the cache.
550532
Utils\Utils::addSplitsInCache(file_get_contents(__DIR__."/files/splitChanges.json"));
551-
$this->addSegmentsInCache();
533+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentEmployeesChanges.json"));
534+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentHumanBeignsChanges.json"));
552535

553536
$treatmentResult = $splitSdk->getTreatments('user1', array('sample_feature', 'invalid_feature'), null);
554537

@@ -585,7 +568,8 @@ public function testGetTreatmentsWithRepeteadedFeatures()
585568

586569
//Populating the cache.
587570
Utils\Utils::addSplitsInCache(file_get_contents(__DIR__."/files/splitChanges.json"));
588-
$this->addSegmentsInCache();
571+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentEmployeesChanges.json"));
572+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentHumanBeignsChanges.json"));
589573

590574
$treatmentResult = $splitSdk->getTreatments('user1', array('sample_feature', 'invalid_feature',
591575
'sample_feature', 'sample_feature'), null);
@@ -623,7 +607,8 @@ public function testGetTreatmentsWithRepeteadedAndNullFeatures()
623607

624608
//Populating the cache.
625609
Utils\Utils::addSplitsInCache(file_get_contents(__DIR__."/files/splitChanges.json"));
626-
$this->addSegmentsInCache();
610+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentEmployeesChanges.json"));
611+
Utils\Utils::addSegmentsInCache(file_get_contents(__DIR__."/files/segmentHumanBeignsChanges.json"));
627612

628613
$treatmentResult = $splitSdk->getTreatments('user1', array('sample_feature', null, 'invalid_feature',
629614
'sample_feature', null, 'sample_feature'), null);

tests/Utils/Utils.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ public static function addSplitsInCache($splitChanges)
1515
if (is_null($splitChanges)) {
1616
return false;
1717
}
18-
1918

2019
$splitChanges = json_decode($splitChanges, true);
2120
$splits = $splitChanges['splits'];
@@ -27,6 +26,25 @@ public static function addSplitsInCache($splitChanges)
2726
return true;
2827
}
2928

29+
public static function addSegmentsInCache($segmentChanges)
30+
{
31+
$segmentKey = "SPLITIO.segment.";
32+
33+
$predis = new \Predis\Client([
34+
'host' => REDIS_HOST,
35+
'port' => REDIS_PORT,
36+
], ['prefix' => TEST_PREFIX]);
37+
38+
if (is_null($segmentChanges)) {
39+
return false;
40+
}
41+
42+
$segmentData = json_decode($segmentChanges, true);
43+
$predis->sadd($segmentKey . $segmentData['name'], $segmentData['added']);
44+
45+
return true;
46+
}
47+
3048
public static function cleanCache()
3149
{
3250
$predis = new \Predis\Client([

0 commit comments

Comments
 (0)