Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document how to get an HttpClient when singletons are eagerly initialised #716

Merged
merged 6 commits into from
Feb 16, 2023

Conversation

timyates
Copy link
Contributor

it was found in #715 that setting eagerInitSingletons to true makes it impossible to inject an HttpClient.

This is because MicronautTest is implicitly a Singleton, so gets initialised before the embedded server.

This PR documents this fact, and provides a workaround.

Closes #715

…ised

it was found in #715 that setting eagerInitSingletons to true makes it impossible to inject an HttpClient.

This is because MicronautTest is implicitly a Singleton, so gets initialised before the embedded server.

This PR documents this fact, and provides a workaround.

Closes #715
@timyates timyates self-assigned this Feb 14, 2023
Copy link
Contributor

@sdelamo sdelamo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a test and make the code in the docs come from the test.

src/main/docs/guide/introduction.adoc Outdated Show resolved Hide resolved
@alvarosanchez
Copy link
Member

What about the alternative of annotating the test with @Prototype? Or was that with regard to something else?

@timyates
Copy link
Contributor Author

We can do, but this would break using the test as a factory, ie: #107 (comment)

@timyates
Copy link
Contributor Author

@sdelamo should I still add the test with @PendingFeature as a flag that we can (maybe one day) remove this documentation?

@sonarcloud
Copy link

sonarcloud bot commented Feb 14, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

@timyates
Copy link
Contributor Author

Can you add a test and make the code in the docs come from the test.

Working on this 👍

@timyates timyates requested a review from sdelamo February 15, 2023 10:05
@timyates
Copy link
Contributor Author

Fails because you can't use @Requires on a @ContextConfigurer... fixing

@sonarcloud
Copy link

sonarcloud bot commented Feb 15, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
0.0% 0.0% Duplication

@sdelamo
Copy link
Contributor

sdelamo commented Feb 15, 2023

@sdelamo should I still add the test with @PendingFeature as a flag that we can (maybe one day) remove this documentation?

Yes, add the test with @PendingFeature so that we know that does not work. You can annotate also with @Issue the test.

Copy link
Contributor

@sdelamo sdelamo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add @PendingFeature test

@timyates
Copy link
Contributor Author

Checked, and @PendingFeature won't help us here

Pending feature works on test methods, and this failure is at class initialization time...

@sdelamo sdelamo merged commit b7ad8dd into 3.8.x Feb 16, 2023
@sdelamo sdelamo deleted the document-eager-client branch February 16, 2023 10:31
sdelamo pushed a commit to micronaut-projects/micronaut-crac that referenced this pull request Feb 23, 2023
sdelamo added a commit to micronaut-projects/micronaut-crac that referenced this pull request Mar 28, 2023
* use Gradle Kotlin DSL

