Whitespace nitpicks that should be fixed, otherwise LGTM

On Thu, Jul 24, 2014 at 2:31 AM, Yuto KAWAMURA(kawamuray) <
[email protected]> wrote:

> This patch adds few unit tests for cgroup management functions of
>

... a few ...


> hv_lxc.
>
> Signed-off-by: Yuto KAWAMURA(kawamuray) <[email protected]>
> ---
>  .../cpuset/some_group/lxc/instance1/cpuset.cpus    |  1 +
>  .../devices/some_group/lxc/instance1/devices.list  |  1 +
>  .../memory/lxc/instance1/memory.limit_in_bytes     |  1 +
>  test/data/proc_cgroup.txt                          |  4 +
>  test/py/ganeti.hypervisor.hv_lxc_unittest.py       | 92
> ++++++++++++++++++++++
>  5 files changed, 99 insertions(+)
>  create mode 100644
> test/data/cgroup_root/cpuset/some_group/lxc/instance1/cpuset.cpus
>  create mode 100644
> test/data/cgroup_root/devices/some_group/lxc/instance1/devices.list
>  create mode 100644
> test/data/cgroup_root/memory/lxc/instance1/memory.limit_in_bytes
>  create mode 100644 test/data/proc_cgroup.txt
>
> diff --git
> a/test/data/cgroup_root/cpuset/some_group/lxc/instance1/cpuset.cpus
> b/test/data/cgroup_root/cpuset/some_group/lxc/instance1/cpuset.cpus
> new file mode 100644
> index 0000000..8b0fab8
> --- /dev/null
> +++ b/test/data/cgroup_root/cpuset/some_group/lxc/instance1/cpuset.cpus
> @@ -0,0 +1 @@
> +0-1
> diff --git
> a/test/data/cgroup_root/devices/some_group/lxc/instance1/devices.list
> b/test/data/cgroup_root/devices/some_group/lxc/instance1/devices.list
> new file mode 100644
> index 0000000..8f3ec6b
> --- /dev/null
> +++ b/test/data/cgroup_root/devices/some_group/lxc/instance1/devices.list
> @@ -0,0 +1 @@
> +a *:* rwm
> diff --git
> a/test/data/cgroup_root/memory/lxc/instance1/memory.limit_in_bytes
> b/test/data/cgroup_root/memory/lxc/instance1/memory.limit_in_bytes
> new file mode 100644
> index 0000000..a949a93
> --- /dev/null
> +++ b/test/data/cgroup_root/memory/lxc/instance1/memory.limit_in_bytes
> @@ -0,0 +1 @@
> +128
> diff --git a/test/data/proc_cgroup.txt b/test/data/proc_cgroup.txt
> new file mode 100644
> index 0000000..13fafd0
> --- /dev/null
> +++ b/test/data/proc_cgroup.txt
> @@ -0,0 +1,4 @@
> +3:devices:/some_group
> +
> +2:memory:/
> +1:cpuset:/some_group
> diff --git a/test/py/ganeti.hypervisor.hv_lxc_unittest.py b/test/py/
> ganeti.hypervisor.hv_lxc_unittest.py
> index e3a09fc..005378f 100755
> --- a/test/py/ganeti.hypervisor.hv_lxc_unittest.py
> +++ b/test/py/ganeti.hypervisor.hv_lxc_unittest.py
> @@ -33,7 +33,22 @@ from ganeti.hypervisor import hv_lxc
>  from ganeti.hypervisor.hv_lxc import LXCHypervisor
>
>  import mock
> +import os
> +import shutil
> +import tempfile
>  import testutils
> +from testutils import patch_object
> +
>

\n


> +def setUpModule():
> +  # Creating instance of LXCHypervisor will fail by permission issue of
> +  # instance directories
> +  global temp_dir
> +  temp_dir = tempfile.mkdtemp()
> +  LXCHypervisor._ROOT_DIR = utils.PathJoin(temp_dir, "root")
> +  LXCHypervisor._LOG_DIR = utils.PathJoin(temp_dir, "log")
> +
>

\n


> +def tearDownModule():
> +  shutil.rmtree(temp_dir)
>
>
>  def RunResultOk(stdout):
> @@ -81,5 +96,82 @@ class
> TestLXCHypervisorGetInstanceInfo(unittest.TestCase):
>      isalive_mock.return_value = False
>      self.assertIsNone(self.hv.GetInstanceInfo("inst1"))
>
>
\n


