Statistics
| Branch: | Tag: | Revision:

root / test / py / ganeti.utils.io_unittest-runasroot.py @ d01e51a5

History | View | Annotate | Download (3.1 kB)

1 0d20cc42 Bernardo Dal Seno
#!/usr/bin/python
2 0d20cc42 Bernardo Dal Seno
#
3 0d20cc42 Bernardo Dal Seno
4 0d20cc42 Bernardo Dal Seno
# Copyright (C) 2006, 2007, 2010, 2011 Google Inc.
5 0d20cc42 Bernardo Dal Seno
#
6 0d20cc42 Bernardo Dal Seno
# This program is free software; you can redistribute it and/or modify
7 0d20cc42 Bernardo Dal Seno
# it under the terms of the GNU General Public License as published by
8 0d20cc42 Bernardo Dal Seno
# the Free Software Foundation; either version 2 of the License, or
9 0d20cc42 Bernardo Dal Seno
# (at your option) any later version.
10 0d20cc42 Bernardo Dal Seno
#
11 0d20cc42 Bernardo Dal Seno
# This program is distributed in the hope that it will be useful, but
12 0d20cc42 Bernardo Dal Seno
# WITHOUT ANY WARRANTY; without even the implied warranty of
13 0d20cc42 Bernardo Dal Seno
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 0d20cc42 Bernardo Dal Seno
# General Public License for more details.
15 0d20cc42 Bernardo Dal Seno
#
16 0d20cc42 Bernardo Dal Seno
# You should have received a copy of the GNU General Public License
17 0d20cc42 Bernardo Dal Seno
# along with this program; if not, write to the Free Software
18 0d20cc42 Bernardo Dal Seno
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 0d20cc42 Bernardo Dal Seno
# 02110-1301, USA.
20 0d20cc42 Bernardo Dal Seno
21 0d20cc42 Bernardo Dal Seno
22 0d20cc42 Bernardo Dal Seno
"""Script for testing ganeti.utils.io (tests that require root access)"""
23 0d20cc42 Bernardo Dal Seno
24 0d20cc42 Bernardo Dal Seno
import os
25 0d20cc42 Bernardo Dal Seno
import tempfile
26 0d20cc42 Bernardo Dal Seno
import shutil
27 0d20cc42 Bernardo Dal Seno
import errno
28 0d20cc42 Bernardo Dal Seno
29 0d20cc42 Bernardo Dal Seno
from ganeti import constants
30 0d20cc42 Bernardo Dal Seno
from ganeti import utils
31 0d20cc42 Bernardo Dal Seno
from ganeti import compat
32 0d20cc42 Bernardo Dal Seno
from ganeti import errors
33 0d20cc42 Bernardo Dal Seno
34 0d20cc42 Bernardo Dal Seno
import testutils
35 0d20cc42 Bernardo Dal Seno
36 0d20cc42 Bernardo Dal Seno
37 0d20cc42 Bernardo Dal Seno
class TestWriteFile(testutils.GanetiTestCase):
38 0d20cc42 Bernardo Dal Seno
  def setUp(self):
39 0d20cc42 Bernardo Dal Seno
    testutils.GanetiTestCase.setUp(self)
40 0d20cc42 Bernardo Dal Seno
    self.tmpdir = None
41 0d20cc42 Bernardo Dal Seno
    self.tfile = tempfile.NamedTemporaryFile()
42 0d20cc42 Bernardo Dal Seno
    self.did_pre = False
43 0d20cc42 Bernardo Dal Seno
    self.did_post = False
44 0d20cc42 Bernardo Dal Seno
    self.did_write = False
45 0d20cc42 Bernardo Dal Seno
46 0d20cc42 Bernardo Dal Seno
  def tearDown(self):
47 0d20cc42 Bernardo Dal Seno
    testutils.GanetiTestCase.tearDown(self)
48 0d20cc42 Bernardo Dal Seno
    if self.tmpdir:
49 0d20cc42 Bernardo Dal Seno
      shutil.rmtree(self.tmpdir)
