source file: /home/buildslave/tahoe/edgy/build/src/allmydata/storage/lease.py
file stats: 35 lines, 35 executed: 100.0% covered
coverage versus previous test: 0 lines added, 0 lines removed
1. import struct, time
2.
3. class LeaseInfo:
4. def __init__(self, owner_num=None, renew_secret=None, cancel_secret=None,
5. expiration_time=None, nodeid=None):
6. self.owner_num = owner_num
7. self.renew_secret = renew_secret
8. self.cancel_secret = cancel_secret
9. self.expiration_time = expiration_time
10. if nodeid is not None:
11. assert isinstance(nodeid, str)
12. assert len(nodeid) == 20
13. self.nodeid = nodeid
14.
15. def get_expiration_time(self):
16. return self.expiration_time
17. def get_grant_renew_time_time(self):
18. # hack, based upon fixed 31day expiration period
19. return self.expiration_time - 31*24*60*60
20. def get_age(self):
21. return time.time() - self.get_grant_renew_time_time()
22.
23. def from_immutable_data(self, data):
24. (self.owner_num,
25. self.renew_secret,
26. self.cancel_secret,
27. self.expiration_time) = struct.unpack(">L32s32sL", data)
28. self.nodeid = None
29. return self
30. def to_immutable_data(self):
31. return struct.pack(">L32s32sL",
32. self.owner_num,
33. self.renew_secret, self.cancel_secret,
34. int(self.expiration_time))
35.
36. def to_mutable_data(self):
37. return struct.pack(">LL32s32s20s",
38. self.owner_num,
39. int(self.expiration_time),
40. self.renew_secret, self.cancel_secret,
41. self.nodeid)
42. def from_mutable_data(self, data):
43. (self.owner_num,
44. self.expiration_time,
45. self.renew_secret, self.cancel_secret,
46. self.nodeid) = struct.unpack(">LL32s32s20s", data)
47. return self