aboutsummaryrefslogtreecommitdiff
path: root/git/test
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2011-06-06 20:12:48 +0200
committerSebastian Thiel <byronimo@gmail.com>2011-06-06 20:12:48 +0200
commitce79835556c195ed6e638a33280f729537dcee54 (patch)
tree4809e652f089c1879259ef6256e4b1169d52f854 /git/test
parent56a004bb8a08c216fe9764be866e6c00f079e257 (diff)
downloadGitPython-ce79835556c195ed6e638a33280f729537dcee54.tar.gz
GitPython-ce79835556c195ed6e638a33280f729537dcee54.zip
Fixed performance pack writing tests. As they are actually depent on the database (as streams have to be decompressed, it should be redesigned to have multiple database implementations)
Diffstat (limited to 'git/test')
-rw-r--r--git/test/performance/db/test_packedodb_pure.py76
-rw-r--r--git/test/performance/test_pack_streaming.py80
2 files changed, 76 insertions, 80 deletions
diff --git a/git/test/performance/db/test_packedodb_pure.py b/git/test/performance/db/test_packedodb_pure.py
index 7b9f2930..f254c518 100644
--- a/git/test/performance/db/test_packedodb_pure.py
+++ b/git/test/performance/db/test_packedodb_pure.py
@@ -1,7 +1,83 @@
+# Copyright (C) 2010, 2011 Sebastian Thiel (byronimo@gmail.com) and contributors
+#
+# This module is part of GitDB and is released under
+# the New BSD License: http://www.opensource.org/licenses/bsd-license.php
from packedodb_impl import TestPurePackedODBPerformanceBase
from git.db.py.pack import PurePackedODB
+from git.stream import NullStream
+
+from git.pack import PackEntity
+
+import os
+import sys
+
+from time import time
+from nose import SkipTest
+
+
+class CountedNullStream(NullStream):
+ __slots__ = '_bw'
+ def __init__(self):
+ self._bw = 0
+
+ def bytes_written(self):
+ return self._bw
+
+ def write(self, d):
+ self._bw += NullStream.write(self, d)
+
+
class TestPurePackedODB(TestPurePackedODBPerformanceBase):
#{ Configuration
PackedODBCls = PurePackedODB
#} END configuration
+
+ def test_pack_writing(self):
+ # see how fast we can write a pack from object streams.
+ # This will not be fast, as we take time for decompressing the streams as well
+ ostream = CountedNullStream()
+ pdb = self.ropdb
+
+ ni = 5000
+ count = 0
+ total_size = 0
+ st = time()
+ objs = list()
+ for sha in pdb.sha_iter():
+ count += 1
+ objs.append(pdb.stream(sha))
+ if count == ni:
+ break
+ #END gather objects for pack-writing
+ elapsed = time() - st
+ print >> sys.stderr, "PDB Streaming: Got %i streams by sha in in %f s ( %f streams/s )" % (ni, elapsed, ni / elapsed)
+
+ st = time()
+ PackEntity.write_pack(objs, ostream.write)
+ elapsed = time() - st
+ total_kb = ostream.bytes_written() / 1000
+ print >> sys.stderr, "PDB Streaming: Wrote pack of size %i kb in %f s (%f kb/s)" % (total_kb, elapsed, total_kb/elapsed)
+
+
+ def test_stream_reading(self):
+ raise SkipTest("This test was only used for --with-profile runs")
+ pdb = self.ropdb
+
+ # streaming only, meant for --with-profile runs
+ ni = 5000
+ count = 0
+ pdb_stream = pdb.stream
+ total_size = 0
+ st = time()
+ for sha in pdb.sha_iter():
+ if count == ni:
+ break
+ stream = pdb_stream(sha)
+ stream.read()
+ total_size += stream.size
+ count += 1
+ elapsed = time() - st
+ total_kib = total_size / 1000
+ print >> sys.stderr, "PDB Streaming: Got %i streams by sha and read all bytes totallying %i KiB ( %f KiB / s ) in %f s ( %f streams/s )" % (ni, total_kib, total_kib/elapsed , elapsed, ni / elapsed)
+
diff --git a/git/test/performance/test_pack_streaming.py b/git/test/performance/test_pack_streaming.py
deleted file mode 100644
index cc890ee0..00000000
--- a/git/test/performance/test_pack_streaming.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 2010, 2011 Sebastian Thiel (byronimo@gmail.com) and contributors
-#
-# This module is part of GitDB and is released under
-# the New BSD License: http://www.opensource.org/licenses/bsd-license.php
-"""Specific test for pack streams only"""
-from lib import (
- TestBigRepoR
- )
-
-from git.db.pack import PackedDB
-from git.stream import NullStream
-from git.pack import PackEntity
-
-import os
-import sys
-from time import time
-from nose import SkipTest
-
-class CountedNullStream(NullStream):
- __slots__ = '_bw'
- def __init__(self):
- self._bw = 0
-
- def bytes_written(self):
- return self._bw
-
- def write(self, d):
- self._bw += NullStream.write(self, d)
-
-
-class TestPackStreamingPerformance(TestBigRepoR):
-
- def test_pack_writing(self):
- # see how fast we can write a pack from object streams.
- # This will not be fast, as we take time for decompressing the streams as well
- ostream = CountedNullStream()
- pdb = PackedDB(os.path.join(self.gitrepopath, "objects/pack"))
-
- ni = 5000
- count = 0
- total_size = 0
- st = time()
- objs = list()
- for sha in pdb.sha_iter():
- count += 1
- objs.append(pdb.stream(sha))
- if count == ni:
- break
- #END gather objects for pack-writing
- elapsed = time() - st
- print >> sys.stderr, "PDB Streaming: Got %i streams by sha in in %f s ( %f streams/s )" % (ni, elapsed, ni / elapsed)
-
- st = time()
- PackEntity.write_pack(objs, ostream.write)
- elapsed = time() - st
- total_kb = ostream.bytes_written() / 1000
- print >> sys.stderr, "PDB Streaming: Wrote pack of size %i kb in %f s (%f kb/s)" % (total_kb, elapsed, total_kb/elapsed)
-
-
- def test_stream_reading(self):
- raise SkipTest()
- pdb = PackedDB(os.path.join(self.gitrepopath, "objects/pack"))
-
- # streaming only, meant for --with-profile runs
- ni = 5000
- count = 0
- pdb_stream = pdb.stream
- total_size = 0
- st = time()
- for sha in pdb.sha_iter():
- if count == ni:
- break
- stream = pdb_stream(sha)
- stream.read()
- total_size += stream.size
- count += 1
- elapsed = time() - st
- total_kib = total_size / 1000
- print >> sys.stderr, "PDB Streaming: Got %i streams by sha and read all bytes totallying %i KiB ( %f KiB / s ) in %f s ( %f streams/s )" % (ni, total_kib, total_kib/elapsed , elapsed, ni / elapsed)
-