[zxtest][pager] Move utest/core/pager to zxtest

No intended functionality change.

Bug: 33518
Change-Id: Ib375bb9f540ab29f81683577c883e9436ab46d8e
diff --git a/zircon/system/utest/core/pager/BUILD.gn b/zircon/system/utest/core/pager/BUILD.gn
index 55d1f2e..941c251 100644
--- a/zircon/system/utest/core/pager/BUILD.gn
+++ b/zircon/system/utest/core/pager/BUILD.gn
@@ -16,9 +16,9 @@
     "$zx/system/ulib/fzl",
     "$zx/system/ulib/inspector",
     "$zx/system/ulib/sync",
-    "$zx/system/ulib/unittest",
     "$zx/system/ulib/zircon",
     "$zx/system/ulib/zx",
+    "$zx/system/ulib/zxtest",
     "$zx/third_party/ulib/backtrace",
   ]
 }
diff --git a/zircon/system/utest/core/pager/pager.cc b/zircon/system/utest/core/pager/pager.cc
index 73cd914..1a26a07 100644
--- a/zircon/system/utest/core/pager/pager.cc
+++ b/zircon/system/utest/core/pager/pager.cc
@@ -13,7 +13,7 @@
 
 #include <fbl/algorithm.h>
 #include <fbl/function.h>
-#include <unittest/unittest.h>
+#include <zxtest/zxtest.h>
 
 #include "test_thread.h"
 #include "userpager.h"
@@ -33,10 +33,14 @@
   return check_vmar ? vmo->CheckVmar(offset, len) : vmo->CheckVmo(offset, len);
 }
 
-// Simple test that checks that a single thread can access a single page.
-bool single_page_test(bool check_vmar) {
-  BEGIN_TEST;
+#define VMO_VMAR_TEST(fn_name)                   \
+  void fn_name(bool);                            \
+  TEST(Pager, fn_name##_vmar) { fn_name(true); } \
+  TEST(Pager, fn_name##_vmo) { fn_name(false); } \
+  void fn_name(bool check_vmar)
 
+// Simple test that checks that a single thread can access a single page.
+VMO_VMAR_TEST(SinglePageTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -53,14 +57,10 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, 0, 1));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests that pre-supplied pages don't result in requests.
-bool presupply_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(PresupplyTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -77,15 +77,11 @@
   ASSERT_TRUE(t.Wait());
 
   ASSERT_FALSE(pager.WaitForPageRead(vmo, 0, 1, 0));
-
-  END_TEST;
 }
 
 // Tests that supplies between the request and reading the port
 // causes the request to be aborted.
-bool early_supply_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(EarlySupplyTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -109,14 +105,10 @@
   ASSERT_TRUE(t2.Wait());
 
   ASSERT_FALSE(pager.WaitForPageRead(vmo, 0, 1, 0));
-
-  END_TEST;
 }
 
 // Checks that a single thread can sequentially access multiple pages.
-bool sequential_multipage_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(SequentialMultipageTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -135,14 +127,10 @@
   }
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests that multiple threads can concurrently access different pages.
-bool concurrent_multipage_access_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(ConcurrentMultipageAccessTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -162,14 +150,10 @@
 
   ASSERT_TRUE(t.Wait());
   ASSERT_TRUE(t2.Wait());
-
-  END_TEST;
 }
 
 // Tests that multiple threads can concurrently access a single page.
-bool concurrent_overlapping_access_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(ConcurrentOverlappingAccessTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -195,15 +179,11 @@
   }
 
   ASSERT_FALSE(pager.WaitForPageRead(vmo, 0, 1, 0));
-
-  END_TEST;
 }
 
 // Tests that multiple threads can concurrently access multiple pages and
 // be satisfied by a single supply operation.
-bool bulk_single_supply_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(BulkSingleSupplyTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -225,14 +205,10 @@
   for (unsigned i = 0; i < kNumPages; i++) {
     ASSERT_TRUE(ts[i]->Wait());
   }
-
-  END_TEST;
 }
 
 // Test body for odd supply tests.
-bool bulk_odd_supply_test_inner(bool check_vmar, bool use_src_offset) {
-  BEGIN_TEST;
-
+void BulkOddSupplyTestInner(bool check_vmar, bool use_src_offset) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -271,25 +247,21 @@
 
     page_idx += kSupplyLengths[supply_idx];
   }
-
-  END_TEST;
 }
 
 // Test that exercises supply logic by supplying data in chunks of unusual length.
