Yo-cordapp Build Exception at Test Step: FlowStateMachineImpl


(Tony Byorick) #1

I’m running JDK 8 on Ubuntu 16.04.1 LTS and performed steps in the readme of yo-cordapp to download and build the following sample app:

  roger3cev/yo-cordapp

The build ran okay until the testing step when the following message was generated:

net.corda.yo.YoTests > flowWorksCorrectly FAILED
java.util.concurrent.ExecutionException at Tests.kt:95
Caused by: java.lang.IllegalArgumentException

An additional message directed me to the following file:

 yo-cordapp/build/reports/tests/test/index.html

Which I reviewed and found:

java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Fiber class net.corda.node.services.statemachine.FlowStateMachineImpl has not been instrumented.

Before posting this question, I searched the forum and found Help with Flow testing where the answer was add the java agent to the command line with:

-javaagent:path-to-quasar-jar.jar

However, not sure if this solution applies in my case for the sample app which was built through the gradle wrapper as in:

  1. git clone https://github.com/roger3cev/yo-cordapp.git
  2. cd yo-cordapp
  3. ./gradlew deployNodes

Prior to this, I successfully ran the build for “cordapp-template-offline” on the same machine which succeeded and then used ./runnodes to start several nodes.

Any thoughts regarding the yo-cordapp build-test exception appreciated.

-Tony


(Roger Willis) #2

This is my bad! I rebased the yo-cordapp to M12 today but forgot to include the following line in the build.gradle file:

apply plugin: 'net.corda.plugins.quasar-utils'

If you git pull this should be fixed now.

Apologies for the inconvenience!


(Tony Byorick) #3

That worked! Thank you!

Aside from one message about "‘partyFromName(String): Party?’ being deprecated, the build now runs successfully and ./runnodes started up a controller and nodes A and B.

The ReadMe contains example URLs to interact with the app. I tried these and found that “yo/me” and “yo/peers” returned data okay; however sending a yo with “yo/yo?target=NodeB” seems to return an error message as shown below.

http://localhost:10007/api/yo/yo?target=NodeB
"badly formatted directory string"

http://localhost:10010/api/yo/me
{
“me” : “CN=NodeB,O=NodeB,L=London,C=UK”
}

http://localhost:10010/api/yo/peers
{
“peers” : [ “CN=Controller,O=R3,OU=corda,L=London,C=UK”, “CN=NodeA,O=NodeA,L=London,C=UK”, “CN=NodeB,O=NodeB,L=London,C=UK” ]
}

Not sure if I missed a step somewhere. Will try checking the Node A log.


(Roger Willis) #4

Ah, apologies again, I didn’t update the readme. I’ll do so now.

Now in M12, nodes are named using X500 names therefore instead of NodeA or NodeB you can use:

CN=NodeA,O=NodeA,L=London,C=UK
CN=NodeB,O=NodeB,L=London,C=UK

Typing in the X500 names it a bit tedious - I’ll see if we can add an ‘alias’ feature for ease of testing / debugging.

Cheers!


(Tony Byorick) #5

That worked!

http://localhost:10007/api/yo/yo?target=CN=NodeB,O=NodeB,L=London,C=UK

Yo just send a Yo! to CN=NodeB,O=NodeB,L=London,C=UK

This is nice. A great way to get started with Corda!


(Roger Willis) #6

Ah great! :slight_smile:

Let me know if you have any questions around how it all works. If you follow everything in the Yo! CorDapp then I’d recommend having a look at:

Cheers!


(Tony Byorick) #7

Yes… I’ll spend some time looking closer at Yo but will then check out your two recommended apps. Thanks again!


(Gareth Kanter) #8

Hi, I’m having a similar problem with the FlowStateMachineImpl error message when I run my FlowTest. I am using the cordapp-template (https://github.com/corda/cordapp-template). I checked the build.gradle file and the apply plugin: 'net.corda.plugins.quasar-utils line is in there.

If anyone knows where I might have gone wrong, I would greatly appreciate the help.

Thanks,
Gareth