Hello Stackers,

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.

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". 
In this project seems a little bit more complex.
I have read it about Mock and Fixtures, the first one nevertheless the 
complexity it's much more easy to read and understand.

I will try to put this problem simply as possible.
I have analyze several files:
ceilometer/central/test_manager.py
ceilometer/compute/test_manager.py
ceilometer/compute/pollsters/test_cpu.py
ceilometer/agentbase.py
ceilometer/base.py
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.
So that being said, I infered the following topics:
on my test_manager.py I should declare two classes: TestManager and TestRunTasks
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)
the second one should be responsible by test the pollsters/*.py of my agent and 
in this case the things complicate a little bit...
Have I infered correctly? Anyone disagrees?

Moving forward...
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?
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."
Again, lost! Where are declarations of agents/ceilometer fixtures? How should I 
use them?

After that every test_* in TestRunTasks should execute a different test on 
which data? In every of them I must create the sample?

Where do I test the get_samples(), publish(), pipepline(sources, sinks) 
matters? In this files too?

I appreciate a lot your atention and patience with me. Thank you in advance.
Best Regards,
Paulo J. Nascimento Oliveira
http://about.me/pnascimento
Advanced Telecommunications and Networks Group - http://atnog.av.it.pt
Follow us - @ATNoG_ITAv



_______________________________________________
OpenStack-dev mailing list
[email protected]
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to