<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div><div>Hello Stackers,</div><div><br></div><div>Disclaimer: I'm on a quest to develop a new agent, already have coding a few lines. The next step is Unit Testing and enabling me to create a patch to test on a devstack. So, this is what brings me here, the need to understand and learn the best-pratices or rules to develop Unit Tests on the Ceilometer project.</div><div><br></div><div>I probably should mention that my Unit Tests knowledge should be classified as Basic (on a Java environment). I could synthesise it as: "I need to create a block the code and assert the output against with I expected". </div><div>In this project seems a little bit more complex.</div><div>I have read it about Mock and Fixtures, the first one nevertheless the complexity it's much more easy to read and understand.</div><div><br></div><div>I will try to put this problem simply as possible.</div><div>I have analyze several files:</div><div><ul><li>ceilometer/central/test_manager.py</li><li>ceilometer/compute/test_manager.py</li><li>ceilometer/compute/pollsters/test_cpu.py</li><li>ceilometer/agentbase.py</li><li>ceilometer/base.py</li></ul></div><div>And I need to confess I'm a little lost on this part. I have realised that I should create a test for the manager and for every pollster and to the plugin if I think it is necessary.</div><div>So that being said, I infered the following topics:</div><div><ul><li>on my test_manager.py I should declare two classes: TestManager and TestRunTasks</li><ul><li>the first one should be responsible by test the manager.py of my agent, with 'test_load_plugins' verify if there is any pollster associated to this agent (seems to be straightforward)</li><li>the second one should be responsible by test the pollsters/*.py of my agent and in this case the things complicate a little bit...</li></ul></ul></div><div>Have I infered correctly? Anyone disagrees?</div><div><br></div><div>Moving forward...</div><div>Following the code on ceilometer/{central, compute}/test_manager.py, the method setUp(...) raises some questions, why to use setUp if we have already have a create_manager(...)? Should be for creating samples/alarms?</div><div>I have already figure out that .useFixture() comes from fixtures package: "The method useFixture will use another fixture, call setUp on it, call self.addCleanup(thefixture.cleanUp), attach any details from it and return the fixture. This allows simple composition of different fixtures."</div><div>Again, lost! Where are declarations of agents/ceilometer fixtures? How should I use them?</div><div><br></div><div>After that every test_* in TestRunTasks should execute a different test on which data? In every of them I must create the sample?</div><div><br></div><div>Where do I test the get_samples(), publish(), pipepline(sources, sinks) matters? In this files too?</div><div><br></div><div>I appreciate a lot your atention and patience with me. Thank you in advance.</div><div>Best Regards,</div></div><div apple-content-edited="true">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>Paulo J. Nascimento Oliveira<br><a href="http://about.me/pnascimento" target="_blank">http://about.me/pnascimento</a></div><div><div style="orphans: 2; widows: 2; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Advanced Telecommunications and Networks Group - <a href="http://atnog.av.it.pt">http://atnog.av.it.pt</a></div><div style="orphans: 2; widows: 2; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Follow us - @ATNoG_ITAv</div></div></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br></body></html>