Search in sources :

Example 1 with UrlResource

use of com.github.nosan.embedded.cassandra.commons.UrlResource in project embedded-cassandra by nosan.

the class DefaultCassandraDatabaseFactoryTests method setConfigPropertyUriResource.

@Test
void setConfigPropertyUriResource(@TempDir Path workingDirectory) throws Exception {
    UrlResource resource = new UrlResource(new URL("http://localhost:8080/cassandra.yaml"));
    this.configProperties.put("test", resource);
    CassandraDatabase database = create(Version.parse("4.0"), workingDirectory);
    Map<String, Object> configProperties = database.getConfigProperties();
    assertThat(configProperties.get("test")).isEqualTo(resource.toURI().toString());
}
Also used : UrlResource(com.github.nosan.embedded.cassandra.commons.UrlResource) URL(java.net.URL) Test(org.junit.jupiter.api.Test)

Example 2 with UrlResource

use of com.github.nosan.embedded.cassandra.commons.UrlResource in project embedded-cassandra-spring-boot-starter by nosan.

the class EmbeddedCassandraAutoConfiguration method embeddedCassandraBuilder.

@Bean
@ConditionalOnMissingBean
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
CassandraBuilder embeddedCassandraBuilder(EmbeddedCassandraProperties properties, ObjectProvider<CassandraBuilderConfigurator> configurators) throws IOException {
    PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
    CassandraBuilder builder = new CassandraBuilder();
    builder.addEnvironmentVariables(properties.getEnvironmentVariables());
    builder.addSystemProperties(properties.getSystemProperties());
    builder.addConfigProperties(properties.getConfigProperties());
    builder.addJvmOptions(properties.getJvmOptions());
    map.from(properties::getRegisterShutdownHook).to(builder::registerShutdownHook);
    map.from(properties::getVersion).whenHasText().to(builder::version);
    map.from(properties::getLogger).whenHasText().as(Logger::get).to(builder::logger);
    map.from(properties::getName).whenHasText().to(builder::name);
    map.from(properties::getWorkingDirectory).to(workingDirectory -> builder.workingDirectory(() -> workingDirectory));
    map.from(properties::getStartupTimeout).whenNot(Duration::isNegative).whenNot(Duration::isZero).to(builder::startupTimeout);
    Resource configFile = properties.getConfigFile();
    if (configFile != null) {
        builder.configFile(new UrlResource(configFile.getURL()));
    }
    for (Map.Entry<String, Resource> entry : properties.getWorkingDirectoryResources().entrySet()) {
        builder.addWorkingDirectoryResource(new UrlResource(entry.getValue().getURL()), entry.getKey());
    }
    configurators.orderedStream().forEach(builder::configure);
    return builder;
}
Also used : UrlResource(com.github.nosan.embedded.cassandra.commons.UrlResource) UrlResource(com.github.nosan.embedded.cassandra.commons.UrlResource) Resource(org.springframework.core.io.Resource) CassandraBuilder(com.github.nosan.embedded.cassandra.CassandraBuilder) Duration(java.time.Duration) PropertyMapper(org.springframework.boot.context.properties.PropertyMapper) Map(java.util.Map) Scope(org.springframework.context.annotation.Scope) ConditionalOnMissingBean(org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean) ConditionalOnMissingBean(org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean) Bean(org.springframework.context.annotation.Bean)

Example 3 with UrlResource

use of com.github.nosan.embedded.cassandra.commons.UrlResource in project embedded-cassandra-spring-boot-starter by nosan.

the class EmbeddedCassandraAutoConfigurationTests method configureProperties.

