Gatling Tool in Action at DevoxxFR 2012

3,602 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
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,602
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

×