0

I have a project of the following structure:
project-structure
gradle.properties:

group=pal.quest
rootProject.name=quests
version=0.0.1-SNAPSHOT
#
micronautVersion=3.7.3
#
kotlinVersion=1.6.21
kotlin.code.style=official

settings.gradle.kts:

dependencyResolutionManagement {
    repositories {
        mavenCentral()
    }
}
pluginManagement {
    plugins {
        id("org.jetbrains.kotlin.jvm") version "1.6.21"
        id("org.jetbrains.kotlin.kapt") version "1.6.21"
        id("org.jetbrains.kotlin.plugin.allopen") version "1.6.21"

        id("io.micronaut.application") version "3.6.3"

        id("io.micronaut.test-resources") version "3.6.3"

        id("com.github.johnrengelman.shadow") version "7.1.2"
    }
}
include("quests-entity")
include("quests-repository")

root build.gradle.kts is empty.
quests-entity:build.gradle.kts:

plugins {
    java
    `java-library`

    id("org.jetbrains.kotlin.jvm")
    id("org.jetbrains.kotlin.kapt")

    id("io.micronaut.application")
}

dependencies {
    implementation("jakarta.annotation:jakarta.annotation-api")
    api("io.micronaut.data:micronaut-data-mongodb")
}

PalQuestQuestsEntityConfig:

package pal.quest;

import io.micronaut.core.annotation.Introspected;

@Introspected
class PalQuestQuestsEntityConfig

PalQuestQuestsQuestEntity:

package pal.quest.entity;

import io.micronaut.core.annotation.NonNull
import io.micronaut.data.annotation.GeneratedValue
import io.micronaut.data.annotation.Id
import io.micronaut.data.annotation.MappedEntity
import org.bson.codecs.pojo.annotations.BsonId
import org.bson.codecs.pojo.annotations.BsonProperty
import org.bson.types.ObjectId

@MappedEntity
data class PalQuestQuestsQuestEntity(
    @field:Id
    @field:BsonId
    @field:GeneratedValue
    @field:BsonProperty("_id")
    var id: ObjectId? = null,

    @NonNull
    @field:BsonProperty("title")
    val title: String,

    @field:BsonProperty("description")
    var description: String = "",

    @field:BsonProperty("assigner_id")
    val assignerId: String,

    @field:BsonProperty("status")
    val status: String,

    @field:BsonProperty("assigner_ids")
    var assignedIds: MutableSet<String> = HashSet()
)

quests-repository:build.gradle.kts

plugins {
    id("org.jetbrains.kotlin.jvm")
    id("org.jetbrains.kotlin.kapt")
    id("org.jetbrains.kotlin.plugin.allopen")
    id("io.micronaut.application")
    id("io.micronaut.test-resources")
}

val kotlinVersion = project.properties["kotlinVersion"]
dependencies {
    api(project(":quests-entity"))

    kapt("io.micronaut.data:micronaut-data-document-processor")

    api("io.micronaut.kotlin:micronaut-kotlin-runtime")

    api("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")
    api("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")

    api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
    api("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")

    runtimeOnly("org.mongodb:mongodb-driver-reactivestreams")
    testResourcesRuntimeOnly("org.mongodb:mongodb-driver-reactivestreams")

    testApi("org.testcontainers:junit-jupiter")
    testApi("org.testcontainers:mongodb")
    testApi("org.testcontainers:testcontainers")

}

micronaut {
    testRuntime("junit5")
    processing {
        incremental(true)
        annotations("pal.*")
    }
}

PalQuestRepositoryConfig:

package pal.quest

import io.micronaut.context.annotation.Bean
import io.micronaut.context.annotation.Factory
import io.micronaut.context.annotation.Import
import jakarta.inject.Singleton
import org.bson.codecs.configuration.CodecRegistries
import org.bson.codecs.configuration.CodecRegistry
import org.bson.codecs.pojo.PojoCodecProvider


@Import(
    classes = [PalQuestQuestsEntityConfig::class]
)
@Factory
class PalQuestRepositoryConfig {
    @Bean
    @Singleton
    fun mapper(): CodecRegistry = CodecRegistries.fromRegistries(
        CodecRegistries.fromProviders(
            PojoCodecProvider.builder()
                .automatic(true)
                .build()
        )
    )
}

PalQuestQuestsQuestRepository:

package pal.quest.repository

import io.micronaut.data.mongodb.annotation.MongoRepository
import io.micronaut.data.repository.kotlin.CoroutineCrudRepository
import org.bson.types.ObjectId
import pal.quest.entity.PalQuestQuestsQuestEntity

@MongoRepository
interface PalQuestQuestsQuestRepository : CoroutineCrudRepository<PalQuestQuestsQuestEntity, ObjectId>

PalQuestQuestsQuestRepositoryTest:

package pal.quest.repository

import io.micronaut.test.extensions.junit5.annotation.MicronautTest
import jakarta.inject.Inject
import kotlinx.coroutines.flow.count
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test

@MicronautTest(transactional = false)
class PalQuestQuestsQuestRepositoryTest @Inject constructor(
    private val palQuestQuestsQuestRepository: PalQuestQuestsQuestRepository,
) {
    @Test
    fun empty_zeroFound() {
        runBlocking {
            val count = palQuestQuestsQuestRepository.findAll()
                .count()
            Assertions.assertEquals(0, count)
        }
    }
}

When I run this test, I get the following error:

Sessions are not supported by the MongoDB cluster to which this client is connected
com.mongodb.MongoClientException: Sessions are not supported by the MongoDB cluster to which this client is connected...

Docker version 20.10.17, build 100c701.

I tried to set configure rest-resources in application-test.yaml, that didn't help. How should I fix that error?

saw303
  • 8,051
  • 7
  • 50
  • 90
  • Please add your `application.yml` and if present `application-test.yml` to your question. Furthermore please add the Docker command for MongoDB. How are you starting that container? – saw303 Nov 16 '22 at 07:56
  • Have you checked https://stackoverflow.com/questions/56734130/sessions-are-not-supported-by-the-mongodb-cluster-to-which-this-client-is-connec yet? – saw303 Nov 16 '22 at 07:58

0 Answers0