~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_knit.py

  • Committer: Jelmer Vernooij
  • Date: 2011-05-10 07:46:15 UTC
  • mfrom: (5844 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5845.
  • Revision ID: jelmer@samba.org-20110510074615-eptod049ndjxc4i7
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
    KnitVersionedFiles,
41
41
    PlainKnitContent,
42
42
    _VFContentMapGenerator,
43
 
    _DirectPackAccess,
44
43
    _KndxIndex,
45
44
    _KnitGraphIndex,
46
45
    _KnitKeyAccess,
47
46
    make_file_factory,
48
47
    )
49
48
from bzrlib.patiencediff import PatienceSequenceMatcher
50
 
from bzrlib.repofmt import pack_repo
 
49
from bzrlib.repofmt import (
 
50
    knitpack_repo,
 
51
    pack_repo,
 
52
    )
51
53
from bzrlib.tests import (
52
54
    TestCase,
53
55
    TestCaseWithMemoryTransport,
325
327
            transport.append_bytes(packname, bytes)
326
328
        writer = pack.ContainerWriter(write_data)
327
329
        writer.begin()
328
 
        access = _DirectPackAccess({})
 
330
        access = pack_repo._DirectPackAccess({})
329
331
        access.set_writer(writer, index, (transport, packname))
330
332
        return access, writer
331
333
 
397
399
        collection = repo._pack_collection
398
400
        collection.ensure_loaded()
399
401
        orig_packs = collection.packs
400
 
        packer = pack_repo.Packer(collection, orig_packs, '.testpack')
 
402
        packer = knitpack_repo.KnitPacker(collection, orig_packs, '.testpack')
401
403
        new_pack = packer.pack()
402
404
        # forget about the new pack
403
405
        collection.reset()
456
458
        memos.extend(access.add_raw_records([('key', 5)], 'alpha'))
457
459
        writer.end()
458
460
        transport = self.get_transport()
459
 
        access = _DirectPackAccess({"FOO":(transport, 'packfile'),
 
461
        access = pack_repo._DirectPackAccess({"FOO":(transport, 'packfile'),
460
462
            "FOOBAR":(transport, 'pack2'),
461
463
            "BAZ":(transport, 'pack3')})
462
464
        self.assertEqual(['1234567890', '12345', 'alpha'],
472
474
 
473
475
    def test_set_writer(self):
474
476
        """The writer should be settable post construction."""
475
 
        access = _DirectPackAccess({})
 
477
        access = pack_repo._DirectPackAccess({})
476
478
        transport = self.get_transport()
477
479
        packname = 'packfile'
478
480
        index = 'foo'
490
492
        transport = self.get_transport()
491
493
        reload_called, reload_func = self.make_reload_func()
492
494
        # Note that the index key has changed from 'foo' to 'bar'
493
 
        access = _DirectPackAccess({'bar':(transport, 'packname')},
 
495
        access = pack_repo._DirectPackAccess({'bar':(transport, 'packname')},
494
496
                                   reload_func=reload_func)
495
497
        e = self.assertListRaises(errors.RetryWithNewPacks,
496
498
                                  access.get_raw_records, memos)
505
507
        memos = self.make_pack_file()
506
508
        transport = self.get_transport()
507
509
        # Note that the index key has changed from 'foo' to 'bar'
508
 
        access = _DirectPackAccess({'bar':(transport, 'packname')})
 
510
        access = pack_repo._DirectPackAccess({'bar':(transport, 'packname')})
509
511
        e = self.assertListRaises(KeyError, access.get_raw_records, memos)
510
512
 
511
513
    def test_missing_file_raises_retry(self):
513
515
        transport = self.get_transport()
514
516
        reload_called, reload_func = self.make_reload_func()
515
517
        # Note that the 'filename' has been changed to 'different-packname'
516
 
        access = _DirectPackAccess({'foo':(transport, 'different-packname')},
517
 
                                   reload_func=reload_func)
 
518
        access = pack_repo._DirectPackAccess(
 
519
            {'foo':(transport, 'different-packname')},
 
520
            reload_func=reload_func)
518
521
        e = self.assertListRaises(errors.RetryWithNewPacks,
519
522
                                  access.get_raw_records, memos)
520
523
        # The file has gone missing, so we assume we need to reload
528
531
        memos = self.make_pack_file()
529
532
        transport = self.get_transport()
530
533
        # Note that the 'filename' has been changed to 'different-packname'
531
 
        access = _DirectPackAccess({'foo':(transport, 'different-packname')})
 
534
        access = pack_repo._DirectPackAccess(
 
535
            {'foo': (transport, 'different-packname')})
532
536
        e = self.assertListRaises(errors.NoSuchFile,
533
537
                                  access.get_raw_records, memos)
534
538
 
538
542
        failing_transport = MockReadvFailingTransport(
539
543
                                [transport.get_bytes('packname')])
540
544
        reload_called, reload_func = self.make_reload_func()
541
 
        access = _DirectPackAccess({'foo':(failing_transport, 'packname')},
542
 
                                   reload_func=reload_func)
 
545
        access = pack_repo._DirectPackAccess(
 
546
            {'foo': (failing_transport, 'packname')},
 
547
            reload_func=reload_func)
543
548
        # Asking for a single record will not trigger the Mock failure
544
549
        self.assertEqual(['1234567890'],
545
550
            list(access.get_raw_records(memos[:1])))
561
566
        failing_transport = MockReadvFailingTransport(
562
567
                                [transport.get_bytes('packname')])
563
568
        reload_called, reload_func = self.make_reload_func()
564
 
        access = _DirectPackAccess({'foo':(failing_transport, 'packname')})
 
569
        access = pack_repo._DirectPackAccess(
 
570
            {'foo':(failing_transport, 'packname')})
565
571
        # Asking for a single record will not trigger the Mock failure
566
572
        self.assertEqual(['1234567890'],
567
573
            list(access.get_raw_records(memos[:1])))
572
578
                                  access.get_raw_records, memos)
573
579
 
574
580
    def test_reload_or_raise_no_reload(self):
575
 
        access = _DirectPackAccess({}, reload_func=None)
 
581
        access = pack_repo._DirectPackAccess({}, reload_func=None)
576
582
        retry_exc = self.make_retry_exception()
577
583
        # Without a reload_func, we will just re-raise the original exception
578
584
        self.assertRaises(_TestException, access.reload_or_raise, retry_exc)
579
585
 
580
586
    def test_reload_or_raise_reload_changed(self):
581
587
        reload_called, reload_func = self.make_reload_func(return_val=True)
582
 
        access = _DirectPackAccess({}, reload_func=reload_func)
 
588
        access = pack_repo._DirectPackAccess({}, reload_func=reload_func)
583
589
        retry_exc = self.make_retry_exception()
584
590
        access.reload_or_raise(retry_exc)
585
591
        self.assertEqual([1], reload_called)
589
595
 
590
596
    def test_reload_or_raise_reload_no_change(self):
591
597
        reload_called, reload_func = self.make_reload_func(return_val=False)
592
 
        access = _DirectPackAccess({}, reload_func=reload_func)
 
598
        access = pack_repo._DirectPackAccess({}, reload_func=reload_func)
593
599
        retry_exc = self.make_retry_exception()
594
600
        # If reload_occurred is False, then we consider it an error to have
595
601
        # reload_func() return False (no changes).