-bool bulk_odd_length_supply_test(bool check_vmar) {
-  return bulk_odd_supply_test_inner(check_vmar, false);
+VMO_VMAR_TEST(BulkOddLengthSupplyTest) {
+  return BulkOddSupplyTestInner(check_vmar, false);
 }
 
 // Test that exercises supply logic by supplying data in chunks of
 // unusual lengths and offsets.
-bool bulk_odd_offset_supply_test(bool check_vmar) {
-  return bulk_odd_supply_test_inner(check_vmar, true);
+VMO_VMAR_TEST(BulkOddOffsetSupplyTest) {
+  return BulkOddSupplyTestInner(check_vmar, true);
 }
 
 // Tests that supply doesn't overwrite existing content.
-bool overlap_supply_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(OverlapSupplyTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -316,14 +288,10 @@
   ASSERT_TRUE(t.Wait());
 
   ASSERT_FALSE(pager.WaitForPageRead(vmo, 0, 1, 0));
-
-  END_TEST;
 }
 
 // Tests that a pager can handle lots of pending page requests.
-bool many_request_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(ManyRequestTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -345,14 +313,10 @@
     ASSERT_TRUE(pager.SupplyPages(vmo, i, 1));
     ASSERT_TRUE(ts[i]->Wait());
   }
-
-  END_TEST;
 }
 
 // Tests that a pager can support creating and destroying successive vmos.
-bool successive_vmo_test() {
-  BEGIN_TEST;
-
+TEST(Pager, SuccessiveVmoTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -374,14 +338,10 @@
 
     pager.ReleaseVmo(vmo);
   }
-
-  END_TEST;
 }
 
 // Tests that a pager can support multiple concurrent vmos.
-bool multiple_concurrent_vmo_test() {
-  BEGIN_TEST;
-
+TEST(Pager, MultipleConcurrentVmoTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -405,15 +365,11 @@
 
     ASSERT_TRUE(ts[i]->Wait());
   }
-
-  END_TEST;
 }
 
 // Tests that unmapping a vmo while threads are blocked on a pager read
 // eventually results in pagefaults.
-bool vmar_unmap_test() {
-  BEGIN_TEST;
-
+TEST(Pager, VmarUnmapTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -429,15 +385,11 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, 0, 1));
 
   ASSERT_TRUE(t.WaitForCrash(vmo->GetBaseAddr()));
-
-  END_TEST;
 }
 
 // Tests that replacing a vmar mapping while threads are blocked on a
 // pager read results in reads to the new mapping.
-bool vmar_remap_test() {
-  BEGIN_TEST;
-
+TEST(Pager, VmarRemapTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -471,15 +423,11 @@
     ASSERT_TRUE(pager.SupplyPages(vmo, offset, 1));
     ASSERT_TRUE(ts[offset]->Wait());
   }
-
-  END_TEST;
 }
 
 // Tests that ZX_VM_MAP_RANGE works with pager vmos (i.e. maps in backed regions
 // but doesn't try to pull in new regions).
