예제 #1
0
파일: test_cat.py 프로젝트: bsc-s2/ops
    def test_config(self):
        expected = [
            'a' * 32,
            'b' * 32,
        ]
        append_lines(self.fn, expected)

        rc, out, err = proc.shell_script(
            pyt + ' ' + this_base + '/cat/cat_load_config.py ' + self.fn,
            env=dict(PYTHONPATH=this_base + ':' +
                     os.environ.get('PYTHONPATH')))

        dd(rc)
        dd(out)
        dd(err)

        self.assertEqual(0, rc)

        path = [
            'fsutil_cat_lock_',
            'cat_load_config.py',
        ] + os.path.realpath(self.fn)[1:].split(os.path.sep)
        path = './' + '!'.join(path)
        dd(path)

        self.assertTrue(os.path.isfile(path))

        force_remove(path)
    def test_make_server_id(self):

        server_id = str(ectypes.ServerID.local_server_id(_idcid))

        self.assertEqual(18, len(server_id))
        self.assertRegexpMatches(server_id, "^.{6}[0-9a-f]{12}$")
        out = proc.shell_script('ifconfig')
        self.assertIn(re.sub('(.{2})', r':\1', server_id[6:])[1:], str(out))
예제 #3
0
    def test_make_server_id(self):

        server_id = str(ectypes.ServerID.local_server_id(_idcid))

        self.assertEqual(18, len(server_id))
        self.assertRegexpMatches(server_id, "^.{6}[0-9a-f]{12}$")
        out = proc.shell_script('ifconfig')
        self.assertIn(re.sub('(.{2})', r':\1', server_id[6:])[1:], str(out))
예제 #4
0
    def test_get_device(self):

        rst = fsutil.get_device('/inexistent')

        # GNU "grep -o" split items into several lines
        root_dev = proc.shell_script(
            'mount | grep " on / " | grep -o "[^ ]*" | head -n1')[1].strip()

        self.assertEqual(root_dev, rst)
예제 #5
0
    def test_get_device_fs(self):

        # GNU "grep -o" split items into several lines
        rc, out, err = proc.shell_script(
            'mount | grep " on / " | grep -o "[^ ]*" | head -n1')
        dd('find device on /', rc, out, err)

        dev = out.strip()
        dd('device: ', dev)
        rst = fsutil.get_device_fs(dev)
        self.assertIn(rst, ('hfs', 'xfs', 'ext2', 'ext3', 'ext4'))
예제 #6
0
    def test_makedirs_with_config(self):

        fn = '/tmp/pykit-ut-fsutil-foo'
        force_remove(fn)

        rc, out, err = proc.shell_script(
            pyt + ' ' + this_base + '/makedirs_with_config.py ' + fn,
            env=dict(PYTHONPATH=this_base + ':' +
                     os.environ.get('PYTHONPATH')))

        dd('run makedirs_with_config.py: ', rc, out, err)

        self.assertEqual(0, rc, 'normal exit')
        self.assertEqual('2,3', out,
                         'uid,gid is defined in test/pykitconfig.py')
예제 #7
0
    def test_get_path_usage(self):

        path = '/'
        rst = fsutil.get_path_usage(path)

        # check against os.statvfs.
        st = os.statvfs(path)

        dd(humannum.humannum(rst))

        # space is changing..

        self.assertAlmostEqual(st.f_frsize * st.f_bavail,
                               rst['available'],
                               delta=4 * 1024**2)
        self.assertAlmostEqual(st.f_frsize * st.f_blocks,
                               rst['total'],
                               delta=4 * 1024**2)
        self.assertAlmostEqual(st.f_frsize * (st.f_blocks - st.f_bavail),
                               rst['used'],
                               delta=4 * 1024**2)
        self.assertAlmostEqual((st.f_blocks - st.f_bavail) * 100 / st.f_blocks,
                               int(rst['percent'] * 100),
                               delta=4 * 1024**2)

        if st.f_bfree > st.f_bavail:
            self.assertLess(rst['available'], st.f_frsize * st.f_bfree)
        else:
            dd('st.f_bfree == st.f_bavail')

        # check against df

        rc, out, err = proc.shell_script('df -m / | tail -n1')
        # Filesystem 1M-blocks   Used Available Capacity  iused    ifree %iused  Mounted on
        # /dev/disk1    475828 328021    147556    69% 84037441 37774557   69%   /
        dd('space of "/" from df')
        total_mb = out.strip().split()[1]

        # "123.8M", keep int only
        rst_total_mb = humannum.humannum(rst['total'], unit=humannum.M)
        rst_total_mb = rst_total_mb.split('.')[0].split('M')[0]

        dd('total MB from df:', total_mb, 'result total MB:', rst_total_mb)

        self.assertAlmostEqual(int(total_mb), int(rst_total_mb), delta=4)
예제 #8
0
from pykit import proc


returncode, out, err = proc.command('ls', '-al', cwd='/home/cheng')

'''
for i in out.split("\n"):
    print i
    print
print returncode
print err
'''

returncode, out, err = proc.shell_script('ls -al', cwd='/home/cheng')
'''
print out
'''

proc.start_process('csv_to_json.py', '/home/cheng/test_json/', 'p'='a')
예제 #9
0
def subproc(script, env=None):
    if env is None:
        env=dict(PYTHONPATH=this_base + '/../..',)

    return proc.shell_script(script, env=env)
예제 #10
0
파일: close_fds.py 프로젝트: hubiyong/pykit
def run():
    try:
        code, out, err = proc.shell_script('/usr/sbin/lsof -p ' + str(os.getpid()))
    except Exception as e:
        print repr(e)
    write_file(foo_fn, repr(out))
def subproc(script, env=None):
    if env is None:
        env = dict(PYTHONPATH=this_base + '/../..',)

    return proc.shell_script(script, env=env)
예제 #12
0
def run():
    code, out, err = proc.shell_script('/usr/sbin/lsof -p ' + str(os.getpid()))
    write_file(foo_fn, repr(out))