Show More
@@ -1166,7 +1166,11 b' class Hub(SessionFactory):' | |||
|
1166 | 1166 | msg = self.session.msg(header['msg_type']) |
|
1167 | 1167 | msg_id = msg['msg_id'] |
|
1168 | 1168 | msg['content'] = rec['content'] |
|
1169 | header.update(msg['header']) | |
|
1169 | ||
|
1170 | # use the old header, but update msg_id and timestamp | |
|
1171 | fresh = msg['header'] | |
|
1172 | header['msg_id'] = fresh['msg_id'] | |
|
1173 | header['date'] = fresh['date'] | |
|
1170 | 1174 | msg['header'] = header |
|
1171 | 1175 | |
|
1172 | 1176 | self.session.send(self.resubmit, msg, buffers=rec['buffers']) |
@@ -312,6 +312,28 b' class TestClient(ClusterTestCase):' | |||
|
312 | 312 | r2 = ahr.get(1) |
|
313 | 313 | self.assertFalse(r1 == r2) |
|
314 | 314 | |
|
315 | def test_resubmit_header(self): | |
|
316 | """resubmit shouldn't clobber the whole header""" | |
|
317 | def f(): | |
|
318 | import random | |
|
319 | return random.random() | |
|
320 | v = self.client.load_balanced_view() | |
|
321 | v.retries = 1 | |
|
322 | ar = v.apply_async(f) | |
|
323 | r1 = ar.get(1) | |
|
324 | # give the Hub a chance to notice: | |
|
325 | self._wait_for_idle() | |
|
326 | ahr = self.client.resubmit(ar.msg_ids) | |
|
327 | ahr.get(1) | |
|
328 | time.sleep(0.5) | |
|
329 | records = self.client.db_query({'msg_id': {'$in': ar.msg_ids + ahr.msg_ids}}, keys='header') | |
|
330 | h1,h2 = [ r['header'] for r in records ] | |
|
331 | for key in set(h1.keys()).union(set(h2.keys())): | |
|
332 | if key in ('msg_id', 'date'): | |
|
333 | self.assertNotEquals(h1[key], h2[key]) | |
|
334 | else: | |
|
335 | self.assertEquals(h1[key], h2[key]) | |
|
336 | ||
|
315 | 337 | def test_resubmit_aborted(self): |
|
316 | 338 | def f(): |
|
317 | 339 | import random |
@@ -384,4 +406,3 b' class TestClient(ClusterTestCase):' | |||
|
384 | 406 | "Shouldn't be spinning, but got wall_time=%f" % ar.wall_time |
|
385 | 407 | ) |
|
386 | 408 | |
|
387 |
General Comments 0
You need to be logged in to leave comments.
Login now