mirror of
https://github.com/corda/corda.git
synced 2025-05-09 12:02:56 +00:00
parent
c39c61ecab
commit
c667df9bec
@ -22,6 +22,7 @@ import net.corda.testing.node.internal.enclosedCordapp
|
|||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
import kotlin.streams.toList
|
||||||
import kotlin.test.assertFailsWith
|
import kotlin.test.assertFailsWith
|
||||||
|
|
||||||
// TraderDemoTest already has a test which checks the node can resume a flow from a checkpoint
|
// TraderDemoTest already has a test which checks the node can resume a flow from a checkpoint
|
||||||
@ -48,9 +49,6 @@ class FlowCheckpointVersionNodeStartupCheckTest {
|
|||||||
CheckpointIncompatibleException.CordappNotInstalledException(ReceiverFlow::class.java.name).message
|
CheckpointIncompatibleException.CordappNotInstalledException(ReceiverFlow::class.java.name).message
|
||||||
)
|
)
|
||||||
|
|
||||||
// Clean-up
|
|
||||||
stdOutLogFile(BOB_NAME).let { it.renameTo("${it.fileName}-no-cordapp") }
|
|
||||||
|
|
||||||
// Now test the scenerio where the CorDapp's hash is different but the flow exists within the jar
|
// Now test the scenerio where the CorDapp's hash is different but the flow exists within the jar
|
||||||
val modifiedCordapp = defaultCordapp.copy(name = "${defaultCordapp.name}-modified")
|
val modifiedCordapp = defaultCordapp.copy(name = "${defaultCordapp.name}-modified")
|
||||||
assertThat(defaultCordapp.jarFile.hash).isNotEqualTo(modifiedCordapp.jarFile.hash) // Just double-check the hashes are different
|
assertThat(defaultCordapp.jarFile.hash).isNotEqualTo(modifiedCordapp.jarFile.hash) // Just double-check the hashes are different
|
||||||
@ -90,7 +88,10 @@ class FlowCheckpointVersionNodeStartupCheckTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun DriverDSL.stdOutLogFile(name: CordaX500Name): Path {
|
private fun DriverDSL.stdOutLogFile(name: CordaX500Name): Path {
|
||||||
return baseDirectory(name).list { it.filter { it.toString().endsWith("stdout.log") }.findAny().get() }
|
return baseDirectory(name)
|
||||||
|
.list { it.filter { it.toString().endsWith("stdout.log") }.toList() }
|
||||||
|
.sortedBy { it.attributes().creationTime() }
|
||||||
|
.last()
|
||||||
}
|
}
|
||||||
|
|
||||||
@InitiatingFlow
|
@InitiatingFlow
|
||||||
|
@ -3,6 +3,8 @@ package net.corda.testing.node.internal
|
|||||||
import net.corda.core.internal.div
|
import net.corda.core.internal.div
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
import java.time.ZonedDateTime
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
object ProcessUtilities {
|
object ProcessUtilities {
|
||||||
inline fun <reified C : Any> startJavaProcess(
|
inline fun <reified C : Any> startJavaProcess(
|
||||||
@ -38,8 +40,11 @@ object ProcessUtilities {
|
|||||||
inheritIO()
|
inheritIO()
|
||||||
environment()["CLASSPATH"] = classPath.joinToString(File.pathSeparator)
|
environment()["CLASSPATH"] = classPath.joinToString(File.pathSeparator)
|
||||||
if (workingDirectory != null) {
|
if (workingDirectory != null) {
|
||||||
redirectError((workingDirectory / "$className.stderr.log").toFile())
|
// Timestamp may be handy if the same process started, killed and then re-started. Without timestamp
|
||||||
redirectOutput((workingDirectory / "$className.stdout.log").toFile())
|
// StdOut and StdErr will be overwritten.
|
||||||
|
val timestamp = ZonedDateTime.now().format(DateTimeFormatter.ofPattern("HHmmss.SSS"))
|
||||||
|
redirectError((workingDirectory / "$className.$timestamp.stderr.log").toFile())
|
||||||
|
redirectOutput((workingDirectory / "$className.$timestamp.stdout.log").toFile())
|
||||||
directory(workingDirectory.toFile())
|
directory(workingDirectory.toFile())
|
||||||
}
|
}
|
||||||
}.start()
|
}.start()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user