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

jUnit test example #2686

Open
miptildar opened this issue Jan 2, 2023 · 0 comments
Open

jUnit test example #2686

miptildar opened this issue Jan 2, 2023 · 0 comments

Comments

@miptildar
Copy link

I am trying to integrate Spring Data to GridGain.
Could you give an example of jUnit tests that will be connecting to Apache Ignite (running locally) and perform Crud operations using Spring Data repositories (IgniteRepository<V, K>).

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {CrudSpringDataTest.Config.class}, properties = {"spring.main.allow-bean-definition-overriding=true"})
public class CrudSpringDataTest {

    private static final String UID1 = "uid1";
    private static final String UID2 = "uid2";
    private static final String PLACE_ID1 = "palceId1";

    @Autowired
    OfferCrudRepository offerCrudRepository;

    @Test
    public void test() {
        // some operations with crud repositories
    }

    @Configuration
    @ComponentScan({"com.example"})
    @EnableIgniteRepositories(basePackages = {"com.example"})
    @EnableTransactionManagement
    public static class Config {

        @Bean
        public Ignite igniteInstance() {
            return Ignition.start(igniteCfg());
        }

        // running locally
        @Bean
        public IgniteConfiguration igniteCfg() {
            IgniteConfiguration igniteConfiguration = new IgniteConfiguration();
            igniteConfiguration.setIgniteInstanceName(UUID.randomUUID().toString());
            igniteConfiguration.setPeerClassLoadingEnabled(true);
            igniteConfiguration.setLocalHost("127.0.0.1");

            TcpDiscoverySpi tcpDiscoverySpi = new TcpDiscoverySpi();
            TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
            ipFinder.setAddresses(Collections.singletonList("127.0.0.1:47500..47509"));
            tcpDiscoverySpi.setIpFinder(ipFinder);
            tcpDiscoverySpi.setLocalPort(47500);
            // Changing local port range. This is an optional action.
            tcpDiscoverySpi.setLocalPortRange(9);
            //tcpDiscoverySpi.setLocalAddress("localhost");
            igniteConfiguration.setDiscoverySpi(tcpDiscoverySpi);

            TcpCommunicationSpi communicationSpi = new TcpCommunicationSpi();
            communicationSpi.setLocalAddress("localhost");
            communicationSpi.setLocalPort(48100);
            communicationSpi.setSlowClientQueueLimit(1000);
            igniteConfiguration.setCommunicationSpi(communicationSpi);

            igniteConfiguration.setCacheConfiguration(
                    new CacheConfiguration<String, OfferCache>()
                            .setName(IgniteCacheName.OFFER_CACHE_NAME)
                            .setSqlSchema(SchemaName.CAFE_SCHEMA)
                            .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL)
                            .setBackups(1)
                            .setReadFromBackup(false)
                            .setIndexedTypes(String.class, OfferCache.class)
            );

            return igniteConfiguration;
        }
        

        @Bean
        public SpringTransactionManager transactionManager(IgniteConfiguration igniteConfiguration) {
            SpringTransactionManager mgr = new SpringTransactionManager();
            mgr.setConfiguration(igniteConfiguration);
            mgr.setTransactionConcurrency(TransactionConcurrency.PESSIMISTIC);
            return mgr;
        }
    }

}

This is how Crud repository looks like

package com.example

@RepositoryConfig(cacheName = IgniteCacheName.OFFER_CACHE_NAME)
public interface OfferCrudRepository extends IgniteRepository<OfferCache, String> {
// here I have some queries that can be generated by Spring Data
}

GridGain version is 8.8.24
And pom.xml dependencies:

        <dependency>
            <groupId>org.gridgain</groupId>
            <artifactId>ignite-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.gridgain</groupId>
            <artifactId>ignite-spring-data_2.2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.gridgain</groupId>
            <artifactId>ignite-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.gridgain</groupId>
            <artifactId>ignite-indexing</artifactId>
        </dependency>
        <dependency>
            <groupId>org.gridgain</groupId>
            <artifactId>ignite-spring</artifactId>
        </dependency>

Here I am getting an exception:

org.apache.ignite.IgniteException: Failed to initialize Ignite repository factory. 
No beans required for repository configuration were found. Check "igniteInstance", "igniteCfg", "igniteSpringCfgPath" 
parameters of org.apache.ignite.springdata22.repository.config.RepositoryConfigclass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant