[Kimchi-devel] [PATCH V3 4/4] Implement integrity verification: update test case

Sheldon shaohef at linux.vnet.ibm.com
Fri Feb 21 13:53:52 UTC 2014


On 02/21/2014 05:39 PM, Shu Ming wrote:
> 于 2014/2/21 14:59, shaohef at linux.vnet.ibm.com 写道:
>> From: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>>
>> update test_model.py and test_rest.py
>>
>> Signed-off-by: ShaoHe Feng <shaohef at linux.vnet.ibm.com>
>> ---
>>   tests/test_model.py | 33 +++++++++++++++++++++++++++++++++
>>   tests/test_rest.py  | 40 ++++++++++++++++++++++++++++++++++++++++
>>   2 files changed, 73 insertions(+)
>>
>> diff --git a/tests/test_model.py b/tests/test_model.py
>> index 298a39e..9c01bce 100644
>> --- a/tests/test_model.py
>> +++ b/tests/test_model.py
>> @@ -24,6 +24,7 @@
>>   import os
>>   import platform
>>   import psutil
>> +import shutil
>>   import tempfile
>>   import threading
>>   import time
>> @@ -441,6 +442,38 @@ class ModelTests(unittest.TestCase):
>>                   self.assertEquals(params[key], info[key])
>>
>>       @unittest.skipUnless(utils.running_as_root(), 'Must be run as 
>> root')
>> +    def test_template_integrity(self):
>> +        inst = model.Model('test:///default',
>> +                           objstore_loc=self.tmp_store)
>> +
>> +        with RollbackContext() as rollback:
>> +            net_name = 'test-network'
>> +            net_args = {'name': net_name,
>> +                        'connection': 'nat',
>> +                        'subnet': '127.0.100.0/24'}
>> +            inst.networks_create(net_args)
>
> rollback.prependDefer(inst.network_delete, net_name)?
no, need to delete network after create the template.

For network integrity check.

>
>
>> +
>> +            path = '/tmp/kimchi-iso/'
>> +            if not os.path.exists(path):
>> +                os.makedirs(path)
>> +            iso = path + 'ubuntu12.04.iso'
>> +            iso_gen.construct_fake_iso(iso, True, '12.04', 'ubuntu')
>> +
>> +            params = {'name': 'test', 'memory': 1024, 'cpus': 1,
>> +                      'networks': ['test-network'], 'cdrom': iso,
>> +                      'disks': [{'volume':iso}]}
>> +            inst.templates_create(params)
>> +            rollback.prependDefer(inst.template_delete, 'test')
>> +
>> +            inst.network_delete(net_name)
>> +            shutil.rmtree(path)
>> +
>> +            info = inst.template_lookup('test')
>> +            self.assertEquals(info['invalid']['cdrom'], [iso])
>> +            self.assertEquals(info['invalid']['networks'], [net_name])
>> +            self.assertEquals(info['invalid']['disks'], [iso])
>> +
>> +    @unittest.skipUnless(utils.running_as_root(), 'Must be run as 
>> root')
>>       def test_template_clone(self):
>>           inst = model.Model('qemu:///system',
>>                              objstore_loc=self.tmp_store)
>> diff --git a/tests/test_rest.py b/tests/test_rest.py
>> index 0d574aa..af4f1dc 100644
>> --- a/tests/test_rest.py
>> +++ b/tests/test_rest.py
>> @@ -25,6 +25,7 @@ import base64
>>   import json
>>   import os
>>   import random
>> +import shutil
>>   import time
>>   import unittest
>>
>> @@ -32,6 +33,7 @@ import unittest
>>   from functools import partial
>>
>>
>> +import iso_gen
>>   import kimchi.mockmodel
>>   import kimchi.server
>>   from kimchi.rollbackcontext import RollbackContext
>> @@ -1073,6 +1075,44 @@ class RestTests(unittest.TestCase):
>>           resp = self.request('/templates/%s' % tmpl_name, '{}', 
>> 'DELETE')
>>           self.assertEquals(204, resp.status)
>>
>> +    def test_template_integrity(self):
>> +
>> +        path = '/tmp/kimchi-iso/'
>> +        if not os.path.exists(path):
>> +            os.makedirs(path)
>> +        iso = path + 'ubuntu12.04.iso'
>> +        iso_gen.construct_fake_iso(iso, True, '12.04', 'ubuntu')
>> +
>> +        req = json.dumps({'name': 'test-network',
>> +                          'connection': 'nat',
>> +                          'net': '127.0.1.0/24'})
>> +        resp = request(host, port, '/networks', req, 'POST')
>> +        self.assertEquals(201, resp.status)
>> +
>> +
>> +        t = {'name': 'test', 'memory': 1024, 'cpus': 1,
>> +             'networks': ['test-network'], 'cdrom': iso,
>> +             'disks': [{'volume':iso}]}
>> +
>> +        req = json.dumps(t)
>> +        resp = self.request('/templates', req, 'POST')
>> +        self.assertEquals(201, resp.status)
>> +
>> +        shutil.rmtree(path)
>> +        # Delete the network
>> +        resp = request(host, port, '/networks/test-network', '{}', 
>> 'DELETE')
>> +        self.assertEquals(204, resp.status)
>> +
>> +        # Verify the template
>> +        res = json.loads(self.request('/templates/test').read())
>> +        self.assertEquals(res['invalid']['cdrom'], [iso])
>> +        self.assertEquals(res['invalid']['networks'], ['test-network'])
>> +        self.assertEquals(res['invalid']['disks'], [iso])
>> +
>> +        # Delete the template
>> +        resp = request(host, port, '/templates/test', '{}', 'DELETE')
>> +        self.assertEquals(204, resp.status)
>> +
>>       def test_iso_scan_shallow(self):
>>           # fake environment preparation
>>           self._create_pool('pool-3')
>
>
>


-- 
Thanks and best regards!

Sheldon Feng(冯少合)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center




More information about the Kimchi-devel mailing list