Skip to content

test: add unit and TCK tests for GormRegistry O(M+N) scaling#15781

Closed
borinquenkid wants to merge 1 commit into
feat/gorm-registry-core-implfrom
feat/gorm-registry-core-tests
Closed

test: add unit and TCK tests for GormRegistry O(M+N) scaling#15781
borinquenkid wants to merge 1 commit into
feat/gorm-registry-core-implfrom
feat/gorm-registry-core-tests

Conversation

@borinquenkid

Copy link
Copy Markdown
Member

Summary

Full test suite for the GormRegistry implementation in #15780. Separated into its own PR so reviewers can evaluate design and coverage independently.

Unit tests — grails-datamapping-core:

  • GormRegistrySpec — lifecycle, registration, removal, factory fallback
  • GormRegistryConcurrencySpec — concurrent registration and lookup under load
  • GormRegistryEntityRegistrationSpec — entity → datastore → API wiring
  • GormApiResolverSpec — qualifier routing, fallback, multi-tenant mode dispatch
  • GormApiFactorySpec / DefaultGormApiFactorySpec — factory delegation
  • GormStaticApiSpec / GormInstanceApiSpec — API execution and qualifier propagation
  • GormEnhancerAllQualifiersSpec — all qualifier expansion scenarios
  • CurrentTenantHolderSpec / TenantsSpec — thread-safe tenant binding
  • TenantContextProfilingSpec — DISCRIMINATOR vs DATABASE/SCHEMA mode routing
  • MultiTenantEventListenerSpec — tenant lifecycle events
  • TransactionalTransformSpec / ServiceTransformSpec — AST transform correctness
  • DefaultTransactionTemplateFactorySpec — transaction template pluggability
  • Registry subtype specs: GormStaticApiRegistrySpec, GormInstanceApiRegistrySpec, GormValidationApiRegistrySpec

TCK expansion — grails-datamapping-tck:

  • Multi-datasource connection routing
  • Multi-tenant discriminator, schema-per-tenant, and DATABASE-per-tenant scenarios
  • ALL qualifier expansion
  • DataTestSetupInterceptor registry lifecycle in Spock tests

Test plan

  • ./gradlew :grails-datamapping-core:test passes
  • ./gradlew :grails-datamapping-tck:test passes

Stack

🤖 Generated with Claude Code

Add comprehensive test coverage for the new GormRegistry infrastructure:
- GormRegistrySpec, GormRegistryConcurrencySpec, GormRegistryEntityRegistrationSpec
- GormApiResolverSpec, GormApiFactorySpec, GormEnhancerAllQualifiersSpec
- GormStaticApiSpec, GormInstanceApiSpec, TenantContextProfilingSpec
- CurrentTenantHolderSpec, TenantsSpec, MultiTenantEventListenerSpec
- TransactionalTransformSpec, ServiceTransformSpec, DefaultTransactionTemplateFactorySpec
- Expanded TCK: multi-datasource, multi-tenant, discriminator, schema-per-tenant scenarios

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@borinquenkid
borinquenkid force-pushed the feat/gorm-registry-core-tests branch from 1dd696a to c5d67bd Compare June 28, 2026 01:35
@testlens-app

testlens-app Bot commented Jun 28, 2026

Copy link
Copy Markdown

🚨 TestLens detected 51 failed tests 🚨

Here is what you can do:

  1. Inspect the test failures carefully.
  2. If you are convinced that some of the tests are flaky, you can mute them below.
  3. Finally, trigger a rerun by checking the rerun checkbox.

Test Summary

CI / Build Grails-Core (macos-latest, 21) > :grails-data-graphql-core:test

Test Runs
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec > test get
EntityDataFetcherSpec > test pagination
SingleEntityDataFetcherSpec > test get
SoftDeleteEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

CI / Build Grails-Core (macos-latest, 21) > :grails-datamapping-core:test

Test Runs
GormEnhancerAllQualifiersSpec > registerEntity can resolve through injected registry without touching global singleton
GormRegistrySpec > test withTenant and exists with multi-tenant entity in DISCRIMINATOR mode
TenantContextProfilingSpec > profile tenant wrapping overhead

CI / Build Grails-Core (ubuntu-latest, 21) > :grails-data-graphql-core:test

Test Runs
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec > test get
EntityDataFetcherSpec > test pagination
SingleEntityDataFetcherSpec > test get
SoftDeleteEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

CI / Build Grails-Core (ubuntu-latest, 21) > :grails-datamapping-core:test

Test Runs
GormEnhancerAllQualifiersSpec > registerEntity can resolve through injected registry without touching global singleton
GormRegistrySpec > test withTenant and exists with multi-tenant entity in DISCRIMINATOR mode
TenantContextProfilingSpec > profile tenant wrapping overhead