-bool vmar_map_range_test() {
-  BEGIN_TEST;
-
+TEST(Pager, VmarMapRangeTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -492,9 +440,8 @@
   // Map the vmo. This shouldn't block or generate any new page requests.
   uint64_t ptr;
   TestThread t([vmo, &ptr]() -> bool {
-    ASSERT_EQ(zx::vmar::root_self()->map(0, vmo->vmo(), 0, 2 * ZX_PAGE_SIZE,
-                                         ZX_VM_PERM_READ | ZX_VM_MAP_RANGE, &ptr),
-              ZX_OK);
+    ZX_ASSERT(zx::vmar::root_self()->map(0, vmo->vmo(), 0, 2 * ZX_PAGE_SIZE,
+                                         ZX_VM_PERM_READ | ZX_VM_MAP_RANGE, &ptr) == ZX_OK);
     return true;
   });
 
@@ -526,14 +473,10 @@
 
   // Cleanup the mapping we created.
   zx::vmar::root_self()->unmap(ptr, 2 * ZX_PAGE_SIZE);
-
-  END_TEST;
 }
 
 // Tests that reads don't block forever if a vmo is resized out from under a read.
-bool read_resize_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(ReadResizeTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -554,14 +497,10 @@
   } else {
     ASSERT_TRUE(t.WaitForFailure());
   }
-
-  END_TEST;
 }
 
 // Test that suspending and resuming a thread in the middle of a read works.
