mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 02:40:09 +00:00
66 lines
1.6 KiB
C
66 lines
1.6 KiB
C
#include "clar_libgit2.h"
|
|
|
|
#include "thread_helpers.h"
|
|
|
|
void test_threads_tlsdata__can_set_and_get(void)
|
|
{
|
|
git_tlsdata_key key_one, key_two, key_three;
|
|
|
|
cl_git_pass(git_tlsdata_init(&key_one, NULL));
|
|
cl_git_pass(git_tlsdata_init(&key_two, NULL));
|
|
cl_git_pass(git_tlsdata_init(&key_three, NULL));
|
|
|
|
cl_git_pass(git_tlsdata_set(key_one, (void *)(size_t)42424242));
|
|
cl_git_pass(git_tlsdata_set(key_two, (void *)(size_t)0xdeadbeef));
|
|
cl_git_pass(git_tlsdata_set(key_three, (void *)(size_t)98761234));
|
|
|
|
cl_assert_equal_sz((size_t)42424242, git_tlsdata_get(key_one));
|
|
cl_assert_equal_sz((size_t)0xdeadbeef, git_tlsdata_get(key_two));
|
|
cl_assert_equal_sz((size_t)98761234, git_tlsdata_get(key_three));
|
|
|
|
cl_git_pass(git_tlsdata_dispose(key_one));
|
|
cl_git_pass(git_tlsdata_dispose(key_two));
|
|
cl_git_pass(git_tlsdata_dispose(key_three));
|
|
}
|
|
|
|
#ifdef GIT_THREADS
|
|
|
|
static void *set_and_get(void *param)
|
|
{
|
|
git_tlsdata_key *tlsdata_key = (git_tlsdata_key *)param;
|
|
int val;
|
|
|
|
if (git_tlsdata_set(*tlsdata_key, &val) != 0 ||
|
|
git_tlsdata_get(*tlsdata_key) != &val)
|
|
return (void *)0;
|
|
|
|
return (void *)1;
|
|
}
|
|
|
|
#endif
|
|
|
|
#define THREAD_COUNT 10
|
|
|
|
void test_threads_tlsdata__threads(void)
|
|
{
|
|
#ifdef GIT_THREADS
|
|
git_thread thread[THREAD_COUNT];
|
|
git_tlsdata_key tlsdata;
|
|
int i;
|
|
|
|
cl_git_pass(git_tlsdata_init(&tlsdata, NULL));
|
|
|
|
for (i = 0; i < THREAD_COUNT; i++)
|
|
cl_git_pass(git_thread_create(&thread[i], set_and_get, &tlsdata));
|
|
|
|
for (i = 0; i < THREAD_COUNT; i++) {
|
|
void *result;
|
|
|
|
cl_git_pass(git_thread_join(&thread[i], &result));
|
|
cl_assert_equal_sz(1, (size_t)result);
|
|
}
|
|
|
|
cl_git_pass(git_tlsdata_dispose(tlsdata));
|
|
#endif
|
|
}
|