@@ -3,10 +3,16 @@ package net.corda.node.persistence
3
3
import net.corda.core.utilities.getOrThrow
4
4
import net.corda.node.flows.isQuasarAgentSpecified
5
5
import net.corda.node.internal.ConfigurationException
6
+ import net.corda.nodeapi.internal.persistence.CouldNotCreateDataSourceException
7
+ import net.corda.nodeapi.internal.persistence.HibernateSchemaChangeException
8
+ import net.corda.testing.core.ALICE_NAME
6
9
import net.corda.testing.driver.DriverParameters
7
10
import net.corda.testing.driver.NodeParameters
8
11
import net.corda.testing.driver.driver
12
+ import net.corda.testing.node.TestCordapp
9
13
import org.junit.Test
14
+ import net.corda.testing.node.internal.startNode
15
+ import org.assertj.core.api.Assertions.assertThatExceptionOfType
10
16
import kotlin.test.assertFailsWith
11
17
12
18
class DbSchemaInitialisationTest {
@@ -19,4 +25,27 @@ class DbSchemaInitialisationTest {
19
25
}
20
26
}
21
27
28
+ @Test(timeout = 300_000 )
29
+ fun `app migration resource is only mandatory when not in dev mode` () {
30
+ driver(DriverParameters (startNodesInProcess = true ,
31
+ cordappsForAllNodes = emptyList(),
32
+ allowHibernateToManageAppSchema = false )) {
33
+ // in dev mode, it fails because the schema of our test CorDapp is missing
34
+ assertThatExceptionOfType(HibernateSchemaChangeException ::class .java)
35
+ .isThrownBy {
36
+ startNode(NodeParameters (additionalCordapps = listOf (TestCordapp .findCordapp(" net.corda.testing.missingmigrationcordapp" )))).getOrThrow()
37
+ }
38
+ .withMessage(" Incompatible schema change detected. Please run schema migration scripts (node with sub-command run-migration-scripts). Reason: Schema-validation: missing table [test_table]" )
39
+
40
+ // without devMode, it doesn't even get this far as it complains about the schema migration missing.
41
+ assertThatExceptionOfType(CouldNotCreateDataSourceException ::class .java)
42
+ .isThrownBy {
43
+ startNode(
44
+ ALICE_NAME ,
45
+ false ,
46
+ NodeParameters (additionalCordapps = listOf (TestCordapp .findCordapp(" net.corda.testing.missingmigrationcordapp" )))).getOrThrow()
47
+ }
48
+ .withMessage(" Could not create the DataSource: No migration defined for schema: net.corda.testing.missingmigrationcordapp.MissingMigrationSchema v1" )
49
+ }
50
+ }
22
51
}
0 commit comments