diff options
author | Russell Belfer <rb@github.com> | 2014-04-10 22:31:01 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2014-04-17 14:56:41 -0700 |
commit | 7d4908724fd7d4d8e096b4faf2c652ba5b77644e (patch) | |
tree | 2fcd09e7e040607c124f6e658c31f33e1aa1868a /tests/threads/diff.c | |
parent | 1fa17b5c92cb92a2785fba403b87525169b205c0 (diff) | |
download | libgit2-7d4908724fd7d4d8e096b4faf2c652ba5b77644e.tar.gz |
Attribute file cache refactor
This is a big refactoring of the attribute file cache to be a bit
simpler which in turn makes it easier to enforce a lock around any
updates to the cache so that it can be used in a threaded env.
Tons of changes to the attributes and ignores code.
Diffstat (limited to 'tests/threads/diff.c')
-rw-r--r-- | tests/threads/diff.c | 49 |
1 files changed, 5 insertions, 44 deletions
diff --git a/tests/threads/diff.c b/tests/threads/diff.c index 5565c4bf1..562eec71c 100644 --- a/tests/threads/diff.c +++ b/tests/threads/diff.c @@ -1,59 +1,22 @@ #include "clar_libgit2.h" -#include "thread-utils.h" +#include "thread_helpers.h" static git_repository *_repo; static git_tree *_a, *_b; static git_atomic _counts[4]; static int _check_counts; +#define THREADS 20 + void test_threads_diff__cleanup(void) { cl_git_sandbox_cleanup(); } -static void run_in_parallel( - int repeats, int threads, void *(*func)(void *), - void (*before_test)(void), void (*after_test)(void)) -{ - int r, t, *id = git__calloc(threads, sizeof(int)); -#ifdef GIT_THREADS - git_thread *th = git__calloc(threads, sizeof(git_thread)); - cl_assert(th != NULL); -#else - void *th = NULL; -#endif - - cl_assert(id != NULL); - - for (r = 0; r < repeats; ++r) { - _repo = cl_git_sandbox_reopen(); /* reopen sandbox to flush caches */ - - if (before_test) before_test(); - - for (t = 0; t < threads; ++t) { - id[t] = t; -#ifdef GIT_THREADS - cl_git_pass(git_thread_create(&th[t], NULL, func, &id[t])); -#else - cl_assert(func(&id[t]) == &id[t]); -#endif - } - -#ifdef GIT_THREADS - for (t = 0; t < threads; ++t) - cl_git_pass(git_thread_join(th[t], NULL)); - memset(th, 0, threads * sizeof(git_thread)); -#endif - - if (after_test) after_test(); - } - - git__free(id); - git__free(th); -} - static void setup_trees(void) { + _repo = cl_git_sandbox_reopen(); /* reopen sandbox to flush caches */ + cl_git_pass(git_revparse_single( (git_object **)&_a, _repo, "0017bd4ab1^{tree}")); cl_git_pass(git_revparse_single( @@ -62,8 +25,6 @@ static void setup_trees(void) memset(_counts, 0, sizeof(_counts)); } -#define THREADS 20 - static void free_trees(void) { git_tree_free(_a); _a = NULL; |