Skip to content

Commit

Permalink
KAA-1423: All comments fixed.
Browse files Browse the repository at this point in the history
  • Loading branch information
vchizhevsky committed Dec 15, 2016
1 parent fa0c7f9 commit b0784e3
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 31 deletions.
Expand Up @@ -26,19 +26,19 @@ public class EndpointSpecificConfigurationDto implements Serializable {
private byte[] endpointKeyHash; private byte[] endpointKeyHash;
private Integer configurationSchemaVersion; private Integer configurationSchemaVersion;
private String configuration; private String configuration;
private Long specificConfigurationVersion; private Long version;


public EndpointSpecificConfigurationDto() { public EndpointSpecificConfigurationDto() {
} }


/** /**
* All-args constructor. * All-args constructor.
*/ */
public EndpointSpecificConfigurationDto(byte[] endpointKeyHash, Integer configurationSchemaVersion, String configuration, Long specificConfigurationVersion) { public EndpointSpecificConfigurationDto(byte[] endpointKeyHash, Integer configurationSchemaVersion, String configuration, Long version) {
this.endpointKeyHash = endpointKeyHash; this.endpointKeyHash = endpointKeyHash;
this.configurationSchemaVersion = configurationSchemaVersion; this.configurationSchemaVersion = configurationSchemaVersion;
this.configuration = configuration; this.configuration = configuration;
this.specificConfigurationVersion = specificConfigurationVersion; this.version = version;
} }


public Integer getConfigurationSchemaVersion() { public Integer getConfigurationSchemaVersion() {
Expand All @@ -65,12 +65,12 @@ public void setEndpointKeyHash(byte[] endpointKeyHash) {
this.endpointKeyHash = endpointKeyHash; this.endpointKeyHash = endpointKeyHash;
} }


public Long getSpecificConfigurationVersion() { public Long getVersion() {
return specificConfigurationVersion; return version;
} }


public void setSpecificConfigurationVersion(Long specificConfigurationVersion) { public void setVersion(Long version) {
this.specificConfigurationVersion = specificConfigurationVersion; this.version = version;
} }


@Override @Override
Expand Down
Expand Up @@ -89,13 +89,9 @@ public EndpointSpecificConfiguration save(EndpointSpecificConfigurationDto dto)
CassandraEndpointSpecificConfiguration configuration = CassandraEndpointSpecificConfiguration configuration =
findByEndpointKeyHashAndConfigurationVersion(dto.getEndpointKeyHash(), dto.getConfigurationSchemaVersion()); findByEndpointKeyHashAndConfigurationVersion(dto.getEndpointKeyHash(), dto.getConfigurationSchemaVersion());
if (configuration != null) { if (configuration != null) {
configuration.setConfiguration(dto.getConfiguration()); dto.setVersion(configuration.getVersion());
configuration.setConfigurationVersion(dto.getConfigurationSchemaVersion());
configuration.setEndpointKeyHash(getByteBuffer(dto.getEndpointKeyHash()));
save(configuration);
} else {
configuration = save(new CassandraEndpointSpecificConfiguration(dto));
} }
configuration = save(new CassandraEndpointSpecificConfiguration(dto));
if (LOG.isTraceEnabled()) { if (LOG.isTraceEnabled()) {
LOG.trace("Saved: {}", configuration); LOG.trace("Saved: {}", configuration);
} else { } else {
Expand Down
Expand Up @@ -68,7 +68,7 @@ public CassandraEndpointSpecificConfiguration(EndpointSpecificConfigurationDto d
this.endpointKeyHash = getByteBuffer(dto.getEndpointKeyHash()); this.endpointKeyHash = getByteBuffer(dto.getEndpointKeyHash());
this.configurationVersion = dto.getConfigurationSchemaVersion(); this.configurationVersion = dto.getConfigurationSchemaVersion();
this.configuration = dto.getConfiguration(); this.configuration = dto.getConfiguration();
this.version = dto.getSpecificConfigurationVersion(); this.version = dto.getVersion();
} }


@Override @Override
Expand All @@ -77,7 +77,7 @@ public EndpointSpecificConfigurationDto toDto() {
dto.setEndpointKeyHash(getBytes(this.getEndpointKeyHash())); dto.setEndpointKeyHash(getBytes(this.getEndpointKeyHash()));
dto.setConfiguration(this.getConfiguration()); dto.setConfiguration(this.getConfiguration());
dto.setConfigurationSchemaVersion(this.getConfigurationVersion()); dto.setConfigurationSchemaVersion(this.getConfigurationVersion());
dto.setSpecificConfigurationVersion(this.getVersion()); dto.setVersion(this.getVersion());
return dto; return dto;
} }


Expand Down
Expand Up @@ -22,11 +22,19 @@
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.kaaproject.kaa.common.dto.EndpointSpecificConfigurationDto; import org.kaaproject.kaa.common.dto.EndpointSpecificConfigurationDto;
import org.kaaproject.kaa.server.common.dao.exception.KaaOptimisticLockingFailureException;
import org.kaaproject.kaa.server.common.dao.model.EndpointSpecificConfiguration; import org.kaaproject.kaa.server.common.dao.model.EndpointSpecificConfiguration;
import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/cassandra-client-test-context.xml") @ContextConfiguration(locations = "/cassandra-client-test-context.xml")
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
Expand All @@ -38,6 +46,7 @@ public class EndpointSpecificConfigurationCassandraDaoTest extends AbstractCassa
private EndpointSpecificConfigurationDto saved1; private EndpointSpecificConfigurationDto saved1;
private EndpointSpecificConfigurationDto saved2; private EndpointSpecificConfigurationDto saved2;
private EndpointSpecificConfigurationDto saved3; private EndpointSpecificConfigurationDto saved3;
private ExecutorService executorService = Executors.newFixedThreadPool(10);


@Test @Test
public void testRemoveByEndpointKeyHashAndConfigurationVersion() throws Exception { public void testRemoveByEndpointKeyHashAndConfigurationVersion() throws Exception {
Expand All @@ -60,10 +69,21 @@ public void testFindByEndpointKeyHashAndConfigurationVersion() throws Exception
Assert.assertNull(found4); Assert.assertNull(found4);
} }


@Test @Test(expected = KaaOptimisticLockingFailureException.class)
public void testLocking() throws Exception { public void testLocking() throws Throwable {
saved1 = generateEpsConfigurationDto(KEY, 1, BODY, 9L); List<Future<?>> tasks = new ArrayList<>();
saved2 = generateEpsConfigurationDto(KEY, 1, BODY, 9L); for (int i = 0; i < 100; i++) {
tasks.add(executorService.submit((Runnable) () -> {
endpointSpecificConfigurationDao.save(saved1);
}));
}
for (Future future : tasks) {
try {
future.get();
} catch (ExecutionException ex) {
throw ex.getCause();
}
}
} }


@Before @Before
Expand Down
Expand Up @@ -60,13 +60,9 @@ public EndpointSpecificConfiguration save(EndpointSpecificConfigurationDto dto)
MongoEndpointSpecificConfiguration configuration = MongoEndpointSpecificConfiguration configuration =
(MongoEndpointSpecificConfiguration) findByEndpointKeyHashAndConfigurationVersion(dto.getEndpointKeyHash(), dto.getConfigurationSchemaVersion()); (MongoEndpointSpecificConfiguration) findByEndpointKeyHashAndConfigurationVersion(dto.getEndpointKeyHash(), dto.getConfigurationSchemaVersion());
if (configuration != null) { if (configuration != null) {
configuration.setConfiguration(dto.getConfiguration()); dto.setVersion(configuration.getVersion());
configuration.setConfigurationVersion(dto.getConfigurationSchemaVersion());
configuration.setEndpointKeyHash(dto.getEndpointKeyHash());
save(configuration);
} else {
configuration = save(new MongoEndpointSpecificConfiguration(dto));
} }
configuration = save(new MongoEndpointSpecificConfiguration(dto));
if (LOG.isTraceEnabled()) { if (LOG.isTraceEnabled()) {
LOG.trace("Saved: {}", configuration); LOG.trace("Saved: {}", configuration);
} else { } else {
Expand Down
Expand Up @@ -64,7 +64,7 @@ public MongoEndpointSpecificConfiguration(EndpointSpecificConfigurationDto dto)
this.endpointKeyHash = dto.getEndpointKeyHash(); this.endpointKeyHash = dto.getEndpointKeyHash();
this.configurationVersion = dto.getConfigurationSchemaVersion(); this.configurationVersion = dto.getConfigurationSchemaVersion();
this.configuration = dto.getConfiguration(); this.configuration = dto.getConfiguration();
this.version = dto.getSpecificConfigurationVersion(); this.version = dto.getVersion();
generateId(); generateId();
} }


Expand All @@ -74,7 +74,7 @@ public EndpointSpecificConfigurationDto toDto() {
dto.setEndpointKeyHash(this.getEndpointKeyHash()); dto.setEndpointKeyHash(this.getEndpointKeyHash());
dto.setConfiguration(this.getConfiguration()); dto.setConfiguration(this.getConfiguration());
dto.setConfigurationSchemaVersion(this.getConfigurationVersion()); dto.setConfigurationSchemaVersion(this.getConfigurationVersion());
dto.setSpecificConfigurationVersion(this.getVersion()); dto.setVersion(this.getVersion());
return dto; return dto;
} }


Expand Down
Expand Up @@ -24,11 +24,19 @@
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.kaaproject.kaa.common.dto.EndpointSpecificConfigurationDto; import org.kaaproject.kaa.common.dto.EndpointSpecificConfigurationDto;
import org.kaaproject.kaa.server.common.dao.exception.KaaOptimisticLockingFailureException;
import org.kaaproject.kaa.server.common.dao.model.EndpointSpecificConfiguration; import org.kaaproject.kaa.server.common.dao.model.EndpointSpecificConfiguration;
import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "/mongo-dao-test-context.xml") @ContextConfiguration(locations = "/mongo-dao-test-context.xml")
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
Expand All @@ -39,6 +47,7 @@ public class EndpointSpecificConfigurationMongoDaoTest extends AbstractMongoTest
private EndpointSpecificConfigurationDto saved1; private EndpointSpecificConfigurationDto saved1;
private EndpointSpecificConfigurationDto saved2; private EndpointSpecificConfigurationDto saved2;
private EndpointSpecificConfigurationDto saved3; private EndpointSpecificConfigurationDto saved3;
private ExecutorService executorService = Executors.newFixedThreadPool(10);


@BeforeClass @BeforeClass
public static void init() throws Exception { public static void init() throws Exception {
Expand Down Expand Up @@ -71,10 +80,21 @@ public void testFindByEndpointKeyHashAndConfigurationVersion() throws Exception
Assert.assertNull(found4); Assert.assertNull(found4);
} }


@Test @Test(expected = KaaOptimisticLockingFailureException.class)
public void testLocking() throws Exception { public void testLocking() throws Throwable {
saved1 = generateEndpointSpecificConfigurationDto(KEY, 1, BODY, 8L); List<Future<?>> tasks = new ArrayList<>();
saved2 = generateEndpointSpecificConfigurationDto(KEY, 1, BODY, 8L); for (int i = 0; i < 100; i++) {
tasks.add(executorService.submit((Runnable) () -> {
endpointSpecificConfigurationDao.save(saved1);
}));
}
for (Future future : tasks) {
try {
future.get();
} catch (ExecutionException ex) {
throw ex.getCause();
}
}
} }


@Before @Before
Expand Down

0 comments on commit b0784e3

Please sign in to comment.