30
31
def __call__(self, env, start_response):
33
35
def start_response(*args):
36
39
class FakeFromCache(object):
38
41
def __init__(self, out=None):
40
self.fakeout_calls = []
43
self.fakeout_calls = []
42
45
def fake_from_recon_cache(self, *args, **kwargs):
43
46
self.fakeout_calls.append((args, kwargs))
44
47
return self.fakeout
46
50
class OpenAndReadTester(object):
48
52
def __init__(self, output_iter):
76
80
self.open_calls.append((args, kwargs))
79
84
class MockOS(object):
81
def __init__(self, ls_out=None, pe_out=None, statvfs_out=None,
82
lstat_out=(1, 1, 5, 4, 5, 5, 55, 55, 55, 55)):
86
def __init__(self, ls_out=None, im_out=False, statvfs_out=None):
83
87
self.ls_output = ls_out
84
self.path_exists_output = pe_out
88
self.ismount_output = im_out
85
89
self.statvfs_output = statvfs_out
86
self.lstat_output_tuple = lstat_out
87
90
self.listdir_calls = []
88
91
self.statvfs_calls = []
89
self.path_exists_calls = []
92
self.ismount_calls = []
92
94
def fake_listdir(self, *args, **kwargs):
93
95
self.listdir_calls.append((args, kwargs))
94
96
return self.ls_output
96
def fake_path_exists(self, *args, **kwargs):
97
self.path_exists_calls.append((args, kwargs))
98
return self.path_exists_output
98
def fake_ismount(self, *args, **kwargs):
99
self.ismount_calls.append((args, kwargs))
100
return self.ismount_output
100
102
def fake_statvfs(self, *args, **kwargs):
101
103
self.statvfs_calls.append((args, kwargs))
102
104
return statvfs_result(self.statvfs_output)
104
def fake_lstat(self, *args, **kwargs):
105
self.lstat_calls.append((args, kwargs))
106
return stat_result(self.lstat_output_tuple)
109
107
class FakeRecon(object):
182
181
self.mockos = MockOS()
183
182
self.fakecache = FakeFromCache()
184
183
self.real_listdir = os.listdir
185
self.real_path_exists = os.path.exists
186
self.real_lstat = os.lstat
184
self.real_ismount = swift.common.constraints.ismount
187
185
self.real_statvfs = os.statvfs
188
186
os.listdir = self.mockos.fake_listdir
189
os.path.exists = self.mockos.fake_path_exists
190
os.lstat = self.mockos.fake_lstat
187
swift.common.constraints.ismount = self.mockos.fake_ismount
191
188
os.statvfs = self.mockos.fake_statvfs
192
189
self.real_from_cache = self.app._from_recon_cache
193
190
self.app._from_recon_cache = self.fakecache.fake_from_recon_cache
389
385
"no_change": 2, "remote_merge": 0,
390
386
"remove": 0, "rsync": 0,
391
387
"start": 1333044050.855202,
392
"success": 2, "ts_repl": 0 },
388
"success": 2, "ts_repl": 0},
393
389
"replication_time": 0.2615511417388916,
394
390
"replication_last": 1357969645.25}
395
391
self.fakecache.fakeout = from_cache_response
405
401
"no_change": 2, "remote_merge": 0,
406
402
"remove": 0, "rsync": 0,
407
403
"start": 1333044050.855202,
408
"success": 2, "ts_repl": 0 },
404
"success": 2, "ts_repl": 0},
409
405
"replication_time": 0.2615511417388916,
410
406
"replication_last": 1357969645.25})
537
533
"completed": 115.4512460231781,
539
535
"files_processed": 2310,
541
537
"object_auditor_stats_ZBF": {
542
538
"audit_time": 45.877294063568115,
543
539
"bytes_processed": 0,
544
540
"completed": 46.181446075439453,
546
542
"files_processed": 2310,
549
545
def test_get_unmounted(self):
551
def fake_checkmount_true(*args):
554
547
unmounted_resp = [{'device': 'fakeone', 'mounted': False},
555
548
{'device': 'faketwo', 'mounted': False}]
556
self.mockos.ls_output=['fakeone', 'faketwo']
557
self.mockos.path_exists_output=False
558
real_checkmount = swift.common.constraints.check_mount
559
swift.common.constraints.check_mount = fake_checkmount_true
549
self.mockos.ls_output = ['fakeone', 'faketwo']
550
self.mockos.ismount_output = False
560
551
rv = self.app.get_unmounted()
561
swift.common.constraints.check_mount = real_checkmount
562
552
self.assertEquals(self.mockos.listdir_calls, [(('/srv/node/',), {})])
563
553
self.assertEquals(rv, unmounted_resp)
570
560
unmounted_resp = []
571
self.mockos.ls_output=[]
572
self.mockos.path_exists_output=False
573
real_checkmount = swift.common.constraints.check_mount
574
swift.common.constraints.check_mount = fake_checkmount_true
561
self.mockos.ls_output = []
562
self.mockos.ismount_output = False
575
563
rv = self.app.get_unmounted()
576
swift.common.constraints.check_mount = real_checkmount
577
564
self.assertEquals(self.mockos.listdir_calls, [(('/srv/node/',), {})])
578
565
self.assertEquals(rv, unmounted_resp)
580
567
def test_get_diskusage(self):
581
568
#posix.statvfs_result(f_bsize=4096, f_frsize=4096, f_blocks=1963185,
582
# f_bfree=1113075, f_bavail=1013351, f_files=498736,
569
# f_bfree=1113075, f_bavail=1013351,
583
571
# f_ffree=397839, f_favail=397839, f_flag=0,
585
statvfs_content=(4096, 4096, 1963185, 1113075, 1013351, 498736, 397839,
573
statvfs_content = (4096, 4096, 1963185, 1113075, 1013351, 498736,
574
397839, 397839, 0, 255)
587
575
du_resp = [{'device': 'canhazdrive1', 'avail': 4150685696,
588
576
'mounted': True, 'used': 3890520064, 'size': 8041205760}]
589
self.mockos.ls_output=['canhazdrive1']
590
self.mockos.statvfs_output=statvfs_content
591
self.mockos.path_exists_output=True
577
self.mockos.ls_output = ['canhazdrive1']
578
self.mockos.statvfs_output = statvfs_content
579
self.mockos.ismount_output = True
592
580
rv = self.app.get_diskusage()
593
581
self.assertEquals(self.mockos.statvfs_calls,
594
582
[(('/srv/node/canhazdrive1',), {})])
597
585
def test_get_diskusage_checkmount_fail(self):
598
586
du_resp = [{'device': 'canhazdrive1', 'avail': '',
599
587
'mounted': False, 'used': '', 'size': ''}]
600
self.mockos.ls_output=['canhazdrive1']
601
self.mockos.path_exists_output=False
588
self.mockos.ls_output = ['canhazdrive1']
589
self.mockos.ismount_output = False
602
590
rv = self.app.get_diskusage()
603
self.assertEquals(self.mockos.listdir_calls,[(('/srv/node/',), {})])
604
self.assertEquals(self.mockos.path_exists_calls,
591
self.assertEquals(self.mockos.listdir_calls, [(('/srv/node/',), {})])
592
self.assertEquals(self.mockos.ismount_calls,
605
593
[(('/srv/node/canhazdrive1',), {})])
606
594
self.assertEquals(rv, du_resp)
608
596
def test_get_quarantine_count(self):
609
#posix.lstat_result(st_mode=1, st_ino=2, st_dev=3, st_nlink=4,
610
# st_uid=5, st_gid=6, st_size=7, st_atime=8,
611
# st_mtime=9, st_ctime=10)
612
lstat_content = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
613
self.mockos.ls_output=['sda']
614
self.mockos.path_exists_output=True
615
self.mockos.lstat_output=lstat_content
616
rv = self.app.get_quarantine_count()
597
self.mockos.ls_output = ['sda']
598
self.mockos.ismount_output = True
600
def fake_lstat(*args, **kwargs):
601
#posix.lstat_result(st_mode=1, st_ino=2, st_dev=3, st_nlink=4,
602
# st_uid=5, st_gid=6, st_size=7, st_atime=8,
603
# st_mtime=9, st_ctime=10)
604
return stat_result((1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
606
def fake_exists(*args, **kwargs):
609
with mock.patch("os.lstat", fake_lstat):
610
with mock.patch("os.path.exists", fake_exists):
611
rv = self.app.get_quarantine_count()
617
612
self.assertEquals(rv, {'objects': 2, 'accounts': 2, 'containers': 2})
619
614
def test_get_socket_info(self):