preventing craziness
play

Preventing craziness A deep dive into OpenStack testing automation - PowerPoint PPT Presentation

Preventing craziness A deep dive into OpenStack testing automation Thierry Carrez (@tcarrez) Release manager, OpenStack OpenStack is large & growing 95+ code repositories 1.9+ MLOC Stats by OpenStack is complex 9 integrated


  1. Preventing craziness A deep dive into OpenStack testing automation Thierry Carrez (@tcarrez) Release manager, OpenStack

  2. OpenStack is large & growing  95+ code repositories  1.9+ MLOC Stats by

  3. OpenStack is complex  9 integrated projects  Each project is a framework

  4. OpenStack is painful  Diffjcult to deploy  Diffjcult to test  Diffjcult to keep up with changes

  5. OpenStack is open innovation  Anyone can propose a change  Lots of difgerent companies  No traditional management structure  Technical meritocracy (no DFL)  Global community

  6. And yet...  We release every 6 months  Master branches are always usable  We keep on growing  We retained (most of) our sanity

  7. 1. Code reviews  Everyone's code should be reviewed  At worse it's a learning opportunity  Elite committers vs. Peer reviewers  Everyone can review

  8. 2. Automated testing  Not tested → Not working  Not automatically tested → Not tested

  9. 2. Automated testing  Unit tests  Integration tests  Upgrade tests  Syntax tests (PEP8)  Hacking style tests (fmake8/hacking)

  10. 3. Trunk gating  Do not merge unless it passes tests  « Automation for code review »  Always-good trunk

  11. All together now... Your git github branch developer git.o.o reviewers review.o.o infrastructure master git PEP8 branch Hacking Unit tests tarballs.o.o Integration tests

  12. git  git is used everywhere  git is fast & powerful  git-review lets us submit to Gerrit  Github only used as a repo mirror

  13. Gerrit  Code review  Inline comments, vote tracking

  14. Gerrit

  15. Gerrit

  16. Gerrit  Code review  Inline comments, vote tracking  Issues :  Automating confjguration (Jeepyb)  no private reviews

  17. Zuul  Triggered by gerrit event fjrehose  Handles test pipelines (see later)  Launches tests  Uses Gearman to distribute tests  Reports results back to Gerrit

  18. Jenkins  Runs tests on slaves  Nodepool ensures slaves availability  Devstack-gate scripts prepare slaves  Issues :  Jjb  Avoid plugins  Not really useful at this point

  19. All together now... Repository Jenkins git clone Branch git review Gearman jenkins plugin Gerrit stream-event Nodepool Gerrit Zuul Zuul Gerrit reporter Job results

  20. Everyone loves numbers  900 patchsets proposed per day  4000 Gerrit comments/votes per day  7 Jenkins masters, 250-500 slaves  15K test jobs per day  200 patchsets merged per day

  21. Scaling Jenkins & Gerrit  Multiple master setup  Log storage : logstash, Gearman  Log search : ElasticSearch / Kibana  Mirroring master git repo to cgit pool

  22. Gating at scale 1 2 3 4  Serial gating is easy but limited

  23. Serial gating 1

  24. Serial gating 1 1 2

  25. Serial gating 1 1 2 1 2 3

  26. Serial gating 1 1 2 1 2 3 1 2 4

  27. Gating at scale 1 2 3 4  Serial gating is easy but limited  Parallel gating ? Yay clouds  But parallel gating may introduce fails

  28. Parallel gating 1 2 3 4

  29. Parallel gating 1 2 3 4

  30. Gating at scale 1 2 3 4  Serial gating is easy but limited  Parallel gating ? Yay clouds  But parallel gating may introduce fails  Zuul : Speculative execution of tests

  31. Speculative gating 1 1 2 1 2 3 1 2 3 4

  32. Speculative gating 1 1 2 1 2 3 1 2 3 4

  33. Speculative gating 1 1 2 1 2 3 1 2 3 4

  34. Speculative gating 1 1 2 1 2 3 1 2 3 4 1 2 4

  35. Speculative gating 1 1 2 1 2 3 1 2 3 4 1 2 4

  36. Speculative gating 1 1 2 1 2 3 1 2 3 4 1 2 4

  37. Speculative vs. serial gating 1 1 2 1 2 3 1 2 3 4 1 2 4 1 1 2 1 2 3 1 2 4

  38. Visualizing Zuul

  39. False negatives

  40. Tracking rechecks

  41. Tracking rechecks

  42. Failure tracking by signature

  43. Elastic rechecks

  44. Automation for the win http://xkcd.com/1205

  45. Infrastructure as code  Puppet-driven infrastructure  All project infrastructure is open  Yes, everything is in a code repo  Apply our key principles to infra too

  46. Join us !  State-of-the-art dev infrastructure  Openly developed  Reused at Wikimedia and elsewhere #openstack-infra on

  47. Questions ? thierry@openstack.org http://fnords.wordpress.com @tcarrez on ttx on

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend