|
8 | 8 | import sample_db |
9 | 9 | import mocha_core.hash_comm as hc |
10 | 10 | import mocha_core.database_utils as du |
| 11 | +import copy |
11 | 12 |
|
12 | 13 | import pprint |
13 | 14 |
|
@@ -76,16 +77,53 @@ def test_get_header_list(self): |
76 | 77 | def test_headers_not_in_local(self): |
77 | 78 | dbl = sample_db.get_sample_dbl() |
78 | 79 | header_list = dbl.get_header_list() |
| 80 | + # Test with all headers |
79 | 81 | extra_header_1 = du.generate_random_header() |
80 | 82 | extra_header_2 = du.generate_random_header() |
81 | 83 | header_list.append(extra_header_2) |
82 | 84 | header_list.append(extra_header_1) |
83 | 85 | new_headers = [extra_header_1, extra_header_2] |
84 | 86 | new_headers.sort() |
| 87 | + # Test without newer |
85 | 88 | discover_extra_header = dbl.headers_not_in_local(header_list) |
86 | 89 | discover_extra_header.sort() |
87 | 90 | self.assertListEqual(discover_extra_header, |
88 | 91 | new_headers) |
| 92 | + # Test with older header, create a copy of one of the existing headers in the |
| 93 | + # db. Pick one with the msec field that can accomodate both addition and |
| 94 | + # substraction |
| 95 | + test_header = None |
| 96 | + for header in header_list: |
| 97 | + h = hc.TsHeader.from_header(header) |
| 98 | + if h.msecs > 0 and h.msecs < 999: |
| 99 | + test_header = header |
| 100 | + break |
| 101 | + self.assertTrue(test_header is not None) |
| 102 | + # Modify the timestamp to make it before the current msg |
| 103 | + h = hc.TsHeader.from_header(test_header) |
| 104 | + h.msecs -= 1 |
| 105 | + extra_header_3 = h.bindigest() |
| 106 | + header_list.append(extra_header_3) |
| 107 | + discover_extra_header_latest = dbl.headers_not_in_local(header_list, newer=True) |
| 108 | + discover_extra_header_latest.sort() |
| 109 | + discover_extra_header_all = dbl.headers_not_in_local(header_list) |
| 110 | + discover_extra_header_all.sort() |
| 111 | + self.assertListEqual(discover_extra_header_latest, new_headers) |
| 112 | + diff_header = set(discover_extra_header_all) - set(discover_extra_header) |
| 113 | + self.assertEqual(diff_header.pop(), extra_header_3) |
| 114 | + # Modify the timestamp to make it after the current msg |
| 115 | + h = hc.TsHeader.from_header(test_header) |
| 116 | + h.msecs += 1 |
| 117 | + extra_header_4 = h.bindigest() |
| 118 | + header_list.append(extra_header_4) |
| 119 | + discover_extra_header_latest = dbl.headers_not_in_local(header_list, newer=True) |
| 120 | + new_headers.append(extra_header_4) # The new header should show in the list |
| 121 | + new_headers.sort() |
| 122 | + discover_extra_header_latest.sort() |
| 123 | + self.assertListEqual(new_headers, discover_extra_header_latest) |
| 124 | + # Finally, getting all the headers should not filter them out |
| 125 | + discover_extra_header = dbl.headers_not_in_local(header_list) |
| 126 | + self.assertTrue(len(discover_extra_header) == 4) |
89 | 127 |
|
90 | 128 | def test_find_header(self): |
91 | 129 | dbl = sample_db.get_sample_dbl() |
|
0 commit comments