Skip to content

Commit 05ed9f0

Browse files
cleanup: address review changes
1 parent 0ce7aa3 commit 05ed9f0

File tree

3 files changed

+13
-51
lines changed

3 files changed

+13
-51
lines changed

Sources/Data Model/HoldoutConfig.swift

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,6 @@ struct HoldoutConfig {
2828
private(set) var includedHoldouts: [String: [Holdout]] = [:]
2929
private(set) var excludedHoldouts: [String: [Holdout]] = [:]
3030

31-
var cacheWriteCount = 0 // for testing purpose only
32-
33-
var logger: OPTLogger = OPTLoggerFactory.getLogger()
34-
3531
init(allholdouts: [Holdout] = []) {
3632
self.allHoldouts = allholdouts
3733
updateHoldoutMapping()
@@ -55,10 +51,7 @@ struct HoldoutConfig {
5551
case (true, true):
5652
global.append(holdout)
5753

58-
case (false, false):
59-
logger.e(.holdoutToFlagMappingError)
60-
61-
case (false, true):
54+
case (false, _):
6255
holdout.includedFlags.forEach { flagId in
6356
if var existing = includedHoldouts[flagId] {
6457
existing.append(holdout)
@@ -95,6 +88,7 @@ struct HoldoutConfig {
9588
return holdouts
9689
}
9790

91+
// Prioritize global holdouts first
9892
var activeHoldouts: [Holdout] = []
9993

10094
let excluded = excludedHoldouts[id] ?? []
@@ -112,7 +106,6 @@ struct HoldoutConfig {
112106
activeHoldouts += includedHoldouts
113107

114108
flagHoldoutsMap[id] = activeHoldouts
115-
cacheWriteCount += 1
116109

117110
return flagHoldoutsMap[id] ?? []
118111
}

Sources/Utils/LogMessage.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ enum LogMessage {
6868
case failedToAssignValue
6969
case valueForKeyNotFound(_ key: String)
7070
case lowPeriodicDownloadInterval
71-
case holdoutToFlagMappingError
7271
}
7372

7473
extension LogMessage: CustomStringConvertible {
@@ -131,7 +130,6 @@ extension LogMessage: CustomStringConvertible {
131130
case .failedToAssignValue: message = "Value for path could not be assigned to provided type."
132131
case .valueForKeyNotFound(let key): message = "Value for JSON key (\(key)) not found."
133132
case .lowPeriodicDownloadInterval: message = "Polling intervals below 30 seconds are not recommended."
134-
case .holdoutToFlagMappingError: message = "A holdout cannot have include and exclude flags at the same time."
135133
}
136134

137135
return message

Tests/OptimizelyTests-DataModel/HoldoutConfigTests.swift

Lines changed: 11 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -135,50 +135,21 @@ class HoldoutConfigTests: XCTestCase {
135135
}
136136

137137
func testGetHoldoutForFlag_shouldUseCacheOnSecondCall() {
138-
var holdout: Holdout = try! OTUtils.model(from: HoldoutTests.sampleData)
139-
holdout.id = "1"
140-
holdout.excludedFlags = ["f1"]
138+
var ho1: Holdout = try! OTUtils.model(from: HoldoutTests.sampleData)
139+
ho1.id = "h1"
140+
ho1.includedFlags = ["f1"]
141141

142-
var config = HoldoutConfig(allholdouts: [holdout])
142+
var config = HoldoutConfig(allholdouts: [ho1])
143143

144-
_ = config.getHoldoutForFlag(id: "f1")
145-
let writeCountAfterFirst = config.cacheWriteCount
144+
// Initially no cache
145+
XCTAssertEqual(config.flagHoldoutsMap.count, 0)
146146

147-
_ = config.getHoldoutForFlag(id: "f1")
148-
let writeCountAfterSecond = config.cacheWriteCount
147+
let _ = config.getHoldoutForFlag(id: "f1")
148+
XCTAssertEqual(config.flagHoldoutsMap.count, 1)
149149

150-
XCTAssertEqual(writeCountAfterFirst, 1)
151-
XCTAssertEqual(writeCountAfterSecond, 1, "Second call should not increase cache write count")
150+
let cache_v = config.getHoldoutForFlag(id: "f1")
151+
XCTAssertEqual(config.flagHoldoutsMap.count, 1)
152+
XCTAssertEqual(cache_v, config.flagHoldoutsMap["f1"])
152153
}
153154

154-
func testHoldoutWithBothIncludedAndExcludedFlags_shouldLogError() {
155-
class ConfigMockLogger: OPTLogger {
156-
static var logLevel: OptimizelyLogLevel = .info
157-
var expectedLog: String = ""
158-
var logFound = false
159-
160-
required init() {}
161-
162-
func log(level: OptimizelyLogLevel, message: String) {
163-
if (message == expectedLog) {
164-
logFound = true
165-
}
166-
}
167-
}
168-
169-
var holdout: Holdout = try! OTUtils.model(from: HoldoutTests.sampleData)
170-
holdout.id = "invalid"
171-
holdout.includedFlags = ["f1"]
172-
holdout.excludedFlags = ["f2"]
173-
174-
let mockLogger = ConfigMockLogger()
175-
mockLogger.expectedLog = LogMessage.holdoutToFlagMappingError.description
176-
177-
var config = HoldoutConfig(allholdouts: [])
178-
config.logger = mockLogger
179-
180-
config.allHoldouts = [holdout]
181-
182-
XCTAssertTrue(mockLogger.logFound)
183-
}
184155
}

0 commit comments

Comments
 (0)