~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_knit.py

  • Committer: Martin Pool
  • Date: 2011-02-07 01:39:42 UTC
  • mto: This revision was merged to the branch mainline in revision 5650.
  • Revision ID: mbp@canonical.com-20110207013942-roj88kez6jir13tr
Add brief user documentation of command line splitting

Show diffs side-by-side

added added

removed removed

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