diff options
author | Alex Buynytskyy <alexbuy@google.com> | 2021-05-06 16:08:06 -0700 |
---|---|---|
committer | Alex Buynytskyy <alexbuy@google.com> | 2021-05-06 22:41:10 -0700 |
commit | 566de22c055afc72cf5796945645586b6c693995 (patch) | |
tree | 824dc809913cc588daaafc4b96702ace38121fde | |
parent | 216c6f3bd6e510280fbc8e840eecaab51e26d229 (diff) | |
download | incremental_delivery-566de22c055afc72cf5796945645586b6c693995.tar.gz |
Better debug logging.
Bug: 187241618
Test: atest IncrementalInstallTest
Change-Id: If8c6d8aa09f859c0d1019ce3f3096907b449ee07
-rw-r--r-- | incfs/include/incfs.h | 4 | ||||
-rw-r--r-- | incfs/include/path.h (renamed from incfs/path.h) | 39 | ||||
-rw-r--r-- | incfs/path.cpp | 35 | ||||
-rw-r--r-- | libdataloader/Android.bp | 4 | ||||
-rw-r--r-- | libdataloader/DataLoaderConnector.cpp | 23 |
5 files changed, 59 insertions, 46 deletions
diff --git a/incfs/include/incfs.h b/incfs/include/incfs.h index 781a897..76619c2 100644 --- a/incfs/include/incfs.h +++ b/incfs/include/incfs.h @@ -101,9 +101,11 @@ public: IncFsFd pendingReads() const; IncFsFd logs() const; IncFsFd blocksWritten() const; - operator IncFsControl*() const { return mControl; }; + void close(); + operator IncFsControl*() const { return mControl; } + using Fds = std::array<UniqueFd, IncFsFdType::FDS_COUNT>; [[nodiscard]] Fds releaseFds(); diff --git a/incfs/path.h b/incfs/include/path.h index ab1c9bb..325eb1d 100644 --- a/incfs/path.h +++ b/incfs/include/path.h @@ -48,8 +48,43 @@ std::string_view relativize(std::string&& parent, std::string_view nested) = del std::string_view relativize(std::string_view parent, std::string&& nested) = delete; // Note: some system headers #define 'dirname' and 'basename' as macros -std::string_view dirName(std::string_view path); -std::string_view baseName(std::string_view path); + +inline std::string_view baseName(std::string_view path) { + using namespace std::literals; + if (path.empty()) { + return {}; + } + if (path == "/"sv) { + return "/"sv; + } + auto pos = path.rfind('/'); + while (!path.empty() && pos == path.size() - 1) { + path.remove_suffix(1); + pos = path.rfind('/'); + } + if (pos == path.npos) { + return path.empty() ? "/"sv : path; + } + return path.substr(pos + 1); +} + +inline std::string_view dirName(std::string_view path) { + using namespace std::literals; + if (path.empty()) { + return {}; + } + if (path == "/"sv) { + return "/"sv; + } + const auto pos = path.rfind('/'); + if (pos == 0) { + return "/"sv; + } + if (pos == path.npos) { + return "."sv; + } + return path.substr(0, pos); +} // Split the |full| path into its directory and basename components. // This modifies the input string to null-terminate the output directory diff --git a/incfs/path.cpp b/incfs/path.cpp index 502f2fc..f6f87ae 100644 --- a/incfs/path.cpp +++ b/incfs/path.cpp @@ -185,41 +185,6 @@ void details::appendNextPath(std::string& res, std::string_view path) { res += path; } -std::string_view baseName(std::string_view path) { - if (path.empty()) { - return {}; - } - if (path == "/"sv) { - return "/"sv; - } - auto pos = path.rfind('/'); - while (!path.empty() && pos == path.size() - 1) { - path.remove_suffix(1); - pos = path.rfind('/'); - } - if (pos == path.npos) { - return path.empty() ? "/"sv : path; - } - return path.substr(pos + 1); -} - -std::string_view dirName(std::string_view path) { - if (path.empty()) { - return {}; - } - if (path == "/"sv) { - return "/"sv; - } - const auto pos = path.rfind('/'); - if (pos == 0) { - return "/"sv; - } - if (pos == path.npos) { - return "."sv; - } - return path.substr(0, pos); -} - std::pair<std::string_view, std::string_view> splitDirBase(std::string& full) { auto res = std::pair(dirName(full), baseName(full)); if (res.first.data() == full.data()) { diff --git a/libdataloader/Android.bp b/libdataloader/Android.bp index 7bd2696..eb9adf4 100644 --- a/libdataloader/Android.bp +++ b/libdataloader/Android.bp @@ -44,7 +44,9 @@ cc_defaults { "liblog", "libutils", ], - static_libs: ["libnativehelper_lazy"], + static_libs: [ + "libnativehelper_lazy", + ], tidy: true, tidy_checks: [ "android-*", diff --git a/libdataloader/DataLoaderConnector.cpp b/libdataloader/DataLoaderConnector.cpp index 24ec7dc..d58bbb3 100644 --- a/libdataloader/DataLoaderConnector.cpp +++ b/libdataloader/DataLoaderConnector.cpp @@ -30,6 +30,7 @@ #include "ManagedDataLoader.h" #include "dataloader.h" #include "incfs.h" +#include "path.h" namespace { @@ -757,15 +758,23 @@ bool DataLoaderService_OnCreate(JNIEnv* env, jobject service, jint storageId, jo } } auto nativeControl = createIncFsControlFromManaged(env, control); - ALOGI("DataLoader::create1 cmd: %d|%s", nativeControl.cmd(), - pathFromFd(nativeControl.cmd()).c_str()); - ALOGI("DataLoader::create1 pendingReads: %d|%s", nativeControl.pendingReads(), - pathFromFd(nativeControl.pendingReads()).c_str()); - ALOGI("DataLoader::create1 log: %d|%s", nativeControl.logs(), - pathFromFd(nativeControl.logs()).c_str()); + if (nativeControl) { + using namespace android::incfs; + ALOGI("DataLoader::create incremental fds: %d/%d/%d/%d", nativeControl.cmd(), + nativeControl.pendingReads(), nativeControl.logs(), nativeControl.blocksWritten()); + auto cmdPath = pathFromFd(nativeControl.cmd()); + auto dir = path::dirName(cmdPath); + ALOGI("DataLoader::create incremental dir: %s, files: %s/%s/%s/%s", + details::c_str(dir).get(), details::c_str(path::baseName(cmdPath)).get(), + details::c_str(path::baseName(pathFromFd(nativeControl.pendingReads()))).get(), + details::c_str(path::baseName(pathFromFd(nativeControl.logs()))).get(), + details::c_str(path::baseName(pathFromFd(nativeControl.blocksWritten()))).get()); + } else { + ALOGI("DataLoader::create no incremental control"); + } auto nativeParams = DataLoaderParamsPair::createFromManaged(env, params); - ALOGI("DataLoader::create2: %d|%s|%s|%s", nativeParams.dataLoaderParams().type(), + ALOGI("DataLoader::create params: %d|%s|%s|%s", nativeParams.dataLoaderParams().type(), nativeParams.dataLoaderParams().packageName().c_str(), nativeParams.dataLoaderParams().className().c_str(), nativeParams.dataLoaderParams().arguments().c_str()); |