All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Olaf Hering <olaf@aepfle.de>
Cc: Wei Liu <wei.liu2@citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>,
	xen-devel@lists.xen.org
Subject: Re: [PATCH for-xen-4.5] tools/tests: remove code using xend
Date: Mon, 6 Oct 2014 10:32:46 -0400	[thread overview]
Message-ID: <20141006143246.GF5777@laptop.dumpdata.com> (raw)
In-Reply-To: <1412605528-31574-1-git-send-email-olaf@aepfle.de>

On Mon, Oct 06, 2014 at 04:25:28PM +0200, Olaf Hering wrote:
> Signed-off-by: Olaf Hering <olaf@aepfle.de>
> Cc: Ian Campbell <ian.campbell@citrix.com>
> Cc: Ian Jackson <ian.jackson@eu.citrix.com>
> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> Cc: Wei Liu <wei.liu2@citrix.com>
> ---
>  tools/tests/utests/run_all_tests.py         |  10 +-
>  tools/tests/utests/ut_util/ut_fileuri.py    | 209 ----------------------------
>  tools/tests/utests/ut_xend/ut_XendConfig.py | 117 ----------------
>  tools/tests/utests/ut_xend/ut_image.py      | 147 -------------------
>  4 files changed, 1 insertion(+), 482 deletions(-)

That is always a nice thing to see. More deletion!

