[libvirt] [test-API][PATCH v2] Add volume upload and download cases
The cases only cover dir volume testing. v1: * test download storage volumes using storage download API. * test upload storage volumes using storage upload API. For upload case, only raw volume format is supported, other format will fail. The offset and length value should be chosen from 0 and 1048576, because upload size is set as 1M. * both case use blocking stream. * sample conf is added. v2: * move digest function to utils * rename cases with prefix 'dir_' to emphasise that they are only for dir vol testing Signed-off-by: Wayne Sun g...@redhat.com --- cases/storage_dir_vol_upload_download.conf | 127 ++ repos/storage/dir_vol_download.py | 131 +++ repos/storage/dir_vol_upload.py| 158 utils/utils.py | 24 4 files changed, 440 insertions(+), 0 deletions(-) create mode 100644 cases/storage_dir_vol_upload_download.conf create mode 100644 repos/storage/dir_vol_download.py create mode 100644 repos/storage/dir_vol_upload.py diff --git a/cases/storage_dir_vol_upload_download.conf b/cases/storage_dir_vol_upload_download.conf new file mode 100644 index 000..fd22720 --- /dev/null +++ b/cases/storage_dir_vol_upload_download.conf @@ -0,0 +1,127 @@ +storage:create_dir_pool +poolname +$defaultpoolname + +storage:dir_vol_upload +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +10M +volformat +raw +offset +0 +length +0 +clean + +storage:dir_vol_upload +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +10M +volformat +raw +offset +1048576 +length +0 +clean + +storage:dir_vol_upload +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +10M +volformat +raw +offset +0 +length +1048576 +clean + +storage:dir_vol_upload +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +10M +volformat +raw +offset +1048576 +length +1048576 +clean + +storage:dir_vol_download +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +50M +volformat +raw +offset +0 +length +0 +clean + +storage:dir_vol_download +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +50M +volformat +qcow2 +offset +1048576 +length +0 +clean + +storage:dir_vol_download +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +50M +volformat +qed +offset +0 +length +1048576 +clean + +storage:dir_vol_download +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +50M +volformat +raw +offset +1048576 +length +1048576 +clean + +storage:destroy_pool +poolname +$defaultpoolname diff --git a/repos/storage/dir_vol_download.py b/repos/storage/dir_vol_download.py new file mode 100644 index 000..ddf293b --- /dev/null +++ b/repos/storage/dir_vol_download.py @@ -0,0 +1,131 @@ +#!/usr/bin/env python +# dir storage volume download testing + +import os +import string +from xml.dom import minidom + +import libvirt +from libvirt import libvirtError + +from src import sharedmod +from utils import utils + +required_params = ('poolname', 'volname', 'volformat', 'capacity', 'offset', + 'length',) +optional_params = {'xml' : 'xmls/dir_volume.xml', + } + +def get_pool_path(poolobj): + get pool xml description + +poolxml = poolobj.XMLDesc(0) + +logger.debug(the xml description of pool is %s % poolxml) + +doc = minidom.parseString(poolxml) +path_element = doc.getElementsByTagName('path')[0] +textnode = path_element.childNodes[0] +path_value = textnode.data + +return path_value + +def write_file(path, capacity): +write test data to file + +logger.info(write %s data into file %s % (capacity, path)) +out = utils.get_capacity_suffix_size(capacity) +f = open(path, 'w') +datastr = ''.join(string.lowercase + string.uppercase + + string.digits + '.' + '\n') +repeat = out['capacity_byte'] / 64 +data = ''.join(repeat * datastr) +f.write(data) +f.close() + +def handler(stream, data, file_): +return file_.write(data) + +def dir_vol_download(params): +test volume download and check + +global logger +logger = params['logger'] +poolname = params['poolname'] +volname = params['volname'] +volformat = params['volformat'] +offset = int(params['offset']) +length = int(params['length']) +
Re: [libvirt] [test-API][PATCH v2] Add volume upload and download cases
On 01/06/2013 05:37 PM, Wayne Sun wrote: The cases only cover dir volume testing. v1: * test download storage volumes using storage download API. * test upload storage volumes using storage upload API. For upload case, only raw volume format is supported, other format will fail. The offset and length value should be chosen from 0 and 1048576, because upload size is set as 1M. * both case use blocking stream. * sample conf is added. v2: * move digest function to utils * rename cases with prefix 'dir_' to emphasise that they are only for dir vol testing Signed-off-by: Wayne Sun g...@redhat.com --- cases/storage_dir_vol_upload_download.conf | 127 ++ repos/storage/dir_vol_download.py | 131 +++ repos/storage/dir_vol_upload.py| 158 utils/utils.py | 24 4 files changed, 440 insertions(+), 0 deletions(-) create mode 100644 cases/storage_dir_vol_upload_download.conf create mode 100644 repos/storage/dir_vol_download.py create mode 100644 repos/storage/dir_vol_upload.py diff --git a/cases/storage_dir_vol_upload_download.conf b/cases/storage_dir_vol_upload_download.conf new file mode 100644 index 000..fd22720 --- /dev/null +++ b/cases/storage_dir_vol_upload_download.conf @@ -0,0 +1,127 @@ +storage:create_dir_pool +poolname +$defaultpoolname + +storage:dir_vol_upload +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +10M +volformat +raw +offset +0 +length +0 +clean + +storage:dir_vol_upload +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +10M +volformat +raw +offset +1048576 +length +0 +clean + +storage:dir_vol_upload +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +10M +volformat +raw +offset +0 +length +1048576 +clean + +storage:dir_vol_upload +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +10M +volformat +raw +offset +1048576 +length +1048576 +clean + +storage:dir_vol_download +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +50M +volformat +raw +offset +0 +length +0 +clean + +storage:dir_vol_download +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +50M +volformat +qcow2 +offset +1048576 +length +0 +clean + +storage:dir_vol_download +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +50M +volformat +qed +offset +0 +length +1048576 +clean + +storage:dir_vol_download +poolname +$defaultpoolname +volname +$defaultvolumename +capacity +50M +volformat +raw +offset +1048576 +length +1048576 +clean + +storage:destroy_pool +poolname +$defaultpoolname diff --git a/repos/storage/dir_vol_download.py b/repos/storage/dir_vol_download.py new file mode 100644 index 000..ddf293b --- /dev/null +++ b/repos/storage/dir_vol_download.py @@ -0,0 +1,131 @@ +#!/usr/bin/env python +# dir storage volume download testing + +import os +import string +from xml.dom import minidom + +import libvirt +from libvirt import libvirtError + +from src import sharedmod +from utils import utils + +required_params = ('poolname', 'volname', 'volformat', 'capacity', 'offset', + 'length',) +optional_params = {'xml' : 'xmls/dir_volume.xml', + } + +def get_pool_path(poolobj): + get pool xml description + +poolxml = poolobj.XMLDesc(0) + +logger.debug(the xml description of pool is %s % poolxml) + +doc = minidom.parseString(poolxml) +path_element = doc.getElementsByTagName('path')[0] +textnode = path_element.childNodes[0] +path_value = textnode.data + +return path_value + +def write_file(path, capacity): +write test data to file + +logger.info(write %s data into file %s % (capacity, path)) +out = utils.get_capacity_suffix_size(capacity) +f = open(path, 'w') +datastr = ''.join(string.lowercase + string.uppercase + + string.digits + '.' + '\n') +repeat = out['capacity_byte'] / 64 +data = ''.join(repeat * datastr) +f.write(data) +f.close() + +def handler(stream, data, file_): +return file_.write(data) + +def dir_vol_download(params): +test volume download and check + +global logger +logger = params['logger'] +poolname = params['poolname'] +volname = params['volname'] +volformat = params['volformat'] +offset =