From af750ac4e4a3b33cf09c9609c5b8b2e66c5781f6 Mon Sep 17 00:00:00 2001 From: mhagger Date: Sun, 8 Aug 2010 20:07:37 +0000 Subject: [PATCH] Add a simple test of the ability to merge a large number of files. git-svn-id: http://cvs2svn.tigris.org/svn/cvs2svn/trunk@5243 be7e6eca-30d4-0310-a8e5-ac0d63af7087 --- cvs2svn_lib/test/sort-test | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 cvs2svn_lib/test/sort-test diff --git a/cvs2svn_lib/test/sort-test b/cvs2svn_lib/test/sort-test new file mode 100755 index 00000000..5c5c8818 --- /dev/null +++ b/cvs2svn_lib/test/sort-test @@ -0,0 +1,48 @@ +#! /usr/bin/python + +"""A trivial test of sorting a large number of tiny files. + +This is mostly to verify that hierarchical merging doesn't blow up due +to opening too many files at once.""" + + +import sys +import os +import shutil + +SRCPATH = os.path.normpath(os.path.join(os.path.dirname(__file__), '..', '..')) +sys.path.insert(0, os.path.join(SRCPATH)) + +from cvs2svn_lib import sort + + +TMPDIR = 'cvs2svn-tmp' +NUMFILES = 2200 +LINES_PER_FILE = 5 + +OUTFILE = os.path.join(TMPDIR, 'out.dat') + +try: + shutil.rmtree(TMPDIR) +except: + pass + +filenames = [ + os.path.join(TMPDIR, '%04d.dat' % (i,)) + for i in range(NUMFILES) + ] + +os.makedirs(TMPDIR) +for (i, filename) in enumerate(filenames): + f = open(filename, 'w') + for j in range(LINES_PER_FILE): + f.write('%04d %04d\n' % (j, i,)) + f.close() + +sort.merge_files(filenames, OUTFILE, max_merge=4) + +for (i, line) in enumerate(open(OUTFILE)): + assert line == '%04d %04d\n' % (i // NUMFILES, i % NUMFILES,) + +print 'OK' + -- 2.11.4.GIT