* Update slsa-framework/slsa-github-generator action to v1.3.0 (#42)

* ci: distribution temurin cla provenance (#44)

* Update stefanzweifel/git-auto-commit-action action to v4.15.4 (#43)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* build: Micronaut Framework 3.7.4

* build: spock 2.2-groovy-3.0

* doc: eager singletons and inject HttpClient (#66)

See micronaut-projects/micronaut-test#716

* ci: projectVersion 1.2.0-SNAPSHOT

* ci: githubCoreBranch 3.9.x

* build: Micronaut Framework 3.8.5

* build: Micronaut Test 3.8.2

* build: Spock 2.3-groovy-3.0

* wip DataSourceResolver

* Convert Delegating datasource and filter non-hikari contents

* Test

* Test to ensure DBCP still works and isn't supported

* Try to downgrade Jooq

* remove @Inject BeanContext ctx

* Simplify composite (#73)

* Simplify composite

* Extract common code to method

---------

Co-authored-by: Tim Yates <[email protected]>

* build: Micronaut Framework 3.8.6

* build: Micronaut Test 3.9.1

* ci: GitHub Actions sync

* [skip ci] Release v1.2.0

* Back to 1.2.1-SNAPSHOT

* Redis support for CRaC (#78)

* wip: Redis support for CRaC

- Currently doesn't work for `@Cacheable` tags
- Needs manual testing with a proper app

* Add base buildSrc plugin

* Add config and tests

* Docs

* Update src/main/docs/guide/resource/redis.adoc

Co-authored-by: Sergio del Amo <[email protected]>

---------

Co-authored-by: Sergio del Amo <[email protected]>

* [skip ci] Release v1.2.1

* Back to 1.2.2-SNAPSHOT

* Fix build with missing dependencies

* Typesafe project accessors

* remove constructor deprecated in 1.2

* Reinstate javadoc

* Update libs.versions.toml

* Update build.gradle.kts

* Update build.gradle.kts

---------

Co-authored-by: Sergio del Amo <[email protected]>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: micronaut-build <[email protected]>
Co-authored-by: micronaut-build <[email protected]>
sdelamo added a commit to micronaut-projects/micronaut-crac that referenced this pull request Jun 1, 2023
* use Gradle Kotlin DSL

* Update slsa-framework/slsa-github-generator action to v1.3.0 (#42)

* ci: distribution temurin cla provenance (#44)

* Update stefanzweifel/git-auto-commit-action action to v4.15.4 (#43)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* build: Micronaut Framework 3.7.4

* build: spock 2.2-groovy-3.0

* doc: eager singletons and inject HttpClient (#66)

See micronaut-projects/micronaut-test#716

* ci: projectVersion 1.2.0-SNAPSHOT

* ci: githubCoreBranch 3.9.x

* build: Micronaut Framework 3.8.5

* build: Micronaut Test 3.8.2

* build: Spock 2.3-groovy-3.0

* wip DataSourceResolver

* Convert Delegating datasource and filter non-hikari contents

* Test

* Test to ensure DBCP still works and isn't supported

* Try to downgrade Jooq

* remove @Inject BeanContext ctx

* Simplify composite (#73)

* Simplify composite

* Extract common code to method

---------

Co-authored-by: Tim Yates <[email protected]>

* build: Micronaut Framework 3.8.6

* build: Micronaut Test 3.9.1

* ci: GitHub Actions sync

* [skip ci] Release v1.2.0

* Back to 1.2.1-SNAPSHOT

* Redis support for CRaC (#78)

* wip: Redis support for CRaC

- Currently doesn't work for `@Cacheable` tags
- Needs manual testing with a proper app

* Add base buildSrc plugin

* Add config and tests

* Docs

* Update src/main/docs/guide/resource/redis.adoc

Co-authored-by: Sergio del Amo <[email protected]>

---------

Co-authored-by: Sergio del Amo <[email protected]>

* [skip ci] Release v1.2.1

* Back to 1.2.2-SNAPSHOT

* bug: StatefulRedisPubSubConnection beans are not supported (#91)

* Also destroy StatefulRedisPubSubConnectionResource beans

As raised here #63 (comment)

StatefulRedisPubSubConnection beans were not destroyed during checkpointing, and so we were getting connection closed errors.

* Fix. There are no PubSub beans, they are all connection beans

* Reduce duplication

* Checkstyle...

* Naming

* Visibility

* [skip ci] Release v1.2.2

* Back to 1.2.3-SNAPSHOT

* Handle multiple named Redis servers (#92)

* Handle multiple named Redis servers

* Remove debug

* Fix imports

* Remove deprecated experimental classes and add accepted-api-changes

* [skip ci] Release v1.2.3

* Back to 1.2.4-SNAPSHOT

* Document checkpoint simulator, with java/groovy/kotlin examples (#117)

* Document checkpoint simulator, with java/groovy/kotlin examples

closes #115

* documentation for CheckpointSimulator

* Java/Groovy/Kotlin docs examples

* Extract documented classes to get rid of static

---------

Co-authored-by: Tim Yates <[email protected]>

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: micronaut-build <[email protected]>
Co-authored-by: Tim Yates <[email protected]>
Co-authored-by: micronaut-build <[email protected]>
Co-authored-by: Dean Wette <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Using eagerInitSingletons in an ApplicationContextConfigurer breaks injecting an httpclient into tests
3 participants