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/03/06 19:20:19 UTC

svn commit: r1733818 - /subversion/trunk/subversion/tests/libsvn_fs/fs-test.c

Author: stefan2
Date: Sun Mar  6 18:20:18 2016
New Revision: 1733818

URL: http://svn.apache.org/viewvc?rev=1733818&view=rev
Log:
Extend the large changed paths tests to also test access to cached data.

* subversion/tests/libsvn_fs/fs-test.c
  (CHANGES_COUNT,
   verify_added_files_list): Factored out from ...
  (test_large_changed_paths_list): ... this. Verify twice to cover caching.

Modified:
    subversion/trunk/subversion/tests/libsvn_fs/fs-test.c

Modified: subversion/trunk/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_fs/fs-test.c?rev=1733818&r1=1733817&r2=1733818&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_fs/fs-test.c Sun Mar  6 18:20:18 2016
@@ -7033,48 +7033,32 @@ freeze_and_commit(const svn_test_opts_t
   return SVN_NO_ERROR;
 }
 
+/* Number of changes in a revision.
+ * Should be > 100 to span multiple blocks. */
+#define CHANGES_COUNT 1017
+
+/* Check that REVISION in FS reports the expected changes. */
 static svn_error_t *
-test_large_changed_paths_list(const svn_test_opts_t *opts,
-                              apr_pool_t *pool)
+verify_added_files_list(svn_fs_t *fs,
+                        svn_revnum_t revision,
+                        apr_pool_t *scratch_pool)
 {
-  svn_fs_t *fs;
-  svn_fs_txn_t *txn;
-  svn_fs_root_t *txn_root, *root;
   int i;
-  svn_revnum_t rev = 0;
-  apr_pool_t *iterpool = svn_pool_create(pool);
-  const char *repo_name = "test-repo-changed-paths-list";
+  svn_fs_root_t *root;
   apr_hash_t *changed_paths;
   svn_fs_path_change_iterator_t *iterator;
   svn_fs_path_change3_t *change;
-  enum { CHANGES_COUNT = 1017 };
+  apr_pool_t *iterpool = svn_pool_create(scratch_pool);
 
-  SVN_ERR(svn_test__create_fs(&fs, repo_name, opts, pool));
+  /* Collect changes and test that no path gets reported twice. */
+  SVN_ERR(svn_fs_revision_root(&root, fs, revision, scratch_pool));
+  SVN_ERR(svn_fs_paths_changed3(&iterator, root, scratch_pool, scratch_pool));
 
-  /* r1: Add many empty files - just to amass a long list of changes. */
-  SVN_ERR(svn_fs_begin_txn(&txn, fs, rev, pool));
-  SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
-
-  for (i = 0; i < CHANGES_COUNT; ++i)
-    {
-      const char *file_name;
-      svn_pool_clear(iterpool);
-
-      file_name = apr_psprintf(iterpool, "/file-%d", i);
-      SVN_ERR(svn_fs_make_file(txn_root, file_name, iterpool));
-    }
-
-  SVN_ERR(test_commit_txn(&rev, txn, NULL, pool));
-
-  /* Now, read the change list.  Test that no path gets reported twice. */
-  SVN_ERR(svn_fs_revision_root(&root, fs, rev, pool));
-  SVN_ERR(svn_fs_paths_changed3(&iterator, root, pool, pool));
-
-  changed_paths = apr_hash_make(pool);
+  changed_paths = apr_hash_make(scratch_pool);
   SVN_ERR(svn_fs_path_change_get(&change, iterator));
   while (change)
     {
-      const char *path = apr_pstrmemdup(pool, change->path.data,
+      const char *path = apr_pstrmemdup(scratch_pool, change->path.data,
                                         change->path.len);
       SVN_TEST_ASSERT(change->change_kind == svn_fs_path_change_add);
       SVN_TEST_ASSERT(!apr_hash_get(changed_paths, path, change->path.len));
@@ -7094,11 +7078,51 @@ test_large_changed_paths_list(const svn_
       SVN_TEST_ASSERT(svn_hash_gets(changed_paths, file_name));
     }
 
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_large_changed_paths_list(const svn_test_opts_t *opts,
+                              apr_pool_t *pool)
+{
+  svn_fs_t *fs;
+  svn_fs_txn_t *txn;
+  svn_fs_root_t *txn_root;
+  int i;
+  svn_revnum_t rev = 0;
+  apr_pool_t *iterpool = svn_pool_create(pool);
+  const char *repo_name = "test-repo-changed-paths-list";
+
+  SVN_ERR(svn_test__create_fs(&fs, repo_name, opts, pool));
+
+  /* r1: Add many empty files - just to amass a long list of changes. */
+  SVN_ERR(svn_fs_begin_txn(&txn, fs, rev, pool));
+  SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
+
+  for (i = 0; i < CHANGES_COUNT; ++i)
+    {
+      const char *file_name;
+      svn_pool_clear(iterpool);
+
+      file_name = apr_psprintf(iterpool, "/file-%d", i);
+      SVN_ERR(svn_fs_make_file(txn_root, file_name, iterpool));
+    }
+
+  SVN_ERR(test_commit_txn(&rev, txn, NULL, pool));
+
+  /* Now, read the change list.
+   * Do it twice to cover cached data as well. */
+  svn_pool_clear(iterpool);
+  verify_added_files_list(fs, rev, iterpool);
+  svn_pool_clear(iterpool);
+  verify_added_files_list(fs, rev, iterpool);
   svn_pool_destroy(iterpool);
 
   return SVN_NO_ERROR;
 }
 
+#undef CHANGES_COUNT
+
 /* ------------------------------------------------------------------------ */
 
 /* The test table.  */