Skip to content

Commit ec1f1ad

Browse files
Added Transaction concurrency tests
1 parent 7d26454 commit ec1f1ad

9 files changed

Lines changed: 337 additions & 70 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*
2+
* Copyright 2012-2019 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package software.xdev.spring.data.eclipse.store.jpa.integration;
18+
19+
import java.util.List;
20+
21+
import jakarta.persistence.EntityManager;
22+
import jakarta.persistence.PersistenceContext;
23+
24+
import org.junit.jupiter.api.Assertions;
25+
import org.junit.jupiter.api.Test;
26+
import org.springframework.beans.factory.annotation.Autowired;
27+
28+
import software.xdev.spring.data.eclipse.store.importer.EclipseStoreDataImporter;
29+
import software.xdev.spring.data.eclipse.store.jpa.integration.repository.PersonToTestInEclipseStoreRepository;
30+
import software.xdev.spring.data.eclipse.store.jpa.integration.repository.PersonToTestInJpa;
31+
import software.xdev.spring.data.eclipse.store.jpa.integration.repository.PersonToTestInJpaRepository;
32+
import software.xdev.spring.data.eclipse.store.repository.config.EclipseStoreClientConfiguration;
33+
import software.xdev.spring.data.eclipse.store.repository.support.SimpleEclipseStoreRepository;
34+
35+
36+
@DefaultTestAnnotations
37+
class JpaImportExplicitTest
38+
{
39+
@Autowired
40+
private PersonToTestInEclipseStoreRepository personToTestInEclipseStoreRepository;
41+
42+
@Autowired
43+
private PersonToTestInJpaRepository personToTestInJpaRepository;
44+
45+
@PersistenceContext
46+
private EntityManager entityManager;
47+
48+
@Autowired
49+
private EclipseStoreClientConfiguration configuration;
50+
51+
@Test
52+
void testEclipseStoreImport_ExplicitNoComponent()
53+
{
54+
final PersonToTestInJpa customer = new PersonToTestInJpa("", "");
55+
this.personToTestInJpaRepository.save(customer);
56+
57+
final List<SimpleEclipseStoreRepository<?, ?>> simpleEclipseStoreRepositories =
58+
new EclipseStoreDataImporter(this.configuration).importData(this.entityManager);
59+
Assertions.assertEquals(1, simpleEclipseStoreRepositories.size());
60+
final List<?> allEntities = simpleEclipseStoreRepositories.get(0).findAll();
61+
Assertions.assertEquals(1, allEntities.size());
62+
63+
this.configuration.getStorageInstance().stop();
64+
Assertions.assertEquals(
65+
1,
66+
this.configuration.getStorageInstance().getEntityCount(PersonToTestInJpa.class),
67+
"After restart the imported entities are not there anymore.");
68+
}
69+
}

spring-data-eclipse-store-jpa/src/test/java/software/xdev/spring/data/eclipse/store/jpa/integration/IntegrationTest.java renamed to spring-data-eclipse-store-jpa/src/test/java/software/xdev/spring/data/eclipse/store/jpa/integration/JpaImportTest.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,14 @@
3232

3333

3434
@DefaultTestAnnotations
35-
class IntegrationTest
35+
class JpaImportTest
3636
{
3737
@Autowired
3838
private PersonToTestInEclipseStoreRepository personToTestInEclipseStoreRepository;
3939

4040
@Autowired
4141
private PersonToTestInJpaRepository personToTestInJpaRepository;
4242

43-
@Autowired
44-
private EclipseStoreDataImporterComponent eclipseStoreDataImporter;
45-
4643
@Autowired
4744
private EclipseStoreClientConfiguration configuration;
4845

@@ -61,13 +58,13 @@ void testBasicSaveAndFindSingleRecords()
6158
}
6259

6360
@Test
64-
void testEclipseStoreImport()
61+
void testEclipseStoreImport(@Autowired final EclipseStoreDataImporterComponent eclipseStoreDataImporter)
6562
{
66-
final PersonToTestInJpa customer = new PersonToTestInJpa("1", "", "");
67-
this.personToTestInJpaRepository.save(customer);
63+
final PersonToTestInJpa customer = new PersonToTestInJpa("", "");
64+
this.personToTestInJpaRepository.saveAndFlush(customer);
6865

6966
final List<SimpleEclipseStoreRepository<?, ?>> simpleEclipseStoreRepositories =
70-
this.eclipseStoreDataImporter.importData();
67+
eclipseStoreDataImporter.importData();
7168
Assertions.assertEquals(1, simpleEclipseStoreRepositories.size());
7269
final List<?> allEntities = simpleEclipseStoreRepositories.get(0).findAll();
7370
Assertions.assertEquals(1, allEntities.size());
@@ -80,10 +77,10 @@ void testEclipseStoreImport()
8077
}
8178

