Skip to content

Commit 504b92f

Browse files
author
Mike Davis
authored
Bump to latest go-sdk master commit. (#60)
* Adds a few more debug logs * Updates to latest master to resolve some targeting issues * [Fix] Actually enable the impression track endpoint * Update make clean to clean mod cache
1 parent 928c71b commit 504b92f

File tree

9 files changed

+33
-34
lines changed

9 files changed

+33
-34
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ cover-html: cover
3838
$(GOCMD) tool cover -html=$(COVER_FILE)
3939

4040
clean: ## runs `go clean` and removes the bin/ dir
41-
$(GOCLEAN)
41+
GO111MODULE=$(GO111MODULE) $(GOCLEAN) --modcache
4242
rm -rf $(GOBIN)
4343

4444
generate-api: ## generates APIs from the swagger spec

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/go-chi/render v1.0.1
88
github.com/google/uuid v1.1.1
99
github.com/nsqio/nsq v1.2.0
10-
github.com/optimizely/go-sdk v1.0.0-beta3.0.20191018225745-33701145d1ba
10+
github.com/optimizely/go-sdk v1.0.0-beta5.0.20191031194604-0f774263df60
1111
github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6
1212
github.com/rs/zerolog v1.15.0
1313
github.com/segmentio/nsq-go v1.2.2

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN
9898
github.com/nsqio/nsq v1.2.0 h1:inbQG4LAl8PpMMZAUi0FhLvjQ+57wOfPzWczVFdng7Q=
9999
github.com/nsqio/nsq v1.2.0/go.mod h1:hrx5K/ukZ1mebJBTNpv6og98a7I5zR279qjYNPdgdL0=
100100
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
101-
github.com/optimizely/go-sdk v1.0.0-beta3.0.20191018225745-33701145d1ba h1:cHmaLjcsr8OvPoGFiRkgUdSvc7kLoBmov8b17BKAplU=
102-
github.com/optimizely/go-sdk v1.0.0-beta3.0.20191018225745-33701145d1ba/go.mod h1:bzmv9qgWRLndtLrghkyP+JRvuhqhNlq80nGdw9wvadc=
101+
github.com/optimizely/go-sdk v1.0.0-beta5.0.20191031194604-0f774263df60 h1:sberlPV1Wx4IJRAOZ5IAKYXl6TGW5JkGI7352ac51qA=
102+
github.com/optimizely/go-sdk v1.0.0-beta5.0.20191031194604-0f774263df60/go.mod h1:bzmv9qgWRLndtLrghkyP+JRvuhqhNlq80nGdw9wvadc=
103103
github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6 h1:lNCW6THrCKBiJBpz8kbVGjC7MgdCGKwuvBgc7LoD6sw=
104104
github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI=
105105
github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=

pkg/api/handlers/user.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ func (h *UserHandler) TrackEvent(w http.ResponseWriter, r *http.Request) {
5858

5959
err = optlyClient.TrackEventWithContext(eventKey, optlyContext, tags)
6060
if err != nil {
61-
middleware.GetLogger(r).Err(err).Str("eventKey", eventKey).Msg("error tracking event")
61+
middleware.GetLogger(r).Error().Err(err).Str("eventKey", eventKey).Msg("error tracking event")
6262
RenderError(err, http.StatusNotFound, w, r)
6363
return
6464
}
65-
65+
middleware.GetLogger(r).Debug().Str("eventKey", eventKey).Msg("tracking event")
6666
render.NoContent(w, r)
6767
}
6868

@@ -91,7 +91,10 @@ func (h *UserHandler) TrackFeature(w http.ResponseWriter, r *http.Request) {
9191

9292
// HACK - Triggers an impression event when applicable. This is not
9393
// ideal since we're making TWO decisions now. OASIS-5549
94-
if _, softErr := optlyClient.IsFeatureEnabled(featureKey, *optlyContext.UserContext); softErr != nil {
94+
enabled, softErr := optlyClient.IsFeatureEnabled(featureKey, *optlyContext.UserContext)
95+
middleware.GetLogger(r).Info().Str("featureKey", featureKey).Bool("enabled", enabled).Msg("Calling IsFeatureEnabled")
96+
97+
if softErr != nil {
9598
// Swallowing the error to allow the response to be made and not break downstream consumers.
9699
middleware.GetLogger(r).Error().Err(softErr).Str("featureKey", featureKey).Msg("Calling IsFeatureEnabled")
97100
}
@@ -117,9 +120,8 @@ func parseContext(r *http.Request) (*optimizely.OptlyClient, *optimizely.OptlyCo
117120
// renderFeature excapsulates extracting a Feature from the Optimizely SDK and rendering a feature response.
118121
func renderFeature(w http.ResponseWriter, r *http.Request, featureKey string, optlyClient *optimizely.OptlyClient, optlyContext *optimizely.OptlyContext) {
119122
enabled, variables, err := optlyClient.GetFeatureWithContext(featureKey, optlyContext)
120-
121123
if err != nil {
122-
middleware.GetLogger(r).Error().Str("featureKey", featureKey).Msg("Calling GetFeature")
124+
middleware.GetLogger(r).Error().Err(err).Str("featureKey", featureKey).Msg("Calling GetFeature")
123125
RenderError(err, http.StatusInternalServerError, w, r)
124126
return
125127
}
@@ -130,5 +132,6 @@ func renderFeature(w http.ResponseWriter, r *http.Request, featureKey string, op
130132
Variables: variables,
131133
}
132134

135+
middleware.GetLogger(r).Debug().Str("featureKey", featureKey).Msg("rendering feature")
133136
render.JSON(w, r, feature)
134137
}

pkg/api/handlers/user_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,11 @@ func (suite *UserTestSuite) TestTrackFeatureWithFeatureTest() {
162162
func (suite *UserTestSuite) TestGetFeaturesMissingFeature() {
163163
// Create a request to pass to our handler. We don't have any query parameters for now, so we'll
164164
// pass 'nil' as the third parameter.
165-
req := httptest.NewRequest("POST", "/features/feature-404", nil)
165+
req := httptest.NewRequest("POST", "/features/feature-missing", nil)
166166
rec := httptest.NewRecorder()
167167
suite.mux.ServeHTTP(rec, req)
168168

169-
suite.assertError(rec, "Feature with key feature-404 not found", http.StatusInternalServerError)
169+
suite.Equal(http.StatusOK, rec.Code) // TODO should this 404
170170
}
171171

172172
func (suite *UserTestSuite) TestTrackEventNoTags() {
@@ -232,7 +232,7 @@ func (suite *UserTestSuite) TestTrackEventError() {
232232
rec := httptest.NewRecorder()
233233
suite.mux.ServeHTTP(rec, req)
234234

235-
suite.assertError(rec, "Event with key missing-event not found", http.StatusNotFound)
235+
suite.Equal(http.StatusNoContent, rec.Code) // TODO Should this 404?
236236
}
237237

238238
func (suite *UserTestSuite) TestTrackEventEmptyKey() {

pkg/api/middleware/cached.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ func (ctx *CachedOptlyMiddleware) UserCtx(next http.Handler) http.Handler {
9191
for k, v := range values {
9292
// Assuming a single KV pair exists in the query parameters
9393
attributes[k] = v[0]
94+
GetLogger(r).Debug().Str("attrKey", k).Str("attrVal", v[0]).Msg("User attribute.")
9495
}
9596

9697
optlyContext := optimizely.NewContext(userID, attributes)

pkg/api/router.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ func NewRouter(opt *RouterOptions) *chi.Mux {
6363

6464
r.Route("/users/{userID}", func(r chi.Router) {
6565
r.Use(opt.middleware.ClientCtx, opt.middleware.UserCtx)
66-
66+
6767
r.Post("/events/{eventKey}", opt.userAPI.TrackEvent)
6868

6969
r.Get("/features/{featureKey}", opt.userAPI.GetFeature)
70-
r.Post("/features/{featureKey}", opt.userAPI.GetFeature)
70+
r.Post("/features/{featureKey}", opt.userAPI.TrackFeature)
7171
})
7272

7373
return r

pkg/api/router_test.go

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -139,22 +139,18 @@ func (suite *RouterTestSuite) TestGetFeature() {
139139
}
140140

141141
func (suite *RouterTestSuite) TestGetFeatures() {
142-
methods := []string{"GET", "POST"}
143-
144-
for _, m := range methods {
145-
req := httptest.NewRequest(m, "/users/me/features/one", nil)
146-
rec := httptest.NewRecorder()
147-
suite.mux.ServeHTTP(rec, req)
142+
req := httptest.NewRequest("GET", "/users/me/features/one", nil)
143+
rec := httptest.NewRecorder()
144+
suite.mux.ServeHTTP(rec, req)
148145

149-
suite.Equal("expected", rec.Header().Get(clientHeaderKey))
150-
suite.Equal("expected", rec.Header().Get(userHeaderKey))
146+
suite.Equal("expected", rec.Header().Get(clientHeaderKey))
147+
suite.Equal("expected", rec.Header().Get(userHeaderKey))
151148

152-
expected := map[string]string{
153-
"userID": "me",
154-
"featureKey": "one",
155-
}
156-
suite.assertValid(rec, expected)
149+
expected := map[string]string{
150+
"userID": "me",
151+
"featureKey": "one",
157152
}
153+
suite.assertValid(rec, expected)
158154
}
159155

160156
func (suite *RouterTestSuite) TestTrackEvent() {

pkg/optimizely/client_test.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
package optimizely
1919

2020
import (
21-
"fmt"
2221
"testing"
2322

2423
"github.com/optimizely/sidedoor/pkg/optimizelytest"
@@ -57,10 +56,11 @@ func (suite *ClientTestSuite) TestGetFeature() {
5756
}
5857

5958
func (suite *ClientTestSuite) TestGetNonExistentFeature() {
60-
_, _, err := suite.optlyClient.GetFeatureWithContext("DNE", suite.optlyContext)
61-
if !suite.Error(err) {
62-
suite.Equal(fmt.Errorf("Feature with key DNE not found"), err)
63-
}
59+
enabled, variationMap, err := suite.optlyClient.GetFeatureWithContext("DNE", suite.optlyContext)
60+
61+
suite.False(enabled)
62+
suite.Equal(0, len(variationMap))
63+
suite.NoError(err) // TODO should this error?
6464
}
6565

6666
func (suite *ClientTestSuite) TestGetBasicFeature() {
@@ -110,8 +110,7 @@ func (suite *ClientTestSuite) TestTrackEventWithContext() {
110110

111111
func (suite *ClientTestSuite) TestTrackEventWithContextError() {
112112
err := suite.optlyClient.TrackEventWithContext("missing-key", suite.optlyContext, map[string]interface{}{})
113-
suite.Error(err)
114-
suite.Equal("Event with key missing-key not found", err.Error())
113+
suite.NoError(err) // TODO Should this error?
115114
}
116115

117116
// In order for 'go test' to run this suite, we need to create

0 commit comments

Comments
 (0)