On 1/7/13 3:13 PM, "Mike Tutkowski" <mike.tutkow...@solidfire.com> wrote:

>Hi Edison,
>
>So, are you looking at something like this?:
>
>* System (ex. cloud-engine - a server with a RESTful API)
>     * Sub-system (ex. storage)
>          *Component (ex. snapshot) (Maven project comes in at this level)
>               * Plug-in (is this a separate Maven project?)
>
>Regarding integration tests, is the person who wrote the code to test
>responsible for writing the integration test?  If not, how do we keep
>track
>of this?
>
>Also, I prefer your approach of putting one Maven project at one level (as
>opposed to one huge Maven project for tests).
>
>I don't have a strong preference regarding JUnit or testNG.  I've used
>JUnit in the past, but if testNG has a better feature set, I say let's use
>testNG.
>
>Obviously I'm new to CloudStack.  Can someone fill me in on how Spring is
>leveraged within CloudStack?


Spring is now primarily used for Dependency Injection and AOP for
CloudStack internal java components

>
>Thanks!
>Mike
>
>
>On Mon, Jan 7, 2013 at 3:11 PM, Edison Su <edison...@citrix.com> wrote:
>
>> Hi All,
>>      As Cloudstack is becoming more modularized, we can start thinking
>> about how to test these components.
>>      The organization of maven projects in cloudstack. At lowest level,
>> it's a maven project. The modularized component, means a group of maven
>> projects. The subsystem, means a logical group of  components. A system,
>> will be build on a lot of subsystems. For example, there will be a
>>system
>> called, cloud-engine, which is a server, provides restful API service to
>> other systems(e.g API server). Cloud-engine will have a set of
>>subsystems:
>> computing, storage, network etc. For each subsystem, will have a group
>>of
>> components: e.g. storage subsystem will include volume/image/snapshot ..
>> components. For each component, will have a set of maven projects,  for
>> example, volume component will have a maven project, called
>>storage-volume,
>> and a lot of plugin projects, such as (storage-volume-plugin-solidfire,
>> storage-volume-plugin-netapp etc).
>>      Based on above hierarchy, the integration test will happen at
>> different levels: at component level, at subsystem level, at system
>>level
>> etc. I want to bring up the discuss about how to organize integration
>> tests, and which integration test framework should we use.
>>     First, how to organize integration tests? The organization will be
>> affected/constrained by the dependency between maven projects you want
>>to
>> test.
>>           1. Will the integration test at each level have its own maven
>> project?  Or we put all the integration test cases into one giant maven
>> project? I'd prefer one maven project at one level, as it looks like
>>more
>> cleaner. For example, there will be a storage-integration-test maven
>> project, which depends on storage-volume-integration-test,
>> storage-image-integration-test, and so on, while
>> storage-volume-integration-test will depend on storage-volume,
>> storage-volume-plugin-solidfire, and storage-volume-plugin-netapp and so
>> on. When you write test case at each level, you only focus on the
>>limited
>> area you want to test: the design of test case and the configuration
>>file
>> of each test case, will/can only be specific to the area. Hope it will
>>make
>> writing test case easier.
>>           2. Which test framework we should use? Junit or testNG? I was
>> sold to testNG by its feature sets: parametrized test case, group test
>> cases, running test case in parallel at different level(method, class
>>etc),
>> test case dependency etc. You can find out more information about
>>testNG at
>> 
>>http://kaczanowscy.pl/tomek/sites/default/files/testng_vs_junit.txt.slidy
>>_.html#(1)
>> .
>>         But in order to integrate testNG with Spring, need a little bit
>> coding. For example, may need to add a listener in testNG, to inject @DB
>> annotation, and need to make sure mockito will work. I created a base
>> testNG class: CloudStackTestNGBase, which can read configuration
>>parameters
>> from a testNG config xml file, setup @DB context for each test case etc.
>>
>>    Comments/feedback are welcome!
>>
>>
>>
>
>
>-- 
>*Mike Tutkowski*
>*Senior CloudStack Developer, SolidFire Inc.*
>e: mike.tutkow...@solidfire.com
>o: 303.746.7302
>Advancing the way the world uses the
>cloud<http://solidfire.com/solution/overview/?video=play>
>**

Reply via email to