You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2016/10/13 15:25:17 UTC
svn commit: r1764707 [8/8] - in /subversion/branches/authzperf: ./
build/ac-macros/ build/generator/ build/win32/ notes/meetings/
subversion/bindings/swig/ruby/test/ subversion/include/
subversion/include/private/ subversion/libsvn_client/ subversion/l...
Modified: subversion/branches/authzperf/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/tests/libsvn_fs/fs-test.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/authzperf/subversion/tests/libsvn_fs/fs-test.c Thu Oct 13 15:25:15 2016
@@ -3593,17 +3593,11 @@ get_file_checksum(svn_checksum_t **check
apr_pool_t *pool)
{
svn_stream_t *stream;
- svn_stream_t *checksum_stream;
/* Get a stream for the file contents. */
SVN_ERR(svn_fs_file_contents(&stream, root, path, pool));
-
- /* Get a checksummed stream for the contents. */
- checksum_stream = svn_stream_checksummed2(stream, checksum, NULL,
- checksum_kind, TRUE, pool);
-
- /* Close the stream, forcing a complete read and copy the digest. */
- SVN_ERR(svn_stream_close(checksum_stream));
+ SVN_ERR(svn_stream_contents_checksum(checksum, stream, checksum_kind,
+ pool, pool));
return SVN_NO_ERROR;
}
Modified: subversion/branches/authzperf/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c (original)
+++ subversion/branches/authzperf/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c Thu Oct 13 15:25:15 2016
@@ -29,6 +29,7 @@
#include "../../libsvn_fs_fs/fs.h"
#include "../../libsvn_fs_fs/fs_fs.h"
#include "../../libsvn_fs_fs/low_level.h"
+#include "../../libsvn_fs_fs/pack.h"
#include "../../libsvn_fs_fs/util.h"
#include "svn_hash.h"
@@ -101,17 +102,16 @@ pack_notify(void *baton,
#define R1_LOG_MSG "Let's serf"
-/* Create a packed filesystem in DIR. Set the shard size to
- SHARD_SIZE and create NUM_REVS number of revisions (in addition to
- r0). Use POOL for allocations. After this function successfully
- completes, the filesystem's youngest revision number will be the
- same as NUM_REVS. */
-static svn_error_t *
-create_packed_filesystem(const char *dir,
- const svn_test_opts_t *opts,
- svn_revnum_t num_revs,
- int shard_size,
- apr_pool_t *pool)
+/* Create a filesystem in DIR. Set the shard size to SHARD_SIZE and create
+ NUM_REVS number of revisions (in addition to r0). Use POOL for
+ allocations. After this function successfully completes, the filesystem's
+ youngest revision number will be NUM_REVS. */
+static svn_error_t *
+create_non_packed_filesystem(const char *dir,
+ const svn_test_opts_t *opts,
+ svn_revnum_t num_revs,
+ int shard_size,
+ apr_pool_t *pool)
{
svn_fs_t *fs;
svn_fs_txn_t *txn;
@@ -119,7 +119,6 @@ create_packed_filesystem(const char *dir
const char *conflict;
svn_revnum_t after_rev;
apr_pool_t *subpool = svn_pool_create(pool);
- struct pack_notify_baton pnb;
apr_pool_t *iterpool;
apr_hash_t *fs_config;
@@ -166,6 +165,28 @@ create_packed_filesystem(const char *dir
svn_pool_destroy(iterpool);
svn_pool_destroy(subpool);
+ /* Done */
+ return SVN_NO_ERROR;
+}
+
+/* Create a packed filesystem in DIR. Set the shard size to
+ SHARD_SIZE and create NUM_REVS number of revisions (in addition to
+ r0). Use POOL for allocations. After this function successfully
+ completes, the filesystem's youngest revision number will be the
+ same as NUM_REVS. */
+static svn_error_t *
+create_packed_filesystem(const char *dir,
+ const svn_test_opts_t *opts,
+ svn_revnum_t num_revs,
+ int shard_size,
+ apr_pool_t *pool)
+{
+ struct pack_notify_baton pnb;
+
+ /* Create the repo and fill it. */
+ SVN_ERR(create_non_packed_filesystem(dir, opts, num_revs, shard_size,
+ pool));
+
/* Now pack the FS */
pnb.expected_shard = 0;
pnb.expected_action = svn_fs_pack_notify_start;
@@ -669,7 +690,7 @@ recover_fully_packed(const svn_test_opts
/* ------------------------------------------------------------------------ */
/* Regression test for issue #4320 (fsfs file-hinting fails when reading a rep
- from the transaction that is commiting rev = SHARD_SIZE). */
+ from the transaction that is committing rev = SHARD_SIZE). */
#define REPO_NAME "test-repo-file-hint-at-shard-boundary"
#define SHARD_SIZE 4
#define MAX_REV (SHARD_SIZE - 1)
@@ -1740,6 +1761,56 @@ compare_0_length_rep(const svn_test_opts
#undef REPO_NAME
+/* ------------------------------------------------------------------------ */
+/* Verify that the format 7 pack logic works even if we can't fit all index
+ metadata into memory. */
+#define REPO_NAME "test-repo-pack-with-limited-memory"
+#define SHARD_SIZE 4
+#define MAX_REV (2 * SHARD_SIZE - 1)
+static svn_error_t *
+pack_with_limited_memory(const svn_test_opts_t *opts,
+ apr_pool_t *pool)
+{
+ apr_size_t max_mem;
+ apr_pool_t *iterpool = svn_pool_create(pool);
+
+ /* Bail (with success) on known-untestable scenarios */
+ if (opts->server_minor_version && (opts->server_minor_version < 9))
+ return svn_error_create(SVN_ERR_TEST_SKIPPED, NULL,
+ "pre-1.9 SVN doesn't support reordering packs");
+
+ /* Run with an increasing memory allowance such that we cover all
+ splitting scenarios. */
+ for (max_mem = 350; max_mem < 8000; max_mem += max_mem / 2)
+ {
+ const char *dir;
+ svn_fs_t *fs;
+
+ svn_pool_clear(iterpool);
+
+ /* Create a filesystem. */
+ dir = apr_psprintf(iterpool, "%s-%d", REPO_NAME, (int)max_mem);
+ SVN_ERR(create_non_packed_filesystem(dir, opts, MAX_REV, SHARD_SIZE,
+ iterpool));
+
+ /* Pack it with a narrow memory budget. */
+ SVN_ERR(svn_fs_open2(&fs, dir, NULL, iterpool, iterpool));
+ SVN_ERR(svn_fs_fs__pack(fs, max_mem, NULL, NULL, NULL, NULL,
+ iterpool));
+
+ /* To be sure: Verify that we didn't break the repo. */
+ SVN_ERR(svn_fs_verify(dir, NULL, 0, MAX_REV, NULL, NULL, NULL, NULL,
+ iterpool));
+ }
+
+ svn_pool_destroy(iterpool);
+
+ return SVN_NO_ERROR;
+}
+#undef REPO_NAME
+#undef MAX_REV
+#undef SHARD_SIZE
+
/* The test table. */
@@ -1790,6 +1861,8 @@ static struct svn_test_descriptor_t test
"delta chains starting with PLAIN, issue #4577"),
SVN_TEST_OPTS_PASS(compare_0_length_rep,
"compare empty PLAIN and non-existent reps"),
+ SVN_TEST_OPTS_PASS(pack_with_limited_memory,
+ "pack with limited memory for metadata"),
SVN_TEST_NULL
};
Modified: subversion/branches/authzperf/subversion/tests/libsvn_subr/io-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/tests/libsvn_subr/io-test.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/tests/libsvn_subr/io-test.c (original)
+++ subversion/branches/authzperf/subversion/tests/libsvn_subr/io-test.c Thu Oct 13 15:25:15 2016
@@ -865,7 +865,7 @@ aligned_seek_test(apr_pool_t *pool)
SVN_ERR(svn_io_file_close(f, pool));
/* now, try read data with buffering disabled.
- That are a special case because APR reports a buffer size of 0. */
+ That is a special case because APR reports a buffer size of 0. */
SVN_ERR(svn_io_file_open(&f, tmp_file, APR_READ, APR_OS_DEFAULT, pool));
SVN_ERR(aligned_read(f, contents, 0x1000, FALSE, pool));
SVN_ERR(aligned_read(f, contents, 0x8000, FALSE, pool));
@@ -1102,6 +1102,51 @@ test_file_rename2(apr_pool_t *pool)
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_apr_trunc_workaround(apr_pool_t *pool)
+{
+ const char *tmp_dir;
+ const char *tmp_file;
+ apr_file_t *f;
+ apr_size_t len;
+ apr_off_t offset;
+ char dummy;
+
+ /* create a temp folder & schedule it for automatic cleanup */
+ SVN_ERR(svn_dirent_get_absolute(&tmp_dir, "test_apr_trunc_workaround",
+ pool));
+ SVN_ERR(svn_io_remove_dir2(tmp_dir, TRUE, NULL, NULL, pool));
+ SVN_ERR(svn_io_make_dir_recursively(tmp_dir, pool));
+ svn_test_add_dir_cleanup(tmp_dir);
+
+ /* create an r/w file */
+ tmp_file = svn_dirent_join(tmp_dir, "file", pool);
+ SVN_ERR(svn_io_file_open(&f, tmp_file,
+ APR_READ | APR_WRITE | APR_BUFFERED | APR_CREATE |
+ APR_TRUNCATE,
+ APR_OS_DEFAULT, pool));
+
+ /* write some content and put it internally into read mode */
+ len = 10;
+ SVN_ERR(svn_io_file_write(f, "0123456789", &len, pool));
+
+ offset = 0;
+ SVN_ERR(svn_io_file_seek(f, APR_SET, &offset, pool));
+ SVN_ERR(svn_io_file_getc(&dummy, f, pool));
+
+ /* clear the file and write some new content */
+ SVN_ERR(svn_io_file_trunc(f, 0, pool));
+ len = 3;
+ SVN_ERR(svn_io_file_write(f, "abc", &len, pool));
+
+ /* we should now be positioned at the end of the new content */
+ offset = 0;
+ SVN_ERR(svn_io_file_seek(f, APR_CUR, &offset, pool));
+ SVN_TEST_ASSERT(offset == (int)len);
+
+ return SVN_NO_ERROR;
+}
+
/* The test table. */
static int max_threads = 3;
@@ -1137,6 +1182,8 @@ static struct svn_test_descriptor_t test
"test svn_io_file_readline()"),
SVN_TEST_PASS2(test_open_uniquely_named,
"test svn_io_open_uniquely_named()"),
+ SVN_TEST_PASS2(test_apr_trunc_workaround,
+ "test workaround for APR in svn_io_file_trunc"),
SVN_TEST_NULL
};
Modified: subversion/branches/authzperf/subversion/tests/libsvn_subr/stream-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/tests/libsvn_subr/stream-test.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/tests/libsvn_subr/stream-test.c (original)
+++ subversion/branches/authzperf/subversion/tests/libsvn_subr/stream-test.c Thu Oct 13 15:25:15 2016
@@ -848,6 +848,158 @@ test_stream_compressed_read_full(apr_poo
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_stream_checksum(apr_pool_t *pool)
+{
+ svn_string_t *str =
+ svn_string_create("The quick brown fox jumps over the lazy dog", pool);
+ svn_checksum_t *actual;
+
+ SVN_ERR(svn_stream_contents_checksum(&actual,
+ svn_stream_from_string(str, pool),
+ svn_checksum_md5, pool, pool));
+ SVN_TEST_STRING_ASSERT("9e107d9d372bb6826bd81d3542a419d6",
+ svn_checksum_to_cstring(actual, pool));
+
+ SVN_ERR(svn_stream_contents_checksum(&actual,
+ svn_stream_from_string(str, pool),
+ svn_checksum_sha1, pool, pool));
+ SVN_TEST_STRING_ASSERT("2fd4e1c67a2d28fced849ee1bb76e7391b93eb12",
+ svn_checksum_to_cstring(actual, pool));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_stream_readline_file(const char *testname,
+ const char *eol,
+ apr_pool_t *pool)
+{
+ const char *tmp_dir;
+ const char *tmp_file;
+ svn_stream_t *stream;
+ svn_stringbuf_t *line;
+ svn_boolean_t eof;
+ static const char long_line[] =
+ "The quick brown fox jumps over the lazy dog, and "
+ "jackdaws love my big sphinx of quartz, and "
+ "pack my box with five dozen liquor jugs.";
+
+ SVN_ERR(svn_dirent_get_absolute(&tmp_dir, testname, pool));
+ SVN_ERR(svn_io_remove_dir2(tmp_dir, TRUE, NULL, NULL, pool));
+ SVN_ERR(svn_io_make_dir_recursively(tmp_dir, pool));
+ svn_test_add_dir_cleanup(tmp_dir);
+
+ /* Test 1: Read empty file. */
+ tmp_file = svn_dirent_join(tmp_dir, "empty", pool);
+ SVN_ERR(svn_io_file_create(tmp_file, "", pool));
+ SVN_ERR(svn_stream_open_readonly(&stream, tmp_file, pool, pool));
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 0);
+ SVN_TEST_STRING_ASSERT(line->data, "");
+ SVN_TEST_ASSERT(eof);
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 0);
+ SVN_TEST_STRING_ASSERT(line->data, "");
+ SVN_TEST_ASSERT(eof);
+
+ SVN_ERR(svn_stream_close(stream));
+
+ /* Test 2: Read empty line. */
+ tmp_file = svn_dirent_join(tmp_dir, "empty-line", pool);
+ SVN_ERR(svn_io_file_create(tmp_file, eol, pool));
+ SVN_ERR(svn_stream_open_readonly(&stream, tmp_file, pool, pool));
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 0);
+ SVN_TEST_STRING_ASSERT(line->data, "");
+ SVN_TEST_ASSERT(!eof);
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 0);
+ SVN_TEST_STRING_ASSERT(line->data, "");
+ SVN_TEST_ASSERT(eof);
+
+ SVN_ERR(svn_stream_close(stream));
+
+ /* Test 3: Read two lines. */
+ tmp_file = svn_dirent_join(tmp_dir, "lines", pool);
+ SVN_ERR(svn_io_file_create(tmp_file,
+ apr_pstrcat(pool,
+ "first", eol, "second", eol,
+ SVN_VA_NULL),
+ pool));
+ SVN_ERR(svn_stream_open_readonly(&stream, tmp_file, pool, pool));
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 5);
+ SVN_TEST_STRING_ASSERT(line->data, "first");
+ SVN_TEST_ASSERT(!eof);
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 6);
+ SVN_TEST_STRING_ASSERT(line->data, "second");
+ SVN_TEST_ASSERT(!eof);
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 0);
+ SVN_TEST_STRING_ASSERT(line->data, "");
+ SVN_TEST_ASSERT(eof);
+
+ SVN_ERR(svn_stream_close(stream));
+
+ /* Test 4: Content without end-of-line. */
+ tmp_file = svn_dirent_join(tmp_dir, "no-eol", pool);
+ SVN_ERR(svn_io_file_create(tmp_file, "text", pool));
+ SVN_ERR(svn_stream_open_readonly(&stream, tmp_file, pool, pool));
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 4);
+ SVN_TEST_STRING_ASSERT(line->data, "text");
+ SVN_TEST_ASSERT(eof);
+
+ SVN_ERR(svn_stream_close(stream));
+
+ /* Test 5: Read long line. */
+ tmp_file = svn_dirent_join(tmp_dir, "long-line", pool);
+ SVN_ERR(svn_io_file_create(tmp_file,
+ apr_pstrcat(pool, long_line, eol, SVN_VA_NULL),
+ pool));
+ SVN_ERR(svn_stream_open_readonly(&stream, tmp_file, pool, pool));
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == strlen(long_line));
+ SVN_TEST_STRING_ASSERT(line->data, long_line);
+ SVN_TEST_ASSERT(!eof);
+
+ SVN_ERR(svn_stream_readline(stream, &line, eol, &eof, pool));
+ SVN_TEST_ASSERT(line->len == 0);
+ SVN_TEST_STRING_ASSERT(line->data, "");
+ SVN_TEST_ASSERT(eof);
+
+ SVN_ERR(svn_stream_close(stream));
+
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_stream_readline_file_lf(apr_pool_t *pool)
+{
+ SVN_ERR(test_stream_readline_file("test_stream_readline_file_lf",
+ "\n", pool));
+ return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_stream_readline_file_crlf(apr_pool_t *pool)
+{
+ SVN_ERR(test_stream_readline_file("test_stream_readline_file_crlf",
+ "\r\n", pool));
+ return SVN_NO_ERROR;
+}
+
/* The test table. */
static int max_threads = 1;
@@ -879,6 +1031,12 @@ static struct svn_test_descriptor_t test
"test svn_stringbuf_from_stream"),
SVN_TEST_PASS2(test_stream_compressed_read_full,
"test compression for streams without partial read"),
+ SVN_TEST_PASS2(test_stream_checksum,
+ "test svn_stream_contents_checksum()"),
+ SVN_TEST_PASS2(test_stream_readline_file_lf,
+ "test reading LF-terminated lines from file"),
+ SVN_TEST_PASS2(test_stream_readline_file_crlf,
+ "test reading CRLF-terminated lines from file"),
SVN_TEST_NULL
};
Modified: subversion/branches/authzperf/subversion/tests/libsvn_subr/string-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/tests/libsvn_subr/string-test.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/tests/libsvn_subr/string-test.c (original)
+++ subversion/branches/authzperf/subversion/tests/libsvn_subr/string-test.c Thu Oct 13 15:25:15 2016
@@ -873,7 +873,7 @@ test_string_matching(apr_pool_t *pool)
}
static svn_error_t *
-test_string_skip_prefix(apr_pool_t *pool)
+test_cstring_skip_prefix(apr_pool_t *pool)
{
SVN_TEST_STRING_ASSERT(svn_cstring_skip_prefix("12345", "12345"),
"");
@@ -986,6 +986,33 @@ test_stringbuf_leftchop(apr_pool_t *pool
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_stringbuf_set(apr_pool_t *pool)
+{
+ svn_stringbuf_t *str = svn_stringbuf_create_empty(pool);
+
+ SVN_TEST_STRING_ASSERT(str->data, "");
+ SVN_TEST_INT_ASSERT(str->len, 0);
+
+ svn_stringbuf_set(str, "0123456789");
+ SVN_TEST_STRING_ASSERT(str->data, "0123456789");
+ SVN_TEST_INT_ASSERT(str->len, 10);
+
+ svn_stringbuf_set(str, "");
+ SVN_TEST_STRING_ASSERT(str->data, "");
+ SVN_TEST_INT_ASSERT(str->len, 0);
+
+ svn_stringbuf_set(str, "0123456789abcdef");
+ SVN_TEST_STRING_ASSERT(str->data, "0123456789abcdef");
+ SVN_TEST_INT_ASSERT(str->len, 16);
+
+ svn_stringbuf_set(str, "t");
+ SVN_TEST_STRING_ASSERT(str->data, "t");
+ SVN_TEST_INT_ASSERT(str->len, 1);
+
+ return SVN_NO_ERROR;
+}
+
/*
====================================================================
If you add a new test to this file, update this array.
@@ -1060,12 +1087,14 @@ static struct svn_test_descriptor_t test
"test string similarity scores"),
SVN_TEST_PASS2(test_string_matching,
"test string matching"),
- SVN_TEST_PASS2(test_string_skip_prefix,
+ SVN_TEST_PASS2(test_cstring_skip_prefix,
"test svn_cstring_skip_prefix()"),
SVN_TEST_PASS2(test_stringbuf_replace_all,
"test svn_stringbuf_replace_all"),
SVN_TEST_PASS2(test_stringbuf_leftchop,
"test svn_stringbuf_leftchop"),
+ SVN_TEST_PASS2(test_stringbuf_set,
+ "test svn_stringbuf_set()"),
SVN_TEST_NULL
};
Modified: subversion/branches/authzperf/subversion/tests/libsvn_wc/utils.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/tests/libsvn_wc/utils.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/tests/libsvn_wc/utils.c (original)
+++ subversion/branches/authzperf/subversion/tests/libsvn_wc/utils.c Thu Oct 13 15:25:15 2016
@@ -530,6 +530,9 @@ sbox_wc_update_depth(svn_test__sandbox_t
APR_ARRAY_PUSH(paths, const char *) = sbox_wc_path(b, path);
SVN_ERR(svn_test__create_client_ctx(&ctx, b, b->pool));
+ /* Note: Tree conflict resolver tests for libsvn_client depend on this
+ * passing FALSE for adds_as_modifications so that tree conflicts are
+ * created in case of add vs add upon update. */
return svn_client_update4(&result_revs, paths, &revision, depth,
sticky, FALSE, FALSE, FALSE, FALSE,
ctx, b->pool);
Modified: subversion/branches/authzperf/subversion/tests/libsvn_wc/wc-queries-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/tests/libsvn_wc/wc-queries-test.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/tests/libsvn_wc/wc-queries-test.c (original)
+++ subversion/branches/authzperf/subversion/tests/libsvn_wc/wc-queries-test.c Thu Oct 13 15:25:15 2016
@@ -101,6 +101,7 @@ static const int slow_statements[] =
STMT_SELECT_REVERT_LIST_RECURSIVE,
STMT_SELECT_DELETE_LIST,
STMT_SELECT_UPDATE_MOVE_LIST,
+ STMT_FIND_REPOS_PATH_IN_WC,
/* Designed as slow to avoid penalty on other queries */
STMT_SELECT_UNREFERENCED_PRISTINES,
Modified: subversion/branches/authzperf/subversion/tests/libsvn_wc/wc-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/subversion/tests/libsvn_wc/wc-test.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/subversion/tests/libsvn_wc/wc-test.c (original)
+++ subversion/branches/authzperf/subversion/tests/libsvn_wc/wc-test.c Thu Oct 13 15:25:15 2016
@@ -434,6 +434,65 @@ test_legacy_commit2(const svn_test_opts_
return SVN_NO_ERROR;
}
+static svn_error_t *
+test_internal_file_modified(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+ svn_test__sandbox_t b;
+ svn_boolean_t modified;
+ const char *iota_path;
+ apr_time_t time;
+
+ SVN_ERR(svn_test__sandbox_create(&b, "internal_file_modified_p",
+ opts, pool));
+ SVN_ERR(sbox_add_and_commit_greek_tree(&b));
+
+ iota_path = sbox_wc_path(&b, "iota");
+
+ /* No modification, timestamps match.*/
+ SVN_ERR(svn_wc__internal_file_modified_p(&modified, b.wc_ctx->db,
+ iota_path, FALSE, pool));
+ SVN_TEST_ASSERT(!modified);
+
+ SVN_ERR(svn_wc__internal_file_modified_p(&modified, b.wc_ctx->db,
+ iota_path, TRUE, pool));
+ SVN_TEST_ASSERT(!modified);
+
+ /* Change timestamp on 'iota' and check. */
+ SVN_ERR(svn_io_file_affected_time(&time, iota_path, pool));
+ SVN_ERR(svn_io_set_file_affected_time(time + apr_time_from_sec(1),
+ iota_path, pool));
+ SVN_ERR(svn_wc__internal_file_modified_p(&modified, b.wc_ctx->db,
+ iota_path, FALSE, pool));
+ SVN_TEST_ASSERT(!modified);
+
+ SVN_ERR(svn_wc__internal_file_modified_p(&modified, b.wc_ctx->db,
+ iota_path, TRUE, pool));
+ SVN_TEST_ASSERT(!modified);
+
+ /* Modify 'iota' to be different size. */
+ SVN_ERR(sbox_file_write(&b, iota_path, "new iota"));
+ SVN_ERR(svn_wc__internal_file_modified_p(&modified, b.wc_ctx->db,
+ iota_path, FALSE, pool));
+ SVN_TEST_ASSERT(modified);
+
+ SVN_ERR(svn_wc__internal_file_modified_p(&modified, b.wc_ctx->db,
+ iota_path, TRUE, pool));
+ SVN_TEST_ASSERT(modified);
+
+ /* Working copy is smart and able to detect changes in files of different
+ * size even if timestamp didn't change. */
+ SVN_ERR(svn_io_set_file_affected_time(time, iota_path, pool));
+ SVN_ERR(svn_wc__internal_file_modified_p(&modified, b.wc_ctx->db,
+ iota_path, FALSE, pool));
+ SVN_TEST_ASSERT(modified);
+
+ SVN_ERR(svn_wc__internal_file_modified_p(&modified, b.wc_ctx->db,
+ iota_path, TRUE, pool));
+ SVN_TEST_ASSERT(modified);
+
+ return SVN_NO_ERROR;
+}
+
/* ---------------------------------------------------------------------- */
/* The list of test functions */
@@ -454,6 +513,8 @@ static struct svn_test_descriptor_t test
"test legacy commit1"),
SVN_TEST_OPTS_PASS(test_legacy_commit2,
"test legacy commit2"),
+ SVN_TEST_OPTS_PASS(test_internal_file_modified,
+ "test internal_file_modified"),
SVN_TEST_NULL
};
Modified: subversion/branches/authzperf/tools/dev/fsfs-access-map.c
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/tools/dev/fsfs-access-map.c?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/tools/dev/fsfs-access-map.c (original)
+++ subversion/branches/authzperf/tools/dev/fsfs-access-map.c Thu Oct 13 15:25:15 2016
@@ -34,7 +34,7 @@ typedef struct file_stats_t
/* file name as found in the open() call */
const char *name;
- /* file size as determined during the this tool run. Will be 0 for
+ /* file size as determined during the tool run. Will be 0 for
* files that no longer exist. However, there may still be entries
* in the read_map. */
apr_int64_t size;
Modified: subversion/branches/authzperf/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/authzperf/win-tests.py?rev=1764707&r1=1764706&r2=1764707&view=diff
==============================================================================
--- subversion/branches/authzperf/win-tests.py (original)
+++ subversion/branches/authzperf/win-tests.py Thu Oct 13 15:25:15 2016
@@ -86,6 +86,7 @@ def _usage_exit():
print(" --ssl-cert : Path to SSL server certificate to trust.")
print(" --https : Run Apache httpd with an https setup.")
print(" --http2 : Enable http2 in Apache Httpd (>= 2.4.17).")
+ print(" --mod-deflate : Enable mod_deflate in Apache Httpd.")
print(" --global-scheduler : Enable global scheduler.")
print(" --exclusive-wc-locks : Enable exclusive working copy locks")
print(" --memcached-dir=DIR : Run memcached from dir")
@@ -138,7 +139,7 @@ opts, args = my_getopt(sys.argv[1:], 'hr
'disable-http-v2', 'disable-bulk-updates', 'help',
'fsfs-packing', 'fsfs-sharding=', 'javahl', 'swig=',
'list', 'enable-sasl', 'bin=', 'parallel', 'http2',
- 'global-scheduler',
+ 'mod-deflate', 'global-scheduler',
'config-file=', 'server-minor-version=', 'log-level=',
'log-to-stdout', 'mode-filter=', 'milestone-filter=',
'ssl-cert=', 'exclusive-wc-locks', 'memcached-server=',
@@ -162,6 +163,7 @@ httpd_service = None
httpd_no_log = None
use_ssl = False
use_http2 = False
+use_mod_deflate = False
http_short_circuit = False
advertise_httpv2 = True
http_bulk_updates = True
@@ -226,6 +228,8 @@ for opt, val in opts:
use_ssl = 1
elif opt == '--http2':
use_http2 = 1
+ elif opt == '--mod-deflate':
+ use_mod_deflate = 1
elif opt == '--http-short-circuit':
http_short_circuit = True
elif opt == '--disable-http-v2':
@@ -471,8 +475,8 @@ class Svnserve:
class Httpd:
"Run httpd for DAV tests"
def __init__(self, abs_httpd_dir, abs_objdir, abs_builddir, abs_srcdir,
- httpd_port, service, use_ssl, use_http2, no_log, httpv2,
- short_circuit, bulk_updates):
+ httpd_port, service, use_ssl, use_http2, use_mod_deflate,
+ no_log, httpv2, short_circuit, bulk_updates):
self.name = 'apache.exe'
self.httpd_port = httpd_port
self.httpd_dir = abs_httpd_dir
@@ -574,6 +578,8 @@ class Httpd:
fp.write(self._sys_module('ssl_module', 'mod_ssl.so'))
if use_http2:
fp.write(self._sys_module('http2_module', 'mod_http2.so'))
+ if use_mod_deflate:
+ fp.write(self._sys_module('deflate_module', 'mod_deflate.so'))
fp.write(self._sys_module('dav_module', 'mod_dav.so'))
if self.httpd_ver >= 2.3:
fp.write(self._sys_module('access_compat_module', 'mod_access_compat.so'))
@@ -610,6 +616,9 @@ class Httpd:
fp.write('Protocols h2c http/1.1\n')
fp.write('H2Direct on\n')
+ if use_mod_deflate:
+ fp.write('SetOutputFilter DEFLATE\n')
+
# Don't handle .htaccess, symlinks, etc.
fp.write('<Directory />\n')
fp.write('AllowOverride None\n')
@@ -1019,8 +1028,8 @@ if not list_tests:
if run_httpd:
daemon = Httpd(abs_httpd_dir, abs_objdir, abs_builddir, abs_srcdir,
httpd_port, httpd_service, use_ssl, use_http2,
- httpd_no_log, advertise_httpv2, http_short_circuit,
- http_bulk_updates)
+ use_mod_deflate, httpd_no_log, advertise_httpv2,
+ http_short_circuit, http_bulk_updates)
if use_ssl and not ssl_cert:
ssl_cert = daemon.certfile