> -----Original Message-----
> From: Pierre-Luc Dion [mailto:pd...@cloudops.com]
> Sent: Wednesday, August 20, 2014 11:20 AM
> To: dev@cloudstack.apache.org; Will Stevens
> Subject: [DISCUSSION] CI
> 
> I'd like to move this discussion out of the GIT workflow thread.
> 
> Do we have any CI strategy in place or a starting point at least?
TravisCI will be a starting point for now. It tests against simulator only.
I am working on a solution to test against KVM(that's most of users are 
concerned about) in a machine I created in 
Public cloud. It has big memory, super fast disk IO, should be a good solution 
for KVM test. It may take few days to get it work. 
They are both for simple test, and in small scale.
> 
> I've never worked with marvin I from the small understanding that I have
> from it, it might not be the right too. I don't know.
> 
> I've spend some times recently with test-kitchen and serverspec and found
> that quite promising as test platform for "real cloudstack deployment  test
> scenarios". By using test framework like Rspec the test output is clean to
> read for human and test scenarios seams quite simple to write.
> 
> I've started a rspec lib for cloudstack to enhance serverspec for CloudStack
> tests (cloudstack-rspec).  I'm wondering if it would be usable in future CI
> system for CloudStack...
I am familiar with Specs,  like Rspec, but in scala. I agree with you that the 
BDD style test case
Is easier to read/write. It's good to have, but I think before we move to new 
test framework, we should figure out the issues 
We have today in Marvin, so that we can take effort to address them, either 
fixing Marvin, or switch to a new test framework.
The issue I have in current Marvin, is that it still needs to write a lot of 
setup code for each test case, which is complicated enough. Let's take an 
Marvin test case as an example: 
https://git-wip-us.apache.org/repos/asf?p=cloudstack.git;a=blob;f=test/integration/smoke/test_vm_life_cycle.py;h=57e47c24838ffc2ec5e9af4ad3872d5e27342d91;hb=HEAD

Like this kind of code in test case setup code:

# Get Zone, Domain and templates
        cls.domain = get_domain(cls.apiclient)
        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
        cls.services['mode'] = cls.zone.networktype

        #If local storage is enabled, alter the offerings to use localstorage
        #this step is needed for devcloud
        if cls.zone.localstorageenabled == True:
            cls.services["service_offerings"]["tiny"]["storagetype"] = 'local'
            cls.services["service_offerings"]["small"]["storagetype"] = 'local'
            cls.services["service_offerings"]["medium"]["storagetype"] = 'local'

this kind of information should be provided by test framework automatically, 
instead of explicitly set in every test case.
Do you have other concerns about current Marvin, other than test style?


> 
> Also, having a CI in place for cloudstack is quite of a huge deal if we want 
> to
> validate all kind of deployment scenario, networks, hypervisor version and
> guest OS version.


Can't agree with you more.

> 
> 
> For those that have some knowledge on the CI subject in CloudStack please
> update the community. I don't feel alone being lost  about this CloudStack
> topic.

There is an update-to-date write up regarding to Marvin: 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Marvin+-+Testing+with+Python
Marvin does two things, one is to call cloudstack mgt API to add resources into 
CloudStack mgt server, such as hypervisors, primary storages, networks, and 
secondary storages etc.
Another one is to run test cases under tools/integration/smoke or any other 
python test cases.
It doesn't cover how to deploy hypervisors on real HW, how to setup primary 
storages, secondary storage etc. That's something like test-kitchen and 
serverspec can help, I think.

> 
> Thanks,
> 
> 
> Pierre-Luc

Reply via email to