> +class TestCgroupMount(unittest.TestCase):
> +  @patch_object(utils, "GetMounts")
> +  @patch_object(LXCHypervisor, "_MountCgroupSubsystem")
> +  def testGetOrPrepareCgroupSubsysMountPoint(self, mntcgsub_mock,
> getmnt_mock):
> +    getmnt_mock.return_value = [
> +      ("/dev/foo", "/foo", "foo", "cpuset"),
> +      ("cpuset", "/sys/fs/cgroup/cpuset", "cgroup", "rw,relatime,cpuset"),
> +      ("devices", "/sys/fs/cgroup/devices", "cgroup",
> "rw,devices,relatime"),
>

s/relatime/realtime/ - it does not matter though


> +      ("cpumem", "/sys/fs/cgroup/cpumem", "cgroup",
> "cpu,memory,rw,relatime"),
>

^


> +      ]
> +    mntcgsub_mock.return_value = "/foo"
> +    hv = LXCHypervisor()
> +    self.assertEqual(hv._GetOrPrepareCgroupSubsysMountPoint("cpuset"),
> +                     "/sys/fs/cgroup/cpuset")
> +    self.assertEqual(hv._GetOrPrepareCgroupSubsysMountPoint("devices"),
> +                     "/sys/fs/cgroup/devices")
> +    self.assertEqual(hv._GetOrPrepareCgroupSubsysMountPoint("cpu"),
> +                     "/sys/fs/cgroup/cpumem")
> +    self.assertEqual(hv._GetOrPrepareCgroupSubsysMountPoint("memory"),
> +                     "/sys/fs/cgroup/cpumem")
> +    self.assertEqual(hv._GetOrPrepareCgroupSubsysMountPoint("freezer"),
> +                     "/foo")
> +    mntcgsub_mock.assert_called_with("freezer")
> +
>

\n


> +class TestCgroupReadData(unittest.TestCase):
> +  cgroot = os.path.abspath(testutils.TestDataFilename("cgroup_root"))
> +
> +  def setUp(self):
> +    self.hv = LXCHypervisor()
> +
> +  @patch_object(LXCHypervisor, "_CGROUP_ROOT_DIR", cgroot)
> +  def testGetCgroupMountPoint(self):
> +    self.assertEqual(self.hv._GetCgroupMountPoint(), self.cgroot)
> +
> +  @patch_object(LXCHypervisor, "_PROC_CGROUP_FILE",
> +                testutils.TestDataFilename("proc_cgroup.txt"))
> +  def testGetCurrentCgroupSubsysGroups(self):
> +    expected_groups = {
> +      "memory": "", # root
> +      "cpuset": "some_group",
> +      "devices": "some_group",
> +      }
> +    self.assertEqual(self.hv._GetCurrentCgroupSubsysGroups(),
> expected_groups)
> +
> +  @patch_object(LXCHypervisor, "_GetOrPrepareCgroupSubsysMountPoint")
> +  @patch_object(LXCHypervisor, "_GetCurrentCgroupSubsysGroups")
> +  def testGetCgroupInstanceSubsysDir(self, getcgg_mock, getmp_mock):
> +    getmp_mock.return_value = "/cg"
> +    getcgg_mock.return_value = {"cpuset":"grp"}
>

s/:/: /

+    self.assertEqual(self.hv._GetCgroupInstanceSubsysDir("instance1",
> "memory"),
> +                     "/cg/lxc/instance1")
> +    self.assertEqual(self.hv._GetCgroupInstanceSubsysDir("instance1",
> "cpuset"),
> +                     "/cg/grp/lxc/instance1")
> +
> +  @patch_object(LXCHypervisor, "_GetCgroupInstanceSubsysDir")
> +  def testGetCgroupInstanceValue(self, getdir_mock):
> +    getdir_mock.return_value = utils.PathJoin(self.cgroot, "memory",
> "lxc",
> +                                              "instance1")
> +    self.assertEqual(self.hv._GetCgroupInstanceValue("instance1",
> "memory",
> +
> "memory.limit_in_bytes"),
> +                     "128")
> +    getdir_mock.return_value = utils.PathJoin(self.cgroot, "cpuset",
> +                                              "some_group", "lxc",
> "instance1")
> +    self.assertEqual(self.hv._GetCgroupInstanceValue("instance1",
> "cpuset",
> +                                                     "cpuset.cpus"),
> +                     "0-1")
> +
> +  @patch_object(LXCHypervisor, "_GetCgroupInstanceValue")
> +  def testGetCgroupCpuList(self, getval_mock):
> +    getval_mock.return_value = "0-1"
> +    self.assertEqual(self.hv._GetCgroupCpuList("instance1"), [0, 1])
> +
> +  @patch_object(LXCHypervisor, "_GetCgroupInstanceValue")
> +  def testGetCgroupMemoryLimit(self, getval_mock):
> +    getval_mock.return_value = "128"
> +    self.assertEqual(self.hv._GetCgroupMemoryLimit("instance1"), 128)
> +
>  if __name__ == "__main__":
>    testutils.GanetiTestProgram()
> --
> 1.8.5.5
>
>

Reply via email to