50 0d20cc42 Bernardo Dal Seno
51 0d20cc42 Bernardo Dal Seno
  def testFileUid(self):
52 0d20cc42 Bernardo Dal Seno
    self.tmpdir = tempfile.mkdtemp()
53 0d20cc42 Bernardo Dal Seno
    target = utils.PathJoin(self.tmpdir, "target")
54 0d20cc42 Bernardo Dal Seno
    tuid = os.geteuid() + 1
55 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", uid=tuid + 1)
56 0d20cc42 Bernardo Dal Seno
    self.assertFileUid(target, tuid + 1)
57 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", uid=tuid)
58 0d20cc42 Bernardo Dal Seno
    self.assertFileUid(target, tuid)
59 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", uid=tuid + 1,
60 0d20cc42 Bernardo Dal Seno
                    keep_perms=utils.KP_IF_EXISTS)
61 0d20cc42 Bernardo Dal Seno
    self.assertFileUid(target, tuid)
62 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", keep_perms=utils.KP_ALWAYS)
63 0d20cc42 Bernardo Dal Seno
    self.assertFileUid(target, tuid)
64 0d20cc42 Bernardo Dal Seno
65 0d20cc42 Bernardo Dal Seno
  def testNewFileUid(self):
66 0d20cc42 Bernardo Dal Seno
    self.tmpdir = tempfile.mkdtemp()
67 0d20cc42 Bernardo Dal Seno
    target = utils.PathJoin(self.tmpdir, "target")
68 0d20cc42 Bernardo Dal Seno
    tuid = os.geteuid() + 1
69 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", uid=tuid,
70 0d20cc42 Bernardo Dal Seno
                    keep_perms=utils.KP_IF_EXISTS)
71 0d20cc42 Bernardo Dal Seno
    self.assertFileUid(target, tuid)
72 0d20cc42 Bernardo Dal Seno
73 0d20cc42 Bernardo Dal Seno
  def testFileGid(self):
74 0d20cc42 Bernardo Dal Seno
    self.tmpdir = tempfile.mkdtemp()
75 0d20cc42 Bernardo Dal Seno
    target = utils.PathJoin(self.tmpdir, "target")
76 0d20cc42 Bernardo Dal Seno
    tgid = os.getegid() + 1
77 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", gid=tgid + 1)
78 0d20cc42 Bernardo Dal Seno
    self.assertFileGid(target, tgid + 1)
79 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", gid=tgid)
80 0d20cc42 Bernardo Dal Seno
    self.assertFileGid(target, tgid)
81 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", gid=tgid + 1,
82 0d20cc42 Bernardo Dal Seno
                    keep_perms=utils.KP_IF_EXISTS)
83 0d20cc42 Bernardo Dal Seno
    self.assertFileGid(target, tgid)
84 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", keep_perms=utils.KP_ALWAYS)
85 0d20cc42 Bernardo Dal Seno
    self.assertFileGid(target, tgid)
86 0d20cc42 Bernardo Dal Seno
87 0d20cc42 Bernardo Dal Seno
  def testNewFileGid(self):
88 0d20cc42 Bernardo Dal Seno
    self.tmpdir = tempfile.mkdtemp()
89 0d20cc42 Bernardo Dal Seno
    target = utils.PathJoin(self.tmpdir, "target")
90 0d20cc42 Bernardo Dal Seno
    tgid = os.getegid() + 1
91 0d20cc42 Bernardo Dal Seno
    utils.WriteFile(target, data="data", gid=tgid,
92 0d20cc42 Bernardo Dal Seno
                    keep_perms=utils.KP_IF_EXISTS)
93 0d20cc42 Bernardo Dal Seno
    self.assertFileGid(target, tgid)
94 0d20cc42 Bernardo Dal Seno
95 0d20cc42 Bernardo Dal Seno
96 0d20cc42 Bernardo Dal Seno
if __name__ == "__main__":
97 0d20cc42 Bernardo Dal Seno
  testutils.GanetiTestProgram()