CI / Build Grails-Core (ubuntu-latest, 25) > :grails-data-graphql-core:test

Test Runs
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec > test get
EntityDataFetcherSpec > test pagination
SingleEntityDataFetcherSpec > test get
SoftDeleteEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

CI / Build Grails-Core (windows-latest, 25) > :grails-data-graphql-core:test

Test Runs
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec > test get
EntityDataFetcherSpec > test pagination
SingleEntityDataFetcherSpec > test get
SoftDeleteEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

CI / Build Grails-Core Rerunning all Tasks (ubuntu-latest, 21) > :grails-data-graphql-core:test

Test Runs
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec > test get
EntityDataFetcherSpec > test pagination
SingleEntityDataFetcherSpec > test get
SoftDeleteEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

🏷️ Commit: c5d67bd
▶️ Tests: 7493 executed
⚪️ Checks: 39/39 completed

Test Failures (first 10 of 51)

DeleteEntityDataFetcherSpec > test get (:grails-data-graphql-core:test in CI / Build Grails-Core (macos-latest, 21))
Too few invocations for:

1 * responseHandler.createResponse(env, true, null)   (0 invocations)

Unmatched invocations (ordered by similarity):

1 * responseHandler.createResponse(Mock for type 'DataFetchingEnvironment' named 'env', false, org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(1883688554<closed>)]
Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object))
One or more arguments(s) didn't match:
0: <matches>
1: argument == expected
   |        |  |
   false    |  true
            false
2: argument == expected
   |        |  |
   |        |  null
   |        false
   org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(1883688554<closed>)]
   Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
   	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcher.delete_closure1(DeleteEntityDataFetcher.groovy:45)
   	at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:118)
   	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
   	at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:115)
   	at org.grails.datastore.gorm.services.DefaultTransactionService.withTransaction(DefaultTransactionService.groovy:102)
   	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.withTransaction(DefaultGormDataFetcher.groovy:136)
   	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcher.delete(DeleteEntityDataFetcher.groovy:44)
   	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcher.get(DeleteEntityDataFetcher.groovy:59)
   	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcherSpec.$spock_feature_1_0(DeleteEntityDataFetcherSpec.groovy:51)
   Caused by: groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(1883688554<closed>)]
   Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
   	at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:321)
   	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:265)
   	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:135)
   	at org.grails.orm.hibernate.AbstractHibernateDatastore.withSession(AbstractHibernateDatastore.java:374)
   	at org.grails.orm.hibernate.AbstractHibernateGormStaticApi.withSession(AbstractHibernateGormStaticApi.groovy:105)
   	at org.grails.datastore.gorm.GormStaticApi.withDatastoreSession(GormStaticApi.groovy:637)
   	at grails.gorm.DetachedCriteria.withPopulatedQuery(DetachedCriteria.groovy:741)
   	at grails.gorm.DetachedCriteria.get(DetachedCriteria.groovy:119)
   	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.queryInstance(DefaultGormDataFetcher.groovy:119)
   	... 9 more


	at org.spockframework.mock.runtime.InteractionScope.verifyInteractions(InteractionScope.java:110)
	at org.spockframework.mock.runtime.MockController.leaveScope(MockController.java:95)
	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcherSpec.test get(DeleteEntityDataFetcherSpec.groovy:53)
DeleteEntityDataFetcherSpec > test get invalid (:grails-data-graphql-core:test in CI / Build Grails-Core (macos-latest, 21))
Too few invocations for:

1 * responseHandler.createResponse(env, false, _ as NullPointerException)   (0 invocations)

Unmatched invocations (ordered by similarity):

