diff options
| author | Russell Belfer <rb@github.com> | 2013-07-31 16:40:42 -0700 |
|---|---|---|
| committer | Russell Belfer <rb@github.com> | 2013-07-31 16:40:42 -0700 |
| commit | d730d3f4f0efb269dd760a3100ae86c460b8ba36 (patch) | |
| tree | f18efb0a929734ca2668b8a0f4762a0661810397 /tests-clar/clar_libgit2.h | |
| parent | 8dd8aa480ba46863e9c7df40bb9695e88a0286ee (diff) | |
| download | libgit2-d730d3f4f0efb269dd760a3100ae86c460b8ba36.tar.gz | |
Major rename detection changes
After doing further profiling, I found that a lot of time was
being spent attempting to insert hashes into the file hash
signature when using the rolling hash because the rolling hash
approach generates a hash per byte of the file instead of one
per run/line of data.
To optimize this, I decided to convert back to a run-based file
signature algorithm which would be more like core Git.
After changing this, a number of the existing tests started to
fail. In some cases, this appears to have been because the test
was coded to be too specific to the particular results of the file
similarity metric and in some cases there appear to have been bugs
in the core rename detection code where only by the coincidence
of the file similarity scoring were the expected results being
generated.
This renames all the variables in the core rename detection code
to be more consistent and hopefully easier to follow which made it
a bit easier to reason about the behavior of that code and fix the
problems that I was seeing. I think it's in better shape now.
There are a couple of tests now that attempt to stress test the
rename detection code and they are quite slow. Most of the time
is spent setting up the test data on disk and in the index. When
we roll out performance improvements for index insertion, it
should also speed up these tests I hope.
Diffstat (limited to 'tests-clar/clar_libgit2.h')
| -rw-r--r-- | tests-clar/clar_libgit2.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tests-clar/clar_libgit2.h b/tests-clar/clar_libgit2.h index 5371b2864..8c8357e40 100644 --- a/tests-clar/clar_libgit2.h +++ b/tests-clar/clar_libgit2.h @@ -34,6 +34,20 @@ void cl_git_report_failure(int, const char *, int, const char *); #define cl_assert_equal_sz(sz1,sz2) cl_assert_equal_i((int)sz1, (int)(sz2)) +GIT_INLINE(void) clar__assert_in_range( + int lo, int val, int hi, + const char *file, int line, const char *err, int should_abort) +{ + if (lo > val || hi < val) { + char buf[128]; + snprintf(buf, sizeof(buf), "%d not in [%d,%d]", val, lo, hi); + clar__fail(file, line, err, buf, should_abort); + } +} + +#define cl_assert_in_range(L,V,H) \ + clar__assert_in_range((L),(V),(H),__FILE__,__LINE__,"Range check: " #V " in [" #L "," #H "]", 1) + /* * Some utility macros for building long strings */ |
