static svn_error_t * test_memcache_basic(const svn_test_opts_t *opts, apr_pool_t *pool) { svn_cache__t *cache; svn_config_t *config; svn_memcache_t *memcache = NULL; const char *prefix = apr_psprintf(pool, "test_memcache_basic-%" APR_TIME_T_FMT, apr_time_now()); if (opts->config_file) { SVN_ERR(svn_config_read2(&config, opts->config_file, TRUE, FALSE, pool)); SVN_ERR(svn_cache__make_memcache_from_config(&memcache, config, pool)); } if (! memcache) return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL, "not configured to use memcached"); /* Create a memcache-based cache. */ SVN_ERR(svn_cache__create_memcache(&cache, memcache, serialize_revnum, deserialize_revnum, APR_HASH_KEY_STRING, prefix, pool)); return basic_cache_test(cache, FALSE, pool); }
static svn_error_t * test_memcache_long_key(const svn_test_opts_t *opts, apr_pool_t *pool) { svn_cache__t *cache; svn_config_t *config; svn_memcache_t *memcache = NULL; svn_revnum_t fifty = 50, *answer; svn_boolean_t found = FALSE; const char *prefix = apr_psprintf(pool, "test_memcache_long_key-%" APR_TIME_T_FMT, apr_time_now()); static const char *long_key = "0123456789" "0123456789" "0123456789" "0123456789" "0123456789" /* 50 */ "0123456789" "0123456789" "0123456789" "0123456789" "0123456789" /* 100 */ "0123456789" "0123456789" "0123456789" "0123456789" "0123456789" /* 150 */ "0123456789" "0123456789" "0123456789" "0123456789" "0123456789" /* 200 */ "0123456789" "0123456789" "0123456789" "0123456789" "0123456789" /* 250 */ "0123456789" "0123456789" "0123456789" "0123456789" "0123456789" /* 300 */ ; if (opts->config_file) { SVN_ERR(svn_config_read2(&config, opts->config_file, TRUE, FALSE, pool)); SVN_ERR(svn_cache__make_memcache_from_config(&memcache, config, pool)); } if (! memcache) return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL, "not configured to use memcached"); /* Create a memcache-based cache. */ SVN_ERR(svn_cache__create_memcache(&cache, memcache, serialize_revnum, deserialize_revnum, APR_HASH_KEY_STRING, prefix, pool)); SVN_ERR(svn_cache__set(cache, long_key, &fifty, pool)); SVN_ERR(svn_cache__get((void **) &answer, &found, cache, long_key, pool)); if (! found) return svn_error_create(SVN_ERR_TEST_FAILED, NULL, "cache failed to find entry for 'fifty'"); if (*answer != 50) return svn_error_createf(SVN_ERR_TEST_FAILED, NULL, "expected 50 but found '%ld'", *answer); return SVN_NO_ERROR; }
svn_error_t * svn_repos_authz_read(svn_authz_t **authz_p, const char *file, svn_boolean_t must_exist, apr_pool_t *pool) { svn_authz_t *authz = apr_palloc(pool, sizeof(*authz)); struct authz_validate_baton baton = { 0 }; baton.err = SVN_NO_ERROR; /* Load the rule file. */ SVN_ERR(svn_config_read2(&authz->cfg, file, must_exist, TRUE, pool)); baton.config = authz->cfg; /* Step through the entire rule file, stopping on error. */ svn_config_enumerate_sections2(authz->cfg, authz_validate_section, &baton, pool); SVN_ERR(baton.err); *authz_p = authz; return SVN_NO_ERROR; }