-bool suspend_read_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(SuspendReadTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -575,7 +514,7 @@
 
   ASSERT_TRUE(pager.WaitForPageRead(vmo, 0, 1, ZX_TIME_INFINITE));
 
-  ASSERT_TRUE(t.SuspendSync());
+  t.SuspendSync();
   t.Resume();
 
   ASSERT_TRUE(t.WaitForBlocked());
@@ -585,14 +524,10 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, 0, 1));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests the ZX_INFO_VMO_PAGER_BACKED flag
-bool vmo_info_pager_test() {
-  BEGIN_TEST;
-
+TEST(Pager, VmoInfoPagerTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -610,14 +545,10 @@
   ASSERT_EQ(ZX_OK, zx::vmo::create(ZX_PAGE_SIZE, 0, &plain_vmo), "");
   ASSERT_EQ(ZX_OK, plain_vmo.get_info(ZX_INFO_VMO, &info, sizeof(info), nullptr, nullptr), "");
   ASSERT_EQ(0, info.flags & ZX_INFO_VMO_PAGER_BACKED, "");
-
-  END_TEST;
 }
 
 // Tests that detaching results in a complete request.
-bool detach_page_complete_test() {
-  BEGIN_TEST;
-
+TEST(Pager, DetachPageCompleteTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -628,14 +559,10 @@
   ASSERT_TRUE(pager.DetachVmo(vmo));
 
   ASSERT_TRUE(pager.WaitForPageComplete(vmo->GetKey(), ZX_TIME_INFINITE));
-
-  END_TEST;
 }
 
 // Tests that closing results in a complete request.
-bool close_page_complete_test() {
-  BEGIN_TEST;
-
+TEST(Pager, ClosePageCompleteTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -647,14 +574,10 @@
   pager.ReleaseVmo(vmo);
 
   ASSERT_TRUE(pager.WaitForPageComplete(key, ZX_TIME_INFINITE));
-
-  END_TEST;
 }
 
 // Tests that interrupting a read after receiving the request doesn't result in hanging threads.
-bool read_interrupt_late_test(bool check_vmar, bool detach) {
-  BEGIN_TEST;
-
+void ReadInterruptLateTest(bool check_vmar, bool detach) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -683,22 +606,18 @@
   if (detach) {
     ASSERT_TRUE(pager.WaitForPageComplete(vmo->GetKey(), ZX_TIME_INFINITE));
   }
-
-  END_TEST;
 }
 
-bool read_close_interrupt_late_test(bool check_vmar) {
-  return read_interrupt_late_test(check_vmar, false);
+VMO_VMAR_TEST(ReadCloseInterruptLateTest) {
+  ReadInterruptLateTest(check_vmar, false);
 }
 
-bool read_detach_interrupt_late_test(bool check_vmar) {
-  return read_interrupt_late_test(check_vmar, true);
+VMO_VMAR_TEST(ReadDetachInterruptLateTest) {
+  ReadInterruptLateTest(check_vmar, true);
 }
 
 // Tests that interrupt a read before receiving requests doesn't result in hanging threads.
-bool read_interrupt_early_test(bool check_vmar, bool detach) {
-  BEGIN_TEST;
-
+void ReadInterruptEarlyTest(bool check_vmar, bool detach) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -726,23 +645,19 @@
   if (detach) {
     ASSERT_TRUE(pager.WaitForPageComplete(vmo->GetKey(), ZX_TIME_INFINITE));
   }
-
-  END_TEST;
 }
 
-bool read_close_interrupt_early_test(bool check_vmar) {
-  return read_interrupt_early_test(check_vmar, false);
+VMO_VMAR_TEST(ReadCloseInterruptEarlyTest) {
+  ReadInterruptEarlyTest(check_vmar, false);
 }
 
-bool read_detach_interrupt_early_test(bool check_vmar) {
-  return read_interrupt_early_test(check_vmar, true);
+VMO_VMAR_TEST(ReadDetachInterruptEarlyTest) {
+  ReadInterruptEarlyTest(check_vmar, true);
 }
 
 // Tests that closing a pager while a thread is accessing it doesn't cause
 // problems (other than a page fault in the accessing thread).
-bool close_pager_test() {
-  BEGIN_TEST;
-
+TEST(Pager, ClosePagerTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -760,14 +675,10 @@
 
   ASSERT_TRUE(t.WaitForCrash(vmo->GetBaseAddr()));
   ASSERT_TRUE(check_buffer(vmo, 1, 1, true));
-
-  END_TEST;
 }
 
 // Tests that closing a pager while a vmo is being detached doesn't cause problems.
-bool detach_close_pager_test() {
-  BEGIN_TEST;
-
+TEST(Pager, DetachClosePagerTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -778,15 +689,11 @@
   ASSERT_TRUE(pager.DetachVmo(vmo));
 
   pager.ClosePagerHandle();
-
-  END_TEST;
 }
 
 // Tests that closing an in use port doesn't cause issues (beyond no
 // longer being able to receive requests).
-bool close_port_test() {
-  BEGIN_TEST;
-
+TEST(Pager, ClosePortTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -806,14 +713,10 @@
 
   ASSERT_TRUE(pager.DetachVmo(vmo));
   ASSERT_TRUE(t.WaitForCrash(vmo->GetBaseAddr()));
-
-  END_TEST;
 }
 
 // Tests that reading from a clone populates the vmo.
-bool clone_read_from_clone_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(CloneReadFromCloneTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -835,14 +738,10 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, 0, 1));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests that reading from the parent populates the clone.
-bool clone_read_from_parent_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(CloneReadFromParentTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -871,14 +770,10 @@
   ASSERT_TRUE(t2.Wait());
 
   ASSERT_FALSE(pager.WaitForPageRead(vmo, 0, 1, 0));
-
-  END_TEST;
 }
 
 // Tests that overlapping reads on clone and parent work.
-bool clone_simultaneous_read_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(CloneSimultaneousReadTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -908,14 +803,10 @@
   ASSERT_TRUE(t2.Wait());
 
   ASSERT_FALSE(pager.WaitForPageRead(vmo, 0, 1, 0));
-
-  END_TEST;
 }
 
 // Tests that overlapping reads from two clones work.
-bool clone_simultaneous_child_read_test(bool check_vmar) {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(CloneSimultaneousChildReadTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -949,14 +840,10 @@
   ASSERT_TRUE(t2.Wait());
 
   ASSERT_FALSE(pager.WaitForPageRead(vmo, 0, 1, 0));
-
-  END_TEST;
 }
 
 // Tests that writes don't propagate to the parent.
-bool clone_write_to_clone_test() {
-  BEGIN_TEST;
-
+VMO_VMAR_TEST(CloneWriteToCloneTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -984,14 +871,10 @@
   ASSERT_EQ(*reinterpret_cast<uint64_t*>(clone->GetBaseAddr()), 0xdeadbeef);
   *reinterpret_cast<uint64_t*>(clone->GetBaseAddr()) = clone->GetKey();
   ASSERT_TRUE(clone->CheckVmar(0, 1));
-
-  END_TEST;
 }
 
 // Tests that detaching the parent doesn't crash the clone.
-bool clone_detach_test() {
-  BEGIN_TEST;
-
+TEST(Pager, CloneDetachTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1015,14 +898,10 @@
   ASSERT_TRUE(pager.WaitForPageComplete(vmo->GetKey(), ZX_TIME_INFINITE));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests that commit on the clone populates things properly.
-bool clone_commit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, CloneCommitTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1043,14 +922,10 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, 0, kNumPages));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests that commit on the clone populates things properly if things have already been touched.
-bool clone_split_commit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, CloneSplitCommitTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1077,14 +952,10 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, kNumPages - 1, 1));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Resizing a cloned VMO causes a fault.
-bool clone_resize_clone_hazard() {
-  BEGIN_TEST;
-
+TEST(Pager, CloneResizeCloneHazard) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1111,13 +982,10 @@
   EXPECT_EQ(false, probe_for_write(&int_arr[1]), "write probe");
 
   EXPECT_EQ(ZX_OK, zx::vmar::root_self()->unmap(ptr_rw, kSize), "unmap");
-  END_TEST;
 }
 
 // Resizing the parent VMO and accessing via a mapped VMO is ok.
-bool clone_resize_parent_ok() {
-  BEGIN_TEST;
-
+TEST(Pager, CloneResizeParentOK) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1143,13 +1011,10 @@
   EXPECT_EQ(true, probe_for_write(&int_arr[1]), "write probe");
 
   EXPECT_EQ(ZX_OK, zx::vmar::root_self()->unmap(ptr_rw, kSize), "unmap");
-  END_TEST;
 }
 
 // Pages exposed by growing the parent after shrinking it aren't visible to the child.
-bool clone_shrink_grow_parent() {
-  BEGIN_TEST;
-
+TEST(Pager, CloneShrinkGrowParent) {
   struct {
     uint64_t vmo_size;
     uint64_t clone_offset;
@@ -1212,14 +1077,10 @@
 
     EXPECT_EQ(ZX_OK, zx::vmar::root_self()->unmap(ptr_ro, config.clone_size));
   }
-
-  END_TEST;
 }
 
 // Tests that a commit properly populates the whole range.
-bool simple_commit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, SimpleCommitTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1237,14 +1098,10 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, 0, kNumPages));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests that a commit over a partially populated range is properly split.
-bool split_commit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, SplitCommitTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1266,14 +1123,10 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, ((kNumPages / 2) + 1), (kNumPages / 2)));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests that overlapping commits don't result in redundant requests.
-bool overlap_commit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, OverlapCommitTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1298,14 +1151,10 @@
 
   ASSERT_TRUE(t1.Wait());
   ASSERT_TRUE(t2.Wait());
-
-  END_TEST;
 }
 
 // Tests that overlapping commits are properly supplied.
-bool overlap_commit_supply_test() {
-  BEGIN_TEST;
-
+TEST(Pager, OverlapCommitSupplyTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1345,14 +1194,10 @@
   for (unsigned i = 0; i < fbl::count_of(tsB); i++) {
     ASSERT_TRUE(tsB[i]->Wait());
   }
-
-  END_TEST;
 }
 
 // Tests that a single commit can be fulfilled by multiple supplies.
-bool multisupply_commit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, MultisupplyCommitTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1372,14 +1217,10 @@
   }
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests that a single supply can fulfil multiple commits.
-bool multicommit_supply_test() {
-  BEGIN_TEST;
-
+TEST(Pager, MulticommitSupplyTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1404,14 +1245,10 @@
   for (unsigned i = 0; i < kNumCommits; i++) {
     ASSERT_TRUE(ts[i]->Wait());
   }
-
-  END_TEST;
 }
 
 // Tests that redundant supplies for a single commit don't cause errors.
-bool commit_redundant_supply_test() {
-  BEGIN_TEST;
-
+TEST(Pager, CommitRedundantSupplyTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1431,14 +1268,10 @@
   }
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Test that resizing out from under a commit is handled.
-bool resize_commit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, ResizeCommitTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1469,14 +1302,10 @@
   // Make sure there are no extra requests.
   uint64_t offset, length;
   ASSERT_FALSE(pager.GetPageReadRequest(vmo, 0, &offset, &length));
-
-  END_TEST;
 }
 
 // Test that suspending and resuming a thread in the middle of commit works.
-bool suspend_commit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, SuspendCommitTest) {
   UserPager pager;
 
   ASSERT_TRUE(pager.Init());
@@ -1490,7 +1319,7 @@
 
   ASSERT_TRUE(pager.WaitForPageRead(vmo, 0, 1, ZX_TIME_INFINITE));
 
-  ASSERT_TRUE(t.SuspendSync());
+  t.SuspendSync();
   t.Resume();
 
   ASSERT_TRUE(t.WaitForBlocked());
@@ -1500,25 +1329,18 @@
   ASSERT_TRUE(pager.SupplyPages(vmo, 0, 1));
 
   ASSERT_TRUE(t.Wait());
-
-  END_TEST;
 }
 
 // Tests API violations for pager_create.
-bool invalid_pager_create() {
-  BEGIN_TEST;
+TEST(Pager, InvalidPagerCreate) {
   zx_handle_t handle;
 
   // bad options
   ASSERT_EQ(zx_pager_create(1, &handle), ZX_ERR_INVALID_ARGS);
-
-  END_TEST;
 }
 
 // Tests API violations for pager_create_vmo.
-bool invalid_pager_create_vmo() {
-  BEGIN_TEST;
-
+TEST(Pager, InvalidPagerCreateVmo) {
   zx::pager pager;
   ASSERT_EQ(zx::pager::create(0, &pager), ZX_OK);
 
@@ -1555,13 +1377,10 @@
   static constexpr uint64_t kBadSize = fbl::round_down(UINT64_MAX, ZX_PAGE_SIZE) + 1;
   ASSERT_EQ(zx_pager_create_vmo(pager.get(), 0, port.get(), 0, kBadSize, &vmo),
             ZX_ERR_OUT_OF_RANGE);
-
-  END_TEST;
 }
 
 // Tests API violations for pager_detach_vmo.
-bool invalid_pager_detach_vmo() {
-  BEGIN_TEST;
+TEST(Pager, InvalidPagerDetachVmo) {
   zx::pager pager;
   ASSERT_EQ(zx::pager::create(0, &pager), ZX_OK);
 
@@ -1590,13 +1409,10 @@
   zx::pager pager2;
   ASSERT_EQ(zx::pager::create(0, &pager2), ZX_OK);
   ASSERT_EQ(zx_pager_detach_vmo(pager2.get(), vmo.get()), ZX_ERR_INVALID_ARGS);
-
-  END_TEST;
 }
 
 // Tests API violations for supply_pages.
-bool invalid_pager_supply_pages() {
-  BEGIN_TEST;
+TEST(Pager, InvalidPagerSupplyPages) {
   zx::pager pager;
   ASSERT_EQ(zx::pager::create(0, &pager), ZX_OK);
 
@@ -1759,14 +1575,10 @@
   ASSERT_EQ(
       zx_pager_supply_pages(pager.get(), vmo.get(), 0, ZX_PAGE_SIZE, aux_vmo.get(), ZX_PAGE_SIZE),
       ZX_ERR_OUT_OF_RANGE);
-
-  END_TEST;
 }
 
 // Tests that resizing a non-resizable pager vmo fails.
-bool resize_nonresizable_vmo() {
-  BEGIN_TEST;
-
+TEST(Pager, ResizeNonresizableVmo) {
   zx::pager pager;
   ASSERT_EQ(zx::pager::create(0, &pager), ZX_OK);
 
@@ -1778,14 +1590,10 @@
   ASSERT_EQ(pager.create_vmo(0, port, 0, ZX_PAGE_SIZE, &vmo), ZX_OK);
 
   ASSERT_EQ(vmo.set_size(2 * ZX_PAGE_SIZE), ZX_ERR_UNAVAILABLE);
-
-  END_TEST;
 }
 
 // Tests that decommiting a clone fails
-bool decommit_test() {
-  BEGIN_TEST;
-
+TEST(Pager, DecommitTest) {
   zx::pager pager;
   ASSERT_EQ(zx::pager::create(0, &pager), ZX_OK);
 
@@ -1802,119 +1610,6 @@
   ASSERT_EQ(vmo.create_child(ZX_VMO_CHILD_PRIVATE_PAGER_COPY, 0, ZX_PAGE_SIZE, &child), ZX_OK);
 
   ASSERT_EQ(child.op_range(ZX_VMO_OP_DECOMMIT, 0, ZX_PAGE_SIZE, nullptr, 0), ZX_ERR_NOT_SUPPORTED);
-
-  END_TEST;
 }
 
-// Tests focused on reading a paged vmo.
-
-#define DEFINE_VMO_VMAR_TEST(fn_name)             \
-  bool fn_name##_vmar() { return fn_name(true); } \
-  bool fn_name##_vmo() { return fn_name(false); }
-
-#define RUN_VMO_VMAR_TEST(fn_name) \
-  RUN_TEST(fn_name##_vmar);        \
-  RUN_TEST(fn_name##_vmo);
-
-DEFINE_VMO_VMAR_TEST(single_page_test)
-DEFINE_VMO_VMAR_TEST(presupply_test)
-DEFINE_VMO_VMAR_TEST(early_supply_test)
-DEFINE_VMO_VMAR_TEST(sequential_multipage_test)
-DEFINE_VMO_VMAR_TEST(concurrent_multipage_access_test)
-DEFINE_VMO_VMAR_TEST(concurrent_overlapping_access_test)
-DEFINE_VMO_VMAR_TEST(bulk_single_supply_test)
-DEFINE_VMO_VMAR_TEST(bulk_odd_length_supply_test)
-DEFINE_VMO_VMAR_TEST(bulk_odd_offset_supply_test)
-DEFINE_VMO_VMAR_TEST(overlap_supply_test)
-DEFINE_VMO_VMAR_TEST(many_request_test)
-DEFINE_VMO_VMAR_TEST(read_resize_test)
-DEFINE_VMO_VMAR_TEST(suspend_read_test)
-
-BEGIN_TEST_CASE(pager_read_tests)
-RUN_VMO_VMAR_TEST(single_page_test);
-RUN_VMO_VMAR_TEST(presupply_test);
-RUN_VMO_VMAR_TEST(early_supply_test);
-RUN_VMO_VMAR_TEST(sequential_multipage_test);
-RUN_VMO_VMAR_TEST(concurrent_multipage_access_test);
-RUN_VMO_VMAR_TEST(concurrent_overlapping_access_test);
-RUN_VMO_VMAR_TEST(bulk_single_supply_test);
-RUN_VMO_VMAR_TEST(bulk_odd_length_supply_test);
-RUN_VMO_VMAR_TEST(bulk_odd_offset_supply_test);
-RUN_VMO_VMAR_TEST(overlap_supply_test);
-RUN_VMO_VMAR_TEST(many_request_test);
-RUN_TEST(successive_vmo_test);
-RUN_TEST(multiple_concurrent_vmo_test);
-RUN_TEST(vmar_unmap_test);
-RUN_TEST(vmar_remap_test);
-RUN_TEST(vmar_map_range_test);
-RUN_VMO_VMAR_TEST(read_resize_test);
-RUN_VMO_VMAR_TEST(suspend_read_test);
-END_TEST_CASE(pager_read_tests)
-
-// Tests focused on lifecycle of pager and paged vmos.
-
-DEFINE_VMO_VMAR_TEST(read_detach_interrupt_late_test)
-DEFINE_VMO_VMAR_TEST(read_close_interrupt_late_test)
-DEFINE_VMO_VMAR_TEST(read_detach_interrupt_early_test)
-DEFINE_VMO_VMAR_TEST(read_close_interrupt_early_test)
-
-BEGIN_TEST_CASE(lifecycle_tests)
-RUN_TEST(vmo_info_pager_test);
-RUN_TEST(detach_page_complete_test);
-RUN_TEST(close_page_complete_test);
-RUN_VMO_VMAR_TEST(read_detach_interrupt_late_test);
-RUN_VMO_VMAR_TEST(read_close_interrupt_late_test);
-RUN_VMO_VMAR_TEST(read_detach_interrupt_early_test);
-RUN_VMO_VMAR_TEST(read_close_interrupt_early_test);
-RUN_TEST(close_pager_test);
-RUN_TEST(detach_close_pager_test);
-RUN_TEST(close_port_test);
-END_TEST_CASE(lifecycle_tests)
-
-// Tests focused on clones.
-
-DEFINE_VMO_VMAR_TEST(clone_read_from_clone_test)
-DEFINE_VMO_VMAR_TEST(clone_read_from_parent_test)
-DEFINE_VMO_VMAR_TEST(clone_simultaneous_read_test)
-DEFINE_VMO_VMAR_TEST(clone_simultaneous_child_read_test)
-
-BEGIN_TEST_CASE(clone_tests);
-RUN_VMO_VMAR_TEST(clone_read_from_clone_test);
-RUN_VMO_VMAR_TEST(clone_read_from_parent_test);
-RUN_VMO_VMAR_TEST(clone_simultaneous_read_test);
-RUN_VMO_VMAR_TEST(clone_simultaneous_child_read_test);
-RUN_TEST(clone_write_to_clone_test);
-RUN_TEST(clone_detach_test);
-RUN_TEST(clone_commit_test);
-RUN_TEST(clone_split_commit_test);
-RUN_TEST(clone_resize_clone_hazard);
-RUN_TEST(clone_resize_parent_ok);
-RUN_TEST(clone_shrink_grow_parent);
-END_TEST_CASE(clone_tests)
-
-// Tests focused on commit/decommit.
-
-BEGIN_TEST_CASE(commit_tests)
-RUN_TEST(simple_commit_test);
-RUN_TEST(split_commit_test);
-RUN_TEST(overlap_commit_test);
-RUN_TEST(overlap_commit_supply_test);
-RUN_TEST(multisupply_commit_test);
-RUN_TEST(multicommit_supply_test);
-RUN_TEST(commit_redundant_supply_test);
-RUN_TEST(resize_commit_test);
-RUN_TEST(suspend_commit_test);
-END_TEST_CASE(commit_tests)
-
-// Tests focused on API violations.
-
-BEGIN_TEST_CASE(api_violations)
-RUN_TEST(invalid_pager_create);
-RUN_TEST(invalid_pager_create_vmo);
-RUN_TEST(invalid_pager_detach_vmo);
-RUN_TEST(invalid_pager_supply_pages);
-RUN_TEST(resize_nonresizable_vmo);
-RUN_TEST(decommit_test);
-END_TEST_CASE(api_violations)
-
 }  // namespace pager_tests
diff --git a/zircon/system/utest/core/pager/test_thread.h b/zircon/system/utest/core/pager/test_thread.h
index ca27ec0..329c6ff 100644
--- a/zircon/system/utest/core/pager/test_thread.h
+++ b/zircon/system/utest/core/pager/test_thread.h
@@ -4,16 +4,17 @@
 
 #pragma once
 
-#include <fbl/function.h>
 #include <lib/sync/completion.h>
 #include <lib/zx/channel.h>
 #include <lib/zx/suspend_token.h>
 #include <lib/zx/thread.h>
 #include <threads.h>
-#include <unittest/unittest.h>
 #include <zircon/syscalls/exception.h>
 #include <zircon/types.h>
 
+#include <fbl/function.h>
+#include <zxtest/zxtest.h>
+
 namespace pager_tests {
 
 // Class which executes the specified function on a test thread.
@@ -37,13 +38,11 @@
     return zx_thread_.wait_one(ZX_TASK_TERMINATED, zx::time::infinite(), nullptr) == ZX_OK;
   }
 
-  bool SuspendSync() {
+  void SuspendSync() {
     ASSERT_EQ(zx_thread_.suspend(&suspend_token_), ZX_OK);
 
     zx_signals_t observed = 0u;
     ASSERT_EQ(zx_thread_.wait_one(ZX_THREAD_SUSPENDED, zx::time::infinite(), &observed), ZX_OK);
-
-    return true;
   }
 
   void Resume() { suspend_token_.reset(); }