Je suis en train d'introduire cassandra unité pour un ensemble de UTs courir avec org.gradle.parallel=true
pour une application au printemps-démarrage.cassandra unité pour une suite de Java donnant UTs des pannes intermittentes si org.gradle.parallel = true
L'exécution de tous les tests n'est pas fiable, mais fonctionne parfois.
Je suppose que cela est lié au problème décrit à https://github.com/jsevellec/cassandra-unit/issues/155, c'est-à-dire que la première instance est encore en attente au prochain démarrage de UT et qu'il n'y a aucun moyen de l'arrêter rapidement.
Mon approche originale qui donne des résultats peu fiables est avec org.gradle.parallel=true
-à-dire
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@TestExecutionListeners(
listeners = CassandraUnitTestExecutionListener.class,
mergeMode = MERGE_WITH_DEFAULTS
)
@CassandraDataSet
@EmbeddedCassandra
public class MyCassandraUnitTest {
@Test
public void xxx_xxx() {
}
}
comme décrit à cassandra-unit/wiki et StephanPraetsch github example
Pour contourner ce problème, j'ai essayé de supprimer les annotations et au lieu d'utiliser l'API native-à-dire essayer de garder une course pour tous les tests, et avec org.gradle.parallel=false
cela semble être fiable, mais ralentit la construction globale. (Test encore pour assurer sa non coïncidence) Avec cette approche
Avant unité de classe:
EmbeddedCassandraServerHelper.startEmbeddedCassandra();
et après l'unité de classe:
EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();
comme décrit à - https://github.com/jsevellec/cassandra-unit/wiki/How-to-use-it-in-your-code.
L'erreur que je reçois avec la première approche est temporisations comme
00:27:31.826 [Test worker] ERROR org.cassandraunit.utils.EmbeddedCassandraServerHelper - Cassandra daemon did not start after 20000 ms. Consider increasing the timeout
ou bien des conflits de port comme
2017-02-02 19:44:41.741 ERROR 40053 --- [pool-2-thread-1] o.a.cassandra.service.CassandraDaemon : Fatal configuration error
org.apache.cassandra.exceptions.ConfigurationException: /127.0.0.1:7010 is in use by another process. Change listen_address:storage_port in cassandra.yaml to values that do not conflict with other services
at org.apache.cassandra.net.MessagingService.getServerSockets(MessagingService.java:557)
at org.apache.cassandra.net.MessagingService.listen(MessagingService.java:501)
at org.apache.cassandra.net.MessagingService.listen(MessagingService.java:485)
at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:745)
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:648)
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:548)
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:385)
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:601)
at org.cassandraunit.utils.EmbeddedCassandraServerHelper$1.run(EmbeddedCassandraServerHelper.java:129)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
2017-02-02 19:44:41.745 INFO 40053 --- [ Thread-7] o.s.w.c.s.GenericWebApplicationContext : Closing org.s[email protected]7ffd8dee: startup date [Thu Feb 02 19:44:17 GMT 2017]; root of context hierarchy
2017-02-02 19:44:41.972 WARN 40053 --- [iceShutdownHook] org.apache.cassandra.gms.Gossiper : No local state or state is in silent shutdown, not announcing shutdown
2017-02-02 19:44:41.972 INFO 40053 --- [iceShutdownHook] o.apache.cassandra.net.MessagingService : Waiting for messaging service to quiesce
2017-02-02 19:44:41.982 INFO 40053 --- [iceShutdownHook] org.apache.cassandra.hints.HintsService : Paused hints dispatch
2017-02-02 19:44:42.072 INFO 40053 --- [iceShutdownHook] org.apache.cassandra.hints.HintsService : Paused hints dispatch