Skip to content

Commit 265ea3c

Browse files
Merge branch 'farhan-anjum/FSSDK-11175-add-decision-service-methods-for-cmab' into farhan-anjum/FSSDK-11184-update-impression-event-for-cmab
2 parents c14b768 + 72955a0 commit 265ea3c

File tree

5 files changed

+19
-8
lines changed

5 files changed

+19
-8
lines changed

optimizely/bucketer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def bucket(
124124
variation = project_config.get_variation_from_id_by_experiment_id(experiment.id, variation_id)
125125
return variation, decide_reasons
126126

127-
elif not decide_reasons:
127+
else:
128128
message = 'Bucketed into an empty traffic range. Returning nil.'
129129
project_config.logger.info(message)
130130
decide_reasons.append(message)

optimizely/decision/optimizely_decision.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,5 +66,5 @@ def new_error_decision(cls, key: str, user: OptimizelyUserContext, reasons: list
6666
rule_key=None,
6767
flag_key=key,
6868
user_context=user,
69-
reasons=[reasons[-1]] if reasons else []
69+
reasons=reasons if reasons else []
7070
)

optimizely/decision_service.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,13 +184,16 @@ def _get_decision_for_cmab_experiment(
184184
"reasons": decide_reasons,
185185
}
186186
except Exception as e:
187-
error_message = Errors.CMAB_FETCH_FAILED_DETAILED.format(experiment.key)
187+
error_message = Errors.CMAB_FETCH_FAILED_DETAILED.format(
188+
experiment.key
189+
)
190+
decide_reasons.append(error_message)
188191
if self.logger:
189192
self.logger.error(f'{error_message} {str(e)}')
190193
return {
191194
"error": True,
192195
"result": None,
193-
"reasons": [error_message],
196+
"reasons": decide_reasons,
194197
}
195198

196199
def set_forced_variation(

tests/test_bucketing.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,12 @@ def test_bucket__experiment_in_group(self):
337337
variation
338338
)
339339
mock_config_logging.debug.assert_called_once_with('Assigned bucket 8400 to user with bucketing ID "test_user".')
340-
mock_config_logging.info.assert_called_once_with('User "test_user" is in no experiment.')
340+
mock_config_logging.info.assert_has_calls(
341+
[
342+
mock.call('User "test_user" is in no experiment.'),
343+
mock.call('Bucketed into an empty traffic range. Returning nil.')
344+
]
345+
)
341346

342347
# In group, no matching experiment
343348
with mock.patch(
@@ -378,8 +383,11 @@ def test_bucket__experiment_in_group(self):
378383
variation
379384
)
380385
mock_config_logging.debug.assert_called_once_with('Assigned bucket 42 to user with bucketing ID "test_user".')
381-
mock_config_logging.info.assert_called_once_with(
382-
'User "test_user" is not in experiment "group_exp_2" of group 19228.'
386+
mock_config_logging.info.assert_has_calls(
387+
[
388+
mock.call('User "test_user" is not in experiment "group_exp_2" of group 19228.'),
389+
mock.call('Bucketed into an empty traffic range. Returning nil.')
390+
]
383391
)
384392

385393
# In group no matching variation

tests/test_optimizely.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5794,7 +5794,7 @@ def test_decide_returns_error_decision_when_decision_service_fails(self):
57945794
):
57955795
# Call decide
57965796
decision = user_context.decide('test_feature_in_experiment')
5797-
print(decision.__dict__)
5797+
57985798
# Verify the decision contains the error information
57995799
self.assertFalse(decision.enabled)
58005800
self.assertIsNone(decision.variation_key)

0 commit comments

Comments
 (0)