Skip to content

Commit 84dfbd2

Browse files
Merge pull request #698 from splitio/FME-4396-Pausing-GeneralInfo
[FME-4396] - Pausing - General info
2 parents 77352e5 + 454c86f commit 84dfbd2

File tree

7 files changed

+52
-1
lines changed

7 files changed

+52
-1
lines changed

Split/Storage/GeneralInfo/GeneralInfoDao.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ enum GeneralInfo: String {
1818
case rolloutCacheLastClearTimestamp = "rolloutCacheLastClearTimestamp"
1919
case ruleBasedSegmentsChangeNumber = "ruleBasedSegmentsChangeNumber"
2020
case lastProxyUpdateTimestamp = "lastProxyCheckTimestamp"
21+
case segmentsInUse = "segmentsInUse"
2122
}
2223

2324
protocol GeneralInfoDao {

Split/Storage/GeneralInfo/GeneralInfoStorage.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ protocol GeneralInfoStorage {
1717
// Proxy handling methods
1818
func getLastProxyUpdateTimestamp() -> Int64
1919
func setLastProxyUpdateTimestamp(_ timestamp: Int64)
20+
21+
// Segments in use (for /memberships optimization)
22+
func getSegmentsInUse() -> Int64
23+
func setSegmentsInUse(_ count: Int64)
2024
}
2125

2226
class DefaultGeneralInfoStorage: GeneralInfoStorage {
@@ -78,4 +82,12 @@ class DefaultGeneralInfoStorage: GeneralInfoStorage {
7882
func setLastProxyUpdateTimestamp(_ timestamp: Int64) {
7983
generalInfoDao.update(info: .lastProxyUpdateTimestamp, longValue: timestamp)
8084
}
85+
86+
func getSegmentsInUse() -> Int64 {
87+
return generalInfoDao.longValue(info: .segmentsInUse) ?? 0
88+
}
89+
90+
func setSegmentsInUse(_ count: Int64) {
91+
generalInfoDao.update(info: .segmentsInUse, longValue: count)
92+
}
8193
}

Split/Storage/Splits/PersistentSplitsStorage.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ protocol PersistentSplitsStorage {
1212
func update(splitChange: ProcessedSplitChange)
1313
func update(split: Split)
1414
func update(bySetsFilter: SplitFilter?)
15+
func update(segmentsInUse: Int64)
1516
func getBySetsFilter() -> SplitFilter?
1617
func getSplitsSnapshot() -> SplitsSnapshot
1718
func getChangeNumber() -> Int64
1819
func getUpdateTimestamp() -> Int64
20+
func getSegmentsInUse() -> Int64
1921
func getAll() -> [Split]
2022
func delete(splitNames: [String])
2123
func clear()
@@ -49,6 +51,10 @@ class DefaultPersistentSplitsStorage: PersistentSplitsStorage {
4951
func update(flagsSpec: String) {
5052
generalInfoDao.update(info: .flagsSpec, stringValue: flagsSpec)
5153
}
54+
55+
func update(segmentsInUse: Int64) {
56+
generalInfoDao.update(info: .segmentsInUse, longValue: segmentsInUse)
57+
}
5258

5359
func getFilterQueryString() -> String {
5460
return generalInfoDao.stringValue(info: .splitsFilterQueryString) ?? ""
@@ -57,6 +63,10 @@ class DefaultPersistentSplitsStorage: PersistentSplitsStorage {
5763
func getFlagsSpec() -> String {
5864
return generalInfoDao.stringValue(info: .flagsSpec) ?? ""
5965
}
66+
67+
func getSegmentsInUse() -> Int64 {
68+
generalInfoDao.longValue(info: .segmentsInUse) ?? 0
69+
}
6070

6171
func update(bySetsFilter filter: SplitFilter?) {
6272
guard let filter = filter else {

Split/Storage/split_cache.xcdatamodeld/split_cache_v6.xcdatamodel/contents

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23605" systemVersion="23G93" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
2+
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23788.4" systemVersion="24F74" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
33
<entity name="Attribute" representedClassName="AttributeEntity" syncable="YES">
44
<attribute name="attributes" attributeType="String"/>
55
<attribute name="updatedAt" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>

SplitTests/Fake/Storage/GeneralInfoStorageMock.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import Foundation
22
@testable import Split
33

44
class GeneralInfoStorageMock: GeneralInfoStorage {
5+
56
let queue = DispatchQueue(label: "test", target: .global())
67
var updateTimestamp: Int64 = 0
78
var rolloutCacheLastClearTimestamp: Int64 = 0
89
var splitsFilterQueryString: String = ""
910
var flagsSpec = ""
1011
var ruleBasedSegmentsChangeNumber: Int64 = -1
1112
var lastProxyUpdateTimestamp: Int64 = 0
13+
var segmentsInUse: Int64 = 0
1214

1315
func getUpdateTimestamp() -> Int64 {
1416
return updateTimestamp
@@ -57,4 +59,12 @@ class GeneralInfoStorageMock: GeneralInfoStorage {
5759
func setLastProxyUpdateTimestamp(_ timestamp: Int64) {
5860
lastProxyUpdateTimestamp = timestamp
5961
}
62+
63+
func getSegmentsInUse() -> Int64 {
64+
segmentsInUse
65+
}
66+
67+
func setSegmentsInUse(_ count: Int64) {
68+
segmentsInUse = count
69+
}
6070
}

SplitTests/Fake/Storage/PersistentSplitsStorageStub.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,13 @@ class PersistentSplitsStorageStub: PersistentSplitsStorage {
8686
getBySetsFilterCalled = false
8787
return nil
8888
}
89+
90+
var segmentsInUse: Int64 = 0
91+
func update(segmentsInUse: Int64) {
92+
self.segmentsInUse = segmentsInUse
93+
}
94+
95+
func getSegmentsInUse() -> Int64 {
96+
segmentsInUse
97+
}
8998
}

SplitTests/Storage/GeneralInfoDaoTests.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ class GeneralInfoDaoTest: XCTestCase {
5454
XCTAssertEqual(1, v1)
5555
XCTAssertEqual(2, v2)
5656
}
57+
58+
func testCreateUpdateSegmentsInUse() {
59+
let data: Int64 = 13
60+
61+
generalInfoDao.update(info: .segmentsInUse, longValue: data)
62+
let segmentsInUse = generalInfoDao.longValue(info: .segmentsInUse)
63+
64+
XCTAssertEqual(data, segmentsInUse)
65+
}
5766

5867
override func tearDown() {
5968
}

0 commit comments

Comments
 (0)