1 * responseHandler.createResponse(Mock for type 'DataFetchingEnvironment' named 'env', false, org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(81712040<closed>)]
Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object))
One or more arguments(s) didn't match:
0: <matches>
1: <matches>
2: argument instanceof java.lang.NullPointerException
   |        |          |
   |        false      class java.lang.NullPointerException
   org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(81712040<closed>)]
   Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
   	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcher.delete_closure1(DeleteEntityDataFetcher.groovy:45)
   	at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:118)
   	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
   	at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:115)
   	at org.grails.datastore.gorm.services.DefaultTransactionService.withTransaction(DefaultTransactionService.groovy:102)
   	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.withTransaction(DefaultGormDataFetcher.groovy:136)
   	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcher.delete(DeleteEntityDataFetcher.groovy:44)
   	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcher.get(DeleteEntityDataFetcher.groovy:59)
   	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcherSpec.$spock_feature_1_1(DeleteEntityDataFetcherSpec.groovy:74)
   Caused by: groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(81712040<closed>)]
   Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
   	at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:321)
   	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:265)
   	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:135)
   	at org.grails.orm.hibernate.AbstractHibernateDatastore.withSession(AbstractHibernateDatastore.java:374)
   	at org.grails.orm.hibernate.AbstractHibernateGormStaticApi.withSession(AbstractHibernateGormStaticApi.groovy:105)
   	at org.grails.datastore.gorm.GormStaticApi.withDatastoreSession(GormStaticApi.groovy:637)
   	at grails.gorm.DetachedCriteria.withPopulatedQuery(DetachedCriteria.groovy:741)
   	at grails.gorm.DetachedCriteria.get(DetachedCriteria.groovy:119)
   	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.queryInstance(DefaultGormDataFetcher.groovy:119)
   	... 9 more
    (org.codehaus.groovy.runtime.InvokerInvocationException)


	at org.spockframework.mock.runtime.InteractionScope.verifyInteractions(InteractionScope.java:110)
	at org.spockframework.mock.runtime.MockController.leaveScope(MockController.java:95)
	at org.grails.gorm.graphql.fetcher.impl.DeleteEntityDataFetcherSpec.test get invalid(DeleteEntityDataFetcherSpec.groovy:74)
EntityDataFetcherSpec > test get (:grails-data-graphql-core:test in CI / Build Grails-Core (macos-latest, 21))
groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(1086273201<closed>)]
Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:321)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:265)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:135)
	at org.grails.orm.hibernate.AbstractHibernateDatastore.withSession(AbstractHibernateDatastore.java:374)
	at org.grails.orm.hibernate.AbstractHibernateGormStaticApi.withSession(AbstractHibernateGormStaticApi.groovy:105)
	at org.grails.datastore.gorm.GormStaticApi.withDatastoreSession(GormStaticApi.groovy:637)
	at grails.gorm.DetachedCriteria.withPopulatedQuery(DetachedCriteria.groovy:741)
	at grails.gorm.DetachedCriteria.list(DetachedCriteria.groovy:139)
	at org.grails.gorm.graphql.fetcher.impl.EntityDataFetcher.executeQuery(EntityDataFetcher.groovy:84)
	at org.grails.gorm.graphql.fetcher.impl.EntityDataFetcher.get_closure1(EntityDataFetcher.groovy:75)
	at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:118)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
	at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:115)
	at org.grails.datastore.gorm.services.DefaultTransactionService.withTransaction(DefaultTransactionService.groovy:102)
	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.withTransaction(DefaultGormDataFetcher.groovy:136)
	at org.grails.gorm.graphql.fetcher.impl.EntityDataFetcher.get(EntityDataFetcher.groovy:61)
	at org.grails.gorm.graphql.fetcher.impl.EntityDataFetcherSpec.test get(EntityDataFetcherSpec.groovy:48)
EntityDataFetcherSpec > test pagination (:grails-data-graphql-core:test in CI / Build Grails-Core (macos-latest, 21))
groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(2138114841<closed>)]
Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:321)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:265)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:135)
	at org.grails.orm.hibernate.AbstractHibernateDatastore.withSession(AbstractHibernateDatastore.java:374)
	at org.grails.orm.hibernate.AbstractHibernateGormStaticApi.withSession(AbstractHibernateGormStaticApi.groovy:105)
	at org.grails.datastore.gorm.GormStaticApi.withDatastoreSession(GormStaticApi.groovy:637)
	at grails.gorm.DetachedCriteria.withPopulatedQuery(DetachedCriteria.groovy:741)
	at grails.gorm.DetachedCriteria.list(DetachedCriteria.groovy:139)
	at org.grails.gorm.graphql.fetcher.impl.EntityDataFetcher.executeQuery(EntityDataFetcher.groovy:84)
	at org.grails.gorm.graphql.fetcher.impl.EntityDataFetcher.get_closure1(EntityDataFetcher.groovy:75)
	at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:118)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
	at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:115)
	at org.grails.datastore.gorm.services.DefaultTransactionService.withTransaction(DefaultTransactionService.groovy:102)
	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.withTransaction(DefaultGormDataFetcher.groovy:136)
	at org.grails.gorm.graphql.fetcher.impl.EntityDataFetcher.get(EntityDataFetcher.groovy:61)
	at org.grails.gorm.graphql.fetcher.impl.EntityDataFetcherSpec.test pagination(EntityDataFetcherSpec.groovy:63)
GormEnhancerAllQualifiersSpec > registerEntity can resolve through injected registry without touching global singleton (:grails-datamapping-core:test in CI / Build Grails-Core (macos-latest, 21))
Condition not satisfied:

