Skip to content

Commit 639a07b

Browse files
authored
Merge pull request #27 from splitio/task/flagSetTest
Task/flag set test
2 parents f91c19d + fe969b3 commit 639a07b

File tree

4 files changed

+57
-33
lines changed

4 files changed

+57
-33
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727

2828
- name: Version validation
2929
if: ${{ github.event_name == 'pull_request' }}
30-
uses: mukunku/tag-exists-action@v1.2.0
30+
uses: mukunku/tag-exists-action@v1.5.0
3131
id: checkTag
3232
with:
3333
tag: v${{ env.VERSION }}
@@ -36,12 +36,12 @@ jobs:
3636

3737
- name: Fail workflow if tag exists
3838
if: ${{ github.event_name == 'pull_request' && steps.checkTag.outputs.exists == 'true' }}
39-
uses: actions/github-script@v6.4.0
39+
uses: actions/github-script@v7.0.1
4040
with:
4141
script: core.setFailed('[ERROR] Tag already exists.')
4242

4343
- name: Setup Go version
44-
uses: actions/setup-go@v4
44+
uses: actions/setup-go@v5
4545
with:
4646
go-version: '^1.20.7'
4747

.github/workflows/docker.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
runs-on: ubuntu-latest
1212
steps:
1313
- name: Login to Artifactory
14-
uses: docker/login-action@v2
14+
uses: docker/login-action@v3
1515
with:
1616
registry: splitio-docker.jfrog.io
1717
username: ${{ secrets.ARTIFACTORY_DOCKER_USER }}
@@ -24,7 +24,7 @@ jobs:
2424
run: echo "VERSION=$(cat splitio/version.go | grep 'Version =' | awk '{print $4}' | tr -d '"')" >> $GITHUB_ENV
2525

2626
- name: Docker build and push
27-
uses: docker/build-push-action@v4
27+
uses: docker/build-push-action@v5
2828
with:
2929
context: .
3030
file: "infra/sidecar.Dockerfile"

.github/workflows/unstable.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Login to Artifactory
13-
uses: docker/login-action@v2
13+
uses: docker/login-action@v3
1414
with:
1515
registry: splitio-docker-dev.jfrog.io
1616
username: ${{ secrets.ARTIFACTORY_DOCKER_USER }}
@@ -23,7 +23,7 @@ jobs:
2323
run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
2424

2525
- name: Docker Build and Push
26-
uses: docker/build-push-action@v4
26+
uses: docker/build-push-action@v5
2727
with:
2828
context: .
2929
file: "infra/sidecar.Dockerfile"

splitio/sdk/sdk_test.go

Lines changed: 50 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -218,27 +218,39 @@ func TestTreatmentsByFlagSet(t *testing.T) {
218218
}}).
219219
Once()
220220