8279
@Test
83-
void testEclipseStoreEmptyImport()
80+
void testEclipseStoreEmptyImport(@Autowired final EclipseStoreDataImporterComponent eclipseStoreDataImporter)
8481
{
8582
final List<SimpleEclipseStoreRepository<?, ?>> simpleEclipseStoreRepositories =
86-
this.eclipseStoreDataImporter.importData();
83+
eclipseStoreDataImporter.importData();
8784
Assertions.assertEquals(1, simpleEclipseStoreRepositories.size());
8885
final List<?> allEntities = simpleEclipseStoreRepositories.get(0).findAll();
8986
Assertions.assertEquals(0, allEntities.size());

spring-data-eclipse-store-jpa/src/test/java/software/xdev/spring/data/eclipse/store/jpa/integration/TestConfiguration.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@
1717

1818
import java.nio.file.Path;
1919

20+
import org.eclipse.store.integrations.spring.boot.types.configuration.EclipseStoreProperties;
21+
import org.eclipse.store.integrations.spring.boot.types.factories.EmbeddedStorageFoundationFactory;
2022
import org.springframework.beans.factory.DisposableBean;
2123
import org.springframework.beans.factory.annotation.Autowired;
2224
import org.springframework.beans.factory.annotation.Value;
2325
import org.springframework.boot.SpringBootConfiguration;
2426
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
25-
import org.springframework.context.annotation.ComponentScan;
2627
import org.springframework.context.annotation.Configuration;
2728
import org.springframework.context.event.ContextRefreshedEvent;
2829
import org.springframework.context.event.EventListener;
@@ -33,31 +34,35 @@
3334

3435

3536
@Configuration
36-
@ComponentScan("software.xdev.spring.data.eclipse.store.importer")
3737
@EnableEclipseStoreRepositories
3838
@SpringBootConfiguration
3939
@EnableAutoConfiguration
40-
public class TestConfiguration implements DisposableBean
40+
public class TestConfiguration extends EclipseStoreClientConfiguration implements DisposableBean
4141
{
42-
@Autowired
43-
EclipseStoreClientConfiguration configuration;
44-
4542
@Value("${org.eclipse.store.storage-directory}")
4643
private String storageDirectory;
4744

45+
@Autowired
46+
protected TestConfiguration(
47+
final EclipseStoreProperties defaultEclipseStoreProperties,
48+
final EmbeddedStorageFoundationFactory defaultEclipseStoreProvider)
49+
{
50+
super(defaultEclipseStoreProperties, defaultEclipseStoreProvider);
51+
}
52+
4853
@EventListener
4954
public void handleContextRefresh(final ContextRefreshedEvent event)
5055
{
5156
// Init with empty root object
52-
this.configuration.getStorageInstance().clearData();
57+
this.getStorageInstance().clearData();
5358
}
5459

5560
@Override
5661
public void destroy() throws Exception
5762
{
5863
// End with empty root object
59-
this.configuration.getStorageInstance().clearData();
60-
this.configuration.getStorageInstance().stop();
64+
this.getStorageInstance().clearData();
65+
this.getStorageInstance().stop();
6166
FileSystemUtils.deleteRecursively(Path.of(this.storageDirectory));
6267
}
6368
}

spring-data-eclipse-store-jpa/src/test/java/software/xdev/spring/data/eclipse/store/jpa/integration/repository/PersonToTestInJpa.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,23 @@
33
import java.util.Objects;
44

55
import jakarta.persistence.Entity;
6+
import jakarta.persistence.GeneratedValue;
7+
import jakarta.persistence.GenerationType;
68
import jakarta.persistence.Id;
79

810

911
@Entity
1012
public class PersonToTestInJpa
1113
{
1214
@Id
13-
private String id;
15+
@GeneratedValue(strategy = GenerationType.AUTO)
16+
private Integer id;
1417

1518
private String firstName;
1619
private String lastName;
1720

18-
public PersonToTestInJpa(final String id, final String firstName, final String lastName)
21+
public PersonToTestInJpa(final String firstName, final String lastName)
1922
{
20-
this.id = id;
2123
this.firstName = firstName;
2224
this.lastName = lastName;
2325
}

0 commit comments

Comments
 (0)