injectedRegistry.resolveStaticApi(NonMultiTenantDefaultEntity) != null
|                |                |                            |
|                null             |                            false
|                                 class org.grails.datastore.gorm.GormEnhancerAllQualifiersSpec$NonMultiTenantDefaultEntity
<org.grails.datastore.gorm.GormRegistry@27257639 defaultApiFactory=org.grails.datastore.gorm.DefaultGormApiFactory@538ef298 apiResolver=org.grails.datastore.gorm.GormApiResolver@534ffe23 staticApiRegistry=org.grails.datastore.gorm.GormStaticApiRegistry@5f57cecd instanceApiRegistry=org.grails.datastore.gorm.GormInstanceApiRegistry@2252c286 validationApiRegistry=org.grails.datastore.gorm.GormValidationApiRegistry@66cfe66 datastoresByQualifier=[default:Mock for type 'Datastore' named 'datastore'] entityDatastores=[org.grails.datastore.gorm.GormEnhancerAllQualifiersSpec$NonMultiTenantDefaultEntity:[default:Mock for type 'Datastore' named 'datastore']] normalizedEntityKeysByClass=[class org.grails.datastore.gorm.GormEnhancerAllQualifiersSpec$NonMultiTenantDefaultEntity:org.grails.datastore.gorm.GormEnhancerAllQualifiersSpec$NonMultiTenantDefaultEntity] normalizedEntityKeysByName=[org.grails.datastore.gorm.GormEnhancerAllQualifiersSpec$NonMultiTenantDefaultEntity:org.grails.datastore.gorm.GormEnhancerAllQualifiersSpec$NonMultiTenantDefaultEntity] normalizedQualifiers=[default:default] datastoresByType=[class jdk.proxy3.$Proxy82:Mock for type 'Datastore' named 'datastore'] apiFactoriesByDatastoreType=[:] allDatastores=[Mock for type 'Datastore' named 'datastore']>

	at org.grails.datastore.gorm.GormEnhancerAllQualifiersSpec.registerEntity can resolve through injected registry without touching global singleton(GormEnhancerAllQualifiersSpec.groovy:229)
GormRegistrySpec > test withTenant and exists with multi-tenant entity in DISCRIMINATOR mode (:grails-datamapping-core:test in CI / Build Grails-Core (macos-latest, 21))
Condition not satisfied:

capturedTenantId == "tenant1"
|                |
initial          false
                 7 differences (0% similarity)
                 (i-)n(i-)t(ial)
                 (te)n(an)t(1--)

	at org.grails.datastore.gorm.GormRegistrySpec.test withTenant and exists with multi-tenant entity in DISCRIMINATOR mode(GormRegistrySpec.groovy:266)
expected actual
tenant1 initial
SingleEntityDataFetcherSpec > test get (:grails-data-graphql-core:test in CI / Build Grails-Core (macos-latest, 21))
groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(852887758<closed>)]
Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:321)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:265)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:135)
	at org.grails.orm.hibernate.AbstractHibernateDatastore.withSession(AbstractHibernateDatastore.java:374)
	at org.grails.orm.hibernate.AbstractHibernateGormStaticApi.withSession(AbstractHibernateGormStaticApi.groovy:105)
	at org.grails.datastore.gorm.GormStaticApi.withDatastoreSession(GormStaticApi.groovy:637)
	at grails.gorm.DetachedCriteria.withPopulatedQuery(DetachedCriteria.groovy:741)
	at grails.gorm.DetachedCriteria.get(DetachedCriteria.groovy:119)
	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.queryInstance(DefaultGormDataFetcher.groovy:119)
	at org.grails.gorm.graphql.fetcher.impl.SingleEntityDataFetcher.get_closure1(SingleEntityDataFetcher.groovy:43)
	at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:118)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
	at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:115)
	at org.grails.datastore.gorm.services.DefaultTransactionService.withTransaction(DefaultTransactionService.groovy:102)
	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.withTransaction(DefaultGormDataFetcher.groovy:136)
	at org.grails.gorm.graphql.fetcher.impl.SingleEntityDataFetcher.get(SingleEntityDataFetcher.groovy:42)
	at org.grails.gorm.graphql.fetcher.impl.SingleEntityDataFetcherSpec.test get(SingleEntityDataFetcherSpec.groovy:49)
SoftDeleteEntityDataFetcherSpec > test get (:grails-data-graphql-core:test in CI / Build Grails-Core (macos-latest, 21))
Condition not satisfied:

