summaryrefslogtreecommitdiff
path: root/git
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2015-01-03 20:25:01 +0100
committerSebastian Thiel <byronimo@gmail.com>2015-01-03 20:31:18 +0100
commitf2840c626d2eb712055ccb5dcbad25d040f17ce1 (patch)
tree15b771106a507fe284ab610bf0d141fa9255f4f2 /git
parent342a0276dbf11366ae91ce28dcceddc332c97eaf (diff)
downloadgitpython-f2840c626d2eb712055ccb5dcbad25d040f17ce1.tar.gz
Auto-skip performance tests more quietly on travis
... and be able to run performance tests independently of the chosen performance test repo Now all tests run fine locally
Diffstat (limited to 'git')
-rw-r--r--git/test/lib/helper.py3
-rw-r--r--git/test/performance/lib.py10
-rw-r--r--git/test/performance/test_commit.py13
-rw-r--r--git/test/performance/test_odb.py4
-rw-r--r--git/test/performance/test_streams.py2
-rw-r--r--git/test/performance/test_utils.py7
6 files changed, 14 insertions, 25 deletions
diff --git a/git/test/lib/helper.py b/git/test/lib/helper.py
index 40e34fe0..df94abde 100644
--- a/git/test/lib/helper.py
+++ b/git/test/lib/helper.py
@@ -8,6 +8,7 @@ import os
import sys
from git import Repo, Remote, GitCommandError, Git
from unittest import TestCase
+import time
import tempfile
import shutil
import cStringIO
@@ -191,6 +192,8 @@ def with_rw_and_rw_remote_repo(working_tree_ref):
# On windows, this will fail ... we deal with failures anyway and default to telling the user to do it
try:
gd = Git().daemon(temp_dir, as_process=True)
+ # yes, I know ... fortunately, this is always going to work if sleep time is just large enough
+ time.sleep(0.5)
except Exception as err:
gd = None
# end
diff --git a/git/test/performance/lib.py b/git/test/performance/lib.py
index 985e3637..9b6f45bf 100644
--- a/git/test/performance/lib.py
+++ b/git/test/performance/lib.py
@@ -1,6 +1,7 @@
"""Contains library functions"""
import os
from git.test.lib import *
+from gitdb.test.lib import skip_on_travis_ci
import shutil
import tempfile
import logging
@@ -36,11 +37,11 @@ class TestBigRepoR(TestBase):
"""
#{ Invariants
- head_sha_2k = '235d521da60e4699e5bd59ac658b5b48bd76ddca'
- head_sha_50 = '32347c375250fd470973a5d76185cac718955fd5'
#} END invariants
def setUp(self):
+ # This will raise on travis, which is what we want to happen early as to prevent us to do any work
+ skip_on_travis_ci(lambda *args: None)(self)
try:
super(TestBigRepoR, self).setUp()
except AttributeError:
@@ -54,7 +55,6 @@ class TestBigRepoR(TestBase):
self.gitrorepo = Repo(repo_path, odbt=GitCmdObjectDB)
self.puregitrorepo = Repo(repo_path, odbt=GitDB)
-
class TestBigRepoRW(TestBigRepoR):
"""As above, but provides a big repository that we can write to.
@@ -62,6 +62,7 @@ class TestBigRepoRW(TestBigRepoR):
Provides ``self.gitrwrepo`` and ``self.puregitrwrepo``"""
def setUp(self):
+ self.gitrwrepo = None
try:
super(TestBigRepoRW, self).setUp()
except AttributeError:
@@ -72,6 +73,7 @@ class TestBigRepoRW(TestBigRepoR):
self.puregitrwrepo = Repo(dirname, odbt=GitDB)
def tearDown(self):
- shutil.rmtree(self.gitrwrepo.working_dir)
+ if self.gitrwrepo is not None:
+ shutil.rmtree(self.gitrwrepo.working_dir)
#} END base classes
diff --git a/git/test/performance/test_commit.py b/git/test/performance/test_commit.py
index a8f63f95..c256a75c 100644
--- a/git/test/performance/test_commit.py
+++ b/git/test/performance/test_commit.py
@@ -8,7 +8,6 @@ from lib import *
from git import *
from gitdb import IStream
from git.test.test_commit import assert_commit_serialization
-from gitdb.test.lib import skip_on_travis_ci
from cStringIO import StringIO
from time import time
import sys
@@ -29,7 +28,6 @@ class TestPerformance(TestBigRepoRW):
c.message
c.parents
- @skip_on_travis_ci
def test_iteration(self):
no = 0
nc = 0
@@ -51,39 +49,36 @@ class TestPerformance(TestBigRepoRW):
print >> sys.stderr, "Traversed %i Trees and a total of %i unchached objects in %s [s] ( %f objs/s )" % (
nc, no, elapsed_time, no / elapsed_time)
- @skip_on_travis_ci
def test_commit_traversal(self):
# bound to cat-file parsing performance
nc = 0
st = time()
- for c in self.gitrorepo.commit(self.head_sha_2k).traverse(branch_first=False):
+ for c in self.gitrorepo.commit().traverse(branch_first=False):
nc += 1
self._query_commit_info(c)
# END for each traversed commit
elapsed_time = time() - st
print >> sys.stderr, "Traversed %i Commits in %s [s] ( %f commits/s )" % (nc, elapsed_time, nc / elapsed_time)
- @skip_on_travis_ci
def test_commit_iteration(self):
# bound to stream parsing performance
nc = 0
st = time()
- for c in Commit.iter_items(self.gitrorepo, self.head_sha_2k):
+ for c in Commit.iter_items(self.gitrorepo, self.gitrorepo.head):
nc += 1
self._query_commit_info(c)
# END for each traversed commit
elapsed_time = time() - st
print >> sys.stderr, "Iterated %i Commits in %s [s] ( %f commits/s )" % (nc, elapsed_time, nc / elapsed_time)
- @skip_on_travis_ci
def test_commit_serialization(self):
- assert_commit_serialization(self.gitrwrepo, self.head_sha_2k, True)
+ assert_commit_serialization(self.gitrwrepo, self.gitrwrepo.head, True)
rwrepo = self.gitrwrepo
make_object = rwrepo.odb.store
# direct serialization - deserialization can be tested afterwards
# serialization is probably limited on IO
- hc = rwrepo.commit(self.head_sha_2k)
+ hc = rwrepo.commit(rwrepo.head)
nc = 5000
st = time()
diff --git a/git/test/performance/test_odb.py b/git/test/performance/test_odb.py
index 1c4bd9ed..9d857260 100644
--- a/git/test/performance/test_odb.py
+++ b/git/test/performance/test_odb.py
@@ -2,7 +2,6 @@
from time import time
import sys
-from gitdb.test.lib import skip_on_travis_ci
from lib import (
TestBigRepoR
@@ -11,13 +10,12 @@ from lib import (
class TestObjDBPerformance(TestBigRepoR):
- @skip_on_travis_ci
def test_random_access(self):
results = [["Iterate Commits"], ["Iterate Blobs"], ["Retrieve Blob Data"]]
for repo in (self.gitrorepo, self.puregitrorepo):
# GET COMMITS
st = time()
- root_commit = repo.commit(self.head_sha_2k)
+ root_commit = repo.commit(repo.head)
commits = list(root_commit.traverse())
nc = len(commits)
elapsed = time() - st
diff --git a/git/test/performance/test_streams.py b/git/test/performance/test_streams.py
index a2bca94c..facf9eed 100644
--- a/git/test/performance/test_streams.py
+++ b/git/test/performance/test_streams.py
@@ -3,7 +3,6 @@
from git.test.lib import *
from gitdb import *
from gitdb.util import bin_to_hex
-from gitdb.test.lib import skip_on_travis_ci
from time import time
import os
@@ -22,7 +21,6 @@ class TestObjDBPerformance(TestBigRepoR):
large_data_size_bytes = 1000 * 1000 * 10 # some MiB should do it
moderate_data_size_bytes = 1000 * 1000 * 1 # just 1 MiB
- @skip_on_travis_ci
@with_rw_repo('HEAD', bare=True)
def test_large_data_streaming(self, rwrepo):
# TODO: This part overlaps with the same file in gitdb.test.performance.test_stream
diff --git a/git/test/performance/test_utils.py b/git/test/performance/test_utils.py
index b0d6fa48..e7c33aa2 100644
--- a/git/test/performance/test_utils.py
+++ b/git/test/performance/test_utils.py
@@ -2,8 +2,6 @@
from time import time
import sys
-from gitdb.test.lib import skip_on_travis_ci
-
from lib import (
TestBigRepoR
)
@@ -11,7 +9,6 @@ from lib import (
class TestUtilPerformance(TestBigRepoR):
- @skip_on_travis_ci
def test_access(self):
# compare dict vs. slot access
class Slotty(object):
@@ -66,7 +63,6 @@ class TestUtilPerformance(TestBigRepoR):
cls.__name__, na, elapsed, na / elapsed)
# END for each sequence
- @skip_on_travis_ci
def test_instantiation(self):
ni = 100000
max_num_items = 4
@@ -109,7 +105,6 @@ class TestUtilPerformance(TestBigRepoR):
elapsed = time() - st
print >> sys.stderr, "Created %i tuples tuple((1,2,3,4)) in %f s ( %f tuples / s)" % (ni, elapsed, ni / elapsed)
- @skip_on_travis_ci
def test_unpacking_vs_indexing(self):
ni = 1000000
list_items = [1, 2, 3, 4]
@@ -141,7 +136,6 @@ class TestUtilPerformance(TestBigRepoR):
ni, type(sequence).__name__, len(sequence), elapsed, ni / elapsed)
# END for each sequence
- @skip_on_travis_ci
def test_large_list_vs_iteration(self):
# what costs more: alloc/realloc of lists, or the cpu strain of iterators ?
def slow_iter(ni):
@@ -166,7 +160,6 @@ class TestUtilPerformance(TestBigRepoR):
print >> sys.stderr, "Iterated %i items from iterator in %f s ( %f acc / s)" % (ni, elapsed, ni / elapsed)
# END for each number of iterations
- @skip_on_travis_ci
def test_type_vs_inst_class(self):
class NewType(object):
pass