1155
1155
match = self.bus.add_signal_receiver(status_handler,
1156
1156
signal_name='StatusChanged')
1157
1157
self.signal_receivers.add(match)
1158
bool_str = self.dbus_iface.status.bool_str
1159
1158
state = states.StateManager.READY
1160
1159
state_dict = {'name':state.name,
1161
1160
'description':state.description,
1191
1190
self.fs_manager.set_node_id(a_path, "node_id")
1192
1191
handled_events = {}
1193
1192
# filter only events we handle
1194
for (name, kind, _, _) in \
1195
inspect.classify_class_attrs(EventListener):
1193
for (name, kind, _, _) in inspect.classify_class_attrs(EventListener):
1196
1194
if kind == 'method' and name.startswith('handle_') \
1197
1195
and not name == 'handle_default':
1198
1196
key = name.split('handle_')[1]
1565
1563
error=expected_error)
1566
def assert_quota_exceeded(self, volume_id, expected_volume_dict):
1567
"""Check correct signaling of QuotaExceeded."""
1568
d = defer.Deferred()
1570
def quota_exceeded_handler(volume_dict):
1571
"""Handler for QuotaExceeded signal."""
1572
if volume_dict == expected_volume_dict:
1573
d.callback(volume_dict)
1575
d.errback('volume_dict must be %s (got %s instead)' %
1576
(expected_volume_dict, volume_dict))
1578
match = self.bus.add_signal_receiver(quota_exceeded_handler,
1579
signal_name='QuotaExceeded')
1580
self.signal_receivers.add(match)
1581
self.event_q.push('SYS_QUOTA_EXCEEDED', volume_id=volume_id)
1584
def test_quota_exceeded_for_share(self):
1585
"""Test QuotaExceeded signal for share."""
1586
volume_id = 'test this please'
1587
path = 'test/path/bla'
1588
name = 'Beatiful Stranger'
1589
a_share = Share(volume_id=volume_id, node_id=None, path=path, name=name,
1590
other_username=None, other_visible_name=None,
1591
accepted=False, access_level='View', free_bytes=None)
1592
self.main.vm.add_share(a_share)
1593
return self.assert_quota_exceeded(volume_id, _get_share_dict(a_share))
1595
def test_quota_exceeded_for_udf(self):
1596
"""Test QuotaExceeded signal for UDF."""
1597
volume_id = 'test this please'
1598
path = 'test/path/bla'
1599
a_udf = UDF(volume_id=volume_id, node_id='test', suggested_path=None,
1600
path=path, subscribed=True)
1601
d = self.main.vm.add_udf(a_udf)
1602
test = self.assert_quota_exceeded(volume_id, _get_udf_dict(a_udf))
1603
d.addCallback(lambda _: test)
1606
def test_quota_exceeded_for_root(self):
1607
"""Test QuotaExceeded signal for UDF."""
1608
root = self.main.vm.root
1609
return self.assert_quota_exceeded(root.volume_id, _get_share_dict(root))
1569
1612
class TestDBusRestart(DBusTwistedTestCase):
1885
1928
suggested_path = u'~/ñoño'
1886
1929
udf = self._create_udf(uuid.uuid4(), 'node_id', suggested_path,
1887
1930
subscribed=False)
1888
udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
1931
udf_dict = _get_udf_dict(udf)
1889
1932
# check the path it's unicode
1890
1933
self.assertEquals(udf_dict['path'], udf.path.decode('utf-8'))
1891
1934
self.assertEquals(udf_dict['volume_id'], udf.id)
1899
1942
udf = self._create_udf(uuid.uuid4(), 'node_id', suggested_path,
1900
1943
subscribed=False)
1901
1944
udf.suggested_path = udf.suggested_path.encode('utf-8')
1902
udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
1945
udf_dict = _get_udf_dict(udf)
1903
1946
# check the path it's unicode
1904
1947
self.assertEquals(udf_dict['path'], udf.path.decode('utf-8'))
1905
1948
self.assertEquals(udf_dict['volume_id'], udf.id)
1926
1969
reply_handler=d2.callback,
1927
1970
error_handler=self.error_handler)
1928
1971
info = yield d2
1929
udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
1972
udf_dict = _get_udf_dict(udf)
1930
1973
self.assertEquals(1, len(info))
1931
1974
for key, value in udf_dict.items():
1932
1975
self.assertEquals(info[0][key], value)
1957
2000
return add_deferred
1958
2001
def check(info):
1959
2002
"""Check we get the udf info."""
1960
udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
2003
udf_dict = _get_udf_dict(udf)
1961
2004
self.assertEquals(info, udf_dict)
1962
2005
d.addCallback(check_error)
1963
2006
d.addCallback(check)
1998
2041
udf = self.main.vm.get_volume(mdobj.share_id)
1999
2042
self.assertNotEquals(None, udf)
2000
2043
self.assertEquals(udf.path, os.path.normpath(path.encode('utf-8')))
2001
udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
2044
udf_dict = _get_udf_dict(udf)
2002
2045
self.assertEquals(info, udf_dict)
2003
2046
self.main.vm.udf_deleted(udf.volume_id)