result.success
|      |
|      false
[success:false, error:groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(1455733574<closed>)]
Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)]

	at org.grails.gorm.graphql.fetcher.impl.SoftDeleteEntityDataFetcherSpec.test get(SoftDeleteEntityDataFetcherSpec.groovy:58)
TenantContextProfilingSpec > profile tenant wrapping overhead (:grails-datamapping-core:test in CI / Build Grails-Core (macos-latest, 21))
groovy.lang.GroovyRuntimeException: Could not find matching constructor for: org.grails.datastore.gorm.GormStaticApi(Class, null, ArrayList, org.grails.datastore.gorm.TenantContextProfilingSpec$DummyStaticApi$1)
	at org.grails.datastore.gorm.TenantContextProfilingSpec$DummyStaticApi.<init>(TenantContextProfilingSpec.groovy:96)
	at org.grails.datastore.gorm.TenantContextProfilingSpec.profile tenant wrapping overhead(TenantContextProfilingSpec.groovy:51)
UpdateEntityDataFetcherSpec > test get (:grails-data-graphql-core:test in CI / Build Grails-Core (macos-latest, 21))
groovy.lang.MissingMethodException: No signature of method: grails.gorm.DetachedCriteria$_withPopulatedQuery_closure7.doCall() is applicable for argument types: (org.hibernate.internal.SessionImpl) values: [SessionImpl(1610510730<closed>)]
Possible solutions: doCall(org.grails.datastore.mapping.core.Session), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:321)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:265)
	at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:135)
	at org.grails.orm.hibernate.AbstractHibernateDatastore.withSession(AbstractHibernateDatastore.java:374)
	at org.grails.orm.hibernate.AbstractHibernateGormStaticApi.withSession(AbstractHibernateGormStaticApi.groovy:105)
	at org.grails.datastore.gorm.GormStaticApi.withDatastoreSession(GormStaticApi.groovy:637)
	at grails.gorm.DetachedCriteria.withPopulatedQuery(DetachedCriteria.groovy:741)
	at grails.gorm.DetachedCriteria.get(DetachedCriteria.groovy:119)
	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.queryInstance(DefaultGormDataFetcher.groovy:119)
	at org.grails.gorm.graphql.fetcher.impl.UpdateEntityDataFetcher.getInstance(UpdateEntityDataFetcher.groovy:68)
	at org.grails.gorm.graphql.fetcher.impl.UpdateEntityDataFetcher.get_closure1(UpdateEntityDataFetcher.groovy:49)
	at grails.gorm.transactions.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:118)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137)
	at grails.gorm.transactions.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:115)
	at org.grails.datastore.gorm.services.DefaultTransactionService.withTransaction(DefaultTransactionService.groovy:102)
	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.withTransaction(DefaultGormDataFetcher.groovy:136)
	at org.grails.gorm.graphql.fetcher.impl.UpdateEntityDataFetcher.get(UpdateEntityDataFetcher.groovy:48)
	at org.grails.gorm.graphql.fetcher.impl.UpdateEntityDataFetcherSpec.test get(UpdateEntityDataFetcherSpec.groovy:48)

Muted Tests (first 20 of 51)

Select tests to mute in this pull request:

  • DeleteEntityDataFetcherSpec > test get
  • DeleteEntityDataFetcherSpec > test get invalid
  • EntityDataFetcherSpec > test get
  • EntityDataFetcherSpec > test pagination
  • GormEnhancerAllQualifiersSpec > registerEntity can resolve through injected registry without touching global singleton
  • GormRegistrySpec > test withTenant and exists with multi-tenant entity in DISCRIMINATOR mode
  • SingleEntityDataFetcherSpec > test get
  • SoftDeleteEntityDataFetcherSpec > test get
  • TenantContextProfilingSpec > profile tenant wrapping overhead
  • UpdateEntityDataFetcherSpec > test get
  • UpdateEntityDataFetcherSpec > test optimistic locking
  • UpdateEntityDataFetcherSpec > test optimistic locking with null version

Reuse successful test results:

  • ♻️ Only rerun the tests that failed or were muted before

Click the checkbox to trigger a rerun:

  • Rerun jobs

Learn more about TestLens at testlens.app.

@borinquenkid

Copy link
Copy Markdown
Member Author

Superseded by the consolidated GormRegistry work. The net-new core-class unit specs from this PR were harvested into #15790 (verified green against the core-impl implementation); the remaining changes here were adaptations of existing TCK/core specs to the divergent adapter stack (#15782#15787, now closed) and do not apply to core-impl (#15780). Closing as superseded; the branch is retained for reference (not deleted).

@borinquenkid
borinquenkid deleted the feat/gorm-registry-core-tests branch July 4, 2026 22:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant