Skip to content

Commit ecec3ac

Browse files
committed
split_view & rollout_cache_configuration
1 parent c195d67 commit ecec3ac

File tree

6 files changed

+63
-3
lines changed

6 files changed

+63
-3
lines changed

splitio_platform_interface/lib/split_configuration.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:splitio_platform_interface/split_certificate_pinning_configuration.dart';
22
import 'package:splitio_platform_interface/split_sync_config.dart';
3+
import 'package:splitio_platform_interface/split_rollout_cache_configuration.dart';
34

45
class SplitConfiguration {
56
final Map<String, dynamic> configurationMap = {};
@@ -74,6 +75,7 @@ class SplitConfiguration {
7475
SplitLogLevel? logLevel,
7576
int? readyTimeout = 10,
7677
CertificatePinningConfiguration? certificatePinningConfiguration,
78+
RolloutCacheConfiguration? rolloutCacheConfiguration,
7779
}) {
7880
if (featuresRefreshRate != null) {
7981
configurationMap['featuresRefreshRate'] = featuresRefreshRate;
@@ -186,6 +188,13 @@ class SplitConfiguration {
186188
'pins': certificatePinningConfiguration.pins
187189
};
188190
}
191+
192+
if (rolloutCacheConfiguration != null) {
193+
configurationMap['rolloutCacheConfiguration'] = {
194+
'expirationDays': rolloutCacheConfiguration.expirationDays,
195+
'clearOnInit': rolloutCacheConfiguration.clearOnInit
196+
};
197+
}
189198
}
190199
}
191200

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class RolloutCacheConfiguration {
2+
3+
late int _expirationDays;
4+
late bool _clearOnInit;
5+
6+
int get expirationDays => _expirationDays;
7+
bool get clearOnInit => _clearOnInit;
8+
9+
RolloutCacheConfiguration({int expirationDays = 10, bool clearOnInit = false}) {
10+
if (expirationDays < 1) {
11+
expirationDays = 10;
12+
}
13+
_expirationDays = expirationDays;
14+
_clearOnInit = clearOnInit;
15+
}
16+
}

splitio_platform_interface/lib/split_view.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ class SplitView {
99
Map<String, String> configs = {};
1010
String defaultTreatment;
1111
List<String> sets = [];
12+
bool impressionsDisabled = false;
1213

1314
SplitView(this.name, this.trafficType, this.killed, this.treatments,
1415
this.changeNumber, this.configs,
15-
[this.defaultTreatment = '', this.sets = const []]);
16+
[this.defaultTreatment = '', this.sets = const [], this.impressionsDisabled = false]);
1617

1718
static SplitView? fromEntry(Map<dynamic, dynamic>? entry) {
1819
if (entry == null || entry.isEmpty) {
@@ -32,6 +33,10 @@ class SplitView {
3233
entry['sets'] = [];
3334
}
3435

36+
if (entry['impressionsDisabled'] == null) {
37+
entry['impressionsDisabled'] = false;
38+
}
39+
3540
return SplitView(
3641
entry['name'],
3742
entry['trafficType'],
@@ -40,7 +45,8 @@ class SplitView {
4045
entry['changeNumber'],
4146
mappedConfig,
4247
entry['defaultTreatment'] ?? '',
43-
(entry['sets'] as List).map((el) => el as String).toList()
48+
(entry['sets'] as List).map((el) => el as String).toList(),
49+
entry['impressionsDisabled'] ?? false
4450
);
4551
}
4652

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import 'package:flutter_test/flutter_test.dart';
2+
import 'package:splitio_platform_interface/split_rollout_cache_configuration.dart';
3+
4+
void main() {
5+
test('negative expirationDays defaults to 10', () {
6+
var config = RolloutCacheConfiguration(expirationDays: -1);
7+
8+
expect(config.expirationDays, 10);
9+
});
10+
11+
test('zero expirationDays defaults to 10', () {
12+
var config = RolloutCacheConfiguration(expirationDays: 0);
13+
14+
expect(config.expirationDays, 10);
15+
});
16+
17+
test('default values', () {
18+
var config = RolloutCacheConfiguration();
19+
20+
expect(config.expirationDays, 10);
21+
expect(config.clearOnInit, false);
22+
});
23+
}

splitio_platform_interface/test/split_view_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ void main() {
2424
'trafficType': 'default',
2525
'defaultTreatment': 'on',
2626
'sets': ['set1', 'set2'],
27+
'impressionsDisabled': true,
2728
});
2829

2930
expect(splitView?.name, 'my_split');
@@ -34,5 +35,6 @@ void main() {
3435
expect(splitView?.trafficType, 'default');
3536
expect(splitView?.defaultTreatment, 'on');
3637
expect(splitView?.sets, ['set1', 'set2']);
38+
expect(splitView?.impressionsDisabled, true);
3739
});
3840
}

splitio_platform_interface/test/splitio_configuration_test.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:flutter_test/flutter_test.dart';
22
import 'package:splitio_platform_interface/split_certificate_pinning_configuration.dart';
33
import 'package:splitio_platform_interface/split_configuration.dart';
4+
import 'package:splitio_platform_interface/split_rollout_cache_configuration.dart';
45
import 'package:splitio_platform_interface/split_sync_config.dart';
56

67
void main() {
@@ -34,7 +35,8 @@ void main() {
3435
certificatePinningConfiguration: CertificatePinningConfiguration()
3536
.addPin('host1', 'pin1')
3637
.addPin('host2', 'pin3')
37-
.addPin('host1', 'pin2'));
38+
.addPin('host1', 'pin2'),
39+
rolloutCacheConfiguration: RolloutCacheConfiguration(expirationDays: 15, clearOnInit: true));
3840

3941
expect(config.configurationMap['eventFlushInterval'], 2000);
4042
expect(config.configurationMap['eventsPerPush'], 300);
@@ -71,6 +73,8 @@ void main() {
7173
'host1': ['pin1', 'pin2'],
7274
'host2': ['pin3']
7375
});
76+
expect(config.configurationMap['rolloutCacheConfiguration']['expirationDays'], 15);
77+
expect(config.configurationMap['rolloutCacheConfiguration']['clearOnInit'], true);
7478
});
7579

7680
test('no special values leaves map empty', () async {

0 commit comments

Comments
 (0)