Moved IRS demo date setting functionality to Kotlin code. Removed now redundant demo script.

This commit is contained in:
Clinton Alexander 2016-06-01 17:26:43 +01:00
parent 3d556c614f
commit 389a470400
2 changed files with 44 additions and 64 deletions

View File

@ -1,56 +0,0 @@
#!/bin/bash
mode=$1
if [ ! -e ./gradlew ]; then
echo "Run from the root directory please"
exit 1
fi
if [ ! -d build/install/r3prototyping ] && [[ "$SKIP_INSTALL" == "" ]]; then
./gradlew installDist
fi
if [[ "$mode" == "nodeA" ]]; then
if [ ! -d nodeA ]; then
mkdir nodeA
echo "myLegalName = Bank A" >nodeA/config
fi
RC=83
while [ $RC -eq 83 ]
do
build/install/r3prototyping/bin/irsdemo --role=NodeA
RC=$?
done
elif [[ "$mode" == "nodeB" ]]; then
if [ ! -d nodeB ]; then
mkdir nodeB
echo "myLegalName = Bank B" >nodeB/config
fi
RC=83
while [ $RC -eq 83 ]
do
build/install/r3prototyping/bin/irsdemo --role=NodeB
RC=$?
done
elif [[ "$mode" == "trade" && "$2" != "" ]]; then
tradeID=$2
build/install/r3prototyping/bin/irsdemo --role=Trade $tradeId
elif [[ "$mode" == "date" && "$2" != "" ]]; then
demodate=$2
echo "Setting demo date to ${demodate}"
echo "\"$demodate\"" | curl -H "Content-Type: application/json" -X PUT -d @- http://localhost:31338/api/irs/demodate
else
echo "Run like this, one in each tab:"
echo
echo " scripts/irs-demo.sh nodeA"
echo " scripts/irs-demo.sh nodeB"
echo
echo "To upload a trade as e.g. trade10"
echo " scripts/irs-demo.sh trade trade10"
echo
echo "To set the demo date, and post fixings in the interval, to e.g. 2017-01-30"
echo " scripts/irs-demo.sh date 2017-01-30"
fi

View File

@ -26,6 +26,7 @@ import java.net.URL
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths
import java.time.LocalDateTime
import java.util.*
import kotlin.concurrent.fixedRateTimer
import kotlin.system.exitProcess
@ -37,7 +38,8 @@ import kotlin.system.exitProcess
enum class IRSDemoRole {
NodeA,
NodeB,
Trade
Trade,
Date
}
class NodeParams() {
@ -50,6 +52,12 @@ class NodeParams() {
var uploadRates: Boolean = false
}
/*
echo "Setting demo date to ${demodate}"
echo "\"$demodate\"" | curl -H "Content-Type: application/json" -X PUT -d @- http://localhost:31338/api/irs/demodate
*/
fun main(args: Array<String>) {
val parser = OptionParser()
@ -66,6 +74,7 @@ fun main(args: Array<String>) {
val fakeTradeWithIdentityFile = parser.accepts("fake-trade-with-identity-file").withOptionalArg()
val tradeIdArg = parser.nonOptions("Trade ID")
val dateArg = parser.nonOptions("Date")
val options = try {
parser.parse(*args)
@ -80,9 +89,9 @@ fun main(args: Array<String>) {
val role = options.valueOf(roleArg)!!
if(role == IRSDemoRole.Trade) {
val tradeId : String? = options.valuesOf(tradeIdArg)[0]
if(tradeId != null) {
if(runTrade(tradeId)) {
val tradeId: String? = options.valuesOf(tradeIdArg)[0]
if (tradeId != null) {
if (runTrade(tradeId)) {
exitProcess(0)
} else {
exitProcess(1)
@ -91,6 +100,14 @@ fun main(args: Array<String>) {
println("Please provide a trade ID")
exitProcess(1)
}
} else if(role == IRSDemoRole.Date) {
val dateStr: String? = options.valueOf(dateArg)
if(dateStr != null) {
runDateChange(dateStr)
} else {
println("Please provide a date")
exitProcess(1)
}
} else {
val nodeParams = when (role) {
IRSDemoRole.NodeA -> createNodeAParams()
@ -124,7 +141,18 @@ fun main(args: Array<String>) {
}
}
fun runTrade(tradeId : String) : Boolean {
fun runDateChange(date: String) : Boolean{
var url = URL("http://localhost:31338/api/irs/demodate")
if(putJson(url, "\"" + date + "\"")) {
println("Date changed")
return true
} else {
println("Date failed to change")
return false
}
}
fun runTrade(tradeId: String) : Boolean {
println("Uploading tradeID " + tradeId)
val fileContents = Files.readAllBytes(Paths.get("scripts/example-irs-trade.json"))
val tradeFile = String(fileContents).replace("tradeXXX", tradeId)
@ -174,11 +202,11 @@ fun runUploadRates() {
})
}
fun postJson(url: URL, data: String) : Boolean {
fun sendJson(url: URL, data: String, method: String) : Boolean {
val connection = url.openConnection() as HttpURLConnection
connection.doOutput = true
connection.useCaches = false
connection.requestMethod = "POST"
connection.requestMethod = method
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Cache-Control", "no-cache")
connection.setRequestProperty("Content-Type", "application/json");
@ -190,11 +218,19 @@ fun postJson(url: URL, data: String) : Boolean {
if (connection.responseCode == 200) {
return true
} else {
println("Failed to post data. Status Code: " + connection + ". Mesage: " + connection.responseMessage)
println("Failed to " + method + " data. Status Code: " + connection + ". Mesage: " + connection.responseMessage)
return false
}
}
fun putJson(url: URL, data: String) : Boolean {
return sendJson(url, data, "PUT")
}
fun postJson(url: URL, data: String) : Boolean {
return sendJson(url, data, "POST")
}
fun uploadFile(url: URL, file: ByteArray) : Boolean {
val boundary = "===" + System.currentTimeMillis() + "===";
val connection = url.openConnection() as HttpURLConnection