[libvirt] [test-API][PATCH v2] Add volume upload and download cases

2013-01-06 Thread Wayne Sun
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

2013-01-06 Thread Guannan Ren

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 =