@Test
void configureProperties() {
    this.runner.withUserConfiguration(ExcludeCassandraBeanDefinitionRegistryPostProcessor.class).withPropertyValues("cassandra.embedded.config-file=classpath:cassandra.yaml", "cassandra.embedded.config-properties.start_rpc=true", "cassandra.embedded.environment-variables.JVM_OPTS=-Xmx512m", "cassandra.embedded.jvm-options=-Xmx256m", "cassandra.embedded.logger=MyLogger", "cassandra.embedded.version=3.11.3", "cassandra.embedded.name=MyCassandra", "cassandra.embedded.register-shutdown-hook=false", "cassandra.embedded.system-properties.cassandra.start_rpc=true", "cassandra.embedded.startup-timeout=1m", "cassandra.embedded.working-directory-resources.[conf/cassandra.yaml]=classpath:cassandra.yaml", "cassandra.embedded.working-directory=target/embeddedCassandra").withBean(CassandraBuilderConfigurator.class, () -> (builder) -> builder.addJvmOptions("-Xmx1024m")).run(context -> {
        assertThat(context).hasSingleBean(CassandraBuilder.class);
        Cassandra cassandra = context.getBean(CassandraBuilder.class).build();
        assertThat(cassandra).hasFieldOrPropertyWithValue("databaseFactory.jvmOptions", new LinkedHashSet<>(Arrays.asList("-Xmx256m", "-Xmx1024m")));
        assertThat(cassandra).hasFieldOrPropertyWithValue("logger", Logger.get("MyLogger"));
        assertThat(cassandra).hasFieldOrPropertyWithValue("name", "MyCassandra");
        assertThat(cassandra).hasFieldOrPropertyWithValue("version", Version.parse("3.11.3"));
        assertThat(cassandra).hasFieldOrPropertyWithValue("registerShutdownHook", false);
        assertThat(cassandra).hasFieldOrPropertyWithValue("startupTimeout", Duration.ofMinutes(1));
        assertThat(cassandra).hasFieldOrPropertyWithValue("workingDirectory", Paths.get("target/embeddedCassandra").toAbsolutePath());
        assertThat(cassandra).hasFieldOrPropertyWithValue("databaseFactory.environmentVariables", Collections.singletonMap("JVM_OPTS", "-Xmx512m"));
        Map<String, Object> systemProperties = new LinkedHashMap<>();
        systemProperties.put("cassandra.start_rpc", "true");
        systemProperties.put("cassandra.config", new UrlResource(new ClassPathResource("cassandra.yaml").getURL()));
        assertThat(cassandra).hasFieldOrPropertyWithValue("databaseFactory.systemProperties", systemProperties);
        assertThat((Collection<?>) ReflectionTestUtils.getField(cassandra, "workingDirectoryCustomizers")).hasSize(1);
    });
}
Also used : CassandraBuilder(com.github.nosan.embedded.cassandra.CassandraBuilder) Arrays(java.util.Arrays) DriverConfigLoaderBuilderCustomizer(org.springframework.boot.autoconfigure.cassandra.DriverConfigLoaderBuilderCustomizer) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) BeanFactoryUtils(org.springframework.beans.factory.BeanFactoryUtils) ClassPathResource(org.springframework.core.io.ClassPathResource) ApplicationContextRunner(org.springframework.boot.test.context.runner.ApplicationContextRunner) CassandraBuilderConfigurator(com.github.nosan.embedded.cassandra.CassandraBuilderConfigurator) DisabledOnOs(org.junit.jupiter.api.condition.DisabledOnOs) BeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry) Version(com.github.nosan.embedded.cassandra.Version) ConfigurableListableBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory) LinkedHashMap(java.util.LinkedHashMap) Cassandra(com.github.nosan.embedded.cassandra.Cassandra) DefaultDriverOption(com.datastax.oss.driver.api.core.config.DefaultDriverOption) CqlSession(com.datastax.oss.driver.api.core.CqlSession) CqlScript(com.github.nosan.embedded.cassandra.cql.CqlScript) Duration(java.time.Duration) Map(java.util.Map) UrlResource(com.github.nosan.embedded.cassandra.commons.UrlResource) LinkedHashSet(java.util.LinkedHashSet) Logger(com.github.nosan.embedded.cassandra.commons.logging.Logger) AutoConfigurations(org.springframework.boot.autoconfigure.AutoConfigurations) OS(org.junit.jupiter.api.condition.OS) CassandraAutoConfiguration(org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration) Collection(java.util.Collection) CqlSessionBuilder(com.datastax.oss.driver.api.core.CqlSessionBuilder) ReflectionTestUtils(org.springframework.test.util.ReflectionTestUtils) BeansException(org.springframework.beans.BeansException) BeanDefinitionRegistryPostProcessor(org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor) Test(org.junit.jupiter.api.Test) FilteredClassLoader(org.springframework.boot.test.context.FilteredClassLoader) Configuration(org.springframework.context.annotation.Configuration) DriverConfigLoader(com.datastax.oss.driver.api.core.config.DriverConfigLoader) Paths(java.nio.file.Paths) AssertableApplicationContext(org.springframework.boot.test.context.assertj.AssertableApplicationContext) Bean(org.springframework.context.annotation.Bean) Collections(java.util.Collections) CqlSessionFactoryBean(org.springframework.data.cassandra.config.CqlSessionFactoryBean) Cassandra(com.github.nosan.embedded.cassandra.Cassandra) CassandraBuilder(com.github.nosan.embedded.cassandra.CassandraBuilder) CassandraBuilderConfigurator(com.github.nosan.embedded.cassandra.CassandraBuilderConfigurator) ClassPathResource(org.springframework.core.io.ClassPathResource) LinkedHashMap(java.util.LinkedHashMap) UrlResource(com.github.nosan.embedded.cassandra.commons.UrlResource) Collection(java.util.Collection) Test(org.junit.jupiter.api.Test)

Aggregations

UrlResource (com.github.nosan.embedded.cassandra.commons.UrlResource)3 CassandraBuilder (com.github.nosan.embedded.cassandra.CassandraBuilder)2 Duration (java.time.Duration)2 Map (java.util.Map)2 Test (org.junit.jupiter.api.Test)2 Bean (org.springframework.context.annotation.Bean)2 CqlSession (com.datastax.oss.driver.api.core.CqlSession)1 CqlSessionBuilder (com.datastax.oss.driver.api.core.CqlSessionBuilder)1 DefaultDriverOption (com.datastax.oss.driver.api.core.config.DefaultDriverOption)1 DriverConfigLoader (com.datastax.oss.driver.api.core.config.DriverConfigLoader)1 Cassandra (com.github.nosan.embedded.cassandra.Cassandra)1 CassandraBuilderConfigurator (com.github.nosan.embedded.cassandra.CassandraBuilderConfigurator)1 Version (com.github.nosan.embedded.cassandra.Version)1 Logger (com.github.nosan.embedded.cassandra.commons.logging.Logger)1 CqlScript (com.github.nosan.embedded.cassandra.cql.CqlScript)1 URL (java.net.URL)1 Paths (java.nio.file.Paths)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1