Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Gatling Tool in Action at DevoxxFR 2012

3,830 views

Published on

Gatling Tool in Action talk @DevoxxFr 2012.

Gatling is an effecient asynchronous stress test tool.
http://gatling-tool.org

Published in: Technology
  • Be the first to comment

Gatling Tool in Action at DevoxxFR 2012

  1. 1. Réaliser des tests de charge avec Gatlingpar Stéphane Landelle @slandelle & Romain Sertelon @BluePyth 1
  2. 2. Plan•Pourquoi un nième injecteur ?•Solution•Démo 2
  3. 3. Pourquoi un nième injecteur ? 3
  4. 4. Problème 1:Les performances 4
  5. 5. 1 utilisateur = 1 thread 5
  6. 6. ~50 threads/JVM 6
  7. 7. ~2000 threads/JVM 7
  8. 8. IO bloquants 8
  9. 9. Au fait, que font ces threads? Ils attendent… 9
  10. 10. Et sinon?Ils dorment… 10
  11. 11. Problème 2:Utilisabilité &Maintenabilité 11
  12. 12. Une interface graphique ? 12
  13. 13. Du XML ?<?xml version="1.0" encoding="UTF-8"?><jmeterTestPlan version="1.2" properties="2.1"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel"testclass="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController"guiclass="LoopControlPanel"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1500</stringProp> <stringProp name="ThreadGroup.ramp_time">200</stringProp> 13
  14. 14. Solution•Portable (JVM)•Réellement asynchrone•Ergonomique•Evolutive 14
  15. 15. Async = Acteurs 15
  16. 16. Async = IO non bloquants• Netty• Async Http Client 16
  17. 17. Scénarios = DSL 17
  18. 18. Scénarios = codeval scn = scenario("My Scenario") .exec(http("Login page").get("/login.html")) .exec(http("Login").post("/login") .param("username", "foo") .param("password", "bar")) .loop( chain.exec(http("Home").get("/home.html") .check(regex("""<a href="/account/(ACC[0-9]*)">""")) ) ).times(5) 18
  19. 19. Démo ! 19
  20. 20. Screenshot recorder 1 20
  21. 21. Screenshot recorder 2 21
  22. 22. Conclusionhttp://gatling-tool.org@GatlingToolhttps://github.com/excilys/gatling 22

×