221-
expectedImpressions := []dtos.Impression{
222-
{KeyName: "key1", BucketingKey: "", FeatureName: "f1", Treatment: "on", Label: "label1", ChangeNumber: 123},
223-
{KeyName: "key1", BucketingKey: "", FeatureName: "f2", Treatment: "on", Label: "label2", ChangeNumber: 124},
224-
{KeyName: "key1", BucketingKey: "", FeatureName: "f3", Treatment: "on", Label: "label3", ChangeNumber: 125},
221+
expectedImpressions := map[string]*dtos.Impression{
222+
"f1": {KeyName: "key1", BucketingKey: "", FeatureName: "f1", Treatment: "on", Label: "label1", ChangeNumber: 123},
223+
"f2": {KeyName: "key1", BucketingKey: "", FeatureName: "f2", Treatment: "on", Label: "label2", ChangeNumber: 124},
224+
"f3": {KeyName: "key1", BucketingKey: "", FeatureName: "f3", Treatment: "on", Label: "label3", ChangeNumber: 125},
225225
}
226226
im := &mocks.ImpressionManagerMock{}
227227
im.On("ProcessSingle", mock.Anything).
228228
Run(func(args mock.Arguments) {
229-
assertImpEq(t, &expectedImpressions[0], args.Get(0).(*dtos.Impression))
229+
imp, ok := args.Get(0).(*dtos.Impression)
230+
if !ok {
231+
t.Error("not an impression")
232+
}
233+
assertImpEq(t, expectedImpressions[imp.FeatureName], args.Get(0).(*dtos.Impression))
230234
}).
231235
Return(true).
232236
Once()
233237
im.On("ProcessSingle", mock.Anything).
234238
Run(func(args mock.Arguments) {
235-
assertImpEq(t, &expectedImpressions[1], args.Get(0).(*dtos.Impression))
239+
imp, ok := args.Get(0).(*dtos.Impression)
240+
if !ok {
241+
t.Error("not an impression")
242+
}
243+
assertImpEq(t, expectedImpressions[imp.FeatureName], args.Get(0).(*dtos.Impression))
236244
}).
237245
Return(true).
238246
Once()
239247
im.On("ProcessSingle", mock.Anything).
240248
Run(func(args mock.Arguments) {
241-
assertImpEq(t, &expectedImpressions[2], args.Get(0).(*dtos.Impression))
249+
imp, ok := args.Get(0).(*dtos.Impression)
250+
if !ok {
251+
t.Error("not an impression")
252+
}
253+
assertImpEq(t, expectedImpressions[imp.FeatureName], args.Get(0).(*dtos.Impression))
242254
}).
243255
Return(true).
244256
Once()
@@ -258,9 +270,9 @@ func TestTreatmentsByFlagSet(t *testing.T) {
258270
assert.Nil(t, res["f1"].Config)
259271
assert.Nil(t, res["f2"].Config)
260272
assert.Nil(t, res["f3"].Config)
261-
assertImpEq(t, &expectedImpressions[0], res["f1"].Impression)
262-
assertImpEq(t, &expectedImpressions[1], res["f2"].Impression)
263-
assertImpEq(t, &expectedImpressions[2], res["f3"].Impression)
273+
assertImpEq(t, expectedImpressions["f1"], res["f1"].Impression)
274+
assertImpEq(t, expectedImpressions["f2"], res["f2"].Impression)
275+
assertImpEq(t, expectedImpressions["f3"], res["f3"].Impression)
264276

265277
err = is.RangeAndClear(func(md types.ClientMetadata, st *storage.LockingQueue[dtos.Impression]) {
266278
assert.Equal(t, types.ClientMetadata{ID: "some", SdkVersion: "go-1.2.3"}, md)
@@ -271,9 +283,9 @@ func TestTreatmentsByFlagSet(t *testing.T) {
271283
assert.Nil(t, nil)
272284
assert.Equal(t, 3, n)
273285
assert.Equal(t, 3, len(imps))
274-
assertImpEq(t, &expectedImpressions[0], &imps[0])
275-
assertImpEq(t, &expectedImpressions[1], &imps[1])
276-
assertImpEq(t, &expectedImpressions[2], &imps[2])
286+
assertImpEq(t, expectedImpressions[imps[0].FeatureName], &imps[0])
287+
assertImpEq(t, expectedImpressions[imps[1].FeatureName], &imps[1])
288+
assertImpEq(t, expectedImpressions[imps[2].FeatureName], &imps[2])
277289
n, err = st.Pop(1, &imps)
278290
assert.Equal(t, 0, n)
279291
assert.ErrorIs(t, err, storage.ErrQueueEmpty)
@@ -295,27 +307,39 @@ func TestTreatmentsByFlagSets(t *testing.T) {
295307
}}).
296308
Once()
297309

298-
expectedImpressions := []dtos.Impression{
299-
{KeyName: "key1", BucketingKey: "", FeatureName: "f1", Treatment: "on", Label: "label1", ChangeNumber: 123},
300-
{KeyName: "key1", BucketingKey: "", FeatureName: "f2", Treatment: "on", Label: "label2", ChangeNumber: 124},
301-
{KeyName: "key1", BucketingKey: "", FeatureName: "f3", Treatment: "on", Label: "label3", ChangeNumber: 125},
310+
expectedImpressions := map[string]*dtos.Impression{
311+
"f1": {KeyName: "key1", BucketingKey: "", FeatureName: "f1", Treatment: "on", Label: "label1", ChangeNumber: 123},
312+
"f2": {KeyName: "key1", BucketingKey: "", FeatureName: "f2", Treatment: "on", Label: "label2", ChangeNumber: 124},
313+
"f3": {KeyName: "key1", BucketingKey: "", FeatureName: "f3", Treatment: "on", Label: "label3", ChangeNumber: 125},
302314
}
303315
im := &mocks.ImpressionManagerMock{}
304316
im.On("ProcessSingle", mock.Anything).
305317
Run(func(args mock.Arguments) {
306-
assertImpEq(t, &expectedImpressions[0], args.Get(0).(*dtos.Impression))
318+
imp, ok := args.Get(0).(*dtos.Impression)
319+
if !ok {
320+
t.Error("not an impression")
321+
}
322+
assertImpEq(t, expectedImpressions[imp.FeatureName], args.Get(0).(*dtos.Impression))
307323
}).
308324
Return(true).
309325
Once()
310326
im.On("ProcessSingle", mock.Anything).
311327
Run(func(args mock.Arguments) {
312-
assertImpEq(t, &expectedImpressions[1], args.Get(0).(*dtos.Impression))
328+
imp, ok := args.Get(0).(*dtos.Impression)
329+
if !ok {
330+
t.Error("not an impression")
331+
}
332+
assertImpEq(t, expectedImpressions[imp.FeatureName], args.Get(0).(*dtos.Impression))
313333
}).
314334
Return(true).
315335
Once()
316336
im.On("ProcessSingle", mock.Anything).
317337
Run(func(args mock.Arguments) {
318-
assertImpEq(t, &expectedImpressions[2], args.Get(0).(*dtos.Impression))
338+
imp, ok := args.Get(0).(*dtos.Impression)
339+
if !ok {
340+
t.Error("not an impression")
341+
}
342+
assertImpEq(t, expectedImpressions[imp.FeatureName], args.Get(0).(*dtos.Impression))
319343
}).
320344
Return(true).
321345
Once()
@@ -335,9 +359,9 @@ func TestTreatmentsByFlagSets(t *testing.T) {
335359
assert.Nil(t, res["f1"].Config)
336360
assert.Nil(t, res["f2"].Config)
337361
assert.Nil(t, res["f3"].Config)
338-
assertImpEq(t, &expectedImpressions[0], res["f1"].Impression)
339-
assertImpEq(t, &expectedImpressions[1], res["f2"].Impression)
340-
assertImpEq(t, &expectedImpressions[2], res["f3"].Impression)
362+
assertImpEq(t, expectedImpressions["f1"], res["f1"].Impression)
363+
assertImpEq(t, expectedImpressions["f2"], res["f2"].Impression)
364+
assertImpEq(t, expectedImpressions["f3"], res["f3"].Impression)
341365

342366
err = is.RangeAndClear(func(md types.ClientMetadata, st *storage.LockingQueue[dtos.Impression]) {
343367
assert.Equal(t, types.ClientMetadata{ID: "some", SdkVersion: "go-1.2.3"}, md)
@@ -348,9 +372,9 @@ func TestTreatmentsByFlagSets(t *testing.T) {
348372
assert.Nil(t, nil)
349373
assert.Equal(t, 3, n)
350374
assert.Equal(t, 3, len(imps))
351-
assertImpEq(t, &expectedImpressions[0], &imps[0])
352-
assertImpEq(t, &expectedImpressions[1], &imps[1])
353-
assertImpEq(t, &expectedImpressions[2], &imps[2])
375+
assertImpEq(t, expectedImpressions[imps[0].FeatureName], &imps[0])
376+
assertImpEq(t, expectedImpressions[imps[1].FeatureName], &imps[1])
377+
assertImpEq(t, expectedImpressions[imps[2].FeatureName], &imps[2])
354378
n, err = st.Pop(1, &imps)
355379
assert.Equal(t, 0, n)
356380
assert.ErrorIs(t, err, storage.ErrQueueEmpty)

0 commit comments

Comments
 (0)