Skip to content

Commit debb46c

Browse files
[FSSDK-11451] Go Implementation: Add Experiment ID + Variation ID to Decision Notification Listener Payload (#406)
* [FSSDK-11451] Go Implementation: Add * Fix the lint and unit test * Fix lint issue * Fix the error on client go * Fix lint issue
1 parent 656583c commit debb46c

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

pkg/client/client.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ func (o *OptimizelyClient) decide(userContext *OptimizelyUserContext, key string
180180
decisionContext.Variable = entities.Variable{}
181181
var featureDecision decision.FeatureDecision
182182
var reasons decide.DecisionReasons
183+
var experimentID string
184+
var variationID string
183185

184186
// To avoid cyclo-complexity warning
185187
findRegularDecision := func() {
@@ -210,6 +212,8 @@ func (o *OptimizelyClient) decide(userContext *OptimizelyUserContext, key string
210212
if featureDecision.Variation != nil {
211213
variationKey = featureDecision.Variation.Key
212214
flagEnabled = featureDecision.Variation.FeatureEnabled
215+
experimentID = featureDecision.Experiment.ID
216+
variationID = featureDecision.Variation.ID
213217
}
214218

215219
if !allOptions.DisableDecisionEvent {
@@ -230,7 +234,7 @@ func (o *OptimizelyClient) decide(userContext *OptimizelyUserContext, key string
230234
ruleKey := featureDecision.Experiment.Key
231235

232236
if o.notificationCenter != nil {
233-
decisionNotification := decision.FlagNotification(key, variationKey, ruleKey, flagEnabled, eventSent, usrContext, variableMap, reasonsToReport)
237+
decisionNotification := decision.FlagNotification(key, variationKey, ruleKey, experimentID, variationID, flagEnabled, eventSent, usrContext, variableMap, reasonsToReport)
234238
o.logger.Debug(fmt.Sprintf(`Feature %q is enabled for user %q? %v`, key, usrContext.ID, flagEnabled))
235239
if e := o.notificationCenter.Send(notification.Decision, *decisionNotification); e != nil {
236240
o.logger.Warning("Problem with sending notification")

pkg/client/optimizely_user_context_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,8 @@ func (s *OptimizelyUserContextTestSuite) TestDecisionNotification() {
821821
enabled := true
822822
variablesExpected, err := s.OptimizelyClient.GetAllFeatureVariables(flagKey, entities.UserContext{ID: s.userID})
823823
s.Nil(err)
824+
experimentId := "10420810910"
825+
variationId := "10418551353"
824826

825827
ruleKey := "exp_no_audience"
826828
reasons := []string{}
@@ -839,6 +841,8 @@ func (s *OptimizelyUserContextTestSuite) TestDecisionNotification() {
839841
"ruleKey": ruleKey,
840842
"reasons": reasons,
841843
"decisionEventDispatched": true,
844+
"experimentId": experimentId,
845+
"variationId": variationId,
842846
}
843847
s.OptimizelyClient.DecisionService.OnDecision(callback)
844848
_ = user.Decide(flagKey, nil)

pkg/decision/flag_notification.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
)
2424

2525
// FlagNotification constructs default flag notification
26-
func FlagNotification(flagKey, variationKey, ruleKey string, enabled, decisionEventDispatched bool, userContext entities.UserContext, variables map[string]interface{}, reasons []string) *notification.DecisionNotification {
26+
func FlagNotification(flagKey, variationKey, ruleKey, experimentID, variationID string, enabled, decisionEventDispatched bool, userContext entities.UserContext, variables map[string]interface{}, reasons []string) *notification.DecisionNotification {
2727

2828
if flagKey == "" {
2929
return nil
@@ -37,6 +37,8 @@ func FlagNotification(flagKey, variationKey, ruleKey string, enabled, decisionEv
3737
"ruleKey": ruleKey,
3838
"reasons": reasons,
3939
"decisionEventDispatched": decisionEventDispatched,
40+
"experimentId": experimentID,
41+
"variationId": variationID,
4042
}
4143

4244
decisionNotification := &notification.DecisionNotification{

0 commit comments

Comments
 (0)