Released-Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> 
> diff --git a/tools/tests/utests/run_all_tests.py b/tools/tests/utests/run_all_tests.py
> index e36fa4d..3e302dd 100644
> --- a/tools/tests/utests/run_all_tests.py
> +++ b/tools/tests/utests/run_all_tests.py
> @@ -17,15 +17,7 @@
>  
>  import unittest
>  
> -import utests.ut_util.ut_fileuri
> -import utests.ut_xend.ut_XendConfig
> -import utests.ut_xend.ut_image
> -
> -suite = unittest.TestSuite(
> -    [utests.ut_util.ut_fileuri.suite(),
> -     utests.ut_xend.ut_XendConfig.suite(),
> -     utests.ut_xend.ut_image.suite(),
> -     ])
> +suite = unittest.TestSuite([])
>  
>  if __name__ == "__main__":
>      testresult = unittest.TextTestRunner(verbosity=3).run(suite)
> diff --git a/tools/tests/utests/ut_util/ut_fileuri.py b/tools/tests/utests/ut_util/ut_fileuri.py
> deleted file mode 100644
> index cd64e7d..0000000
> --- a/tools/tests/utests/ut_util/ut_fileuri.py
> +++ /dev/null
> @@ -1,209 +0,0 @@
> -#============================================================================
> -# This library is free software; you can redistribute it and/or
> -# modify it under the terms of version 2.1 of the GNU Lesser General Public
> -# License as published by the Free Software Foundation.
> -#
> -# This library is distributed in the hope that it will be useful,
> -# but WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -# Lesser General Public License for more details.
> -#
> -# You should have received a copy of the GNU Lesser General Public
> -# License along with this library; if not, write to the Free Software
> -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
> -#============================================================================
> -# Copyright (C) 2009 flonatel GmbH & Co. KG
> -#============================================================================
> -
> -import os
> -import unittest
> -
> -from xen.util.fileuri import scheme_error
> -from xen.util.fileuri import scheme_data
> -from xen.util.fileuri import scheme_file
> -from xen.util.fileuri import schemes
> -
> -class scheme_data_unit_tests(unittest.TestCase):
> -
> -    def check_basic_encoding(self):
> -        "util.fileuri.scheme_data - basic encoding"
> -        sd = scheme_data.encode('Hello!')
> -        self.assertEqual(sd, 'data:application/octet-stream;base64,SGVsbG8h')
> -
> -    def check_encoding_with_given_mediatype(self):
> -        "util.fileuri.scheme_data - encoding with given media name"
> -        sd = scheme_data.encode('Hello!', 'application/x-my-linux-kernel')
> -        self.assertEqual(sd,
> -              'data:application/x-my-linux-kernel;base64,SGVsbG8h')
> -
> -    def check_parse_01(self):
> -        "util.fileuri.scheme_data - parsing of None"
> -        self.assertRaises(scheme_error, scheme_data.parse, None)
> -
> -    def check_parse_02(self):
> -        "util.fileuri.scheme_data - parsing of empty string"
> -        self.assertRaises(scheme_error, scheme_data.parse, "")
> -
> -    def check_parse_03(self):
> -        "util.fileuri.scheme_data - parsing of unstructured data"
> -        self.assertRaises(scheme_error, scheme_data.parse, "akskdjdfhezezu")
> -
> -    def check_parse_04(self):
> -        "util.fileuri.scheme_data - data: is not at the first place"
> -        self.assertRaises(scheme_error, scheme_data.parse, 'ggdata:sossm')
> -
> -    def check_parse_05(self):
> -        "util.fileuri.scheme_data - no comma in data"
> -        self.assertRaises(scheme_error, scheme_data.parse, 'data:sossm')
> -
> -    def check_parse_06(self):
> -        "util.fileuri.scheme_data - encoding is empty"
> -        self.assertRaises(scheme_error, scheme_data.parse, 'data:,')
> -
> -    def check_parse_07(self):
> -        "util.fileuri.scheme_data - unknown encoding"
> -        self.assertRaises(scheme_error, scheme_data.parse,
> -                          'data:somemediatype;unknown,')
> -
> -    def check_parse_08(self):
> -        "util.fileuri.scheme_data - parse ok - empty data"
> -        mediatype, encoding, data_start = scheme_data.parse(
> -            'data:somemedia;base64,')
> -        self.assertEqual(mediatype, 'somemedia')
> -        self.assertEqual(encoding, 'base64')
> -        self.assertEqual(data_start, 22)
> -
> -    def check_parse_09(self):
> -        "util.fileuri.scheme_data - parse ok - some data"
> -        mediatype, encoding, data_start = scheme_data.parse(
> -            'data:somemedia;base64,HereComesTheSun')
> -        self.assertEqual(mediatype, 'somemedia')
> -        self.assertEqual(encoding, 'base64')
> -        self.assertEqual(data_start, 22)
> -
> -    def check_parse_10(self):
> -        "util.fileuri.scheme_data - header ok - data error"
> -        self.assertRaises(scheme_error, scheme_data.decode,
> -               'data:application/octet-stream;base64,H!$ere"Co<mesT>heS_.un')
> -
> -    def check_cff_file_does_not_exist(self):
> -        "util.fileuri.scheme_data - create from file - non existent file"
> -        self.assertRaises(scheme_error, scheme_data.create_from_file,
> -                          "/there/is/hopefully/no/file/like/this")
> -
> -    def check_cff_ok(self):
> -        "util.fileuri.scheme_data - create from file - ok"
> -        tmppath = "/tmp/scheme_data_check_cff_ok"
> -        f = open(tmppath, "w")
> -        f.write("huhuhu")
> -        f.close()
> -        d = scheme_data.create_from_file(tmppath)
> -        os.unlink(tmppath)
> -        self.assertEqual(d, "data:application/octet-stream;base64,aHVodWh1")
> -
> -
> -class scheme_file_unit_tests(unittest.TestCase):
> -
> -    def check_encode_empty_filename(self):
> -        "util.fileuri.scheme_file - encode empty filename"
> -        self.assertRaises(scheme_error, scheme_file.encode, "")
> -
> -    def check_encode_relative_filename(self):
> -        "util.fileuri.scheme_file - encode relative filename"
> -        self.assertRaises(scheme_error, scheme_file.encode, "../there")
> -
> -    def check_encode_absolut_filename(self):
> -        "util.fileuri.scheme_file - encode absolut filename"
> -        self.assertEqual(
> -            scheme_file.encode("/here/and/there/again"),
> -            'file:///here/and/there/again')
> -
> -    def check_decode_01(self):
> -        "util.fileuri.scheme_file - decode empty data"
> -        self.assertRaises(scheme_error, scheme_file.decode, "")
> -
> -    def check_decode_02(self):
> -        "util.fileuri.scheme_file - decode data with no file:// at the beginning (1)"
> -        self.assertRaises(scheme_error, scheme_file.decode,
> -                          "phonehome://bbbb")
> -
> -    def check_decode_03(self):
> -        "util.fileuri.scheme_file - decode data with no file:// at the beginning (2)"
> -        self.assertRaises(scheme_error, scheme_file.decode,
> -                          "file:/bbbb")
> -
> -    def check_decode_04(self):
> -        "util.fileuri.scheme_file - decode empty path"
> -        self.assertRaises(scheme_error, scheme_file.decode,
> -                          "file://")
> -
> -    def check_decode_05(self):
> -        "util.fileuri.scheme_file - decode empty relative path"
> -        self.assertRaises(scheme_error, scheme_file.decode,
> -                          "file://somewhere")
> -
> -    def check_decode_06(self):
> -        "util.fileuri.scheme_file - decode ok"
> -        path, tmp_file = scheme_file.decode("file:///boot/vmlinuz")
> -        self.assertEqual(path, "/boot/vmlinuz")
> -        self.assertEqual(tmp_file, False)
> -
> -class scheme_set_unit_tests(unittest.TestCase):
> -
> -    def check_data_01(self):
> -        "util.fileuri.scheme_set - data with error in media type"
> -
> -        u = "data:something_wrong,base64:swer"
> -        uri, tmp_file = schemes.decode(u)
> -        self.assertEqual(uri, u)
> -        self.assertEqual(tmp_file, False)
> -
> -    def check_data_02(self):
> -        "util.fileuri.scheme_set - data with error in base64 data"
> -
> -        u = "data:application/octet-stream;base64,S!VsbG8h"
> -        uri, tmp_file = schemes.decode(u)
> -        self.assertEqual(uri, u)
> -        self.assertEqual(tmp_file, False)
> - 
> -    def check_data_03(self):
> -        "util.fileuri.scheme_set - data ok"
> -
> -        u = "data:application/octet-stream;base64,SGVsbG8h"
> -        uri, tmp_file = schemes.decode(u)
> -
> -        # Read file contents
> -        f = open(uri, "r")
> -        d = f.read()
> -        f.close()
> -        os.unlink(uri)
> -
> -        self.assertEqual(d, "Hello!")
> -        self.assertEqual(tmp_file, True)
> -       
> -    def check_file_01(self):
> -        "util.fileuri.scheme_set - file ok"
> -
> -        f = "/The/Path/To/The/File.txt"
> -        uri, tmp_file = schemes.decode("file://" + f)
> -        self.assertEqual(uri, f)
> -        self.assertEqual(tmp_file, False)
> -
> -    def check_without_scheme_01(self):
> -        "util.fileuri.scheme_set - without scheme"
> -
> -        f = "/The/Path/To/The/File.txt"
> -        uri, tmp_file = schemes.decode(f)
> -        self.assertEqual(uri, f)
> -        self.assertEqual(tmp_file, False)
> -
> -
> -def suite():
> -    return unittest.TestSuite(
> -        [unittest.makeSuite(scheme_data_unit_tests, 'check_'),
> -         unittest.makeSuite(scheme_file_unit_tests, 'check_'),
> -         unittest.makeSuite(scheme_set_unit_tests, 'check_'),])
> -
> -if __name__ == "__main__":
> -    testresult = unittest.TextTestRunner(verbosity=3).run(suite())
> -
> diff --git a/tools/tests/utests/ut_xend/ut_XendConfig.py b/tools/tests/utests/ut_xend/ut_XendConfig.py
> deleted file mode 100644
> index 724ad08..0000000
> --- a/tools/tests/utests/ut_xend/ut_XendConfig.py
> +++ /dev/null
> @@ -1,117 +0,0 @@
> -#===========================================================================
> -# This library is free software; you can redistribute it and/or
> -# modify it under the terms of version 2.1 of the GNU Lesser General Public
> -# License as published by the Free Software Foundation.
> -#
> -# This library is distributed in the hope that it will be useful,
> -# but WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -# Lesser General Public License for more details.
> -#
> -# You should have received a copy of the GNU Lesser General Public
> -# License along with this library; if not, write to the Free Software
> -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
> -#============================================================================
> -# Copyright (C) 2009 flonatel GmbH & Co. KG
> -#============================================================================
> -
> -import os
> -import unittest
> -
> -# This does not work because of a cyclic import loop
> -#from xen.xend.XendConfig import XendConfig
> -import xen.xend.XendDomain
> -
> -class XendConfigUnitTest(unittest.TestCase):
> -
> -    def minimal_vmconf(self):
> -        return {
> -            'memory_dynamic_min': 64,
> -            'memory_dynamic_max': 128,
> -            'memory_static_max': 128,
> -            }
> -
> -    def check_hf_01(self):
> -        "xend.XendConfig.handle_fileutils - PV_kernel/ramdisk not set"
> -        vmconf = self.minimal_vmconf()
> -        xc = xen.xend.XendConfig.XendConfig(xapi = vmconf)
> -
> -        self.assert_(not xc.has_key('use_tmp_kernel'))
> -        self.assert_(not xc.has_key('use_tmp_ramdisk'))
> -
> -    def check_hf_02(self):
> -        "xend.XendConfig.handle_fileutils - PV_kernel/ramdisk set to some path"
> -        vmconf = self.minimal_vmconf()
> -        vmconf['PV_kernel'] = '/some/where/under/the/rainbow-kernel'
> -        vmconf['PV_ramdisk'] = '/some/where/under/the/rainbow-ramdisk'
> -        xc = xen.xend.XendConfig.XendConfig(xapi = vmconf)
> -
> -        self.assert_(xc.has_key('use_tmp_kernel'))
> -        self.assert_(xc.has_key('use_tmp_ramdisk'))
> -
> -        self.assert_(not xc['use_tmp_kernel'])
> -        self.assert_(not xc['use_tmp_ramdisk'])
> -
> -    def check_hf_03(self):
> -        "xend.XendConfig.handle_fileutils - PV_kernel/ramdisk using file: scheme"
> -        vmconf = self.minimal_vmconf()
> -        vmconf['PV_kernel'] = 'file:///some/where/under/the/rainbow-kernel'
> -        vmconf['PV_ramdisk'] = 'file:///some/where/under/the/rainbow-ramdisk'
> -        xc = xen.xend.XendConfig.XendConfig(xapi = vmconf)
> -
> -        self.assert_(xc.has_key('use_tmp_kernel'))
> -        self.assert_(xc.has_key('use_tmp_ramdisk'))
> -
> -        self.assert_(not xc['use_tmp_kernel'])
> -        self.assert_(not xc['use_tmp_ramdisk'])
> -
> -        self.assert_('PV_kernel' in xc)
> -        self.assert_('PV_ramdisk' in xc)
> -
> -        self.assertEqual("/some/where/under/the/rainbow-kernel",
> -                         xc['PV_kernel'])
> -        self.assertEqual("/some/where/under/the/rainbow-ramdisk",
> -                         xc['PV_ramdisk'])
> -
> -    def check_hf_04(self):
> -        "xend.XendConfig.handle_fileutils - PV_kernel/ramdisk using data: scheme"
> -        vmconf = self.minimal_vmconf()
> -        vmconf['PV_kernel'] = 'data:application/octet-stream;base64,VGhpcyBpcyB0aGUga2VybmVsCg=='
> -        vmconf['PV_ramdisk'] = 'data:application/octet-stream;base64,TXkgZ3JlYXQgcmFtZGlzawo='
> -        xc = xen.xend.XendConfig.XendConfig(xapi = vmconf)
> -
> -        self.assert_(xc.has_key('use_tmp_kernel'))
> -        self.assert_(xc.has_key('use_tmp_ramdisk'))
> -
> -        self.assert_(xc['use_tmp_kernel'])
> -        self.assert_(xc['use_tmp_ramdisk'])
> -
> -        self.assert_('PV_kernel' in xc)
> -        self.assert_('PV_ramdisk' in xc)
> -
> -        self.assert_(xc['PV_kernel'].startswith(
> -                "/var/run/xend/boot/data_uri_file."))
> -        self.assert_(xc['PV_ramdisk'].startswith(
> -                "/var/run/xend/boot/data_uri_file."))
> -
> -        f = file(xc['PV_kernel'])
> -        kc = f.read()
> -        f.close()
> -
> -        f = file(xc['PV_ramdisk'])
> -        rc = f.read()
> -        f.close()
> -
> -        os.unlink(xc['PV_kernel'])
> -        os.unlink(xc['PV_ramdisk'])
> -
> -        self.assertEqual(kc, "This is the kernel\n")
> -        self.assertEqual(rc, "My great ramdisk\n")
> -
> -def suite():
> -    return unittest.TestSuite(
> -        [unittest.makeSuite(XendConfigUnitTest, 'check_'),])
> -
> -if __name__ == "__main__":
> -    testresult = unittest.TextTestRunner(verbosity=3).run(suite())
> -
> diff --git a/tools/tests/utests/ut_xend/ut_image.py b/tools/tests/utests/ut_xend/ut_image.py
> deleted file mode 100644
> index 92ec645..0000000
> --- a/tools/tests/utests/ut_xend/ut_image.py
> +++ /dev/null
> @@ -1,147 +0,0 @@
> -#===========================================================================
> -# This library is free software; you can redistribute it and/or
> -# modify it under the terms of version 2.1 of the GNU Lesser General Public
> -# License as published by the Free Software Foundation.
> -#
> -# This library is distributed in the hope that it will be useful,
> -# but WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -# Lesser General Public License for more details.
> -#
> -# You should have received a copy of the GNU Lesser General Public
> -# License along with this library; if not, write to the Free Software
> -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
> -#============================================================================
> -# Copyright (C) 2009 flonatel GmbH & Co. KG
> -#============================================================================
> -
> -import unittest
> -import tempfile
> -import os
> -
> -import xen.xend.image
> -
> -class ImageHandlerUnitTests(unittest.TestCase):
> -
> -    class ImageHandlerUnitTestsVirtualMachine:
> -
> -        def __init__(self):
> -            self.info = {
> -                'name_label': 'ItsMyParty',
> -                }
> -
> -        def storeVm(self, *args):
> -            pass
> -
> -        def permissionsVm(self, *args):
> -            pass
> -
> -        def getDomid(self):
> -            return 7
> -
> -    # Sets up a vm_config with no bootloader.
> -    def vm_config_no_bootloader(self):
> -        return {
> -            'PV_kernel': 'value_of_PV_kernel',
> -            'PV_args': 'value_of_PV_args',
> -            'PV_ramdisk': 'value_of_PV_ramdisk',
> -            'platform': {},
> -            'console_refs': [],
> -            }
> -
> -    def check_configure_01(self):
> -        # This retests the problem reported by Jun Koi on 24.07.2009
> -        # see http://lists.xensource.com/archives/html/xen-devel/2009-07/msg01006.html
> -        "ImageHandler - call configure with mostly empty vmConfig"
> -
> -        vmConfig = self.vm_config_no_bootloader()
> -        vm = self.ImageHandlerUnitTestsVirtualMachine()
> -        ih = xen.xend.image.ImageHandler(vm, vmConfig)
> -
> -        self.assertEqual(ih.use_tmp_kernel, False)
> -        self.assertEqual(ih.use_tmp_ramdisk, False)
> -
> -    def check_configure_02(self):
> -        "ImageHandler - call configure with use_tmp_xxx set to false"
> -
> -        vmConfig = self.vm_config_no_bootloader()
> -        vmConfig['use_tmp_kernel'] = False
> -        vmConfig['use_tmp_ramdisk'] = False
> -        vm = self.ImageHandlerUnitTestsVirtualMachine()
> -        ih = xen.xend.image.ImageHandler(vm, vmConfig)
> -
> -        self.assertEqual(ih.use_tmp_kernel, False)
> -        self.assertEqual(ih.use_tmp_ramdisk, False)
> -
> -
> -    def check_configure_03(self):
> -        "ImageHandler - call configure with use_tmp_xxx set to true"
> -
> -        vmConfig = self.vm_config_no_bootloader()
> -        vmConfig['use_tmp_kernel'] = True
> -        vmConfig['use_tmp_ramdisk'] = True
> -        vm = self.ImageHandlerUnitTestsVirtualMachine()
> -        ih = xen.xend.image.ImageHandler(vm, vmConfig)
> -
> -        self.assertEqual(ih.use_tmp_kernel, True)
> -        self.assertEqual(ih.use_tmp_ramdisk, True)
> -
> -    def cleanup_tmp_images_base(self, vmConfig):
> -        vm = self.ImageHandlerUnitTestsVirtualMachine()
> -        ih = xen.xend.image.ImageHandler(vm, vmConfig)
> -
> -        k, ih.kernel = tempfile.mkstemp(
> -            prefix = "ImageHandler-cleanupTmpImages-k", dir = "/tmp")
> -        r, ih.ramdisk = tempfile.mkstemp(
> -            prefix = "ImageHandler-cleanupTmpImages-r", dir = "/tmp")
> -
> -        ih.cleanupTmpImages()
> -
> -        kres = os.path.exists(ih.kernel)
> -        rres = os.path.exists(ih.ramdisk)
> -
> -        if not ih.use_tmp_kernel:
> -            os.unlink(ih.kernel)
> -        if not ih.use_tmp_ramdisk:
> -            os.unlink(ih.ramdisk)
> -
> -        return kres, rres
> -
> -    def check_cleanup_tmp_images_01(self):
> -        "ImageHandler - cleanupTmpImages with use_tmp_xxx unset"
> -
> -        vmConfig = self.vm_config_no_bootloader()
> -        kres, rres = self.cleanup_tmp_images_base(vmConfig)
> -
> -        self.assertEqual(kres, True)
> -        self.assertEqual(rres, True)
> -
> -    def check_cleanup_tmp_images_02(self):
> -        "ImageHandler - cleanupTmpImages with use_tmp_xxx set to false"
> -
> -        vmConfig = self.vm_config_no_bootloader()
> -        vmConfig['use_tmp_kernel'] = False
> -        vmConfig['use_tmp_ramdisk'] = False
> -        kres, rres = self.cleanup_tmp_images_base(vmConfig)
> -
> -        self.assertEqual(kres, True)
> -        self.assertEqual(rres, True)
> -
> -    def check_cleanup_tmp_images_03(self):
> -        "ImageHandler - cleanupTmpImages with use_tmp_xxx set to true"
> -
> -        vmConfig = self.vm_config_no_bootloader()
> -        vmConfig['use_tmp_kernel'] = True
> -        vmConfig['use_tmp_ramdisk'] = True
> -        kres, rres = self.cleanup_tmp_images_base(vmConfig)
> -
> -        self.assertEqual(kres, False)
> -        self.assertEqual(rres, False)
> -
> -def suite():
> -    return unittest.TestSuite(
> -        [unittest.makeSuite(ImageHandlerUnitTests, 'check_'),])
> -
> -if __name__ == "__main__":
> -    testresult = unittest.TextTestRunner(verbosity=3).run(suite())
> -

  reply	other threads:[~2014-10-06 14:32 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-06 14:25 [PATCH for-xen-4.5] tools/tests: remove code using xend Olaf Hering
2014-10-06 14:32 ` Konrad Rzeszutek Wilk [this message]
2014-10-08 12:54   ` Ian Campbell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141006143246.GF5777@laptop.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=olaf@aepfle.de \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.