From 01a2a8cefbb630011eacb40419250d43021b7b43 Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Fri, 13 Dec 2024 14:25:50 -0500 Subject: [PATCH] Switch to std::filesystem Change-Id: If70258048d6f54c3e9f0a25bf8f3e327411c42ac --- .jenkins.d/00-deps.sh | 1 - .waf-tools/default-compiler-flags.py | 2 +- src/storage/sqlite-storage.cpp | 39 +++++++++++---------------- tests/identity-management-fixture.cpp | 8 +++--- tests/repo-storage-fixture.hpp | 17 +++++------- tests/sqlite-fixture.hpp | 16 +++++------ wscript | 2 +- 7 files changed, 33 insertions(+), 52 deletions(-) diff --git a/.jenkins.d/00-deps.sh b/.jenkins.d/00-deps.sh index d16fe41..d55a187 100755 --- a/.jenkins.d/00-deps.sh +++ b/.jenkins.d/00-deps.sh @@ -7,7 +7,6 @@ APT_PKGS=( libboost-chrono-dev libboost-date-time-dev libboost-dev - libboost-filesystem-dev libboost-iostreams-dev libboost-log-dev libboost-program-options-dev diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py index 9899d05..090e65d 100644 --- a/.waf-tools/default-compiler-flags.py +++ b/.waf-tools/default-compiler-flags.py @@ -136,7 +136,7 @@ def getDebugFlags(self, conf): return { 'CXXFLAGS': [], 'LINKFLAGS': [], - 'DEFINES': ['BOOST_ASIO_NO_DEPRECATED', 'BOOST_FILESYSTEM_NO_DEPRECATED'], + 'DEFINES': ['BOOST_ASIO_NO_DEPRECATED'], } def getOptimizedFlags(self, conf): diff --git a/src/storage/sqlite-storage.cpp b/src/storage/sqlite-storage.cpp index a9627ff..0ee3f7c 100644 --- a/src/storage/sqlite-storage.cpp +++ b/src/storage/sqlite-storage.cpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2019, Regents of the University of California. + * Copyright (c) 2014-2024, Regents of the University of California. * * This file is part of NDN repo-ng (Next generation of NDN repository). * See AUTHORS.md for complete list of repo-ng authors and contributors. @@ -18,15 +18,12 @@ */ #include "sqlite-storage.hpp" -#include "config.hpp" +#include #include #include -#include -#include - -#include +#include namespace repo { @@ -35,25 +32,22 @@ NDN_LOG_INIT(repo.SqliteStorage); SqliteStorage::SqliteStorage(const std::string& dbPath) { if (dbPath.empty()) { - m_dbPath = std::string("ndn_repo.db"); - NDN_LOG_DEBUG("Create db file in local location [" << m_dbPath << "]. " ); - NDN_LOG_DEBUG("You can assign the path using -d option" ); + m_dbPath = "ndn_repo.db"; } else { - boost::filesystem::path fsPath(dbPath); - boost::filesystem::file_status fsPathStatus = boost::filesystem::status(fsPath); - if (!boost::filesystem::is_directory(fsPathStatus)) { - if (!boost::filesystem::create_directory(boost::filesystem::path(fsPath))) { - NDN_THROW(Error("Folder '" + dbPath + "' does not exists and cannot be created")); + std::filesystem::path fsPath(dbPath); + if (!std::filesystem::is_directory(fsPath)) { + if (!std::filesystem::create_directory(fsPath)) { + NDN_THROW(Error("Directory '" + dbPath + "' does not exists and cannot be created")); } } - m_dbPath = dbPath + "/ndn_repo.db"; } + + NDN_LOG_DEBUG("Using database file " << m_dbPath); initializeRepo(); } - void SqliteStorage::initializeRepo() { @@ -95,7 +89,7 @@ SqliteStorage::insert(const Data& data) Name name = data.getFullName(); // store the full name ndn::util::Sqlite3Statement stmt(m_db, "INSERT INTO NDN_REPO_V2 (name, data) VALUES (?, ?);"); - //Insert + // Insert // Bind NULL to name value in NDN_REPO_V2 when initialize result. auto result = sqlite3_bind_null(stmt, 1); if (result == SQLITE_OK) { @@ -106,7 +100,6 @@ SqliteStorage::insert(const Data& data) result = stmt.bind(2, data.wireEncode(), SQLITE_STATIC); } - int id = 0; if (result == SQLITE_OK) { int rc = 0; rc = stmt.step(); @@ -115,12 +108,11 @@ SqliteStorage::insert(const Data& data) NDN_THROW(Error("Insert failed")); } sqlite3_reset(stmt); - id = sqlite3_last_insert_rowid(m_db); + return sqlite3_last_insert_rowid(m_db); } else { - NDN_THROW(Error("Some error with insert")); + NDN_THROW(Error("Database insert failure (code: " + std::to_string(result))); } - return id; } bool @@ -250,7 +242,7 @@ SqliteStorage::forEach(const std::function& f) break; } else { - NDN_THROW(Error("Database query failure (code: " + ndn::to_string(rc))); + NDN_THROW(Error("Database query failure (code: " + std::to_string(rc))); } } } @@ -266,8 +258,7 @@ SqliteStorage::size() NDN_THROW(Error("Database query failure")); } - uint64_t nData = stmt.getInt(0); - return nData; + return stmt.getInt(0); } } // namespace repo diff --git a/tests/identity-management-fixture.cpp b/tests/identity-management-fixture.cpp index ef5ab5c..106797b 100644 --- a/tests/identity-management-fixture.cpp +++ b/tests/identity-management-fixture.cpp @@ -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-2024, Regents of the University of California. * * This file is part of NDN repo-ng (Next generation of NDN repository). * See AUTHORS.md for complete list of repo-ng authors and contributors. @@ -25,7 +25,7 @@ #include #include -#include +#include namespace repo::tests { @@ -37,9 +37,9 @@ IdentityManagementFixture::IdentityManagementFixture() IdentityManagementFixture::~IdentityManagementFixture() { - boost::system::error_code ec; + std::error_code ec; for (const auto& certFile : m_certFiles) { - boost::filesystem::remove(certFile, ec); // ignore error + std::filesystem::remove(certFile, ec); // ignore error } } diff --git a/tests/repo-storage-fixture.hpp b/tests/repo-storage-fixture.hpp index f573736..83b3f3f 100644 --- a/tests/repo-storage-fixture.hpp +++ b/tests/repo-storage-fixture.hpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2018-2022, Regents of the University of California. + * Copyright (c) 2018-2024, Regents of the University of California. * * This file is part of NDN repo-ng (Next generation of NDN repository). * See AUTHORS.md for complete list of repo-ng authors and contributors. @@ -23,27 +23,22 @@ #include "storage/repo-storage.hpp" #include "storage/sqlite-storage.hpp" -#include +#include namespace repo::tests { class RepoStorageFixture { public: - RepoStorageFixture() - : store(std::make_shared("unittestdb")) - , handle(std::make_shared(*store)) - { - } - ~RepoStorageFixture() { - boost::filesystem::remove_all(boost::filesystem::path("unittestdb")); + std::error_code ec; + std::filesystem::remove_all(std::filesystem::path("unittestdb"), ec); } public: - std::shared_ptr store; - std::shared_ptr handle; + std::shared_ptr store = std::make_shared("unittestdb"); + std::shared_ptr handle = std::make_shared(*store); }; } // namespace repo::tests diff --git a/tests/sqlite-fixture.hpp b/tests/sqlite-fixture.hpp index c478d64..dbe5ea0 100644 --- a/tests/sqlite-fixture.hpp +++ b/tests/sqlite-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-2024, Regents of the University of California. * * This file is part of NDN repo-ng (Next generation of NDN repository). * See AUTHORS.md for complete list of repo-ng authors and contributors. @@ -22,26 +22,22 @@ #include "storage/sqlite-storage.hpp" -#include +#include namespace repo::tests { class SqliteFixture { public: - SqliteFixture() - : handle(new SqliteStorage("unittestdb")) - { - } - ~SqliteFixture() { - delete handle; - boost::filesystem::remove_all(boost::filesystem::path("unittestdb")); + handle.reset(); + std::error_code ec; + std::filesystem::remove_all(std::filesystem::path("unittestdb"), ec); } public: - SqliteStorage* handle; + std::unique_ptr handle = std::make_unique("unittestdb"); }; } // namespace repo::tests diff --git a/wscript b/wscript index e6a986e..d2c16f6 100644 --- a/wscript +++ b/wscript @@ -39,7 +39,7 @@ def configure(conf): conf.check_sqlite3() - conf.check_boost(lib='filesystem program_options', mt=True) + conf.check_boost(lib='program_options', mt=True) if conf.env.WITH_TESTS: conf.check_boost(lib='unit_test_framework', mt=True, uselib_store='BOOST_TESTS')