build: require boost >= 1.71.0

Refs: #5276
Change-Id: Ib62b24b041e21b2c017cd9c290f7d5dc09003d63
diff --git a/tests/README.md b/tests/README.md
index ca34f42..11f51f4 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -8,15 +8,19 @@
 
 For example:
 
-    bld(features='cxx',
-        name='tool-subtool-objects',
+```python
+def build(bld):
+    bld.objects(
+        target='tool-subtool-objects',
         source=bld.path.ant_glob('subtool/*.cpp', excl='subtool/main.cpp'),
         use='core-objects')
 
-    bld(features='cxx cxxprogram',
+    bld.program(
+        name='subtool',
         target='../../bin/subtool',
         source='subtool/main.cpp',
         use='tool-subtool-objects')
 
     bld(name='tool-objects',
         use='tool-subtool-objects')
+```
diff --git a/tests/io-fixture.hpp b/tests/io-fixture.hpp
index 71b098a..8f7fe27 100644
--- a/tests/io-fixture.hpp
+++ b/tests/io-fixture.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  Regents of the University of California,
+ * Copyright (c) 2014-2023,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -28,7 +28,7 @@
 
 #include "tests/clock-fixture.hpp"
 
-#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_context.hpp>
 
 namespace ndn::tests {
 
@@ -39,17 +39,13 @@
   afterTick() final
   {
     if (m_io.stopped()) {
-#if BOOST_VERSION >= 106600
       m_io.restart();
-#else
-      m_io.reset();
-#endif
     }
     m_io.poll();
   }
 
 protected:
-  boost::asio::io_service m_io;
+  boost::asio::io_context m_io;
 };
 
 } // namespace ndn::tests
diff --git a/tests/peek/ndnpeek.t.cpp b/tests/peek/ndnpeek.t.cpp
index e7162b0..8a51b8e 100644
--- a/tests/peek/ndnpeek.t.cpp
+++ b/tests/peek/ndnpeek.t.cpp
@@ -24,7 +24,6 @@
 
 #include <ndn-cxx/util/dummy-client-face.hpp>
 
-#include <boost/mpl/vector.hpp>
 #include <boost/test/tools/output_test_stream.hpp>
 
 namespace ndn::peek::tests {
@@ -129,7 +128,7 @@
 BOOST_AUTO_TEST_SUITE(Peek)
 BOOST_FIXTURE_TEST_SUITE(TestNdnPeek, NdnPeekFixture)
 
-using OutputChecks = boost::mpl::vector<OutputFull, OutputPayloadOnly>;
+using OutputChecks = std::tuple<OutputFull, OutputPayloadOnly>;
 
 BOOST_AUTO_TEST_CASE_TEMPLATE(Default, OutputCheck, OutputChecks)
 {
diff --git a/tests/ping/integrated.t.cpp b/tests/ping/integrated.t.cpp
index 6994beb..4a85fda 100644
--- a/tests/ping/integrated.t.cpp
+++ b/tests/ping/integrated.t.cpp
@@ -25,6 +25,7 @@
 #include "tests/key-chain-fixture.hpp"
 
 #include <ndn-cxx/util/dummy-client-face.hpp>
+#include <boost/asio/post.hpp>
 
 namespace ndn::ping::tests {
 
@@ -53,7 +54,7 @@
   void
   receive(DummyClientFace& face, const Packet& pkt)
   {
-    m_io.post([=, &face] {
+    boost::asio::post(m_io, [=, &face] {
       if (!wantLoss) {
         face.receive(pkt);
       }
diff --git a/tests/test-case.t.cpp.sample b/tests/test-case.t.cpp.sample
index a2f74c1..07e4d2b 100644
--- a/tests/test-case.t.cpp.sample
+++ b/tests/test-case.t.cpp.sample
@@ -41,7 +41,7 @@
   int i = 0;
 
   // For reference of available Boost.Test macros, see
-  // https://www.boost.org/doc/libs/1_65_1/libs/test/doc/html/boost_test/testing_tools/summary.html
+  // https://www.boost.org/doc/libs/1_71_0/libs/test/doc/html/boost_test/testing_tools/summary.html
 
   BOOST_REQUIRE_NO_THROW(i = 1);
   BOOST_CHECK_EQUAL(i, 1);
diff --git a/tests/wscript b/tests/wscript
index 5a21139..2f12f81 100644
--- a/tests/wscript
+++ b/tests/wscript
@@ -6,5 +6,5 @@
         target=f'{top}/unit-tests',
         name='unit-tests',
         source=bld.path.ant_glob(['*.cpp'] + [f'{tool}/**/*.cpp' for tool in bld.env.BUILD_TOOLS]),
-        use=['core-objects'] + [f'{tool}-objects' for tool in bld.env.BUILD_TOOLS],
+        use=['BOOST_TESTS', 'core-objects'] + [f'{tool}-objects' for tool in bld.env.BUILD_TOOLS],
         install_path=None)