Skip to content
This repository has been archived by the owner on May 30, 2024. It is now read-only.

prepare 5.7.0 release #257

Merged
merged 1,035 commits into from
Jan 29, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1035 commits
Select commit Hold shift + click to select a range
e6e37a5
revert change to flush payload queue behavior
eli-darkly May 23, 2020
ab43703
avoid test race condition
eli-darkly May 23, 2020
d264569
Merge branch 'eb/ch77594/coverage' into eb/ch77594/coverage-2-eval
eli-darkly May 23, 2020
a9b6c81
add test coverage reporting
eli-darkly May 23, 2020
38a4922
CI fix
eli-darkly May 23, 2020
4e3eee3
CI fix
eli-darkly May 23, 2020
051a9d5
Merge branch 'eb/ch77594/coverage-0' into eb/ch77594/coverage-1-events
eli-darkly May 23, 2020
4b85a3f
more event test improvements
eli-darkly May 23, 2020
b898d81
misc cleanup + test improvements
eli-darkly May 23, 2020
ca2e196
Merge branch 'eb/ch77594/coverage-1-events' into eb/ch77594/coverage-…
eli-darkly May 23, 2020
60046ef
misc cleanup + test improvements
eli-darkly May 23, 2020
0f898fa
make intVariation and doubleVariation non-nullable
eli-darkly May 23, 2020
3b0e95b
(5.0) don't use jar magic to find out our own version string
eli-darkly May 23, 2020
f6b7ff2
fix test
eli-darkly May 23, 2020
3fb019f
Merge branch 'eb/ch77594-ch77639/coverage-3-client' into eb/ch77640/v…
eli-darkly May 23, 2020
b3f313c
make intVariation and doubleVariation non-nullable
eli-darkly May 23, 2020
38dacc8
Merge branch 'eb/ch77639/int-double-non-null' into eb/ch77640/version…
eli-darkly May 23, 2020
472dfc7
better unit test coverage of LDClient and FeatureFlagsState
eli-darkly May 23, 2020
3ccd7cb
test coverage improvements + minor fixes
eli-darkly May 24, 2020
7c75b3a
better temp file handling in file data source tests
eli-darkly May 24, 2020
8da3e27
revert file data source implementation change for now
eli-darkly May 24, 2020
306797e
revert unnecessary change
eli-darkly May 24, 2020
e07643f
comment about file watching on Mac
eli-darkly May 24, 2020
1d57156
add slight delay to avoid timing-dependent test flakiness
eli-darkly May 26, 2020
3fad450
test fixes/comments
eli-darkly May 26, 2020
07bb8f5
(5.0) use simpler and more stable logger names
eli-darkly May 26, 2020
2d0628d
better instructions
eli-darkly May 27, 2020
427a87e
more convenient way to set EventSource logger name
eli-darkly May 27, 2020
a89504e
(5.0) add HTTP default headers method + some component refactoring
eli-darkly May 28, 2020
6ce1d8a
don't need to pass the whole config object to describeConfiguration()
eli-darkly May 28, 2020
5d54f0a
simplify test logic for HTTP headers
eli-darkly May 28, 2020
29cf2d7
Merge pull request #236 from launchdarkly/eb/ch77442/preprocessing
eli-darkly May 28, 2020
e336c92
Merge pull request #237 from launchdarkly/eb/ch77571/no-events
eli-darkly May 28, 2020
86050fb
Merge pull request #240 from launchdarkly/eb/ch77594/coverage-0
eli-darkly May 28, 2020
ec01e5b
Merge branch '5.x' into eb/ch76240/benchmarks-5.x
eli-darkly May 28, 2020
c36c6f3
Merge pull request #241 from launchdarkly/eb/ch77594/coverage-1-events
eli-darkly May 29, 2020
bd2162e
Merge pull request #242 from launchdarkly/eb/ch77594/coverage-2-eval
eli-darkly May 29, 2020
daf04c4
Merge pull request #243 from launchdarkly/eb/ch77639/int-double-non-null
eli-darkly May 29, 2020
2719973
Merge pull request #244 from launchdarkly/eb/ch77640/version-string
eli-darkly May 29, 2020
8b24c81
(5.0) final test coverage improvements, for now, with enforcement
eli-darkly May 29, 2020
55f14d1
re-simplify DataBuilder
eli-darkly May 29, 2020
3df7da4
increase timeouts
eli-darkly May 29, 2020
6fc2a7a
misc fixes
eli-darkly May 29, 2020
8b27de5
rm unnecessary override
eli-darkly May 29, 2020
262eb19
Merge branch '5.x' into eb/ch76240/benchmarks-5.x
eli-darkly May 29, 2020
43778a3
indents
eli-darkly May 29, 2020
128b8cc
Merge pull request #245 from launchdarkly/eb/ch77594/coverage-3-client
eli-darkly May 29, 2020
b959c6c
Merge pull request #238 from launchdarkly/eb/ch76240/benchmarks-4.x
eli-darkly May 29, 2020
279ccd5
Merge pull request #239 from launchdarkly/eb/ch76240/benchmarks-5.x
eli-darkly May 29, 2020
6ddb11b
Merge branch 'master' into 5.x
eli-darkly May 29, 2020
37fbfe5
Merge branch '5.x' into eb/ch76203/logger-names
eli-darkly May 29, 2020
fc3d40e
Merge branch '5.x' into eb/ch77594/coverage-4-misc
eli-darkly May 29, 2020
4df1c40
Merge branch 'eb/ch77594/coverage-4-misc' into eb/ch78049/http-headers
eli-darkly May 29, 2020
dbe962f
update benchmark code for API change
eli-darkly May 29, 2020
8b74838
Merge branch 'eb/ch78049/http-headers' into eb/ch77594/coverage-5-misc
eli-darkly May 29, 2020
4b00cde
Merge pull request #246 from launchdarkly/eb/ch77594/coverage-4-misc
eli-darkly May 29, 2020
73062ca
support loading file data from a classpath resource
eli-darkly May 30, 2020
f02f835
update metadata so Releaser knows about 4.x branch
eli-darkly May 30, 2020
9dfc1be
Merge branch '4.x' into 5.x
eli-darkly May 30, 2020
4a3a7fb
minor test fixes
eli-darkly May 30, 2020
0fbd4b0
make class final
eli-darkly May 30, 2020
91941fa
rm beta changelog items
eli-darkly May 30, 2020
851c53b
Merge branch 'eb/debugging'
eli-darkly May 30, 2020
4dd0822
test data source
eli-darkly Jun 1, 2020
907882d
more info about coverage in CONTRIBUTING.md
eli-darkly Jun 1, 2020
7165ca4
Merge pull request #248 from launchdarkly/eb/ch78049/http-headers
eli-darkly Jun 1, 2020
79d11bf
Merge branch 'master' into eb/ch76203/logger-names
eli-darkly Jun 2, 2020
234e905
Merge pull request #247 from launchdarkly/eb/ch76203/logger-names
eli-darkly Jun 2, 2020
75630d0
Merge branch 'master' into eb/ch77594/coverage-5-misc
eli-darkly Jun 2, 2020
1eabb73
Merge branch 'eb/ch77594/coverage-5-misc' into eb/ch76824/classpath-file
eli-darkly Jun 2, 2020
01df1f3
Merge pull request #249 from launchdarkly/eb/ch77594/coverage-5-misc
eli-darkly Jun 2, 2020
ff3d3d1
Merge pull request #250 from launchdarkly/eb/ch76824/classpath-file
eli-darkly Jun 2, 2020
d219b44
Merge branch 'master' into eb/ch78216/test-data
eli-darkly Jun 2, 2020
fa2b39c
misc fixes/tests
eli-darkly Jun 2, 2020
705d25b
use java-sdk-common 1.0.0
eli-darkly Jun 2, 2020
2a44530
use okhttp-eventsource 2.3.0
eli-darkly Jun 2, 2020
9d23a88
Merge branch 'master' of github.com:launchdarkly/java-server-sdk
eli-darkly Jun 2, 2020
ddd886a
use okhttp-eventsource 2.3.1 for thread fix
eli-darkly Jun 18, 2020
6374424
Merge pull request #252 from launchdarkly/eb/ch80009/eventsource-thread
eli-darkly Jun 19, 2020
6fb600d
fix flaky tests due to change in EventSource error reporting
eli-darkly Jun 19, 2020
e22d43f
Merge pull request #253 from launchdarkly/eb/ch80009/flaky-test
eli-darkly Jun 19, 2020
8642c8b
merge from public after release
LaunchDarklyCI Jun 19, 2020
8873f44
remove support for indirect put and indirect patch
eli-darkly Jun 23, 2020
9a034e2
Merge pull request #254 from launchdarkly/eb/ch80666/no-indirect-patch
eli-darkly Jun 23, 2020
0293f58
fix typo in javadoc example code
eli-darkly Jun 24, 2020
8a08fc7
Merge pull request #255 from launchdarkly/eb/ch80837/javadoc-typo
eli-darkly Jun 24, 2020
4ad9351
clean up polling logic, fix status updating after an outage, don't re…
eli-darkly Jun 25, 2020
f14119a
merge from public after release
LaunchDarklyCI Jun 25, 2020
d41ae6c
slightly change semantics of boolean setters, improve tests, misc cle…
eli-darkly Aug 4, 2020
378b8e8
avoid NPEs if LDUser was deserialized by Gson (#257)
eli-darkly Aug 4, 2020
4836ea3
fix release metadata
eli-darkly Aug 5, 2020
96e58e7
prepare 4.14.1 release (#200)
LaunchDarklyCI Aug 5, 2020
22149a9
Releasing version 4.14.1
LaunchDarklyCI Aug 5, 2020
2d0d5cd
merge from public after release
LaunchDarklyCI Aug 5, 2020
ef8a801
Merge branch '4.x'
eli-darkly Aug 5, 2020
8825a48
exclude Kotlin metadata from jar + fix misc Gradle problems
eli-darkly Aug 18, 2020
ae46e03
Merge pull request #258 from launchdarkly/eb/ch87032/kotlin-symbols
eli-darkly Aug 18, 2020
b7ce928
merge from public after release
LaunchDarklyCI Aug 19, 2020
b32abc3
update CI and Gradle to test with newer JDKs (#259)
eli-darkly Aug 24, 2020
eefc460
update okhttp to 3.14.9 (fixes incompatibility with OpenJDK 8.0.252)
eli-darkly Aug 31, 2020
87120a4
Merge pull request #260 from launchdarkly/eb/ch88298/okhttp-update-4.x
eli-darkly Sep 1, 2020
0403392
prepare 4.14.2 release (#205)
LaunchDarklyCI Sep 1, 2020
2daeb92
Releasing version 4.14.2
LaunchDarklyCI Sep 1, 2020
7c09c6a
merge from public after release
LaunchDarklyCI Sep 1, 2020
7a9772c
Merge branch '4.x'
eli-darkly Sep 1, 2020
f3f01ec
update okhttp to 4.8.1 (fixes incompatibility with OpenJDK 8.0.252)
eli-darkly Sep 1, 2020
7025ae7
Merge pull request #261 from launchdarkly/eb/ch88298/okhttp-update-5.x
eli-darkly Sep 1, 2020
d1e311e
merge from public after release
LaunchDarklyCI Sep 1, 2020
f5a8555
gitignore
eli-darkly Sep 1, 2020
52c36be
Merge branch 'master' of github.com:launchdarkly/java-server-sdk
gwhelanLD Sep 3, 2020
9fe8f5b
merge from public after release
LaunchDarklyCI Sep 3, 2020
ac9bdb1
Bump SnakeYAML from 1.19 to 1.26 to address CVE-2017-18640
ssrm Sep 3, 2020
d1e0637
Merge pull request #262 from launchdarkly/eb/ch88108/snakeyaml-update
eli-darkly Sep 3, 2020
4f8f980
prepare 4.14.3 release (#209)
LaunchDarklyCI Sep 3, 2020
a6777a8
Releasing version 4.14.3
LaunchDarklyCI Sep 3, 2020
89954b5
merge from public after release
LaunchDarklyCI Sep 3, 2020
a83942e
Merge branch '4.x'
eli-darkly Sep 3, 2020
326e8e1
Merge branch 'master' into eb/ch78216/test-data
eli-darkly Sep 4, 2020
b800f23
comments
eli-darkly Sep 4, 2020
7cb20cd
Merge pull request #251 from launchdarkly/eb/ch78216/test-data
eli-darkly Sep 4, 2020
06fdd3e
only log initialization message once in polling mode
eli-darkly Sep 4, 2020
03e2ad8
Merge pull request #263 from launchdarkly/eb/ch88859/polling-logging
eli-darkly Sep 4, 2020
a448abc
merge from public after release
LaunchDarklyCI Sep 4, 2020
078fe16
[ch89935] Correct some logging call format strings (#264)
gwhelanLD Sep 17, 2020
136eb1b
[ch90109] Remove outdated trackMetric comment from before service sup…
gwhelanLD Sep 18, 2020
889a1c6
Fix compatibility with Java 7.
gwhelanLD Sep 25, 2020
67dea95
Remove import that is no longer used.
gwhelanLD Sep 25, 2020
402b8fe
Merge pull request #266 from launchdarkly/gw/ch90182/fix-java-7-compat
eli-darkly Sep 28, 2020
ee5e212
add Java 7 build (#267)
eli-darkly Sep 28, 2020
cd60e6d
prepare 4.14.4 release (#214)
LaunchDarklyCI Sep 28, 2020
424c7d5
Releasing version 4.14.4
LaunchDarklyCI Sep 28, 2020
72ac981
merge from public after release
LaunchDarklyCI Sep 28, 2020
0113451
add and use getSocketFactory
hroederld Sep 28, 2020
346f655
alignment
hroederld Sep 28, 2020
305f555
add socketFactory to builder
hroederld Sep 28, 2020
7c2eea8
test socket factory builder
hroederld Sep 28, 2020
7f1d8c8
Merge branch '4.x'
eli-darkly Sep 28, 2020
8b51b95
preserve dummy CI config file when pushing to gh-pages (#271)
eli-darkly Sep 30, 2020
f6ae98e
fix concatenation when base URI has a context path (#270)
eli-darkly Oct 1, 2020
b33e5bf
fix shaded jar builds to exclude Jackson classes and not modify Jacks…
eli-darkly Oct 1, 2020
e4ba1cd
merge from public after release
LaunchDarklyCI Oct 1, 2020
18af928
add test httpClientCanUseCustomSocketFactory for DefaultFeatureRequestor
hroederld Oct 7, 2020
fa90fbf
add httpClientCanUseCustomSocketFactory() test for DefaultEventSender…
hroederld Oct 7, 2020
a0b7894
add httpClientCanUseCustomSocketFactory() test to StreamProcessorTest
hroederld Oct 7, 2020
9aeeaaa
merge in master and fix conflict
hroederld Oct 7, 2020
86a601e
pass URI to in customSocketFactory event test
hroederld Oct 9, 2020
ad21f51
[ch90672] Add socketFactory support to SDK
hroederld Oct 9, 2020
8919a07
make test less ambiguous
hroederld Oct 10, 2020
f1808d9
Merge pull request #272 from launchdarkly/hr/ch90672/socketfactory-te…
hroederld Oct 10, 2020
9b20c08
merge from public after release
LaunchDarklyCI Oct 10, 2020
d727737
copy rules to new FlagBuilder instances (#273)
bwoskow-ld Dec 1, 2020
51cb8cf
merge from public after release
LaunchDarklyCI Dec 2, 2020
ace4ad4
Bump guava version (#274)
bwoskow-ld Jan 6, 2021
f86c2c6
merge from public after release
LaunchDarklyCI Jan 15, 2021
88a2e8b
Removed the guides link
bwoskow-ld Feb 3, 2021
9f2ab7b
increment versions when loading file data, so FlagTracker will work (…
eli-darkly Feb 19, 2021
3ba8b90
merge from public after release
LaunchDarklyCI Feb 20, 2021
0d6e3c6
add ability to ignore duplicate keys in file data (#276)
eli-darkly Mar 9, 2021
148dcf1
merge from public after release
LaunchDarklyCI Mar 9, 2021
57e4dd2
add alias events (#278)
apache-hb Apr 5, 2021
89efd68
add validation of javadoc build to CI
eli-darkly Apr 8, 2021
385e79d
update commons-codec to 1.15 (#279)
eli-darkly Apr 8, 2021
aca7716
Merge branch 'master' of github.com:launchdarkly/java-server-sdk
eli-darkly Apr 8, 2021
d2b62d1
Merge pull request #280 from launchdarkly/eb/ch105283/check-javadoc
eli-darkly Apr 8, 2021
c53e39c
Add support for experiment rollouts
robertjneal Apr 8, 2021
378b7e3
add tests and use seed for allocating user to partition
robertjneal Apr 9, 2021
c84651c
test serialization and add check for isExperiment
robertjneal Apr 9, 2021
d0e30d2
Merge branch 'master' into rneal/ch101658/add-support-for-experiment-…
robertjneal Apr 14, 2021
b4190ad
fix PollingProcessorTest test race condition + other test issues (#282)
eli-darkly Apr 14, 2021
b26f704
Merge branch 'master' into rneal/ch101658/add-support-for-experiment-…
eli-darkly Apr 14, 2021
fbd6d16
use launchdarkly-java-sdk-common 1.1.0-alpha-expalloc.2
eli-darkly Apr 14, 2021
777b3f3
Update src/test/java/com/launchdarkly/sdk/server/EvaluatorTest.java
robertjneal Apr 14, 2021
99fba91
Update src/test/java/com/launchdarkly/sdk/server/EvaluatorTest.java
robertjneal Apr 14, 2021
2809609
Update src/test/java/com/launchdarkly/sdk/server/EvaluatorTest.java
robertjneal Apr 14, 2021
61ab96d
Update src/test/java/com/launchdarkly/sdk/server/EvaluatorTest.java
robertjneal Apr 14, 2021
d2b53a3
changes per code review comments
robertjneal Apr 15, 2021
4b787a9
Merge branch 'rneal/ch101658/add-support-for-experiment-rollouts' of …
robertjneal Apr 15, 2021
47b9ebb
Please enter the commit message for your changes. Lines starting
robertjneal Apr 15, 2021
3903d54
fix null pointer exception
robertjneal Apr 16, 2021
112f052
address code review comments
robertjneal Apr 19, 2021
4765c66
address more comments
robertjneal Apr 19, 2021
12ee439
missed a ! for isUntracked()
robertjneal Apr 19, 2021
9ed9b2c
fix default boolean for json
robertjneal Apr 19, 2021
d651d26
make untracked FALSE by default
robertjneal Apr 19, 2021
176d7ce
refactoring of bucketing logic to remove the need for an extra result…
eli-darkly Apr 20, 2021
de65f7b
add comment to enum
robertjneal Apr 20, 2021
20e2916
Merge branch 'rneal/ch101658/add-support-for-experiment-rollouts' of …
robertjneal Apr 20, 2021
c05a64a
Merge pull request #281 from launchdarkly/rneal/ch101658/add-support-…
robertjneal Apr 20, 2021
d8c06ec
various JSON fixes, update common-sdk (#284)
eli-darkly Apr 22, 2021
cd8461e
merge from public after release
LaunchDarklyCI Apr 22, 2021
0991ed8
Merge branch 'master' of github.com:launchdarkly/java-server-sdk
eli-darkly Apr 23, 2021
95440c7
simlpify the logic and make it match node/.Net sdks
robertjneal Jun 1, 2021
f695931
Merge branch 'master' into exp-alloc
robertjneal Jun 1, 2021
bf3c9c5
Update src/main/java/com/launchdarkly/sdk/server/EventFactory.java
robertjneal Jun 1, 2021
ee1268b
add the same comment as the Node SDK
robertjneal Jun 2, 2021
abb667c
Merge pull request #285 from launchdarkly/rneal/ch107295/simplify-log…
robertjneal Jun 3, 2021
58367e0
Remove outdated/meaningless doc comment. (#286)
gwhelanLD Jun 9, 2021
72c3096
protect against NPEs if flag/segment JSON contains a null value
eli-darkly Jun 10, 2021
44a25fb
Merge pull request #287 from launchdarkly/eb/ch111218/tolerate-nulls
eli-darkly Jun 10, 2021
040909c
merge from public after release
LaunchDarklyCI Jun 11, 2021
c944996
Merge branch 'exp-alloc'
eli-darkly Jun 17, 2021
c5ad21b
use java-sdk-common 1.2.0
eli-darkly Jun 17, 2021
01f642f
fix Jackson-related build issues (again) (#288)
eli-darkly Jun 18, 2021
75322c2
merge from public after release
LaunchDarklyCI Jun 18, 2021
2d6ac72
update to okhttp-eventsource patch for stream retry bug, improve test…
eli-darkly Jun 24, 2021
093a350
merge from public after release
LaunchDarklyCI Jun 25, 2021
4b847a5
add public builder for FeatureFlagsState (#290)
eli-darkly Jun 25, 2021
b66328d
clarify FileData doc comment to say you shouldn't use offline mode (#…
eli-darkly Jun 25, 2021
04b9db7
improve validation of SDK key so we won't throw an exception that con…
eli-darkly Jul 2, 2021
721f757
fix javadoc link in FileData comment (#294)
eli-darkly Jul 2, 2021
2e1b210
fix PollingProcessor 401 behavior and use new HTTP test helpers (#292)
eli-darkly Jul 2, 2021
5de97b5
Merge branch 'master' of github.com:launchdarkly/java-server-sdk
eli-darkly Jul 2, 2021
81dd734
merge from public after release
LaunchDarklyCI Jul 2, 2021
eac6da8
re-fix metadata to remove Jackson dependencies, also remove Class-Pat…
eli-darkly Jul 8, 2021
dd7f414
merge from public after release
LaunchDarklyCI Jul 8, 2021
8db8a2d
make FeatureFlagsState.Builder.build() public (#297)
eli-darkly Aug 9, 2021
767e3ac
merge from public after release
Aug 9, 2021
69aef50
clean up tests using java-test-helpers 1.1.0 (#296)
eli-darkly Aug 13, 2021
dda1025
use Releaser v2 config + newer CI images (#298)
eli-darkly Sep 21, 2021
d7358f0
[ch123129] Fix `PollingDataSourceBuilder` example. (#299)
gwhelanLD Sep 24, 2021
f93e43b
Updates docs URLs
ember-stevens Sep 24, 2021
bcbb31b
Merge pull request #300 from launchdarkly/emberstevens/sc-118589/url-…
ember-stevens Sep 27, 2021
ac2fef7
always use US locale when parsing HTTP dates
eli-darkly Oct 12, 2021
4210dc9
Merge pull request #301 from launchdarkly/eb/sc-126069/http-date-locale
eli-darkly Oct 12, 2021
b3b1612
merge from public after release
Oct 12, 2021
b2bd379
use Gson 2.8.9
eli-darkly Nov 30, 2021
239395f
Merge pull request #302 from launchdarkly/eb/sc-132830/gson-version
eli-darkly Nov 30, 2021
b953d6d
merge from public after release
Nov 30, 2021
f34f3a3
don't try to send more diagnostic events after an unrecoverable HTTP …
eli-darkly Dec 7, 2021
c5ca59f
Merge pull request #303 from launchdarkly/eb/sc-133492/diagnostic-401
eli-darkly Dec 8, 2021
f5f4deb
merge from public after release
Dec 8, 2021
5416ac4
Merge branch 'master' of github.com:launchdarkly/java-server-sdk
eli-darkly Dec 8, 2021
c638922
ensure module-info file isn't copied into our jars during build
eli-darkly Jan 7, 2022
c04ad66
Merge pull request #305 from launchdarkly/eb/sc-136330/no-module-file
eli-darkly Jan 7, 2022
56acdd7
merge from public after release
Jan 7, 2022
f07c0e6
use Gradle 7
eli-darkly Jan 8, 2022
6339515
update build for benchmarks
eli-darkly Jan 8, 2022
4119fbc
more Gradle 7 compatibility changes for benchmark job
eli-darkly Jan 8, 2022
3af3fd4
Merge pull request #306 from launchdarkly/eb/sc-122485/gradle7
eli-darkly Jan 10, 2022
5c68abd
test with Java 17 in CI (#307)
eli-darkly Jan 10, 2022
3b60cdb
do date comparisons as absolute times, regardless of time zone (#310)
eli-darkly Jan 25, 2022
401a6c7
fix suppression of nulls in JSON representations (#311)
eli-darkly Jan 28, 2022
a6c79c2
fix identify/track null user key check, also don't create index event…
eli-darkly Jan 28, 2022
aee2487
use latest java-sdk-common
eli-darkly Jan 28, 2022
8f9a5c7
fix setting of trackEvents/trackReason in allFlagsState data when the…
eli-darkly Jan 28, 2022
b428765
Merge pull request #312 from launchdarkly/eb/sc-139100/event-fixes
eli-darkly Jan 28, 2022
5a4fb07
Merge pull request #313 from launchdarkly/eb/sc-137727/all-flag-exper…
eli-darkly Jan 28, 2022
cde4cc4
merge from public after release
Jan 29, 2022
6ff46e7
implement contract tests (#314)
eli-darkly Jan 29, 2022
5673244
Merge Big Segments feature branch for 5.7.0 release (#316)
gwhelanLD Jan 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ jobs:
default: false
docker:
- image: <<parameters.docker-image>>
environment:
TEST_HARNESS_PARAMS: -junit /home/circleci/junit/contract-tests-junit.xml
steps:
- checkout
- run: cp gradle.properties.example gradle.properties
Expand All @@ -78,12 +80,18 @@ jobs:
./gradlew jacocoTestReport
mkdir -p coverage/
cp -r build/reports/jacoco/test/* ./coverage
- run: mkdir -p ~/junit/
- run:
name: Save test results
command: |
mkdir -p ~/junit/
find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/junit/ \;
command: find . -type f -regex ".*/build/test-results/.*xml" -exec cp {} ~/junit/ \;
when: always

- run: make build-contract-tests
- run:
command: make start-contract-test-service
background: true
- run: make run-contract-tests

- store_test_results:
path: ~/junit
- store_artifacts:
Expand Down
6 changes: 6 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ To build the SDK and run all unit tests:
./gradlew test
```

To run the SDK contract test suite in Linux (see [`contract-tests/README.md`](./contract-tests/README.md)):

```bash
make contract-tests
```

### Benchmarks

The project in the `benchmarks` subdirectory uses [JMH](https://openjdk.java.net/projects/code-tools/jmh/) to generate performance metrics for the SDK. This is run as a CI job, and can also be run manually by running `make` within `benchmarks` and then inspecting `build/reports/jmh`.
Expand Down
29 changes: 29 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@

build:
./gradlew jar

clean:
./gradlew clean

test:
./gradlew test

TEMP_TEST_OUTPUT=/tmp/sdk-test-service.log

build-contract-tests:
@cd contract-tests && ../gradlew installDist

start-contract-test-service:
@contract-tests/service/build/install/service/bin/service

start-contract-test-service-bg:
@echo "Test service output will be captured in $(TEMP_TEST_OUTPUT)"
@make start-contract-test-service >$(TEMP_TEST_OUTPUT) 2>&1 &

run-contract-tests:
@curl -s https://raw.githubusercontent.com/launchdarkly/sdk-test-harness/v1.0.0/downloader/run.sh \
| VERSION=v1 PARAMS="-url http://localhost:8000 -debug -stop-service-at-end $(TEST_HARNESS_PARAMS)" sh

contract-tests: build-contract-tests start-contract-test-service-bg run-contract-tests

.PHONY: build-contract-tests start-contract-test-service start-contract-test-service-bg run-contract-tests contract-tests
9 changes: 6 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ ext.versions = [
"gson": "2.8.9",
"guava": "30.1-jre",
"jackson": "2.11.2",
"launchdarklyJavaSdkCommon": "1.2.2",
"launchdarklyJavaSdkCommon": "1.3.0",
"okhttp": "4.8.1", // specify this for the SDK build instead of relying on the transitive dependency from okhttp-eventsource
"okhttpEventsource": "2.3.2",
"slf4j": "1.7.21",
Expand Down Expand Up @@ -108,7 +108,6 @@ ext.versions = [
// Jackson in "libraries.optional" because we need to generate OSGi optional import
// headers for it.
libraries.internal = [
"com.launchdarkly:launchdarkly-java-sdk-common:${versions.launchdarklyJavaSdkCommon}",
"commons-codec:commons-codec:${versions.commonsCodec}",
"com.google.code.gson:gson:${versions.gson}",
"com.google.guava:guava:${versions.guava}",
Expand All @@ -117,6 +116,10 @@ libraries.internal = [
"org.yaml:snakeyaml:${versions.snakeyaml}",
]

libraries.common = [
"com.launchdarkly:launchdarkly-java-sdk-common:${versions.launchdarklyJavaSdkCommon}",
]

// Add dependencies to "libraries.external" that are exposed in our public API, or that have
// global state that must be shared between the SDK and the caller. Putting dependencies
// here has the following effects:
Expand Down Expand Up @@ -176,7 +179,7 @@ configurations {

dependencies {
implementation libraries.internal
api libraries.external
api libraries.external, libraries.common
testImplementation libraries.test, libraries.internal, libraries.external
optional libraries.optional

Expand Down
7 changes: 7 additions & 0 deletions contract-tests/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# SDK contract test service

This directory contains an implementation of the cross-platform SDK testing protocol defined by https://github.com/launchdarkly/sdk-test-harness. See that project's `README` for details of this protocol, and the kinds of SDK capabilities that are relevant to the contract tests. This code should not need to be updated unless the SDK has added or removed such capabilities.

To run these tests locally, run `make contract-tests` from the SDK project root directory. This downloads the correct version of the test harness tool automatically.

Or, to test against an in-progress local version of the test harness, run `make start-contract-test-service` from the SDK project root directory; then, in the root directory of the `sdk-test-harness` project, build the test harness and run it from the command line.
1 change: 1 addition & 0 deletions contract-tests/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
gnsp.disableApplyOnlyOnRootProjectEnforcement=true
40 changes: 40 additions & 0 deletions contract-tests/service/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

plugins {
id "java"
id "application"
}

repositories {
mavenCentral()
maven { url "https://oss.sonatype.org/content/groups/public/" }
}

allprojects {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}

archivesBaseName = "java-sdk-test-service"

application {
mainClassName = "sdktest.TestService"
}

ext.versions = [
"gson": "2.7",
"logback": "1.1.3",
"okhttp": "4.5.0",
"testHelpers": "1.1.0"
]

configurations {
deps.extendsFrom(implementation)
}

dependencies {
implementation project(":sdk")
implementation "ch.qos.logback:logback-classic:${versions.logback}"
implementation "com.google.code.gson:gson:${versions.gson}"
implementation "com.squareup.okhttp3:okhttp:${versions.okhttp}"
implementation "com.launchdarkly:test-helpers:${versions.testHelpers}"
}
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package sdktest;

import com.launchdarkly.sdk.server.interfaces.BigSegmentStore;
import com.launchdarkly.sdk.server.interfaces.BigSegmentStoreFactory;
import com.launchdarkly.sdk.server.interfaces.BigSegmentStoreTypes.Membership;
import com.launchdarkly.sdk.server.interfaces.BigSegmentStoreTypes.StoreMetadata;
import com.launchdarkly.sdk.server.interfaces.ClientContext;

import java.io.IOException;

import sdktest.CallbackRepresentations.BigSegmentStoreGetMembershipParams;
import sdktest.CallbackRepresentations.BigSegmentStoreGetMembershipResponse;
import sdktest.CallbackRepresentations.BigSegmentStoreGetMetadataResponse;

public class BigSegmentStoreFixture implements BigSegmentStore, BigSegmentStoreFactory {
private final CallbackService service;

public BigSegmentStoreFixture(CallbackService service) {
this.service = service;
}

@Override
public void close() throws IOException {
service.close();
}

@Override
public Membership getMembership(String userHash) {
BigSegmentStoreGetMembershipParams params = new BigSegmentStoreGetMembershipParams();
params.userHash = userHash;
BigSegmentStoreGetMembershipResponse resp =
service.post("/getMembership", params, BigSegmentStoreGetMembershipResponse.class);
return new Membership() {
@Override
public Boolean checkMembership(String segmentRef) {
return resp.values == null ? null : resp.values.get(segmentRef);
}
};
}

@Override
public StoreMetadata getMetadata() {
BigSegmentStoreGetMetadataResponse resp =
service.post("/getMetadata", null, BigSegmentStoreGetMetadataResponse.class);
return new StoreMetadata(resp.lastUpToDate);
}

@Override
public BigSegmentStore createBigSegmentStore(ClientContext context) {
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package sdktest;

import java.util.Map;

public abstract class CallbackRepresentations {
public static class BigSegmentStoreGetMetadataResponse {
Long lastUpToDate;
}

public static class BigSegmentStoreGetMembershipParams {
String userHash;
}

public static class BigSegmentStoreGetMembershipResponse {
Map<String, Boolean> values;
}
}
57 changes: 57 additions & 0 deletions contract-tests/service/src/main/java/sdktest/CallbackService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package sdktest;

import java.net.URI;

import okhttp3.MediaType;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class CallbackService {
private final URI baseUri;

public CallbackService(URI baseUri) {
this.baseUri = baseUri;
}

public void close() {
try {
Request request = new Request.Builder().url(baseUri.toURL()).method("DELETE", null).build();
Response response = TestService.client.newCall(request).execute();
assertOk(response, "");
} catch (Exception e) {
throw new RuntimeException(e); // all errors are unexpected here
}
}

public <T> T post(String path, Object params, Class<T> responseClass) {
try {
String uri = baseUri.toString() + path;
RequestBody body = RequestBody.create(
TestService.gson.toJson(params == null ? "{}" : params),
MediaType.parse("application/json"));
Request request = new Request.Builder().url(uri).
method("POST", body).build();
Response response = TestService.client.newCall(request).execute();
assertOk(response, path);
if (responseClass == null) {
return null;
}
return TestService.gson.fromJson(response.body().string(), responseClass);
} catch (Exception e) {
throw new RuntimeException(e); // all errors are unexpected here
}
}

private void assertOk(Response response, String path) {
if (!response.isSuccessful()) {
String body = "";
if (response.body() != null) {
try {
body = ": " + response.body().string();
} catch (Exception e) {}
}
throw new RuntimeException("HTTP error " + response.code() + " from callback to " + baseUri + path + body);
}
}
}
Loading