Unable to run Iago against HTTP/REST service

67 views
Skip to first unread message

Timothy Perrigo

unread,
Jan 11, 2016, 9:31:13 AM1/11/16
to Iago Users
I have a very simple REST service (using Finch and Finagle) running on my local machine.  I created a ParrotLauncherConfig based on the Iago web.scala example as well as Julian Rendell's HttpExample-Config.scala.  After initially building Iago, I was able to run a short (1 minute) test at a requestRate of 10.  That was the only time I've had a successful run-- every attempt since has errored out, even after rebuilding Iago and even deleting my installation and re-cloning the repository and rebuilding.  I never received an error message from Iago; the run would just abruptly end before a single request had been issued.  After adding "customLogSource = """try { error("exception") } catch { case ex => println(ex.printStackTrace()) }""" (from Julian's example), I was able to get the following output:

sh scripts/local-parrot.sh
stdout: /usr/lib/jvm/java-8-openjdk-amd64/bin/java -server -XX:+UseConcMarkSweepGC -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseParNewGC -Xloggc:gc-server.log -Xmx4000m -Xms4000m -XX:NewSize=512m com.twitter.parrot.server.ServerMain -f config/target/parrot-server.scala
stdout: /usr/lib/jvm/java-8-openjdk-amd64/bin/java -server -XX:+UseConcMarkSweepGC -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseParNewGC -Xloggc:gc-feeder.log -Xmx1744m -Xms1744m -XX:NewSize=512m com.twitter.parrot.feeder.FeederMain -f config/target/parrot-feeder.scala
stdout: ()
stderr: Jan 11, 2016 7:50:20 AM com.twitter.finagle.Init$ apply
stderr: INFO: Finagle version 6.11.1 (rev=83de11a66b498351418433bcad00cbf4b7dc495c) built at 20140122-140449
stderr: java.lang.RuntimeException: exception
stderr: at scala.sys.package$.error(package.scala:27)
stderr: at scala.Predef$.error(Predef.scala:142)
stderr: at Evaluator__parrot$2dfeeder_5744c390a84a50b18eff3bc765a481e85cec76f8$$anon$1.<init>((inline):30)
stderr: at Evaluator__parrot$2dfeeder_5744c390a84a50b18eff3bc765a481e85cec76f8.apply((inline):13)
stderr: at Evaluator__parrot$2dfeeder_5744c390a84a50b18eff3bc765a481e85cec76f8.apply((inline):1)
stderr: at com.twitter.util.Eval.applyProcessed(Eval.scala:197)
stderr: at com.twitter.util.Eval.apply(Eval.scala:167)
stderr: at com.twitter.ostrich.admin.RuntimeEnvironment.loadConfig(RuntimeEnvironment.scala:238)
stderr: at com.twitter.ostrich.admin.RuntimeEnvironment.loadRuntimeConfig(RuntimeEnvironment.scala:264)
stderr: at com.twitter.parrot.feeder.FeederMain$.main(FeederMain.scala:26)
stderr: at com.twitter.parrot.feeder.FeederMain.main(FeederMain.scala)

I know Iago itself requires scala 2.10 (and my service was built using 2.11), but I tried building and running Iago with 2.10.3 and still got a RuntimeException before any requests were issued.  Right now I'm completely stumped...I have no idea why I would get 1 successful run but every subsequent attempt errors out (even with the same config that I used originally, which was essentially a copy of the web.scala example).  Does anyone have any suggestions?  Is Iago actively being used / developed?  (It looks like the last change to the project was 10 months ago).  

Any help would be very much appreciated!

Thanks,
Tim

Timothy Perrigo

unread,
Jan 13, 2016, 8:36:28 AM1/13/16
to Iago Users
I found the cause of my initial problem-- it seems that the ParrotServer remained alive after my test completed, so every initial run (even after rebuilding / unpacking, etc) failed because the port it uses was still bound to by the ParrotServer from the initial run.  Once I manually killed it, I was able to run another test, but again, after the test ran (the duration parameter was set to 60 seconds), the ParrotServer was still running.  Is there any way around this? (Or am I doing something wrong?).  

Right now I'm just trying to familiarize myself with Iago, so I'm just running the jar file produced from building the distribution, but I'd like to use it as a library...there's very little documentation regarding how to do this, and I haven't been able to find any full examples of how to do so...Can anyone offer any suggestions or point me towards some examples?

I'm also curious as to whether Iago will continue to be supported / developed...There seems to be little traffic on this list, and the project itself seems to have had little development over the past two years.  Are there any similar open source projects for load testing REST, Thrift, etc, services?

Thanks,
Tim
Reply all
Reply to author
Forward
0 new messages