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).

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