From 17a9c3caebe6bdefebdbd0537dbb5d9dfef932b3 Mon Sep 17 00:00:00 2001 From: igor725 Date: Sun, 8 Feb 2026 23:17:04 +0300 Subject: [PATCH 01/23] Cleanup + update template --- template/CMakeLists.txt | 10 ++++++++-- template/code/main.cpp | 5 +---- template/code/test.cpp | 2 +- tests/code/highfw_test/code/main.cpp | 2 +- tests/code/memory_test/CMakeLists.txt | 6 ++++++ 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/template/CMakeLists.txt b/template/CMakeLists.txt index a96277b..6a86e53 100644 --- a/template/CMakeLists.txt +++ b/template/CMakeLists.txt @@ -7,5 +7,11 @@ set(SRC_FILES code/test.cpp ) -create_pkg("TEMT00350" 3 50 ${SRC_FILES}) -create_pkg("TEMT00550" 5 50 ${SRC_FILES}) +create_pkg(TEMT00350 3 50 ${SRC_FILES}) +set_target_properties(TEMT00350 PROPERTIES OO_PKG_TITLE "PS4 test template for SDK 3.50") +finalize_pkg(TEMT00350) + +create_pkg(TEMT00550 5 50 ${SRC_FILES}) +set_target_properties(TEMT00550 PROPERTIES OO_PKG_TITLE "PS4 test template for SDK 5.50") +set_target_properties(TEMT00550 PROPERTIES OO_PKG_APPVER "1.1") +finalize_pkg(TEMT00550) diff --git a/template/code/main.cpp b/template/code/main.cpp index 27ac98e..715d70a 100644 --- a/template/code/main.cpp +++ b/template/code/main.cpp @@ -1,8 +1,5 @@ -#include "CppUTest/CommandLineTestRunner.h" - -#include +#include #include -#include IMPORT_TEST_GROUP(ClassName); diff --git a/template/code/test.cpp b/template/code/test.cpp index cee62f8..b3f4ae3 100644 --- a/template/code/test.cpp +++ b/template/code/test.cpp @@ -1,4 +1,4 @@ -#include "CppUTest/TestHarness.h" +#include TEST_GROUP (ClassName) { void setup() {} diff --git a/tests/code/highfw_test/code/main.cpp b/tests/code/highfw_test/code/main.cpp index 9a97665..71c61c0 100644 --- a/tests/code/highfw_test/code/main.cpp +++ b/tests/code/highfw_test/code/main.cpp @@ -11,7 +11,7 @@ int main(int ac, char** av) { int32_t user = ORBIS_USER_SERVICE_USER_ID_INVALID; sceUserServiceGetInitialUser(&user); - uint32_t sdk; + uint32_t sdk = ~0u; sceKernelGetCompiledSdkVersion(&sdk); printf("My firmware: %x\nInit user: %d\n", sdk, user); diff --git a/tests/code/memory_test/CMakeLists.txt b/tests/code/memory_test/CMakeLists.txt index 221edf1..94a9dc7 100644 --- a/tests/code/memory_test/CMakeLists.txt +++ b/tests/code/memory_test/CMakeLists.txt @@ -4,15 +4,21 @@ link_libraries(SceSystemService) create_pkg(MEMT00100 1 00 "code/main.cpp;code/test_100.cpp") finalize_pkg(MEMT00100) + create_pkg(MEMT00170 1 70 "code/main.cpp;code/test_170.cpp") finalize_pkg(MEMT00170) + create_pkg(MEMT00200 2 00 "code/main.cpp;code/test_200.cpp") finalize_pkg(MEMT00200) + create_pkg(MEMT00250 2 50 "code/main.cpp;code/test_250.cpp") finalize_pkg(MEMT00250) + create_pkg(MEMT00300 3 00 "code/main.cpp;code/test_300.cpp") finalize_pkg(MEMT00300) + create_pkg(MEMT00350 3 50 "code/main.cpp;code/test_350.cpp") finalize_pkg(MEMT00350) + create_pkg(MEMT00550 5 50 "code/main.cpp;code/test_550.cpp") finalize_pkg(MEMT00550) From de11a576292076aeca16b75e0b5d68ece323bae5 Mon Sep 17 00:00:00 2001 From: igor725 Date: Wed, 11 Feb 2026 14:06:40 +0300 Subject: [PATCH 02/23] Validate pkgs --- OpenOrbis-tc.cmake | 16 ++++++++++++++++ template/CMakeLists.txt | 2 +- tests/CMakeLists.txt | 31 +++++++++++++++---------------- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/OpenOrbis-tc.cmake b/OpenOrbis-tc.cmake index df13d47..8604e11 100644 --- a/OpenOrbis-tc.cmake +++ b/OpenOrbis-tc.cmake @@ -119,6 +119,10 @@ function(OpenOrbisPackage_PostProject pkg_title_id pkg_fw_version_hex) DESTINATION "${install_dir}" OPTIONAL ) + + get_property(list GLOBAL PROPERTY OO_PRJ_LIST) + list(APPEND list "${pkg_title_id}") + set_property(GLOBAL PROPERTY OO_PRJ_LIST "${list}") endfunction() function(OpenOrbisPackage_FinalizeProject pkg_title_id) @@ -202,3 +206,15 @@ function(OpenOrbisPackage_FinalizeProject pkg_title_id) install(CODE "${install_code}") endfunction() + +function(OpenOrbisPackage_Validate) + get_property(list GLOBAL PROPERTY OO_PRJ_LIST) + + foreach(Target ${list}) + get_target_property(IsFinalized ${Target} OO_PKG_FINALIZED) + + if(NOT ${IsFinalized}) + message(FATAL_ERROR "Missing finalize call for ${Target}") + endif() + endforeach() +endfunction() diff --git a/template/CMakeLists.txt b/template/CMakeLists.txt index 6a86e53..101ddd6 100644 --- a/template/CMakeLists.txt +++ b/template/CMakeLists.txt @@ -9,7 +9,7 @@ set(SRC_FILES create_pkg(TEMT00350 3 50 ${SRC_FILES}) set_target_properties(TEMT00350 PROPERTIES OO_PKG_TITLE "PS4 test template for SDK 3.50") -finalize_pkg(TEMT00350) +finalize_pkg(TEMT00350) # This call should be done after EVERY create_pkg call, will cause fatal error otherwise create_pkg(TEMT00550 5 50 ${SRC_FILES}) set_target_properties(TEMT00550 PROPERTIES OO_PKG_TITLE "PS4 test template for SDK 5.50") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3d56778..8750300 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -31,25 +31,24 @@ include(ps4_package.cmake) # # Add all tests set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/code) -MACRO(SUBDIRLIST result resultLibs curdir) - FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) - SET(dirlist) - SET(liblist) +macro(SUBDIRLIST result curdir) + file(GLOB children RELATIVE ${curdir} ${curdir}/*) + set(dirlist) - FOREACH(child ${children}) - IF(IS_DIRECTORY ${curdir}/${child} AND NOT child STREQUAL "template") + foreach(child ${children}) + if(IS_DIRECTORY ${curdir}/${child} AND NOT child STREQUAL "template") LIST(APPEND dirlist ${child}) - LIST(APPEND liblist ${child}) - ENDIF() - ENDFOREACH() + endif() + endforeach() - SET(${result} ${dirlist}) - SET(${resultLibs} ${liblist}) -ENDMACRO() + set(${result} ${dirlist}) +endmacro() -SUBDIRLIST(SUBDIRS SUBDIR_RESULT ${CMAKE_CURRENT_SOURCE_DIR}/code) +SUBDIRLIST(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR}/code) -FOREACH(subdir ${SUBDIRS}) +foreach(subdir ${SUBDIRS}) message(STATUS "Added ${subdir}") - ADD_SUBDIRECTORY(code/${subdir}) -ENDFOREACH() + add_subdirectory(code/${subdir}) +endforeach() + +OpenOrbisPackage_Validate() From f40199a1013909bd5f392db0f74f62bd170ae1c4 Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Wed, 18 Feb 2026 20:25:31 +0100 Subject: [PATCH 03/23] migrated to latest build system, improvements better logs cleanup removed unused files dumping with cursed buffers and offsets --- tests/code/filesystem_dirents/CMakeLists.txt | 8 + tests/code/filesystem_dirents/LICENSE | 674 ++++++++++ .../assets/misc/filewithaverylongname01 | 0 .../assets/misc/filewithaverylongname02 | 0 .../assets/misc/filewithaverylongname03 | 0 .../assets/misc/filewithaverylongname04 | 0 .../assets/misc/filewithaverylongname05 | 0 .../assets/misc/filewithaverylongname06 | 0 .../assets/misc/filewithaverylongname07 | 0 .../assets/misc/filewithaverylongname08 | 0 .../assets/misc/filewithaverylongname09 | 0 .../assets/misc/filewithaverylongname10 | 0 .../assets/misc/filewithaverylongname11 | 0 .../assets/misc/filewithaverylongname12 | 0 .../assets/misc/filewithaverylongname13 | 0 .../assets/misc/filewithaverylongname14 | 0 .../assets/misc/filewithaverylongname15 | 0 .../assets/misc/filewithaverylongname16 | 0 .../assets/misc/filewithaverylongname17 | 0 .../assets/misc/filewithaverylongname18 | 0 .../assets/misc/filewithaverylongname19 | 0 .../assets/misc/filewithaverylongname20 | 0 .../assets/misc/filewithaverylongname21 | 0 .../assets/misc/filewithaverylongname22 | 0 .../assets/misc/filewithaverylongname23 | 0 .../assets/misc/filewithaverylongname24 | 0 .../assets/misc/filewithaverylongname25 | 0 .../assets/misc/filewithaverylongname26 | 0 .../assets/misc/filewithaverylongname27 | 0 .../assets/misc/filewithaverylongname28 | 0 .../assets/misc/filewithaverylongname29 | 0 .../assets/misc/filewithaverylongname30 | 0 .../assets/misc/filewithaverylongname31 | 0 .../assets/misc/filewithaverylongname32 | 0 .../assets/misc/filewithaverylongname33 | 0 .../assets/misc/filewithaverylongname34 | 0 .../assets/misc/filewithaverylongname35 | 0 .../assets/misc/filewithaverylongname36 | 0 .../assets/misc/filewithaverylongname37 | 0 .../assets/misc/filewithaverylongname38 | 0 .../assets/misc/filewithaverylongname39 | 0 .../assets/misc/filewithaverylongname40 | 0 .../assets/misc/filewithaverylongname41 | 0 .../assets/misc/filewithaverylongname42 | 0 .../assets/misc/filewithaverylongname43 | 0 .../assets/misc/filewithaverylongname44 | 0 .../assets/misc/filewithaverylongname45 | 0 .../assets/misc/filewithaverylongname46 | 0 .../assets/misc/filewithaverylongname47 | 0 .../assets/misc/filewithaverylongname48 | 0 .../assets/misc/filewithaverylongname49 | 0 .../assets/misc/filewithaverylongname50 | 0 .../code/filesystem_dirents/code/fs_test.cpp | 339 +++++ tests/code/filesystem_dirents/code/fs_test.h | 92 ++ .../filesystem_dirents/code/fs_test_tools.cpp | 501 ++++++++ tests/code/filesystem_dirents/code/log.cpp | 57 + tests/code/filesystem_dirents/code/log.h | 60 + tests/code/filesystem_dirents/code/main.cpp | 25 + tests/code/filesystem_dirents/dumps/.gitkeep | 0 tests/code/filesystem_dirents/log_01.05.log | 0 .../code/filesystem_dirents/sce_sys/icon0.png | Bin 0 -> 86218 bytes .../code/filesystem_speed_test/CMakeLists.txt | 8 + tests/code/filesystem_speed_test/LICENSE | 674 ++++++++++ tests/code/filesystem_speed_test/README.md | 11 + .../assets/misc/big_directory/.gitkeep | 0 .../filesystem_speed_test/code/fs_test.cpp | 120 ++ .../code/filesystem_speed_test/code/fs_test.h | 61 + .../code/fs_test_tools.cpp | 101 ++ tests/code/filesystem_speed_test/code/log.cpp | 62 + tests/code/filesystem_speed_test/code/log.h | 61 + .../code/filesystem_speed_test/code/main.cpp | 25 + .../filesystem_speed_test/sce_sys/icon0.png | Bin 0 -> 251527 bytes tests/code/filesystem_test/01.31.log | 907 +++++++++++++ tests/code/filesystem_test/CMakeLists.txt | 8 + tests/code/filesystem_test/LICENSE | 674 ++++++++++ tests/code/filesystem_test/README.md | 11 + .../assets/misc/cAsEinSEnsITiVE.HwDp | 0 .../code/filesystem_test/assets/misc/file.txt | 3 + .../assets/misc/file_empty.txt | 0 .../code/filesystem_test/code/fs_constants.h | 322 +++++ tests/code/filesystem_test/code/fs_test.cpp | 1139 +++++++++++++++++ tests/code/filesystem_test/code/fs_test.h | 81 ++ .../filesystem_test/code/fs_test_tools.cpp | 520 ++++++++ tests/code/filesystem_test/code/log.cpp | 62 + tests/code/filesystem_test/code/log.h | 61 + tests/code/filesystem_test/code/main.cpp | 25 + tests/code/filesystem_test/sce_sys/icon0.png | Bin 0 -> 251527 bytes 87 files changed, 6692 insertions(+) create mode 100644 tests/code/filesystem_dirents/CMakeLists.txt create mode 100644 tests/code/filesystem_dirents/LICENSE create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname01 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname02 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname03 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname04 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname05 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname06 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname07 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname08 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname09 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname10 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname11 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname12 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname13 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname14 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname15 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname16 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname17 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname18 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname19 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname20 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname21 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname22 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname23 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname24 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname25 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname26 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname27 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname28 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname29 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname30 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname31 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname32 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname33 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname34 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname35 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname36 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname37 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname38 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname39 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname40 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname41 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname42 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname43 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname44 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname45 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname46 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname47 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname48 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname49 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithaverylongname50 create mode 100644 tests/code/filesystem_dirents/code/fs_test.cpp create mode 100644 tests/code/filesystem_dirents/code/fs_test.h create mode 100644 tests/code/filesystem_dirents/code/fs_test_tools.cpp create mode 100644 tests/code/filesystem_dirents/code/log.cpp create mode 100644 tests/code/filesystem_dirents/code/log.h create mode 100644 tests/code/filesystem_dirents/code/main.cpp create mode 100644 tests/code/filesystem_dirents/dumps/.gitkeep create mode 100644 tests/code/filesystem_dirents/log_01.05.log create mode 100644 tests/code/filesystem_dirents/sce_sys/icon0.png create mode 100644 tests/code/filesystem_speed_test/CMakeLists.txt create mode 100644 tests/code/filesystem_speed_test/LICENSE create mode 100644 tests/code/filesystem_speed_test/README.md create mode 100644 tests/code/filesystem_speed_test/assets/misc/big_directory/.gitkeep create mode 100644 tests/code/filesystem_speed_test/code/fs_test.cpp create mode 100644 tests/code/filesystem_speed_test/code/fs_test.h create mode 100644 tests/code/filesystem_speed_test/code/fs_test_tools.cpp create mode 100644 tests/code/filesystem_speed_test/code/log.cpp create mode 100644 tests/code/filesystem_speed_test/code/log.h create mode 100644 tests/code/filesystem_speed_test/code/main.cpp create mode 100644 tests/code/filesystem_speed_test/sce_sys/icon0.png create mode 100644 tests/code/filesystem_test/01.31.log create mode 100644 tests/code/filesystem_test/CMakeLists.txt create mode 100644 tests/code/filesystem_test/LICENSE create mode 100644 tests/code/filesystem_test/README.md create mode 100644 tests/code/filesystem_test/assets/misc/cAsEinSEnsITiVE.HwDp create mode 100644 tests/code/filesystem_test/assets/misc/file.txt create mode 100644 tests/code/filesystem_test/assets/misc/file_empty.txt create mode 100644 tests/code/filesystem_test/code/fs_constants.h create mode 100644 tests/code/filesystem_test/code/fs_test.cpp create mode 100644 tests/code/filesystem_test/code/fs_test.h create mode 100644 tests/code/filesystem_test/code/fs_test_tools.cpp create mode 100644 tests/code/filesystem_test/code/log.cpp create mode 100644 tests/code/filesystem_test/code/log.h create mode 100644 tests/code/filesystem_test/code/main.cpp create mode 100644 tests/code/filesystem_test/sce_sys/icon0.png diff --git a/tests/code/filesystem_dirents/CMakeLists.txt b/tests/code/filesystem_dirents/CMakeLists.txt new file mode 100644 index 0000000..3e29653 --- /dev/null +++ b/tests/code/filesystem_dirents/CMakeLists.txt @@ -0,0 +1,8 @@ +project(Enderman VERSION 0.0.1) + +link_libraries(SceSystemService) + +create_pkg(TEST12345 11 00 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") +set_target_properties(TEST12345 PROPERTIES OO_PKG_TITLE "Enderman") +set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.05") +finalize_pkg(TEST12345) diff --git a/tests/code/filesystem_dirents/LICENSE b/tests/code/filesystem_dirents/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/tests/code/filesystem_dirents/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname01 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname01 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname02 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname02 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname03 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname03 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname04 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname04 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname05 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname05 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname06 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname06 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname07 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname07 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname08 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname08 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname09 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname09 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname10 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname10 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname11 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname11 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname12 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname12 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname13 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname13 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname14 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname14 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname15 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname15 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname16 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname16 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname17 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname17 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname18 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname18 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname19 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname19 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname20 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname20 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname21 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname21 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname22 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname22 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname23 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname23 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname24 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname24 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname25 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname25 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname26 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname26 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname27 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname27 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname28 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname28 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname29 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname29 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname30 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname30 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname31 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname31 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname32 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname32 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname33 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname33 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname34 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname34 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname35 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname35 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname36 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname36 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname37 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname37 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname38 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname38 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname39 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname39 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname40 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname40 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname41 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname41 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname42 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname42 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname43 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname43 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname44 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname44 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname45 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname45 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname46 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname46 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname47 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname47 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname48 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname48 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname49 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname49 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithaverylongname50 b/tests/code/filesystem_dirents/assets/misc/filewithaverylongname50 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp new file mode 100644 index 0000000..e112b66 --- /dev/null +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -0,0 +1,339 @@ +#include "fs_test.h" + +#include "orbis/UserService.h" + +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; + +namespace FS_Test { +namespace oi = OrbisInternals; + +void Drop(char* buffer, size_t size) { + std::stringstream out; + for (int b = 1; b <= size; b++) { + out << std::setw(2) << std::hex << (0xFF & static_cast(buffer[b - 1])) << " "; + if ((b % 64) == 0) { + out.flush(); + Log(out.str()); + std::stringstream().swap(out); + } + } + Log(out.str(), "\n"); +} + +bool DropRead(int dir_fd, int dump_fd, char* buffer, size_t size) { + memset(buffer, 0xAA, size); + + s64 tbr = sceKernelRead(dir_fd, buffer, size); + Log("Read got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1)); + + if (tbr < 0) { + LogError("Read finished with error:", tbr); + return false; + } + if (tbr == 0) { + LogSuccess("Read finished"); + return false; + } + + s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); + if (tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes read"); + return true; +} + +bool DropDirents(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) { + memset(buffer, 0xAA, size); + + s64 tbr = sceKernelGetdirentries(dir_fd, buffer, size, idx); + Log("Dirent got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1), "idx =", *idx); + + if (tbr < 0) { + LogError("Dirent finished with error:", tbr); + return false; + } + if (tbr == 0) { + LogSuccess("Dirent finished"); + return false; + } + + s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); + if (tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes read"); + return true; +} + +void DumpDirents(int fd, int buffer_size, s64 offset, bool is_pfs = false) { + char* buffer = new char[buffer_size] {0}; + + fs::path read_path = + "/data/enderman/dumps/read_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; + fs::path dirent_path = + "/data/enderman/dumps/dirent_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; + + int read_fd = sceKernelOpen(read_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); + int dirent_fd = sceKernelOpen(dirent_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); + + LogTest("Read", is_pfs ? "PFS" : "normal", "directory, fd =", fd, "size =", buffer_size, "offset =", offset); + u16 max_loops = 0; // 65536 iterations lmao + if (int _tmp = sceKernelLseek(fd, offset, 0); _tmp < 0) LogError("Lseek failed:", _tmp); + while (--max_loops && DropRead(fd, read_fd, buffer, buffer_size)) + ; + if (0 == max_loops) LogError("Aborted"); + + s64 idx = 0; + max_loops = 0; + if (int _tmp = sceKernelLseek(fd, offset, 0); _tmp < 0) LogError("Lseek failed:", _tmp); + while (--max_loops && DropDirents(fd, dirent_fd, buffer, buffer_size, &idx)) + ; + if (0 == max_loops) LogError("Aborted"); + + sceKernelClose(read_fd); + sceKernelClose(dirent_fd); +} + +void RunTests() { + RegenerateDir("/data/enderman"); + sceKernelMkdir("/data/enderman/dumps", 0777); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname01", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname02", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname03", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname04", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname05", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname06", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname07", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname08", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname09", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname10", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname11", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname12", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname13", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname14", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname15", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname16", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname17", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname18", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname19", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname10", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname21", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname22", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname23", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname24", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname25", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname26", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname27", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname28", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname29", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname30", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname31", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname32", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname33", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname34", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname35", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname36", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname37", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname38", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname39", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname40", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname41", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname42", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname43", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname44", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname45", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname46", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname47", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname48", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname49", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname50", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + + Log("---------------------"); + Log("Dump normal directory"); + Log("---------------------"); + + int fd = sceKernelOpen("/data/enderman", O_DIRECTORY | O_RDONLY, 0777); + Log("Directory opened with fd=", fd); + + Log("LSeek START+0=", sceKernelLseek(fd, 0, 0)); + Log("LSeek START-123=", sceKernelLseek(fd, -123, 0)); + Log("LSeek START+123456=", sceKernelLseek(fd, 123456, 0)); + Log("LSeek START+60=", sceKernelLseek(fd, 60, 0)); + Log("LSeek CUR+0=", sceKernelLseek(fd, 0, 1)); + Log("LSeek CUR+24=", sceKernelLseek(fd, 24, 1)); + Log("LSeek CUR-24=", sceKernelLseek(fd, -24, 1)); + Log("LSeek CUR-6666=", sceKernelLseek(fd, -6666, 1)); + Log("LSeek CUR+123456=", sceKernelLseek(fd, 123456, 1)); + Log("LSeek END+0=", sceKernelLseek(fd, 0, 2)); + Log("LSeek END+123456=", sceKernelLseek(fd, 123456, 2)); + Log("LSeek END+100=", sceKernelLseek(fd, 100, 2)); + Log("LSeek END-100=", sceKernelLseek(fd, -100, 2)); + Log("LSeek END-100000=", sceKernelLseek(fd, -100000, 2)); + + DumpDirents(fd, 16, 0); + DumpDirents(fd, 16, 7); + DumpDirents(fd, 16, 47); + DumpDirents(fd, 16, 123); + DumpDirents(fd, 16, 128); + DumpDirents(fd, 23, 0); + DumpDirents(fd, 23, 7); + DumpDirents(fd, 23, 47); + DumpDirents(fd, 23, 123); + DumpDirents(fd, 23, 128); + DumpDirents(fd, 64, 0); + DumpDirents(fd, 64, 7); + DumpDirents(fd, 64, 47); + DumpDirents(fd, 64, 123); + DumpDirents(fd, 64, 128); + DumpDirents(fd, 123, 0); + DumpDirents(fd, 123, 7); + DumpDirents(fd, 123, 47); + DumpDirents(fd, 123, 123); + DumpDirents(fd, 123, 128); + DumpDirents(fd, 128, 0); + DumpDirents(fd, 128, 7); + DumpDirents(fd, 128, 47); + DumpDirents(fd, 128, 123); + DumpDirents(fd, 128, 128); + DumpDirents(fd, 199, 0); + DumpDirents(fd, 199, 7); + DumpDirents(fd, 199, 47); + DumpDirents(fd, 199, 123); + DumpDirents(fd, 199, 128); + DumpDirents(fd, 256, 0); + DumpDirents(fd, 256, 7); + DumpDirents(fd, 256, 47); + DumpDirents(fd, 256, 123); + DumpDirents(fd, 256, 128); + DumpDirents(fd, 512, 0); + DumpDirents(fd, 512, 7); + DumpDirents(fd, 512, 47); + DumpDirents(fd, 512, 123); + DumpDirents(fd, 512, 128); + DumpDirents(fd, 567, 0); + DumpDirents(fd, 567, 7); + DumpDirents(fd, 567, 47); + DumpDirents(fd, 567, 123); + DumpDirents(fd, 567, 128); + DumpDirents(fd, 999, 0); + DumpDirents(fd, 999, 7); + DumpDirents(fd, 999, 47); + DumpDirents(fd, 999, 123); + DumpDirents(fd, 999, 128); + DumpDirents(fd, 1024, 0); + DumpDirents(fd, 1024, 7); + DumpDirents(fd, 1024, 47); + DumpDirents(fd, 1024, 123); + DumpDirents(fd, 1024, 128); + DumpDirents(fd, 1555, 0); + DumpDirents(fd, 1555, 7); + DumpDirents(fd, 1555, 47); + DumpDirents(fd, 1555, 123); + DumpDirents(fd, 1555, 128); + DumpDirents(fd, 2048, 0); + DumpDirents(fd, 2048, 7); + DumpDirents(fd, 2048, 47); + DumpDirents(fd, 2048, 123); + DumpDirents(fd, 2048, 128); + DumpDirents(fd, 2123, 0); + DumpDirents(fd, 2123, 7); + DumpDirents(fd, 2123, 47); + DumpDirents(fd, 2123, 123); + DumpDirents(fd, 2123, 128); + + sceKernelClose(fd); + + Log("------------------"); + Log("Dump PFS directory"); + Log("------------------"); + fd = sceKernelOpen("/app0/assets/misc", O_DIRECTORY | O_RDONLY, 0777); + + Log("Directory opened with fd=", fd); + + Log("LSeek START+0=", sceKernelLseek(fd, 0, 0)); + Log("LSeek START-123=", sceKernelLseek(fd, -123, 0)); + Log("LSeek START+123456=", sceKernelLseek(fd, 123456, 0)); + Log("LSeek START+60=", sceKernelLseek(fd, 60, 0)); + Log("LSeek CUR+0=", sceKernelLseek(fd, 0, 1)); + Log("LSeek CUR+24=", sceKernelLseek(fd, 24, 1)); + Log("LSeek CUR-24=", sceKernelLseek(fd, -24, 1)); + Log("LSeek CUR-6666=", sceKernelLseek(fd, -6666, 1)); + Log("LSeek CUR+123456=", sceKernelLseek(fd, 123456, 1)); + Log("LSeek END+0=", sceKernelLseek(fd, 0, 2)); + Log("LSeek END+123456=", sceKernelLseek(fd, 123456, 2)); + Log("LSeek END+100=", sceKernelLseek(fd, 100, 2)); + Log("LSeek END-100=", sceKernelLseek(fd, -100, 2)); + Log("LSeek END-100000=", sceKernelLseek(fd, -100000, 2)); + + DumpDirents(fd, 16, 0, true); + DumpDirents(fd, 16, 7, true); + DumpDirents(fd, 16, 47, true); + DumpDirents(fd, 16, 123, true); + DumpDirents(fd, 16, 128, true); + DumpDirents(fd, 23, 0, true); + DumpDirents(fd, 23, 7, true); + DumpDirents(fd, 23, 47, true); + DumpDirents(fd, 23, 123, true); + DumpDirents(fd, 23, 128, true); + DumpDirents(fd, 64, 0, true); + DumpDirents(fd, 64, 7, true); + DumpDirents(fd, 64, 47, true); + DumpDirents(fd, 64, 123, true); + DumpDirents(fd, 64, 128, true); + DumpDirents(fd, 123, 0, true); + DumpDirents(fd, 123, 7, true); + DumpDirents(fd, 123, 47, true); + DumpDirents(fd, 123, 123, true); + DumpDirents(fd, 123, 128, true); + DumpDirents(fd, 128, 0, true); + DumpDirents(fd, 128, 7, true); + DumpDirents(fd, 128, 47, true); + DumpDirents(fd, 128, 123, true); + DumpDirents(fd, 128, 128, true); + DumpDirents(fd, 199, 0, true); + DumpDirents(fd, 199, 7, true); + DumpDirents(fd, 199, 47, true); + DumpDirents(fd, 199, 123, true); + DumpDirents(fd, 199, 128, true); + DumpDirents(fd, 256, 0, true); + DumpDirents(fd, 256, 7, true); + DumpDirents(fd, 256, 47, true); + DumpDirents(fd, 256, 123, true); + DumpDirents(fd, 256, 128, true); + DumpDirents(fd, 512, 0, true); + DumpDirents(fd, 512, 7, true); + DumpDirents(fd, 512, 47, true); + DumpDirents(fd, 512, 123, true); + DumpDirents(fd, 512, 128, true); + DumpDirents(fd, 567, 0, true); + DumpDirents(fd, 567, 7, true); + DumpDirents(fd, 567, 47, true); + DumpDirents(fd, 567, 123, true); + DumpDirents(fd, 567, 128, true); + DumpDirents(fd, 999, 0, true); + DumpDirents(fd, 999, 7, true); + DumpDirents(fd, 999, 47, true); + DumpDirents(fd, 999, 123, true); + DumpDirents(fd, 999, 128, true); + DumpDirents(fd, 1024, 0, true); + DumpDirents(fd, 1024, 7, true); + DumpDirents(fd, 1024, 47, true); + DumpDirents(fd, 1024, 123, true); + DumpDirents(fd, 1024, 128, true); + DumpDirents(fd, 65536, 0, true); + DumpDirents(fd, 65536, 7, true); + DumpDirents(fd, 65536, 47, true); + DumpDirents(fd, 65536, 123, true); + DumpDirents(fd, 65536, 128, true); + + sceKernelClose(fd); +} + +bool RegenerateDir(const char* path) { + Obliterate(path); + sceKernelMkdir(path, 0777); + return true; +} + +} // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_dirents/code/fs_test.h b/tests/code/filesystem_dirents/code/fs_test.h new file mode 100644 index 0000000..58a56f7 --- /dev/null +++ b/tests/code/filesystem_dirents/code/fs_test.h @@ -0,0 +1,92 @@ +#ifndef FS_TEST_H +#define FS_TEST_H + +#include "log.h" + +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; + +namespace FS_Test { +#define DIRENT_BUFFER_SIZE 512 + +using s8 = int8_t; +using s16 = int16_t; +using s32 = int32_t; +using s64 = int64_t; + +using u8 = uint8_t; +using u16 = uint16_t; +using u32 = uint32_t; +using u64 = uint64_t; + +namespace OrbisInternals { +enum class OpenFlags : s32 { + ReadOnly = 0x0, + WriteOnly = 0x1, + ReadWrite = 0x2, + NonBlock = 0x4, + Append = 0x8, + Fsync = 0x80, + Sync = 0x80, + Create = 0x200, + Truncate = 0x400, + Excl = 0x800, + Dsync = 0x1000, + Direct = 0x10000, + Directory = 0x20000, +}; + +enum class SeekWhence : s32 { + SeekSet = 0, + SeekCur = 1, + SeekEnd = 2, + // The following two are unsupported on Orbis, with unique error behavior when used. + SeekHole = 3, + SeekData = 4, +}; + +typedef struct PfsDirent { + s32 d_fileno; + s32 d_type; + s32 d_namlen; + s32 d_reclen; + char d_name[256]; +} PfsDirent; + +typedef struct FolderDirent { + u32 d_fileno; + u16 d_reclen; + u8 d_type; + u8 d_namlen; + char d_name[256]; +} FolderDirent; +} // namespace OrbisInternals + +void RunTests(void); + +bool RegenerateDir(const char* path); + +bool StatCmp(const OrbisKernelStat* lhs, const OrbisKernelStat* rhs); + +u16 dumpDirRecursive(fs::path path, int depth = 0); +u16 dumpDir(int fd); + +void PrintStatInfo(const struct stat* info); +void PrintStatInfo(const OrbisKernelStat* info); +s8 GetDir(fs::path path, fs::path leaf, OrbisInternals::FolderDirent* dirent); +s8 GetDir(fs::path path, fs::path leaf, OrbisInternals::PfsDirent* dirent); + +std::string file_mode(OrbisKernelMode mode); +void Obliterate(const char* path); +void ElEsDashElAy(const char* path); +int32_t touch(const char* path); +off_t GetSize(const char* path); +off_t GetSize(int fd); + +} // namespace FS_Test +#endif // FS_TEST_H diff --git a/tests/code/filesystem_dirents/code/fs_test_tools.cpp b/tests/code/filesystem_dirents/code/fs_test_tools.cpp new file mode 100644 index 0000000..1f3cd64 --- /dev/null +++ b/tests/code/filesystem_dirents/code/fs_test_tools.cpp @@ -0,0 +1,501 @@ +#include "fs_test.h" + +#include +#include +#include +#include +#include + +namespace FS_Test { +namespace oi = OrbisInternals; + +off_t GetSize(int fd) { + OrbisKernelStat st; + if (int status = sceKernelFstat(fd, &st); status < 0) return status; + return st.st_size; +} + +off_t GetSize(const char* path) { + OrbisKernelStat st; + if (int status = sceKernelStat(path, &st); status < 0) return status; + return st.st_size; +} + +int32_t touch(const char* path) { + return sceKernelClose(sceKernelOpen(path, 0x1 | 0x200 | 0x400, 0777)); +} + +void Obliterate(const char* path) { + Log("<< rm -rf [", path, "] >>"); + std::error_code ec {}; + + std::vector entries; + for (auto& p: fs::recursive_directory_iterator(path, fs::directory_options::skip_permission_denied, ec)) + entries.push_back(p.path().string()); + + for (auto it = entries.rbegin(); it != entries.rend(); ++it) { + if (ec) { + LogError("Exception: [", ec.value(), "] :", ec.message()); + ec.clear(); + continue; + } + + const char* pp = it->c_str(); + + // see what sticks + errno = 0; + if (0 == sceKernelUnlink(pp)) continue; + errno = 0; + if (0 == sceKernelRmdir(pp)) continue; + LogError("Cannot remove [", pp, "] ( errno =", errno, ")"); + } + if (0 != sceKernelRmdir(path)) LogError("Cannot remove [", path, "] ( errno =", errno, ")"); + + LogSuccess(">> rm -rf [", path, "] <<"); + return; +} + +void ElEsDashElAy(const char* path) { + Log("<< ls -la [", path, "] >>"); + std::error_code ec {}; + + for (const auto& entry: fs::directory_iterator(path, ec)) { + struct OrbisKernelStat st {}; + std::string pathstr = entry.path().string(); + int fd = 0; + + if (fd = sceKernelOpen(entry.path().c_str(), 0x0, 0777); fd < 0) { + LogError("Cannot open ", entry.path()); + continue; + } + if (sceKernelFstat(fd, &st) == -1) { + LogError("Cannot stat ", entry.path()); + continue; + } + + char timebuf[64]; + std::tm* t = std::localtime(&st.st_mtime); + std::strftime(timebuf, sizeof(timebuf), "%EY-%m-%d %H:%M", t); + + Log(file_mode(st.st_mode), right('0' + to_octal(st.st_mode), 8), std::dec, right(STR(st.st_nlink), 3), st.st_uid, ":", st.st_gid, right(STR(st.st_size), 8), + timebuf, pathstr); + + // uncomment for hex dump + // std::cout << "\t\t"; + // for (auto q = 0; q < sizeof(st); ++q) + // { + // std::cout << " " << std::setw(2) << std::setfill('0') << std::hex << static_cast((reinterpret_cast(&st)[q])); + // if ((q + 1) % 32 == 0) + // std::cout << std::endl + // << "\t\t"; + // } + // std::cout << std::endl; + + if (sceKernelClose(fd) < 0) LogError("Can't close [", path, "]"); + } + + LogSuccess(">> ls -la [", path, "] <<"); + return; +} + +std::string file_mode(OrbisKernelMode mode) { + std::string s; + + if (S_ISREG(mode)) + s += '-'; + else if (S_ISDIR(mode)) + s += 'd'; + else if (S_ISLNK(mode)) + s += 'l'; + else if (S_ISCHR(mode)) + s += 'c'; + else if (S_ISBLK(mode)) + s += 'b'; + else if (S_ISFIFO(mode)) + s += 'p'; + else if (S_ISSOCK(mode)) + s += 's'; + else + s += '?'; + + // owner + s += (mode & S_IRUSR) ? 'r' : '-'; + s += (mode & S_IWUSR) ? 'w' : '-'; + s += (mode & S_IXUSR) ? 'x' : '-'; + + // group + s += (mode & S_IRGRP) ? 'r' : '-'; + s += (mode & S_IWGRP) ? 'w' : '-'; + s += (mode & S_IXGRP) ? 'x' : '-'; + + // other + s += (mode & S_IROTH) ? 'r' : '-'; + s += (mode & S_IWOTH) ? 'w' : '-'; + s += (mode & S_IXOTH) ? 'x' : '-'; + + return s; +} + +u16 dumpDirRecursive(fs::path path, int depth) { + if (0 == depth) { + Log("Listing dirents of [", path.string(), "]"); + } + + std::string depEnt = "|--"; + for (u8 q = 0; q < depth; q++) { + depEnt = depEnt + "|--"; + } + depEnt[depEnt.length() - 1] = '>'; + + // Log(depDir.c_str(), path_str.c_str()); + + s32 fd = sceKernelOpen(path.c_str(), 0, 511); + if (fd < 0) { + Log("\t\t\t\t", depEnt.c_str(), "//NO ACCESS//"); + return 0; + } + + char* buf = new char[DIRENT_BUFFER_SIZE]; + char* bufptr = buf; + s64 idx = 0; + s64 read_bytes; + + read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); + if (read_bytes <= 0) Log("\t\t\t\t", depEnt.c_str(), "//FAILED//"); + + u16 last_reclen = 0; + + while (read_bytes > 0) { + bufptr = buf; + char* endptr = buf + read_bytes; + while (bufptr < endptr) { + oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; + bufptr += static_cast(entry->d_reclen); + if (entry->d_reclen == 0) { + Log("\t\t\t\t", depEnt.c_str(), "//BAD RECLEN//"); + break; + } + + std::string ftype {}; + switch (entry->d_type) { + default: ftype = std::to_string(entry->d_type); break; + case 2: ftype = "DEV"; break; + case 4: ftype = "DIR"; break; + case 8: ftype = "FIL"; break; + case 10: ftype = "LNK"; break; + case 12: ftype = "SOC"; break; + } + + std::string tree = depEnt + std::string(entry->d_name); + + Log("[", center(ftype, 3), "][", right(STR(entry->d_fileno), 10), "][", right(STR(entry->d_namlen), 3), "][", right(STR(entry->d_reclen), 3), "]", tree); + + last_reclen = entry->d_reclen; + + if (ftype != "DIR") continue; + // preserved: parent and child may percieve each other differently + if (strncmp(".", entry->d_name, 1) == 0) continue; + if (strncmp("..", entry->d_name, 2) == 0) continue; + + std::string child(entry->d_name); + dumpDirRecursive(path / child, depth + 1); + } + // move unread data to the beginning of the buffer + s64 diff = endptr - bufptr; + // shouldn't, but shit happens + if (diff < 0) { + Log("XDXDXDXDXDXDXDXDXDXD ", diff); + diff = 0; + } + // memmove(buf, bufptr, diff); + // read into after saved remainder + // read_bytes = sceKernelGetdirentries(fd, buf + diff, DIRENT_BUFFER_SIZE - diff, &idx) + diff; + read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); + } + + sceKernelClose(fd); + delete[] buf; + + if (0 == depth) { + LogSuccess("Listing dirents of [", path.string(), "]"); + } + return last_reclen; +} + +u16 dumpDir(int fd) { + std::string depEnt = "|->"; + + char* buf = new char[DIRENT_BUFFER_SIZE]; + char* bufptr = buf; + s64 idx = 0; + s64 read_bytes; + + read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); + if (read_bytes <= 0) Log("\t\t\t\t", depEnt.c_str(), "//FAILED//"); + + u16 last_reclen = 0; + + while (read_bytes > 0) { + bufptr = buf; + char* endptr = buf + read_bytes; + while (bufptr < endptr) { + oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; + bufptr += static_cast(entry->d_reclen); + if (entry->d_reclen == 0) { + Log("\t\t\t\t", depEnt.c_str(), "//BAD RECLEN//"); + break; + } + + std::string ftype {}; + switch (entry->d_type) { + default: ftype = std::to_string(entry->d_type); break; + case 2: ftype = "DEV"; break; + case 4: ftype = "DIR"; break; + case 8: ftype = "FIL"; break; + case 10: ftype = "LNK"; break; + case 12: ftype = "SOC"; break; + } + + std::string tree = depEnt + std::string(entry->d_name); + + Log("[", center(ftype, 3), "][", right(STR(entry->d_fileno), 10), "][", right(STR(entry->d_namlen), 3), "][", right(STR(entry->d_reclen), 3), "]", tree); + + last_reclen = entry->d_reclen; + + if (ftype != "DIR") continue; + // preserved: parent and child may percieve each other differently + if (strncmp(".", entry->d_name, 1) == 0) continue; + if (strncmp("..", entry->d_name, 2) == 0) continue; + } + // move unread data to the beginning of the buffer + s64 diff = endptr - bufptr; + // shouldn't, but shit happens + if (diff < 0) { + Log("XDXDXDXDXDXDXDXDXDXD ", diff); + diff = 0; + } + memmove(buf, bufptr, diff); + // read into after saved remainder + read_bytes = sceKernelGetdirentries(fd, buf + diff, DIRENT_BUFFER_SIZE - diff, &idx) + diff; + } + + delete[] buf; + + return last_reclen; +} + +void PrintStatInfo(const struct stat* info) { + Log("stat", "info.st_dev =", info->st_dev); + Log("stat", "info.st_ino =", info->st_ino); + Log("stat", "info.st_mode =", "0" + to_octal(info->st_mode)); + Log("stat", "info.st_nlink =", info->st_nlink); + Log("stat", "info.st_uid =", info->st_uid); + Log("stat", "info.st_gid =", info->st_gid); + Log("stat", "info.st_rdev =", info->st_rdev); + Log("stat", "info.st_atim.tv_sec =", info->st_atim.tv_sec); + Log("stat", "info.st_atim.tv_nsec =", info->st_atim.tv_nsec); + Log("stat", "info.st_mtim.tv_sec =", info->st_mtim.tv_sec); + Log("stat", "info.st_mtim.tv_nsec =", info->st_mtim.tv_nsec); + Log("stat", "info.st_ctim.tv_sec =", info->st_ctim.tv_sec); + Log("stat", "info.st_ctim.tv_nsec =", info->st_ctim.tv_nsec); + Log("stat", "info.st_size = ", info->st_size); + Log("stat", "info.st_blocks =", info->st_blocks); + Log("stat", "info.st_blksize =", info->st_blksize); + Log("stat", "info.st_flags =", info->st_flags); + Log("stat", "info.st_gen =", info->st_gen); + Log("stat", "info.st_birthtim.tv_sec =", info->st_birthtim.tv_sec); + Log("stat", "info.st_birthtim.tv_nsec =", info->st_birthtim.tv_nsec); +} + +void PrintStatInfo(const OrbisKernelStat* info) { + Log("stat", "info.st_dev =", info->st_dev); + Log("stat", "info.st_ino =", info->st_ino); + Log("stat", "info.st_mode =", "0" + to_octal(info->st_mode)); + Log("stat", "info.st_nlink =", info->st_nlink); + Log("stat", "info.st_uid =", info->st_uid); + Log("stat", "info.st_gid =", info->st_gid); + Log("stat", "info.st_rdev =", info->st_rdev); + Log("stat", "info.st_atim.tv_sec =", info->st_atim.tv_sec); + Log("stat", "info.st_atim.tv_nsec =", info->st_atim.tv_nsec); + Log("stat", "info.st_mtim.tv_sec =", info->st_mtim.tv_sec); + Log("stat", "info.st_mtim.tv_nsec =", info->st_mtim.tv_nsec); + Log("stat", "info.st_ctim.tv_sec =", info->st_ctim.tv_sec); + Log("stat", "info.st_ctim.tv_nsec =", info->st_ctim.tv_nsec); + Log("stat", "info.st_size = ", info->st_size); + Log("stat", "info.st_blocks =", info->st_blocks); + Log("stat", "info.st_blksize =", info->st_blksize); + Log("stat", "info.st_flags =", info->st_flags); + Log("stat", "info.st_gen =", info->st_gen); + Log("stat", "info.st_lspare =", info->st_lspare); + Log("stat", "info.st_birthtim.tv_sec =", info->st_birthtim.tv_sec); + Log("stat", "info.st_birthtim.tv_nsec =", info->st_birthtim.tv_nsec); +} + +bool StatCmp(const OrbisKernelStat* lhs, const OrbisKernelStat* rhs) { + bool was_error = false; + was_error |= lhs->st_mode != rhs->st_mode; + was_error |= lhs->st_nlink != rhs->st_nlink; + was_error |= lhs->st_uid != rhs->st_uid; + was_error |= lhs->st_gid != rhs->st_gid; + was_error |= lhs->st_size != rhs->st_size; + was_error |= lhs->st_blocks != rhs->st_blocks; + was_error |= lhs->st_blksize != rhs->st_blksize; + was_error |= lhs->st_flags != rhs->st_flags; + + if (!was_error) return true; + + Log("---- OrbisKernelStat comparsion ----"); + Log("st_mode \tLHS = ", right("0" + to_octal(lhs->st_mode), 7), "\t|\tRHS = ", right("0" + to_octal(rhs->st_mode), 7)); + // nlink can differ between localizations, constant in RO locations + Log("st_nlink \tLHS = ", right(STR(lhs->st_nlink), 7), "\t|\tRHS = ", right(STR(rhs->st_nlink), 7)); + Log("st_uid \tLHS = ", right(STR(lhs->st_uid), 7), "\t|\tRHS = ", right(STR(rhs->st_uid), 7)); + Log("st_gid \tLHS = ", right(STR(lhs->st_gid), 7), "\t|\tRHS = ", right(STR(rhs->st_gid), 7)); + Log("st_size \tLHS = ", right(STR(lhs->st_size), 7), "\t|\tRHS = ", right(STR(rhs->st_size), 7)); + Log("st_blocks \tLHS = ", right(STR(lhs->st_blocks), 7), "\t|\tRHS = ", right(STR(rhs->st_blocks), 7)); + Log("st_blksize\tLHS = ", right(STR(lhs->st_blksize), 7), "\t|\tRHS = ", right(STR(rhs->st_blksize), 7)); + Log("st_flags \tLHS = ", right(STR(lhs->st_flags), 7), "\t|\tRHS = ", right(STR(rhs->st_flags), 7)); + return false; +} + +s8 GetDir(fs::path path, fs::path leaf, oi::PfsDirent* dirent) { + const char* target_file_name = leaf.c_str(); + const u16 target_file_name_length = leaf.string().size(); + char buffer[DIRENT_BUFFER_SIZE]; + char* bufptr; + char* bufend; + u64 total_read {0}; + s64 diff; + bool found {false}; + + int fd = sceKernelOpen(path.c_str(), 0, 511); + if (fd < 0) { + LogError("[PFS] Cannot open [", target_file_name, "]"); + return -1; + } + + s64 read_bytes = sceKernelRead(fd, buffer, DIRENT_BUFFER_SIZE); + + // redundant + while (read_bytes > 0 && !found) { + total_read += read_bytes; + bufptr = buffer; + bufend = buffer + read_bytes; + + while (bufptr < bufend) { + oi::PfsDirent* entry = (oi::PfsDirent*)bufptr; + + if (entry->d_reclen >= 0) bufptr += static_cast(entry->d_reclen); + + if (entry->d_reclen <= 0) { + LogError("[PFS] //BAD RECLEN// at offset [", std::hex, total_read, "]"); + break; + } + + if (entry->d_namlen == 0) { + LogError("[PFS] //BAD FILENAME// at offset [", std::hex, total_read, "]"); + break; + } + + if (entry->d_namlen != target_file_name_length) continue; + + if (strncmp(entry->d_name, target_file_name, target_file_name_length) == 0) { + memcpy(dirent, entry, entry->d_reclen); + found = true; + break; + } + } + + if (read_bytes < DIRENT_BUFFER_SIZE) break; + + if (found) break; + + // move unread data to the beginning of the buffer + diff = bufend - bufptr; + // shouldn't, but shit happens + if (diff < 0) { + LogError("[PFS] Read", -diff, "bytes more than buffer was supposed to have"); + diff = 0; + } + memmove(buffer, bufptr, diff); + // read into after saved remainder + read_bytes = sceKernelRead(fd, buffer + diff, DIRENT_BUFFER_SIZE) + diff; + } + + fd = sceKernelClose(fd); + if (fd < 0) { + LogError("[PFS] Cannot close", target_file_name); + return -1; + } + + return found; +} + +s8 GetDir(fs::path path, fs::path leaf, oi::FolderDirent* dirent) { + const char* target_file_name = leaf.c_str(); + const u16 target_file_name_length = leaf.string().size(); + char buffer[DIRENT_BUFFER_SIZE]; + char* bufptr; + char* bufend; + u64 total_read {0}; + s64 diff; + bool found {false}; + + int fd = sceKernelOpen(path.c_str(), 0, 511); + if (fd < 0) { + LogError("[Normal] Cannot open [", target_file_name, "]"); + return -1; + } + + s64 read_bytes = sceKernelGetdirentries(fd, buffer, DIRENT_BUFFER_SIZE, nullptr); + + // redundant + while (read_bytes > 0 && !found) { + total_read += read_bytes; + bufptr = buffer; + bufend = buffer + read_bytes; + + while (bufptr < bufend) { + oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; + bufptr += static_cast(entry->d_reclen); + + if (entry->d_reclen == 0) { + LogError("[Normal] //BAD RECLEN// at offset [", std::hex, total_read, "]"); + break; + } + + if (entry->d_namlen == 0) { + LogError("[Normal] //BAD FILENAME// at offset [", std::hex, total_read, "]"); + break; + } + + if (entry->d_namlen != target_file_name_length) continue; + + if (strncmp(entry->d_name, target_file_name, target_file_name_length) == 0) { + memcpy(dirent, entry, sizeof(oi::FolderDirent)); + found = true; + break; + } + } + + if (found) break; + + // move unread data to the beginning of the buffer + diff = bufend - bufptr; + // shouldn't, but shit happens + if (diff < 0) { + LogError("[Normal] Read", -diff, "bytes more than buffer was supposed to have"); + diff = 0; + } + // read into after saved remainder + read_bytes = sceKernelGetdirentries(fd, buffer, DIRENT_BUFFER_SIZE, nullptr); + } + + fd = sceKernelClose(fd); + if (fd < 0) { + LogError("[Normal] Cannot close", target_file_name); + return -1; + } + + return found; +} +} // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_dirents/code/log.cpp b/tests/code/filesystem_dirents/code/log.cpp new file mode 100644 index 0000000..69d51f2 --- /dev/null +++ b/tests/code/filesystem_dirents/code/log.cpp @@ -0,0 +1,57 @@ +#include "log.h" + +#include +#include + +int error_counter = 0; + +int GetErrorCounter(void) { + Log("rtyrtyrty"); + return error_counter; +} + +void ResetErrorCounter(void) { + error_counter = 0; +} + +std::ostream& center(std::ostream& os, const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return os << s.substr(0, width); + int left = (width - len) / 2; + int right = width - len - left; + return os << std::string(left, ' ') << s << std::string(right, ' '); +} + +std::ostream& right(std::ostream& os, const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return os << s.substr(0, width); + int left = (width - len); + return os << std::string(left, ' ') << s; +} + +std::string center(const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return s.substr(0, width); + int left = (width - len) / 2; + int right = width - len - left; + return std::string(left, ' ') + s + std::string(right, ' '); +} + +std::string right(const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return s.substr(0, width); + int left = (width - len); + return std::string(left, ' ') + s; +} + +std::string to_octal(int value) { + std::ostringstream oss; + oss << std::oct << value; + return oss.str(); +} + +std::string to_hex(int value) { + std::ostringstream oss; + oss << std::hex << value; + return oss.str(); +} \ No newline at end of file diff --git a/tests/code/filesystem_dirents/code/log.h b/tests/code/filesystem_dirents/code/log.h new file mode 100644 index 0000000..238b95d --- /dev/null +++ b/tests/code/filesystem_dirents/code/log.h @@ -0,0 +1,60 @@ +#pragma once + +#ifndef LOG_H +#define LOG_H + +#include +#include + +#define STR(x) std::to_string(x) + +std::ostream& center(std::ostream& os, const std::string& s, int width); +std::string center(const std::string& s, int width); +std::ostream& right(std::ostream& os, const std::string& s, int width); +std::string right(const std::string& s, int width); +std::string to_octal(int value); +std::string to_hex(int value); + +template +void LogCustom(const char* fn, const char* msg, Args&&... args) { + std::cout << "[" << center(fn, 20) << "] " << msg; + ((std::cout << " " << args), ...); + std::cout << std::endl; +} + +extern int error_counter; + +int GetErrorCounter(void); +void ResetErrorCounter(void); + +#define Log(...) \ + { \ + LogCustom(__FUNCTION__, "[INFO]", ##__VA_ARGS__); \ + } + +#define LogTest(...) \ + { \ + LogCustom(__FUNCTION__, "\033[34;1m[TEST]\033[0m", ##__VA_ARGS__); \ + } + +#define LogError(...) \ + { \ + error_counter++; \ + LogCustom(__FUNCTION__, "\033[31;1m[FAIL]\033[0m", ##__VA_ARGS__, "( " __FILE__ ":", __LINE__, ")"); \ + } + +#define LogSuccess(...) \ + { \ + LogCustom(__FUNCTION__, "\033[32;1m[SUCC]\033[0m", ##__VA_ARGS__); \ + } + +#define TEST(cond, success_str, fail_str, ...) \ + { \ + if (cond) { \ + LogSuccess(success_str, ##__VA_ARGS__); \ + } else { \ + LogError(fail_str, ##__VA_ARGS__); \ + } \ + } + +#endif \ No newline at end of file diff --git a/tests/code/filesystem_dirents/code/main.cpp b/tests/code/filesystem_dirents/code/main.cpp new file mode 100644 index 0000000..b8c4823 --- /dev/null +++ b/tests/code/filesystem_dirents/code/main.cpp @@ -0,0 +1,25 @@ +#include "fs_test.h" +#include "log.h" + +#include + +int main(int ac, char** av) { + // No buffering + setvbuf(stdout, NULL, _IONBF, 0); + + // Log tests start + Log(); + Log("<<<< TESTS START >>>>"); + Log(); + + // Run file system tests + FS_Test::RunTests(); + + // Log tests end + Log(); + Log("<<<< TESTS END >>>>"); + Log(); + + sceSystemServiceLoadExec("EXIT", nullptr); + return 0; +} diff --git a/tests/code/filesystem_dirents/dumps/.gitkeep b/tests/code/filesystem_dirents/dumps/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/log_01.05.log b/tests/code/filesystem_dirents/log_01.05.log new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/sce_sys/icon0.png b/tests/code/filesystem_dirents/sce_sys/icon0.png new file mode 100644 index 0000000000000000000000000000000000000000..a94ec83cf794dd79651869e678e09cdc147418ea GIT binary patch literal 86218 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%0A^4>t_VQGqvBu?7C8jF=!>}JO$^J#-&{1t+5 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 Rjga90ijh7-uk5Bn + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/tests/code/filesystem_speed_test/README.md b/tests/code/filesystem_speed_test/README.md new file mode 100644 index 0000000..3788e9c --- /dev/null +++ b/tests/code/filesystem_speed_test/README.md @@ -0,0 +1,11 @@ +# OpenOrbis CMake project + +This is a template for quick start with PS4 development using OpenOrbis toolchain. + +## Usage + +```bash +cmake -B./build/ -S./ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_TOOLCHAIN_FILE=OpenOrbis-tc.cmake +cmake --build ./build/ -j8 +cmake --install . +``` diff --git a/tests/code/filesystem_speed_test/assets/misc/big_directory/.gitkeep b/tests/code/filesystem_speed_test/assets/misc/big_directory/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_speed_test/code/fs_test.cpp b/tests/code/filesystem_speed_test/code/fs_test.cpp new file mode 100644 index 0000000..755eb02 --- /dev/null +++ b/tests/code/filesystem_speed_test/code/fs_test.cpp @@ -0,0 +1,120 @@ +#include "fs_test.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; + +namespace FS_Test { +namespace oi = OrbisInternals; + +#define ITER_ACTION 2500 +#define ITER_READS 5 +#define ITER_WRITES 5 + +// chunk = 8, order = 1 -> 8b, multiples - how many chunks to write for testing +// =4, =3 -> 4MB +void testWrite(u64 base, u64 order, u64 multiples, const char* path) { + u64 test_start = 0; + u64 test_end = 0; + u64 write_test_chunk = base * (std::pow(1024, order)); + u64 write_test_bytes = multiples * write_test_chunk; + u64 write_test_start = 0; + u64 write_test_total = 0; + u8* write_test_buffer = new u8[write_test_chunk] {255}; + + char* size_str = "xB"; + switch (order) { + case 0: size_str[0] = 'b'; break; + case 1: size_str[0] = 'k'; break; + case 2: size_str[0] = 'M'; break; + case 3: size_str[0] = 'G'; break; + } + + test_start = tick(); + for (auto i = ITER_WRITES; i; i--) { + sceKernelUnlink(path); + int fd = sceKernelOpen(path, O_WRONLY | O_CREAT, 0777); + write_test_start = tick(); + for (u32 i = 0; i < write_test_bytes; i += write_test_chunk) { + sceKernelWrite(fd, write_test_buffer, write_test_chunk); + } + sceKernelFsync(fd); + write_test_total += tick() - write_test_start; + } + test_end = tick(); + + double write_test_throughput = ITER_WRITES * double(write_test_bytes) / double(write_test_total); + Log("write() in /data:", write_test_total / (ITER_WRITES * 1000), "us/it"); + Log("write+sync speed:", write_test_throughput * 1000000000.0 / (1024 * 1024), "MB/s"); + Log("write+sync duration:", write_test_total / 1000000000.0, "s"); + Log("Test duration:", (test_end - test_start) / 1000000000.0, "s"); + delete[] write_test_buffer; +} + +void RunTests() { + RegenerateDir("/data/amphitheathre"); + + Log(); + Log("<<<< TEST SUITE STARTING >>>>"); + Log("Function iterations:", ITER_ACTION); + Log("Read iterations:", ITER_READS); + Log("Write iterations:", ITER_WRITES); + + u64 test_start = 0; + u64 test_end = 0; + double test_duration = 0; + int fd = 0; + + Log(); + Log("\t<<<< open() >>>>"); + Log(); + + u64 open_start = 0; + u64 open_total = 0; + test_start = tick(); + touch("/data/amphitheathre/open_file"); + for (auto i = ITER_ACTION; i; i--) { + open_start = tick(); + fd = sceKernelOpen("/data/amphitheathre/open_file", O_RDONLY, 0777); + open_total += tick() - open_start; + sceKernelClose(fd); + } + test_end = tick(); + test_duration = (test_end - test_start) / 1000; + Log("open() in /data, one file:", open_total / ITER_ACTION, "ns/it"); + Log("Action duration:", open_total / 1000, "us"); + Log("Test duration:", test_duration, "us"); + + Log(); + Log("\t<<<< write() 4KB speed test >>>>"); + Log("\tNormalized to 1GB") Log(); + testWrite(4, 1, 262144, "/data/amphitheathre/write_benchmark_4kB"); + Log(); + Log("\t<<<< write() 8KB speed test >>>>"); + Log("\tNormalized to 1GB") Log(); + testWrite(8, 1, 131072, "/data/amphitheathre/write_benchmark_8kB"); + Log(); + Log("\t<<<< write() 64kB speed test >>>>"); + Log("\tNormalized to 1GB") Log(); + testWrite(64, 1, 16384, "/data/amphitheathre/write_benchmark_64kB"); + Log(); + Log("\t<<<< write() 1MB speed test >>>>"); + Log("\tNormalized to 1GB") Log(); + testWrite(1, 2, 1024, "/data/amphitheathre/write_benchmark_1MB"); + Log(); + Log("\t<<<< write() 4MB speed test >>>>"); + Log("\tNormalized to 1GB") Log(); + testWrite(4, 2, 256, "/data/amphitheathre/write_benchmark_4MB"); + Log(); + Log("\t<<<< write() 8MB speed test >>>>"); + Log("\tNormalized to 1GB") Log(); + testWrite(8, 2, 128, "/data/amphitheathre/write_benchmark_8MB"); +} +} // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_speed_test/code/fs_test.h b/tests/code/filesystem_speed_test/code/fs_test.h new file mode 100644 index 0000000..f229c0a --- /dev/null +++ b/tests/code/filesystem_speed_test/code/fs_test.h @@ -0,0 +1,61 @@ +#ifndef FS_TEST_H +#define FS_TEST_H + +#include "log.h" + +#include +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; + +namespace FS_Test { +#define DIRENT_PFS_BUFFER_SIZE 65536 +#define DIRENT_BUFFER_SIZE 512 + +using s8 = int8_t; +using s16 = int16_t; +using s32 = int32_t; +using s64 = int64_t; + +using u8 = uint8_t; +using u16 = uint16_t; +using u32 = uint32_t; +using u64 = uint64_t; + +namespace OrbisInternals { +typedef struct PfsDirent { + s32 d_fileno; + s32 d_type; + s32 d_namlen; + s32 d_reclen; + char d_name[256]; +} PfsDirent; + +typedef struct FolderDirent { + u32 d_fileno; + u16 d_reclen; + u8 d_type; + u8 d_namlen; + char d_name[256]; +} FolderDirent; +} // namespace OrbisInternals + +void RunTests(void); +void RegenerateDir(const char* path); + +ino_t get_fileno(const char* path); +ino_t get_fileno(int fd); +void Obliterate(const char* path); +int32_t touch(const char* path); +off_t GetSize(const char* path); +off_t GetSize(int fd); +int exists(const char* path); + +u64 tick(); + +} // namespace FS_Test +#endif // FS_TEST_H diff --git a/tests/code/filesystem_speed_test/code/fs_test_tools.cpp b/tests/code/filesystem_speed_test/code/fs_test_tools.cpp new file mode 100644 index 0000000..35a397a --- /dev/null +++ b/tests/code/filesystem_speed_test/code/fs_test_tools.cpp @@ -0,0 +1,101 @@ +#include "fs_test.h" + +#include +#include +#include +#include +#include +#include + +namespace FS_Test { +namespace oi = OrbisInternals; + +void RegenerateDir(const char* path) { + Obliterate(path); + sceKernelMkdir(path, 0777); +} + +off_t GetSize(int fd) { + OrbisKernelStat st; + if (int status = sceKernelFstat(fd, &st); status < 0) return status; + return st.st_size; +} + +off_t GetSize(const char* path) { + OrbisKernelStat st; + if (int status = sceKernelStat(path, &st); status < 0) return status; + return st.st_size; +} + +int32_t touch(const char* path) { + return sceKernelClose(sceKernelOpen(path, O_RDWR | O_CREAT | O_TRUNC, 0777)); +} + +ino_t get_fileno(int fd) { + struct OrbisKernelStat st {}; + int status = sceKernelFstat(fd, &st); + return (status == 0) * st.st_ino; +} + +ino_t get_fileno(const char* path) { + struct OrbisKernelStat st {}; + int fd = sceKernelOpen(path, O_RDONLY, 0777); + if (fd < 0) return 0; + int status = sceKernelFstat(fd, &st); + sceKernelClose(fd); + return (status == 0) * st.st_ino; +} + +int exists(const char* path) { + struct OrbisKernelStat ost {}; + return sceKernelStat(path, &ost); +} + +void Obliterate(const char* path) { + Log("<< rm -rf [", path, "] >>"); + std::error_code ec {}; + + std::vector entries; + for (auto& p: fs::recursive_directory_iterator(path, fs::directory_options::skip_permission_denied, ec)) + entries.push_back(p.path().string()); + + for (auto it = entries.rbegin(); it != entries.rend(); ++it) { + if (ec) { + LogError("Exception: [", ec.value(), "] :", ec.message()); + ec.clear(); + continue; + } + + const char* pp = it->c_str(); + + // see what sticks + + struct OrbisKernelStat st {0}; + + errno = 0; + sceKernelStat(pp, &st); + if (2 == errno) + // not found, good + continue; + + errno = 0; + if (S_ISDIR(st.st_mode)) sceKernelRmdir(pp); + if (S_ISREG(st.st_mode)) sceKernelUnlink(pp); + + if (errno != 0) LogError("Cannot remove [", pp, "] ( errno =", errno, ")"); + } + + errno = 0; + sceKernelRmdir(path); + + if (!(ENOENT == errno || 0 == errno)) LogError("Cannot remove [", path, "] ( errno =", errno, ")"); + + LogSuccess(">> rm -rf [", path, "] <<"); + return; +} + +u64 tick() { + using namespace std::chrono; + return duration_cast(high_resolution_clock::now().time_since_epoch()).count(); +} +} // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_speed_test/code/log.cpp b/tests/code/filesystem_speed_test/code/log.cpp new file mode 100644 index 0000000..3381d8d --- /dev/null +++ b/tests/code/filesystem_speed_test/code/log.cpp @@ -0,0 +1,62 @@ +#include "log.h" + +#include +#include + +int error_counter = 0; + +int GetErrorCounter(void) { + return error_counter; +} + +void ResetErrorCounter(void) { + error_counter = 0; +} + +std::ostream& center(std::ostream& os, const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return os << s.substr(0, width); + int left = (width - len) / 2; + int right = width - len - left; + return os << std::string(left, ' ') << s << std::string(right, ' '); +} + +std::ostream& right(std::ostream& os, const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return os << s.substr(0, width); + int left = (width - len); + return os << std::string(left, ' ') << s; +} + +std::string center(const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return s.substr(0, width); + int left = (width - len) / 2; + int right = width - len - left; + return std::string(left, ' ') + s + std::string(right, ' '); +} + +std::string right(const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return s.substr(0, width); + int left = (width - len); + return std::string(left, ' ') + s; +} + +std::string to_decimal(int value) { + std::ostringstream oss; + oss << std::dec << value; + return oss.str(); +} + +std::string to_octal(int value) { + std::ostringstream oss; + oss << std::oct << value; + return oss.str(); +} + +std::string to_hex(int value) { + std::ostringstream oss; + oss << std::hex << value; + return oss.str(); +} \ No newline at end of file diff --git a/tests/code/filesystem_speed_test/code/log.h b/tests/code/filesystem_speed_test/code/log.h new file mode 100644 index 0000000..989e5c7 --- /dev/null +++ b/tests/code/filesystem_speed_test/code/log.h @@ -0,0 +1,61 @@ +#pragma once + +#ifndef LOG_H +#define LOG_H + +#include +#include + +#define STR(x) std::to_string(x) + +std::ostream& center(std::ostream& os, const std::string& s, int width); +std::string center(const std::string& s, int width); +std::ostream& right(std::ostream& os, const std::string& s, int width); +std::string right(const std::string& s, int width); +std::string to_decimal(int value); +std::string to_octal(int value); +std::string to_hex(int value); + +template +void LogCustom(const char* fn, const char* msg, Args&&... args) { + std::cout << "[" << center(fn, 20) << "] " << msg; + ((std::cout << " " << args), ...); + std::cout << std::endl; +} + +extern int error_counter; + +int GetErrorCounter(void); +void ResetErrorCounter(void); + +#define Log(...) \ + { \ + LogCustom(__FUNCTION__, "[INFO]", ##__VA_ARGS__); \ + } + +#define LogTest(...) \ + { \ + LogCustom(__FUNCTION__, "\033[34;1m[TEST_CASE]\033[0m", ##__VA_ARGS__); \ + } + +#define LogError(...) \ + { \ + error_counter++; \ + LogCustom(__FUNCTION__, "\033[31;1m[FAIL]\033[0m", ##__VA_ARGS__, "( " __FILE__ ":", __LINE__, ")"); \ + } + +#define LogSuccess(...) \ + { \ + LogCustom(__FUNCTION__, "\033[32;1m[SUCC]\033[0m", ##__VA_ARGS__); \ + } + +#define TEST_CASE(cond, success_str, fail_str, ...) \ + { \ + if (cond) { \ + LogSuccess(success_str, ##__VA_ARGS__); \ + } else { \ + LogError(fail_str, ##__VA_ARGS__); \ + } \ + } + +#endif \ No newline at end of file diff --git a/tests/code/filesystem_speed_test/code/main.cpp b/tests/code/filesystem_speed_test/code/main.cpp new file mode 100644 index 0000000..b8c4823 --- /dev/null +++ b/tests/code/filesystem_speed_test/code/main.cpp @@ -0,0 +1,25 @@ +#include "fs_test.h" +#include "log.h" + +#include + +int main(int ac, char** av) { + // No buffering + setvbuf(stdout, NULL, _IONBF, 0); + + // Log tests start + Log(); + Log("<<<< TESTS START >>>>"); + Log(); + + // Run file system tests + FS_Test::RunTests(); + + // Log tests end + Log(); + Log("<<<< TESTS END >>>>"); + Log(); + + sceSystemServiceLoadExec("EXIT", nullptr); + return 0; +} diff --git a/tests/code/filesystem_speed_test/sce_sys/icon0.png b/tests/code/filesystem_speed_test/sce_sys/icon0.png new file mode 100644 index 0000000000000000000000000000000000000000..20a851ef2f69961d58a10bef99c1b6a8b3e83a15 GIT binary patch literal 251527 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Ⓢ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

aunpH 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[ main ] [INFO] +<118>[ main ] [INFO] <<<< TESTS START >>>> +<118>[ main ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist ] << +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< TEST SUITE STARTING >>>> +<118>[ RunTests ] [INFO] Some test components may (and will) fail. This is expected. +<118>[ RunTests ] [INFO] Validity of the test is determined by last message emitted by test case. +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< DUMP DIRENTS >>>> +<118>[ RunTests ] [INFO] +<118>[ dumpDirRecursive ] [INFO] Listing dirents of [ /app0 ] +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 2 ][ 1 ][ 24 ] |->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 2 ][ 2 ][ 24 ] |->.. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 3 ][ 6 ][ 24 ] |->assets +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 3 ][ 1 ][ 24 ] |--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 2 ][ 2 ][ 24 ] |--|->.. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 4 ][ 5 ][ 24 ] |--|->audio +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 4 ][ 1 ][ 24 ] |--|--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 3 ][ 2 ][ 24 ] |--|--|->.. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 5 ][ 5 ][ 24 ] |--|->fonts +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 5 ][ 1 ][ 24 ] |--|--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 3 ][ 2 ][ 24 ] |--|--|->.. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 6 ][ 6 ][ 24 ] |--|->images +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 6 ][ 1 ][ 24 ] |--|--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 3 ][ 2 ][ 24 ] |--|--|->.. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 7 ][ 4 ][ 24 ] |--|->misc +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 7 ][ 1 ][ 24 ] |--|--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 3 ][ 2 ][ 24 ] |--|--|->.. +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 12 ][ 20 ][ 40 ] |--|--|->cAsEinSEnsITiVE.HwDp +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 13 ][ 8 ][ 32 ] |--|--|->file.txt +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 14 ][ 14 ][ 32 ] |--|--|->file_empty.txt +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 8 ][ 6 ][ 24 ] |--|->videos +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 8 ][ 1 ][ 24 ] |--|--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 3 ][ 2 ][ 24 ] |--|--|->.. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 9 ][ 10 ][ 32 ] |->sce_module +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 9 ][ 1 ][ 24 ] |--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 2 ][ 2 ][ 24 ] |--|->.. +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 16 ][ 15 ][ 32 ] |--|->libSceFios2.prx +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 17 ][ 8 ][ 32 ] |--|->libc.prx +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 10 ][ 7 ][ 24 ] |->sce_sys +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 10 ][ 1 ][ 24 ] |--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 2 ][ 2 ][ 24 ] |--|->.. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 11 ][ 5 ][ 24 ] |--|->about +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 11 ][ 1 ][ 24 ] |--|--|->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 10 ][ 2 ][ 24 ] |--|--|->.. +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 18 ][ 10 ][ 32 ] |--|--|->right.sprx +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 19 ][ 8 ][ 32 ] |--|->keystone +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15 ][ 9 ][ 32 ] |->eboot.bin +<118>[ dumpDirRecursive ] [SUCC] Listing dirents of [ /app0 ] +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< RELATIVE FILENO >>>> +<118>[ RunTests ] [INFO] +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ / ] +<118>[ TestRelatives ] [INFO] / sees itself with fileno= 764 +<118>[ TestRelatives ] [INFO] / sees its parent with fileno= 3 +<118>[ TestRelatives ] [INFO] / is seen with fileno= -2 +<118>[ TestRelatives ] [INFO] It's not a mountpoint +<118>[ RunTests ] [SUCC] Test complete. Expected values: ~700, 3, -2 +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /app0 ] +<118>[ TestRelatives ] [INFO] /app0 sees itself with fileno= 2 +<118>[ TestRelatives ] [INFO] /app0 sees its parent with fileno= 2 +<118>[ TestRelatives ] [INFO] /app0 is seen with fileno= 769 +<118>[ TestRelatives ] [SUCC] It's a mountpoint +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /app0/sce_sys ] +<118>[ TestRelatives ] [INFO] /app0/sce_sys sees itself with fileno= 10 +<118>[ TestRelatives ] [INFO] /app0/sce_sys sees its parent with fileno= 2 +<118>[ TestRelatives ] [INFO] /app0/sce_sys is seen with fileno= 10 +<118>[ TestRelatives ] [INFO] It's not a mountpoint +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /av_contents ] +<118>[ TestRelatives ] [INFO] /av_contents sees itself with fileno= 791 +<118>[ TestRelatives ] [INFO] /av_contents sees its parent with fileno= 764 +<118>[ TestRelatives ] [INFO] /av_contents is seen with fileno= 791 +<118>[ TestRelatives ] [INFO] It's not a mountpoint +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /data ] +<118>[ TestRelatives ] [INFO] /data sees itself with fileno= 15202560 +<118>[ TestRelatives ] [INFO] /data sees its parent with fileno= 2 +<118>[ TestRelatives ] [INFO] /data is seen with fileno= 773 +<118>[ TestRelatives ] [SUCC] It's a mountpoint +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /dev ] +<118>[ TestRelatives ] [FAIL] Cannot get [ . ] from /dev ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1037 ) +<118>[ TestRelatives ] [FAIL] Cannot get [ .. ] from /dev ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1045 ) +<118>[ TestRelatives ] [INFO] /dev sees itself with fileno= -2 +<118>[ TestRelatives ] [INFO] /dev sees its parent with fileno= -2 +<118>[ TestRelatives ] [INFO] /dev is seen with fileno= 771 +<118>[ TestRelatives ] [INFO] It's not a mountpoint +<118>[ RunTests ] [SUCC] Test complete. Expected values: -2, -2, ~800 +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /host ] +<118>[ TestRelatives ] [INFO] /host sees itself with fileno= 9 +<118>[ TestRelatives ] [INFO] /host sees its parent with fileno= 1 +<118>[ TestRelatives ] [INFO] /host is seen with fileno= 774 +<118>[ TestRelatives ] [SUCC] It's a mountpoint +<118>[ RunTests ] [SUCC] /host is a superblock partition. Expected values: 9, 1, ~700 +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /hostapp ] +<118>[ TestRelatives ] [INFO] /hostapp sees itself with fileno= 10 +<118>[ TestRelatives ] [INFO] /hostapp sees its parent with fileno= 1 +<118>[ TestRelatives ] [INFO] /hostapp is seen with fileno= 775 +<118>[ TestRelatives ] [SUCC] It's a mountpoint +<118>[ RunTests ] [SUCC] /hostapp is a superblock partition. Expected values: 10, 1, ~700 +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /system_tmp ] +<118>[ TestRelatives ] [INFO] /system_tmp sees itself with fileno= 2 +<118>[ TestRelatives ] [INFO] /system_tmp sees its parent with fileno= 2 +<118>[ TestRelatives ] [INFO] /system_tmp is seen with fileno= 772 +<118>[ TestRelatives ] [SUCC] It's a mountpoint +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /this_should_fail ] +<118>[ GetDir ] [FAIL] [Normal] Cannot open [ . ] ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test_tools.cpp: 471 ) +<118>[ GetDir ] [FAIL] [Normal] Cannot open [ .. ] ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test_tools.cpp: 471 ) +<118>[ TestRelatives ] [FAIL] Cannot get [ this_should_fail ] from /this_should_fail ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1054 ) +<118>[ TestRelatives ] [INFO] /this_should_fail sees itself with fileno= 0 +<118>[ TestRelatives ] [INFO] /this_should_fail sees its parent with fileno= 0 +<118>[ TestRelatives ] [INFO] /this_should_fail is seen with fileno= -2 +<118>[ TestRelatives ] [INFO] It's not a mountpoint +<118>[ RunTests ] [SUCC] Test complete +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< NORMAL AND PFS DIRENT >>>> +<118>[ RunTests ] [INFO] Normal dirents are on LHS, PFS is on RHS. +<118>[ RunTests ] [INFO] The last element of the path is the accessed dirent, +<118>[ RunTests ] [INFO] so it can refer to a file, directory or relative entry [ . ], [ .. ] +<118>[ RunTests ] [INFO] +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /. +<118>[ CompareNormalVsPFS ] [FAIL] /. fileno 764 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1103 ) +<118>[ CompareNormalVsPFS ] [FAIL] /. namlen 1 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1111 ) +<118>[ CompareNormalVsPFS ] [FAIL] /. reclen 12 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1123 ) +<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1127 ) +<118>[ CompareNormalVsPFS ] [INFO] Normal: . +<118>[ CompareNormalVsPFS ] [INFO] PFS: +<118>[ RunTests ] [SUCC] Test complete [PFS should fail] +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /app0 +<118>[ CompareNormalVsPFS ] [FAIL] /app0 fileno 769 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1103 ) +<118>[ CompareNormalVsPFS ] [FAIL] /app0 namlen 4 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1111 ) +<118>[ CompareNormalVsPFS ] [FAIL] /app0 reclen 16 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1123 ) +<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1127 ) +<118>[ CompareNormalVsPFS ] [INFO] Normal: app0 +<118>[ CompareNormalVsPFS ] [INFO] PFS: +<118>[ RunTests ] [SUCC] Test complete [PFS should fail] +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /data +<118>[ CompareNormalVsPFS ] [FAIL] /data fileno 773 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1103 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data namlen 4 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1111 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data reclen 16 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1123 ) +<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1127 ) +<118>[ CompareNormalVsPFS ] [INFO] Normal: data +<118>[ CompareNormalVsPFS ] [INFO] PFS: +<118>[ RunTests ] [SUCC] Test complete [PFS should fail] +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /app0/. +<118>[ CompareNormalVsPFS ] [SUCC] /app0/. fileno 2 == 2 +<118>[ CompareNormalVsPFS ] [SUCC] /app0/. namlen 1 == 1 +<118>[ CompareNormalVsPFS ] [SUCC] /app0/. reclen 24 == 24 +<118>[ CompareNormalVsPFS ] [SUCC] Names are equal (memcmp) +<118>[ RunTests ] [SUCC] Test complete +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /app0/.. +<118>[ CompareNormalVsPFS ] [SUCC] /app0/.. fileno 2 == 2 +<118>[ CompareNormalVsPFS ] [SUCC] /app0/.. namlen 2 == 2 +<118>[ CompareNormalVsPFS ] [SUCC] /app0/.. reclen 24 == 24 +<118>[ CompareNormalVsPFS ] [SUCC] Names are equal (memcmp) +<118>[ RunTests ] [SUCC] Test complete +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /app0/sce_sys +<118>[ CompareNormalVsPFS ] [SUCC] /app0/sce_sys fileno 10 == 10 +<118>[ CompareNormalVsPFS ] [SUCC] /app0/sce_sys namlen 7 == 7 +<118>[ CompareNormalVsPFS ] [SUCC] /app0/sce_sys reclen 24 == 24 +<118>[ CompareNormalVsPFS ] [SUCC] Names are equal (memcmp) +<118>[ RunTests ] [SUCC] Test complete +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /app0/eboot.bin +<118>[ CompareNormalVsPFS ] [SUCC] /app0/eboot.bin fileno 15 == 15 +<118>[ CompareNormalVsPFS ] [SUCC] /app0/eboot.bin namlen 9 == 9 +<118>[ CompareNormalVsPFS ] [SUCC] /app0/eboot.bin reclen 32 == 32 +<118>[ CompareNormalVsPFS ] [SUCC] Names are equal (memcmp) +<118>[ RunTests ] [SUCC] Test complete +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /data/therapist/. +<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. fileno 15581444 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1103 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. namlen 1 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1111 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. reclen 12 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1123 ) +<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1127 ) +<118>[ CompareNormalVsPFS ] [INFO] Normal: . +<118>[ CompareNormalVsPFS ] [INFO] PFS: +<118>[ RunTests ] [SUCC] Test complete [PFS should fail] +<118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /this_should_fail/. +<118>[ GetDir ] [FAIL] [Normal] Cannot open [ . ] ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test_tools.cpp: 471 ) +<118>[ CompareNormalVsPFS ] [FAIL] Can't open /this_should_fail/. as normal ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1085 ) +<118>[ GetDir ] [FAIL] [PFS] Cannot open [ . ] ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test_tools.cpp: 407 ) +<118>[ CompareNormalVsPFS ] [FAIL] Can't open /this_should_fail/. as PFS ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1088 ) +<118>[ RunTests ] [SUCC] Test complete [All should fail] +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< Example directory listings >>>> +<118>[ RunTests ] [INFO] This is made to mimic `ls -la`. +<118>[ RunTests ] [INFO] UID, GID are always 0 +<118>[ RunTests ] [INFO] +<118>[ ElEsDashElAy ] [INFO] << ls -la [ / ] >> +<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 6 0 : 0 65536 2025-12-28 14:25 /app0 +<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 3 0 : 0 512 2025-12-28 14:26 /dev +<118>[ ElEsDashElAy ] [INFO] drwxr-xr-x 040755 2 0 : 0 240 2025-12-28 14:02 /system_tmp +<118>[ ElEsDashElAy ] [INFO] drwxrwxrwx 040777 13 0 : 0 512 2025-12-28 14:26 /data +<118>[ ElEsDashElAy ] [INFO] drwxrwxrwx 040777 1 0 : 0 4096 2024-07-01 20:12 /host +<118>[ ElEsDashElAy ] [INFO] drwxrwxrwx 040777 1 0 : 0 4096 2024-07-01 20:12 /hostapp +<118>[ ElEsDashElAy ] [INFO] drwxrwxr-x 040775 5 0 : 0 120 2025-12-28 14:26 /vCjSh8DpB3 +<118>[ ElEsDashElAy ] [INFO] drwxrwxr-x 040775 6 0 : 0 160 2025-12-28 14:26 /av_contents +<118>[ ElEsDashElAy ] [SUCC] >> ls -la [ / ] << +<118>[ ElEsDashElAy ] [INFO] << ls -la [ /app0 ] >> +<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 7 0 : 0 65536 2025-12-28 14:25 /app0/assets +<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 2 0 : 0 65536 2025-12-28 14:25 /app0/sce_module +<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 3 0 : 0 65536 2025-12-28 14:25 /app0/sce_sys +<118>[ ElEsDashElAy ] [INFO] -r-xr-xr-x 0100555 1 0 : 0 1898400 2025-12-28 14:25 /app0/eboot.bin +<118>[ ElEsDashElAy ] [SUCC] >> ls -la [ /app0 ] << +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< DIRENTS >>>> +<118>[ RunTests ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_dirent ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmp_dirent ] << +<118>[ RunTests ] [SUCC] Prepared for dirents +<118>[ TestDirEnts ] [TEST_CASE] Testing dirents +<118>[ TestDirEnts ] [SUCC] Creating [ /data/therapist/tmp_dirent ] failed (EEXIST) ( errno = 17 ) +<118>[ TestDirEnts ] [SUCC] open() succeeded on [ /data/therapist/tmp_dirent ] ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] Closed [ /data/therapist/tmp_dirent ] ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] Dummy files (1-4) created ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] open() succeeded on [ /data/therapist/tmp_dirent ] ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] Seek to start (dirents, pre) ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] Direntries read correctly ( read bytes: 512 ) ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] Seek to start (dump, pre) ( errno = 0 ) +<118>[ dumpDir ] [INFO] [ DIR ][ 15581451 ][ 1 ][ 12 ] |->. +<118>[ dumpDir ] [INFO] [ DIR ][ 15581444 ][ 2 ][ 12 ] |->.. +<118>[ dumpDir ] [INFO] [ FIL ][ 15581457 ][ 12 ][ 24 ] |->dummy_file_1 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581459 ][ 12 ][ 24 ] |->dummy_file_2 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581460 ][ 12 ][ 24 ] |->dummy_file_3 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581466 ][ 12 ][ 416 ] |->dummy_file_4 +<118>[ TestDirEnts ] [SUCC] Read correct amount of data (dump, pre) ( last_reclen = 416 should be = 416 ) ( errno = 0 ) +<118>[ TestDirEnts ] [INFO] You should see 4 dummy files here +<118>[ TestDirEnts ] [SUCC] Dummy files (5-8) created ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] Seek to start (dirents, post) ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] Direntries read correctly ( read bytes: 512 ) ( errno = 0 ) +<118>[ TestDirEnts ] [SUCC] Seek to start (dump, post) ( errno = 0 ) +<118>[ dumpDir ] [INFO] [ DIR ][ 15581451 ][ 1 ][ 12 ] |->. +<118>[ dumpDir ] [INFO] [ DIR ][ 15581444 ][ 2 ][ 12 ] |->.. +<118>[ dumpDir ] [INFO] [ FIL ][ 15581457 ][ 12 ][ 24 ] |->dummy_file_1 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581459 ][ 12 ][ 24 ] |->dummy_file_2 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581460 ][ 12 ][ 24 ] |->dummy_file_3 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581466 ][ 12 ][ 24 ] |->dummy_file_4 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581467 ][ 12 ][ 24 ] |->dummy_file_5 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581469 ][ 12 ][ 24 ] |->dummy_file_6 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581488 ][ 12 ][ 24 ] |->dummy_file_7 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581490 ][ 12 ][ 320 ] |->dummy_file_8 +<118>[ TestDirEnts ] [SUCC] Read correct amount of data (dump, post) ( last_reclen = 320 should be = 320 ) ( errno = 0 ) +<118>[ TestDirEnts ] [INFO] You should see 8 dummy files here +<118>[ TestDirEnts ] [SUCC] Closed [ /data/therapist/tmp_dirent ] ( errno = 0 ) +<118>[ RunTests ] [SUCC] Test complete +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< STAT >>>> +<118>[ RunTests ] [INFO] LHS - emulated, RHS - OG +<118>[ RunTests ] [INFO] +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 040777 | RHS = 040777 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 320 | RHS = 320 +<118>[ StatCmp ] [INFO] st_blocks LHS = 32 | RHS = 32 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/app0" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/app0" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 040555 | RHS = 040555 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 65536 | RHS = 65536 +<118>[ StatCmp ] [INFO] st_blocks LHS = 128 | RHS = 128 +<118>[ StatCmp ] [INFO] st_blksize LHS = 65536 | RHS = 65536 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/app0/eboot.bin" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/app0/eboot.bin" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 0100555 | RHS = 0100555 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 1898400 | RHS = 1645264 +<118>[ StatCmp ] [INFO] st_blocks LHS = 3712 | RHS = 3328 +<118>[ StatCmp ] [INFO] st_blksize LHS = 65536 | RHS = 65536 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [FAIL] Stat comparsion failed ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 112 ) +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/app0/assets/misc/file.txt" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/app0/assets/misc/file.txt" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 0100555 | RHS = 0100555 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 45 | RHS = 45 +<118>[ StatCmp ] [INFO] st_blocks LHS = 128 | RHS = 128 +<118>[ StatCmp ] [INFO] st_blksize LHS = 65536 | RHS = 65536 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/data/therapist" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/data/therapist" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 040777 | RHS = 040777 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 512 | RHS = 512 +<118>[ StatCmp ] [INFO] st_blocks LHS = 8 | RHS = 8 +<118>[ StatCmp ] [INFO] st_blksize LHS = 32768 | RHS = 32768 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/dev" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 040555 | RHS = 040555 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 512 | RHS = 512 +<118>[ StatCmp ] [INFO] st_blocks LHS = 1 | RHS = 1 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/deci_stderr" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/dev/deci_stderr" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 020666 | RHS = 020666 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_blocks LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestLStat ] [TEST_CASE] Testing lstat on [ "/dev/deci_stderr" ] +<118>[ RunTests ] [FAIL] Stat comparsion failed ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 117 ) +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/deci_stdout" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/dev/deci_stdout" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 020666 | RHS = 020666 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_blocks LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/stdin" ] +<118>[ TestStat ] [FAIL] Stat failed [ "/dev/stdin" ] ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 827 ) +<118>[ TestStat ] [INFO] No comparsiton target provided for [ "/dev/stdin" ]. Dumping your own :) +<118>[ PrintStatInfo ] [INFO] stat info.st_dev = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_ino = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_mode = 00 +<118>[ PrintStatInfo ] [INFO] stat info.st_nlink = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_uid = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_gid = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_rdev = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_atim.tv_sec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_atim.tv_nsec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_mtim.tv_sec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_mtim.tv_nsec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_ctim.tv_sec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_ctim.tv_nsec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_size = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_blocks = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_blksize = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_flags = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_gen = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_lspare = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_birthtim.tv_sec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_birthtim.tv_nsec = 0 +<118>[ RunTests ] [SUCC] Test complete [stat should fail] +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/stdout" ] +<118>[ TestStat ] [FAIL] Stat failed [ "/dev/stdout" ] ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 827 ) +<118>[ TestStat ] [INFO] No comparsiton target provided for [ "/dev/stdout" ]. Dumping your own :) +<118>[ PrintStatInfo ] [INFO] stat info.st_dev = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_ino = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_mode = 00 +<118>[ PrintStatInfo ] [INFO] stat info.st_nlink = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_uid = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_gid = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_rdev = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_atim.tv_sec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_atim.tv_nsec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_mtim.tv_sec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_mtim.tv_nsec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_ctim.tv_sec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_ctim.tv_nsec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_size = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_blocks = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_blksize = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_flags = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_gen = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_lspare = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_birthtim.tv_sec = 0 +<118>[ PrintStatInfo ] [INFO] stat info.st_birthtim.tv_nsec = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestLStat ] [TEST_CASE] Testing lstat on [ "/dev/stdout" ] +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/random" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/dev/random" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 020666 | RHS = 020666 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_blocks LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/urandom" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/dev/urandom" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 020666 | RHS = 020666 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_blocks LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/host" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/host" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 040777 | RHS = 040777 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 4096 | RHS = 4096 +<118>[ StatCmp ] [INFO] st_blocks LHS = 8 | RHS = 8 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/hostapp" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/hostapp" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 040777 | RHS = 040777 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 4096 | RHS = 4096 +<118>[ StatCmp ] [INFO] st_blocks LHS = 8 | RHS = 8 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestStat ] [TEST_CASE] Testing stat on [ "/av_contents" ] +<118>[ TestStat ] [SUCC] Stat successful [ "/av_contents" ] ( errno = 0 ) +<118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- +<118>[ StatCmp ] [INFO] st_mode LHS = 040775 | RHS = 040775 +<118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 +<118>[ StatCmp ] [INFO] st_size LHS = 160 | RHS = 160 +<118>[ StatCmp ] [INFO] st_blocks LHS = 32 | RHS = 32 +<118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 +<118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestLStat ] [TEST_CASE] Testing lstat on [ "/av_contents" ] +<118>[ RunTests ] [SUCC] Test complete +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< CURSED FILE CREATION >>>> +<118>[ RunTests ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_cursed ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmp_cursed ] << +<118>[PrepareCursedFileop ] [TEST_CASE] Cursed file operations +<118>[ RunTests ] [SUCC] Prepared for cursed fileop +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ /data/therapist/tmp_cursed/Aursed/AAursed/a_aa_file.txt ] +<118>[ TestFileTouch ] [SUCC] touched ( errno = 0 ) +<118>[ TestFileTouch ] [SUCC] stat success ( errno = 0 ) +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ /data/therapist/tmp_cursed/Aursed/a_file.txt ] +<118>[ TestFileTouch ] [SUCC] touched ( errno = 0 ) +<118>[ TestFileTouch ] [SUCC] stat success ( errno = 0 ) +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ /data/therapist/tmp_cursed/Aursed/././a_d_d_file.txt ] +<118>[ TestFileTouch ] [SUCC] touched ( errno = 0 ) +<118>[ TestFileTouch ] [SUCC] stat success ( errno = 0 ) +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ /data/therapist/tmp_cursed/Bursed/../Aursed/AAursed/b_dd_a_aa_file.txt ] +<118>[ TestFileTouch ] [SUCC] touched ( errno = 0 ) +<118>[ TestFileTouch ] [SUCC] stat success ( errno = 0 ) +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ /data/therapist/tmp_cursed/Aursed/AAursed/../../Cursed/../Bursed/aa_dd_dd_c_dd_b_file.txt ] +<118>[ TestFileTouch ] [SUCC] touched ( errno = 0 ) +<118>[ TestFileTouch ] [SUCC] stat success ( errno = 0 ) +<118>[ RunTests ] [SUCC] Test complete +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ /data/therapist/tmp_cursed/Aursed/AAursed/../../Cursed/CCursed/../../Bursed/BBursed/a_aa_dd_dd_c_cc_dd_dd_b_bb_file.txt ] +<118>[ TestFileTouch ] [SUCC] touched ( errno = 0 ) +<118>[ TestFileTouch ] [SUCC] stat success ( errno = 0 ) +<118>[ RunTests ] [SUCC] Test complete +<118>[ RunTests ] [INFO] errno for tests below should equal 9 (EBADF) and 2 (ENOENT) +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ /data/therapist/tmp_cursed/../tmp_cursed/../../././data/therapist/../data/therapist/././tmp_cursed/Cursed/../../../data/therapist/tmp_cursed/Cursed/idfk.txt ] +<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 797 ) +<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 800 ) +<118>[ RunTests ] [SUCC] Test complete +<118>[ RunTests ] [INFO] errno for tests below should equal 9 (EBADF) and 22 (EINVAL) +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ ../../../data/therapist/tmp_cursed/escape_from_app0_file.txt ] +<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 797 ) +<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 22 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 800 ) +<118>[ RunTests ] [SUCC] Test complete: Can't escape from curdir with relatives +<118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ app0_file.txt ] +<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 797 ) +<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 22 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 800 ) +<118>[ RunTests ] [SUCC] Test complete: File not written to (RO?) curdir +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< File open tests >>>> +<118>[ RunTests ] [INFO] Acual flag values for Orbis are different from sys/fcntl.h +<118>[ RunTests ] [INFO] Numerical values are correct as of today, macro flags are not +<118>[ RunTests ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_open ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmp_open ] << +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_ro.txt ] with flags: 0 ( O_RDONLY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wo.txt ] with flags: 1 ( O_WRONLY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rw.txt ] with flags: 2 ( O_RDWR ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rowo.txt ] with flags: 3 ( O_RDONLY | O_WRONLY | O_RDWR ) +<118>[ RunTests ] [SUCC] Pass (EINVAL) ( errno = 22 should be = 22 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rot.txt ] with flags: 400 ( O_RDONLY | O_TRUNC ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wot.txt ] with flags: 401 ( O_WRONLY | O_TRUNC ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwt.txt ] with flags: 402 ( O_RDWR | O_TRUNC ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roc.txt ] with flags: 200 ( O_RDONLY | O_CREAT ) +<118>[ RunTests ] [SUCC] Pass ( errno = 0 should be = 0 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woc.txt ] with flags: 201 ( O_WRONLY | O_CREAT ) +<118>[ RunTests ] [SUCC] Pass ( errno = 0 should be = 0 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwc.txt ] with flags: 202 ( O_RDWR | O_CREAT ) +<118>[ RunTests ] [SUCC] Pass ( errno = 0 should be = 0 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roc.txt ] with flags: a00 ( O_RDONLY | O_CREAT | O_EXCL ) +<118>[ RunTests ] [SUCC] Pass (EEXIST) ( errno = 17 should be = 17 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woc.txt ] with flags: a01 ( O_WRONLY | O_CREAT | O_EXCL ) +<118>[ RunTests ] [SUCC] Pass (EEXIST) ( errno = 17 should be = 17 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwc.txt ] with flags: a02 ( O_RDWR | O_CREAT | O_EXCL ) +<118>[ RunTests ] [SUCC] Pass (EEXIST) ( errno = 17 should be = 17 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roa.txt ] with flags: 8 ( O_RDONLY | O_APPEND ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woa.txt ] with flags: 9 ( O_WRONLY | O_APPEND ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwa.txt ] with flags: a ( O_RDWR | O_APPEND ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rota.txt ] with flags: 408 ( O_RDONLY | O_TRUNC | O_APPEND ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wota.txt ] with flags: 409 ( O_WRONLY | O_TRUNC | O_APPEND ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwta.txt ] with flags: 40a ( O_RDWR | O_TRUNC | O_APPEND ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_ro.txt ] with flags: 20000 ( O_RDONLY | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_wo.txt ] with flags: 20001 ( O_WRONLY | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rw.txt ] with flags: 20002 ( O_RDWR | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20000 ( O_RDONLY | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass ( errno = 0 should be = 0 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20001 ( O_WRONLY | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass (EISDIR) ( errno = 21 should be = 21 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20002 ( O_RDWR | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass (EISDIR) ( errno = 21 should be = 21 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rocd ] with flags: 20200 ( O_RDONLY | O_CREAT | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass (ENOTDIR) ( errno = 20 should be = 20 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_wocd ] with flags: 20201 ( O_WRONLY | O_CREAT | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass (ENOTDIR) ( errno = 20 should be = 20 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rwcd ] with flags: 20202 ( O_RDWR | O_CREAT | O_DIRECTORY ) +<118>[ RunTests ] [SUCC] Pass (ENOTDIR) ( errno = 20 should be = 20 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 0 should be = 0 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 1 ( O_WRONLY ) +<118>[ RunTests ] [SUCC] Pass (EROFS) ( errno = 30 should be = 30 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 2 ( O_RDWR ) +<118>[ RunTests ] [SUCC] Pass (EROFS) ( errno = 30 should be = 30 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 3 ( O_RDONLY | O_WRONLY | O_RDWR ) +<118>[ RunTests ] [SUCC] Pass (EINVAL) ( errno = 22 should be = 22 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 22 should be = 22 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ ./assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 22 should be = 22 ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ ] with flags: 0 ( O_RDONLY ) +<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 22 should be = 22 ) +<118>[ RunTests ] [INFO] RO+Truncate is undefined. Testing +<118>[ RunTests ] [SUCC] RO+TRUNC returned correct errno : 2 ( should be: 2 ) +<118>[ RunTests ] [SUCC] RO+TRUNC file not created ( errno = 2 should be = 2 ) +<118>[ RunTests ] [INFO] RO+Truncate+Append is undefined. Testing +<118>[ RunTests ] [SUCC] ROTA returned correct errno : 2 ( should be: 2 ) +<118>[ RunTests ] [SUCC] ROTA file not created ( errno = 2 should be = 2 ) +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< File ops tests >>>> +<118>[ RunTests ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_rw2 ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmp_rw2 ] << +<118>[ TestFileOps ] [TEST_CASE] Testing file operations on [ ] +<118>[ TestFileOps ] [SUCC] Stat failed on nonexistent file ( errno = 22 ) +<118>[ TestFileOps ] [SUCC] Truncate to 0 failed on nonexistent file ( errno = 22 ) +<118>[ TestFileOps ] [SUCC] Truncate to 10 failed on nonexistent file ( errno = 22 ) +<118>[ TestFileOps ] [FAIL] Can't open file [ ] ( errno = 22 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 568 ) +<118>[ RunTests ] [SUCC] Pass [open() should fail with errno = 22] +<118>[ TestFileOps ] [TEST_CASE] Testing file operations on [ /app0/assets/misc/test.txt ] +<118>[ TestFileOps ] [SUCC] Stat failed on nonexistent file ( errno = 2 ) +<118>[ TestFileOps ] [SUCC] Truncate to 0 failed on nonexistent file ( errno = 2 ) +<118>[ TestFileOps ] [SUCC] Truncate to 10 failed on nonexistent file ( errno = 2 ) +<118>[ TestFileOps ] [FAIL] Can't open file [ /app0/assets/misc/test.txt ] ( errno = 30 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 568 ) +<118>[ RunTests ] [SUCC] Pass [open should fail with errno = 30] +<118>[ TestFileOps ] [TEST_CASE] Testing file operations on [ /data/therapist/tmp_rw2/test.txt ] +<118>[ TestFileOps ] [SUCC] Stat failed on nonexistent file ( errno = 2 ) +<118>[ TestFileOps ] [SUCC] Truncate to 0 failed on nonexistent file ( errno = 2 ) +<118>[ TestFileOps ] [SUCC] Truncate to 10 failed on nonexistent file ( errno = 2 ) +<118>[ TestFileOps ] [SUCC] File opened [ /data/therapist/tmp_rw2/test.txt ] ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] File expanded ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] File resized (current size: 10 should be: 10 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ptr is valid (lseek is 0 should be 0 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] Write successful (Written: 38 ) should write 38 ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ptr is valid (lseek is 38 should be: 38 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ok: origin+0 (lseek is 0 should be: 0 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] Read successful (Read: 38 should read: 38 ) ( errno = 0 ) +<118>[ TestFileOps ] [INFO] If you can read this, unused gibberish +<118>[ TestFileOps ] [SUCC] ptr is valid (lseek is 38 should be: 38 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] File truncated ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] File resized (current size: 20 should be: 20 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] file pointer not changed after resizing (lseek is 38 should be 38 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ok: end+0 (lseek is 20 should be 20 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] 2-nd write successful (Written: 56 ) should write 56 ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ok: origin+0 (lseek is 0 should be: 0 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] Read successful (Read: 51 should read: 51 ) ( errno = 0 ) +<118>[ TestFileOps ] [INFO] If you can read this, remember to drink some water. +<118>[ TestFileOps ] [SUCC] ok: end-24 (lseek is 52 should be: 52 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] Read successful (Read: 24 should read: 24 ) ( errno = 0 ) +<118>[ TestFileOps ] [INFO] This is saved for later. +<118>[ TestFileOps ] [SUCC] ok: current+34 (lseek is 34 should be: 34 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] Read successful (Read: 5 should read: 5 ) ( errno = 0 ) +<118>[ TestFileOps ] [INFO] drink +<118>[ TestFileOps ] [SUCC] ok: current+6 (lseek is 45 should be: 45 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] Read successful (Read: 5 should read: 5 ) ( errno = 0 ) +<118>[ TestFileOps ] [INFO] water +<118>[ TestFileOps ] [SUCC] ok: current-28 (lseek is 22 should be: 22 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] Read successful (Read: 8 should read: 8 ) ( errno = 0 ) +<118>[ TestFileOps ] [INFO] remember +<118>[ TestFileOps ] [SUCC] ok: origin+2137 (OOB) (lseek is 2137 should be: 2137 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ok: origin-2137 (OOB) (errno should be 22 - EINVAL) ( errno = 22 ) +<118>[ TestFileOps ] [SUCC] ok: current+2137 (OOB) (lseek is 4274 should be: 4274 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ok: current-1234 (OOB) (lseek is 3040 should be: 3040 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ok: current-5000 (into -OOB) (errno should be 22 - EINVAL) ( errno = 22 ) +<118>[ TestFileOps ] [SUCC] ok: end+2137 (OOB) (lseek is 2213 should be: 2213 ) ( errno = 0 ) +<118>[ TestFileOps ] [SUCC] ok: end-2137 (OOB) (errno should be 22 - EINVAL) ( errno = 22 ) +<118>[ RunTests ] [SUCC] Pass +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< File R/W tests >>>> +<118>[ RunTests ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_rw3 ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmp_rw3 ] << +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ ] +<118>[ TestFileRW ] [FAIL] Can't open [ ] ( errno = 22 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ RunTests ] [SUCC] Test complete [empty path, should fail with errno = 22 (EINVAL)] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /data/therapist/tmp_rw3/rwtest.txt ] +<118>[ TestFileRW ] [SUCC] Opened [ /data/therapist/tmp_rw3/rwtest.txt ] ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Write succeded ( 32 bytes written) ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+10 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT+1 val = 11 should be 11 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT-1 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END val = 32 should be 32 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END-1 val = 31 should be 31 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END+1 val = 33 should be 33 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+0 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Read succeded ( 32 bytes read) ( errno = 0 ) +<118>[ TestFileRW ] [INFO] Buffers are equal? : yes +<118>[ TestFileRW ] [INFO] Write preview: 97 98 99 100 +<118>[ TestFileRW ] [INFO] Read preview: 97 98 99 100 +<118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : no +<118>[ RunTests ] [SUCC] Test complete [both buffers should hold the same values] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /data/therapist/tmp_rw3 ] +<118>[ TestFileRW ] [FAIL] Can't open [ /data/therapist/tmp_rw3 ] ( errno = 21 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ RunTests ] [SUCC] Test complete: [R/W on a directory should fail with errno = 21 (EISDIR)] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /app0/assets/misc/file_empty.txt ] +<118>[ TestFileRW ] [FAIL] Can't open [ /app0/assets/misc/file_empty.txt ] ( errno = 30 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ RunTests ] [SUCC] Test complete: [R/W on a file in RO directory should fail with errno = 30 (EROFS)] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/stdin ] +<118>[ TestFileRW ] [FAIL] Can't open [ /dev/stdin ] ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ RunTests ] [SUCC] Test complete [Should fail with errno = 2 (ENOENT)] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/stdout ] +<118>[ TestFileRW ] [FAIL] Can't open [ /dev/stdout ] ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ RunTests ] [SUCC] Test complete [Should fail with errno = 2 (ENOENT)] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/null ] +<118>[ TestFileRW ] [SUCC] Opened [ /dev/null ] ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Write succeded ( 32 bytes written) ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+10 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT+1 val = 11 should be 11 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT-1 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END-1 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END+1 val = 1 should be 1 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+0 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [FAIL] Read failed ( 0 bytes read) ( errno = 0 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 770 ) +<118>[ TestFileRW ] [INFO] Buffers are equal? : no +<118>[ TestFileRW ] [INFO] Write preview: 97 98 99 100 +<118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : no +<118>[ RunTests ] [SUCC] Test complete [Write should pass, read should return 0 bytes] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/random ] +<118>[ TestFileRW ] [SUCC] Opened [ /dev/random ] ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Write succeded ( 32 bytes written) ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+10 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT+1 val = 11 should be 11 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT-1 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END-1 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END+1 val = 1 should be 1 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+0 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Read succeded ( 32 bytes read) ( errno = 0 ) +<118>[ TestFileRW ] [INFO] Buffers are equal? : no +<118>[ TestFileRW ] [INFO] Write preview: 97 98 99 100 +<118>[ TestFileRW ] [INFO] Read preview: 68 163 104 33 +<118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : no +<118>[ RunTests ] [SUCC] Test complete [All should pass, random reads] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/urandom ] +<118>[ TestFileRW ] [SUCC] Opened [ /dev/urandom ] ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Write succeded ( 32 bytes written) ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+10 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT+1 val = 11 should be 11 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT-1 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END-1 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END+1 val = 1 should be 1 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+0 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Read succeded ( 32 bytes read) ( errno = 0 ) +<118>[ TestFileRW ] [INFO] Buffers are equal? : no +<118>[ TestFileRW ] [INFO] Write preview: 97 98 99 100 +<118>[ TestFileRW ] [INFO] Read preview: 199 56 5 91 +<118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : no +<118>[ RunTests ] [SUCC] Test complete [All should pass, random reads] +<118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/zero ] +<118>[ TestFileRW ] [SUCC] Opened [ /dev/zero ] ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Write succeded ( 32 bytes written) ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+10 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT+1 val = 11 should be 11 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek CURRENT-1 val = 10 should be 10 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END-1 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek END+1 val = 1 should be 1 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Lseek ORIGIN+0 val = 0 should be 0 ( errno = 0 ) +<118>[ TestFileRW ] [SUCC] Read succeded ( 32 bytes read) ( errno = 0 ) +<118>[ TestFileRW ] [INFO] Buffers are equal? : no +<118>[ TestFileRW ] [INFO] Write preview: 97 98 99 100 +<118>[ TestFileRW ] [INFO] Read preview: 0 0 0 0 +<118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : yes +<118>[ RunTests ] [SUCC] Test complete [All should pass, read buffer zeroed out] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmd ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmd ] << +<118>[ dumpDirRecursive ] [INFO] Listing dirents of [ /data/therapist/tmd ] +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 15581555 ][ 1 ][ 12 ] |->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 15581444 ][ 2 ][ 12 ] |->.. +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581556 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-0 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581557 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-1 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581558 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-2 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581559 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-3 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581560 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-4 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581563 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-5 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581564 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-6 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581565 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-7 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581566 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-8 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581689 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-9 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581698 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-10 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581699 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-11 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581700 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-12 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581704 ][ 4 ][ 20 ] |->SN-0 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581701 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-13 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581702 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-14 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581703 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-15 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581705 ][ 4 ][ 16 ] |->SN-1 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581706 ][ 4 ][ 16 ] |->SN-2 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581707 ][ 4 ][ 16 ] |->SN-3 +<118>[ dumpDirRecursive ] [INFO] [SL][00:00:00:000][Thread 0x00018845][INFO][TRACE][ALWAYS][MAIN STREAM][BEGIN][Heap]sanity OK, free 2291872 (37%), in-use 3934048 (63%), peak 4432128 (71%), when 1529 [sec] +<118>[ FIL ][ 15581708 ][ 4 ][ 16 ] |->SN-4 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581709 ][ 4 ][ 16 ] |->SN-5 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581710 ][ 4 ][ 16 ] |->SN-6 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581711 ][ 4 ][ 16 ] |->SN-7 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581712 ][ 4 ][ 16 ] |->SN-8 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581713 ][ 4 ][ 16 ] |->SN-9 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581714 ][ 5 ][ 16 ] |->SN-10 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581715 ][ 5 ][ 16 ] |->SN-11 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581716 ][ 5 ][ 16 ] |->SN-12 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581717 ][ 5 ][ 16 ] |->SN-13 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581718 ][ 5 ][ 16 ] |->SN-14 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581719 ][ 5 ][ 16 ] |->SN-15 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581720 ][ 5 ][ 16 ] |->SN-16 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581721 ][ 5 ][ 16 ] |->SN-17 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581722 ][ 5 ][ 16 ] |->SN-18 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581723 ][ 5 ][ 16 ] |->SN-19 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581724 ][ 5 ][ 16 ] |->SN-20 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581725 ][ 5 ][ 16 ] |->SN-21 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581726 ][ 5 ][ 16 ] |->SN-22 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581727 ][ 5 ][ 16 ] |->SN-23 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581728 ][ 5 ][ 16 ] |->SN-24 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581729 ][ 5 ][ 20 ] |->SN-25 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581730 ][ 5 ][ 16 ] |->SN-26 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581731 ][ 5 ][ 16 ] |->SN-27 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581732 ][ 5 ][ 16 ] |->SN-28 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581733 ][ 5 ][ 16 ] |->SN-29 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581734 ][ 5 ][ 16 ] |->SN-30 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581735 ][ 5 ][ 16 ] |->SN-31 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581736 ][ 5 ][ 16 ] |->SN-32 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581737 ][ 5 ][ 16 ] |->SN-33 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581738 ][ 5 ][ 16 ] |->SN-34 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581739 ][ 5 ][ 16 ] |->SN-35 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581740 ][ 5 ][ 16 ] |->SN-36 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581741 ][ 5 ][ 16 ] |->SN-37 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581742 ][ 5 ][ 16 ] |->SN-38 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581743 ][ 5 ][ 16 ] |->SN-39 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581744 ][ 5 ][ 16 ] |->SN-40 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581745 ][ 5 ][ 16 ] |->SN-41 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581746 ][ 5 ][ 16 ] |->SN-42 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581747 ][ 5 ][ 16 ] |->SN-43 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581748 ][ 5 ][ 16 ] |->SN-44 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581749 ][ 5 ][ 16 ] |->SN-45 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581750 ][ 5 ][ 16 ] |->SN-46 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581751 ][ 5 ][ 16 ] |->SN-47 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581752 ][ 5 ][ 16 ] |->SN-48 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581753 ][ 5 ][ 16 ] |->SN-49 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581754 ][ 5 ][ 16 ] |->SN-50 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581755 ][ 5 ][ 16 ] |->SN-51 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581756 ][ 5 ][ 16 ] |->SN-52 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581757 ][ 5 ][ 16 ] |->SN-53 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581758 ][ 5 ][ 16 ] |->SN-54 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581759 ][ 5 ][ 16 ] |->SN-55 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581760 ][ 5 ][ 16 ] |->SN-56 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581761 ][ 5 ][ 16 ] |->SN-57 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581762 ][ 5 ][ 16 ] |->SN-58 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581763 ][ 5 ][ 16 ] |->SN-59 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581764 ][ 5 ][ 16 ] |->SN-60 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581765 ][ 5 ][ 16 ] |->SN-61 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581766 ][ 5 ][ 16 ] |->SN-62 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581767 ][ 5 ][ 432 ] |->SN-63 +<118>[ dumpDirRecursive ] [SUCC] Listing dirents of [ /data/therapist/tmd ] +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< Case sensitivity tests >>>> +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [SUCC] Test file created +<118>[ RunTests ] [SUCC] Data: 1:1 case sensitivity passed ( /data/therapist/cAsEinSenSiTive.hwdp ) +<118>[ RunTests ] [SUCC] Data: Data: Lowercase sensitivity passed ( /data/therapist/caseinsensitive.hwdp ) +<118>[ RunTests ] [SUCC] Data: Uppercase sensitivity passed ( /DATA/THERAPIST/CASEINSENSITIVE.HWDP ) +<118>[ RunTests ] [SUCC] Data: Uppercase sensitivity (2nd half) passed ( /data/THERAPIST/CASEINSENSITIVE.HWDP ) +<118>[ RunTests ] [SUCC] app0: 1:1 case sensitivity passed ( /app0/assets/misc/cAsEinSEnsITiVE.HwDp ) +<118>[ RunTests ] [SUCC] app0: Data: Lowercase sensitivity passed ( /app0/assets/misc/caseinsensitive.hwdp ) +<118>[ RunTests ] [SUCC] app0: Uppercase (whole path) sensitivity passed ( /APP0/ASSETS/misc/CASEINSENSITIVE.HWDP ) +<118>[ RunTests ] [SUCC] app0: Uppercase (app0 path) sensitivity passed ( /app0/ASSETS/misc/CASEINSENSITIVE.HWDP ) +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] Long names (ENAMETOOLONG) +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [SUCC] File name too long detected sceKernelOpen(RO) ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] Cursed rw flags are more important than ENAMETOOLONG sceKernelOpen(RDO|WRO|RW) ( errno = 22 , should be 22 ) +<118>[ RunTests ] [SUCC] File creation flags are less important than ENAMETOOLONG sceKernelOpen(CREAT|RDO) ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected sceKernelRename(long,normal) ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected sceKernelRename(normal,long) ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected sceKernelCheckReachability() ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected sceKernelMkdir() ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected sceKernelStat() ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected sceKernelUnlink() ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected open(RO) ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] Cursed rw flags are more important than ENAMETOOLONG open(RDO|WRO|RW) ( errno = 22 , should be 22 ) +<118>[ RunTests ] [SUCC] File creation flags are less important than ENAMETOOLONG open(CREAT|RDO) ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected rename(long,normal) ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected rename(normal,long) ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected mkdir() ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected stat() ( errno = 63 , should be 63 ) +<118>[ RunTests ] [SUCC] File name too long detected unlink() ( errno = 63 , should be 63 ) +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< Moving files >>>> +<118>[ RunTests ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/moves ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/moves ] << +<118>[ RunTests ] [INFO] fileno of: movingDirectoryA: 15581771 +<118>[ RunTests ] [INFO] fileno of: movingDirectoryB: 15581772 +<118>[ RunTests ] [INFO] fileno of: movingDirectoryC: 15581773 +<118>[ RunTests ] [INFO] fileno of: movingDirectoryD: 15581774 +<118>[ RunTests ] [INFO] fileno of: movingFileA: 15581775 +<118>[ RunTests ] [INFO] fileno of: movingFileB: 15581776 +<118>[ RunTests ] [INFO] fileno of: movingFileC: 15581777 +<118>[ RunTests ] [SUCC] Moved file->(existent)file: 0 +<118>[ RunTests ] [SUCC] Moved file->(nonexistent)file: 0 +<118>[ RunTests ] [INFO] fileno of: yeetFile: 15581777 +<118>[ RunTests ] [SUCC] Moved dir->(existing)dir: 0 +<118>[ RunTests ] [SUCC] Moved dir->(nonexistent)dir: 0 +<118>[ RunTests ] [INFO] fileno of: yeetDir: 15581773 +<118>[ RunTests ] [SUCC] Not moved file->(existent)dir: -2147352555 +<118>[ RunTests ] [SUCC] Not moved dir->(existent)file: -2147352556 +<118>[ RunTests ] [SUCC] Moved file->(into existent)dir: 0 +<118>[ RunTests ] [SUCC] Not moved empty dir->not empty dir: -2147352510 +<118>[ RunTests ] [SUCC] Moved not empty dir->empty dir: 0 +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [INFO] <<<< Open fd abuse (moving/removing files with open fd) >>>> +<118>[ RunTests ] [INFO] +<118>[ RunTests ] [SUCC] Test file opened status = 18 +<118>[ RunTests ] [SUCC] File unlinked ( status = 0 ) +<118>[ RunTests ] [SUCC] Readback string is correct +<118>[ RunTests ] [INFO] fstat() Fileno before removal = 15581778 after = 15581778 +<118>[ RunTests ] [INFO] stat() after removal = -2147352574 +<118>[ RunTests ] [INFO] -2147352574 +<118>[ RunTests ] [INFO] -2147352574 +<118>[ main ] [INFO] +<118>[ main ] [INFO] <<<< TESTS END >>>> +<118>[ main ] [INFO] \ No newline at end of file diff --git a/tests/code/filesystem_test/CMakeLists.txt b/tests/code/filesystem_test/CMakeLists.txt new file mode 100644 index 0000000..91162c4 --- /dev/null +++ b/tests/code/filesystem_test/CMakeLists.txt @@ -0,0 +1,8 @@ +project(Therapist VERSION 0.0.1) + +link_libraries(SceSystemService) + +create_pkg(TEST21370 11 00 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") +set_target_properties(TEST21370 PROPERTIES OO_PKG_TITLE "Therapist") +set_target_properties(TEST21370 PROPERTIES OO_PKG_APPVER "1.32") +finalize_pkg(TEST21370) diff --git a/tests/code/filesystem_test/LICENSE b/tests/code/filesystem_test/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/tests/code/filesystem_test/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/tests/code/filesystem_test/README.md b/tests/code/filesystem_test/README.md new file mode 100644 index 0000000..3788e9c --- /dev/null +++ b/tests/code/filesystem_test/README.md @@ -0,0 +1,11 @@ +# OpenOrbis CMake project + +This is a template for quick start with PS4 development using OpenOrbis toolchain. + +## Usage + +```bash +cmake -B./build/ -S./ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_TOOLCHAIN_FILE=OpenOrbis-tc.cmake +cmake --build ./build/ -j8 +cmake --install . +``` diff --git a/tests/code/filesystem_test/assets/misc/cAsEinSEnsITiVE.HwDp b/tests/code/filesystem_test/assets/misc/cAsEinSEnsITiVE.HwDp new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_test/assets/misc/file.txt b/tests/code/filesystem_test/assets/misc/file.txt new file mode 100644 index 0000000..a9aba45 --- /dev/null +++ b/tests/code/filesystem_test/assets/misc/file.txt @@ -0,0 +1,3 @@ +~~~ Line 1 ~~~ +~~~ Line 2 ~~~ +~~~ Line 3 ~~~ diff --git a/tests/code/filesystem_test/assets/misc/file_empty.txt b/tests/code/filesystem_test/assets/misc/file_empty.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_test/code/fs_constants.h b/tests/code/filesystem_test/code/fs_constants.h new file mode 100644 index 0000000..15ad083 --- /dev/null +++ b/tests/code/filesystem_test/code/fs_constants.h @@ -0,0 +1,322 @@ +#include + +namespace DumpedConstants { + +// real data +// st_dev, st_ino will differ between everything +// size, blocks and blksize seem constant + +const OrbisKernelStat stat_root { + .st_dev = 0, + .st_ino = 0, + .st_mode = 040777, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758754566, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758754566, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758754566, + .st_ctim.tv_nsec = 0, + .st_size = 320, + .st_blocks = 32, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = 1758754562, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_app0 = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 040555, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758754519, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758754519, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758754519, + .st_ctim.tv_nsec = 0, + .st_size = 65536, + .st_blocks = 128, + .st_blksize = 65536, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = 1758754519, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_app0_eboot = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 0100555, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758754519, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758754519, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758754519, + .st_ctim.tv_nsec = 0, + .st_size = 1645264, + .st_blocks = 3328, + .st_blksize = 65536, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = 1758754519, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_app0_assets_misc_file = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 0100555, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758754519, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758754519, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758754519, + .st_ctim.tv_nsec = 0, + .st_size = 45, + .st_blocks = 128, + .st_blksize = 65536, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = 1758754519, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_data = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 040777, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1754042762, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758754566, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758754566, + .st_ctim.tv_nsec = 0, + .st_size = 512, + .st_blocks = 8, + .st_blksize = 32768, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = 1754042762, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_dev = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 040555, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758801536, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758801536, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758801536, + .st_ctim.tv_nsec = 0, + .st_size = 512, + .st_blocks = 1, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = -1, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_dev_deci_stderr = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 020666, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758641838, + .st_atim.tv_nsec = 476662000, + .st_mtim.tv_sec = 1758803999, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758803999, + .st_ctim.tv_nsec = 0, + .st_size = 0, + .st_blocks = 0, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = -1, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_dev_deci_stdout = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 020666, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758641838, + .st_atim.tv_nsec = 476662000, + .st_mtim.tv_sec = 1758804023, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758804023, + .st_ctim.tv_nsec = 0, + .st_size = 0, + .st_blocks = 0, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = -1, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_dev_stdin {0}; +const OrbisKernelStat stat_root_dev_stdout {0}; + +const OrbisKernelStat stat_root_dev_random = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 020666, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758803652, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758641838, + .st_mtim.tv_nsec = 476662000, + .st_ctim.tv_nsec = 476662000, + .st_size = 0, + .st_blocks = 0, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = -1, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_dev_urandom = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 020666, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758803654, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758641838, + .st_mtim.tv_nsec = 476662000, + .st_ctim.tv_sec = 1758641838, + .st_ctim.tv_nsec = 476662000, + .st_size = 0, + .st_blocks = 0, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = -1, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_host = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 040777, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1719788400, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1719864764, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1719864764, + .st_ctim.tv_nsec = 0, + .st_size = 4096, + .st_blocks = 8, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = 1719864764, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_hostapp = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 040777, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1719784800, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1719861164, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1719861164, + .st_ctim.tv_nsec = 0, + .st_size = 4096, + .st_blocks = 8, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = 1719861164, + .st_birthtim.tv_nsec = 0, +}; + +const OrbisKernelStat stat_root_av_contents = { + .st_dev = 0, + .st_ino = 0, + .st_mode = 040775, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_atim.tv_sec = 1758801537, + .st_atim.tv_nsec = 0, + .st_mtim.tv_sec = 1758801537, + .st_mtim.tv_nsec = 0, + .st_ctim.tv_sec = 1758801537, + .st_ctim.tv_nsec = 0, + .st_size = 160, + .st_blocks = 32, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, + .st_birthtim.tv_sec = 1758801536, + .st_birthtim.tv_nsec = 0, +}; +} // namespace DumpedConstants \ No newline at end of file diff --git a/tests/code/filesystem_test/code/fs_test.cpp b/tests/code/filesystem_test/code/fs_test.cpp new file mode 100644 index 0000000..5e4b615 --- /dev/null +++ b/tests/code/filesystem_test/code/fs_test.cpp @@ -0,0 +1,1139 @@ +#include "fs_test.h" + +#include "fs_constants.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; + +namespace FS_Test { +namespace oi = OrbisInternals; + +void RunTests() { + RegenerateDir("/data/therapist"); + + Log(); + Log("<<<< TEST SUITE STARTING >>>>"); + Log("\tSome test components may (and will) fail. This is expected."); + Log("\tValidity of the test is determined by last message emitted by test case."); + Log(); + + Log(); + Log("\t<<<< DUMP DIRENTS >>>>"); + Log(); + dumpDirRecursive("/app0"); + + // + + Log(); + Log("\t<<<< RELATIVE FILENO >>>>"); + Log(); + // + // fileno=0 is *always* reserved for removed/nonexistent files + // fileno=1 is *always* reserved for the superblock partitions + // fileno=2 is *always* reserved for mount-root partitions + TEST_CASE(TestRelatives("/"), "Test complete. Expected values: ~700, 3, -2", "Can't test relatives of /"); + TEST_CASE(TestRelatives("/app0", true), "Test complete", "Can't test relatives of /app0"); + TEST_CASE(TestRelatives("/app0/sce_sys"), "Test complete", "Can't test relatives of /app0/sce_sys"); + TEST_CASE(TestRelatives("/av_contents"), "Test complete", "Can't test relatives of /av_contents"); + TEST_CASE(TestRelatives("/data", true), "Test complete", "Can't test relatives of /data/therapist"); + TEST_CASE(!TestRelatives("/dev"), "Test complete. Expected values: -2, -2, ~800", "/dev should NOT be accessible"); + + TEST_CASE(TestRelatives("/host", true), "/host is a superblock partition. Expected values: 9, 1, ~700", "Can't test relatives of /host"); + TEST_CASE(TestRelatives("/hostapp", true), "/hostapp is a superblock partition. Expected values: 10, 1, ~700", "Can't test relatives of /hostapp"); + + TEST_CASE(TestRelatives("/system_tmp", true), "Test complete", "Can't test relatives of /system_tmp"); + TEST_CASE(!TestRelatives("/this_should_fail"), "Test complete", "Accessed nonexistent directory"); + + // + + Log(); + Log("\t<<<< NORMAL AND PFS DIRENT >>>>"); + Log("\tNormal dirents are on LHS, PFS is on RHS."); + Log("\tThe last element of the path is the accessed dirent,"); + Log("\tso it can refer to a file, directory or relative entry [ . ], [ .. ]"); + Log(); + // + // PFS works only with /app0 + // Also, don't try to open /host with PFS + TEST_CASE(!CompareNormalVsPFS("/", "."), "Test complete [PFS should fail]", "Cannot access [ . ] at [ / ]"); + TEST_CASE(!CompareNormalVsPFS("/", "app0"), "Test complete [PFS should fail]", "Cannot access [ app0 ] at [ / ]"); + TEST_CASE(!CompareNormalVsPFS("/", "data"), "Test complete [PFS should fail]", "Cannot access [ data ] at [ / ]"); + TEST_CASE(CompareNormalVsPFS("/app0", "."), "Test complete", "Cannot access [ . ] at [ /app0 ]"); + TEST_CASE(CompareNormalVsPFS("/app0", ".."), "Test complete", "Cannot access [ .. ] at [ /app0 ]"); + TEST_CASE(CompareNormalVsPFS("/app0", "sce_sys"), "Test complete", "Cannot access [ sce_sys ] at [ /app0 ]"); + TEST_CASE(CompareNormalVsPFS("/app0", "eboot.bin"), "Test complete", "Cannot access [ eboot.bin ] at [ /app0 ]"); + TEST_CASE(!CompareNormalVsPFS("/data/therapist", "."), "Test complete [PFS should fail]", "Cannot access [ . ] at [ /data/therapist ]"); + TEST_CASE(!CompareNormalVsPFS("/this_should_fail", "."), "Test complete [All should fail]", "Accessed [ . ] at [ /this_should_fail ]"); + + // + + Log(); + Log("\t<<<< Example directory listings >>>>"); + Log("\t This is made to mimic `ls -la`."); + Log("\t UID, GID are always 0"); + Log(); + + ElEsDashElAy("/"); + ElEsDashElAy("/app0"); + + // + // Dirents + // + + Log(); + Log("\t<<<< DIRENTS >>>>"); + Log(); + + bool dirent_prepared = RegenerateDir("/data/therapist/tmp_dirent"); + TEST_CASE(dirent_prepared, "Prepared for dirents", "Can't setup dirents"); + if (dirent_prepared) { + TEST_CASE(TestDirEnts(), "Test complete", "You won't see this, this test doesn't have a negative return"); + } + + // + // Stat + // + + Log(); + Log("\t<<<< STAT >>>>"); + Log("\tLHS - emulated, RHS - OG"); + Log(); + + TEST_CASE(TestStat("/", &DumpedConstants::stat_root), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/app0", &DumpedConstants::stat_root_app0), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/app0/eboot.bin", &DumpedConstants::stat_root_app0_eboot), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/app0/assets/misc/file.txt", &DumpedConstants::stat_root_app0_assets_misc_file), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/data/therapist", &DumpedConstants::stat_root_data), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/dev", &DumpedConstants::stat_root_dev), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/dev/deci_stderr", &DumpedConstants::stat_root_dev_deci_stderr), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestLStat("/dev/deci_stderr"), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/dev/deci_stdout", &DumpedConstants::stat_root_dev_deci_stdout), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/dev/stdin", nullptr), "Test complete [stat should fail]", "Stat comparsion failed"); + TEST_CASE(TestStat("/dev/stdout", nullptr), "Test complete", "Stat worked on /dev/stdout"); + TEST_CASE(!TestLStat("/dev/stdout"), "Test complete", "LStat worked on /dev/stdout"); + TEST_CASE(TestStat("/dev/random", &DumpedConstants::stat_root_dev_random), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/dev/urandom", &DumpedConstants::stat_root_dev_urandom), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/host", &DumpedConstants::stat_root_host), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/hostapp", &DumpedConstants::stat_root_hostapp), "Test complete", "Stat comparsion failed"); + TEST_CASE(TestStat("/av_contents", &DumpedConstants::stat_root_av_contents), "Test complete", "Stat comparsion failed"); + TEST_CASE(!TestLStat("/av_contents"), "Test complete", "LStat worked on /av_contents"); + + // + // CURSED FILE CREATION + // + + Log(); + Log("\t<<<< CURSED FILE CREATION >>>>"); + Log(); + + bool cursed_fileop_prepared = PrepareCursedFileop(); + TEST_CASE(cursed_fileop_prepared, "Prepared for cursed fileop", "Can't setup cursed fileops"); + if (cursed_fileop_prepared) { + TEST_CASE(TestFileTouch("/data/therapist/tmp_cursed/Aursed/AAursed/a_aa_file.txt"), "Test complete", "Test failed"); + TEST_CASE(TestFileTouch("/data/therapist/tmp_cursed/Aursed/a_file.txt"), "Test complete", "Test failed"); + TEST_CASE(TestFileTouch("/data/therapist/tmp_cursed/Aursed/././a_d_d_file.txt"), "Test complete", "Test failed"); + TEST_CASE(TestFileTouch("/data/therapist/tmp_cursed/Bursed/../Aursed/AAursed/b_dd_a_aa_file.txt"), "Test complete", "Test failed"); + TEST_CASE(TestFileTouch("/data/therapist/tmp_cursed/Aursed/AAursed/../../Cursed/../Bursed/aa_dd_dd_c_dd_b_file.txt"), "Test complete", "Test failed"); + TEST_CASE(TestFileTouch("/data/therapist/tmp_cursed/Aursed/AAursed/../../Cursed/CCursed/../../Bursed/BBursed/a_aa_dd_dd_c_cc_dd_dd_b_bb_file.txt"), + "Test complete", "Test failed"); + Log("errno for tests below should equal 9 (EBADF) and 2 (ENOENT)"); + TEST_CASE(!TestFileTouch("/data/therapist/tmp_cursed/../tmp_cursed/../../././data/therapist/../data/therapist/././tmp_cursed/Cursed/../../../data/" + "therapist/tmp_cursed/Cursed/idfk.txt"), + "Test complete", "Test failed"); + Log("errno for tests below should equal 9 (EBADF) and 22 (EINVAL)"); + TEST_CASE(!TestFileTouch("../../../data/therapist/tmp_cursed/escape_from_app0_file.txt"), "Test complete: Can't", "Test failed: Can", + "escape from curdir with relatives"); + TEST_CASE(!TestFileTouch("app0_file.txt"), "Test complete: File not", "Test failed: File", "written to (RO?) curdir"); + } + + // + // File open tests + // + + Log(); + Log("\t<<<< File open tests >>>>"); + Log("\tAcual flag values for Orbis are different from sys/fcntl.h"); + Log("\tNumerical values are correct as of today, macro flags are not"); + Log(); + + bool file_open_tests_prepared = RegenerateDir("/data/therapist/tmp_open"); // the same conditions + if (file_open_tests_prepared) { + // No modifiers + // O_RDONLY + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_ro.txt", O_RDONLY, "O_RDONLY"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", 2, ")"); + // O_WRONLY + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wo.txt", O_WRONLY, "O_WRONLY"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", 2, ")"); + // O_RDWR + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rw.txt", O_RDWR, "O_RDWR"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", 2, ")"); + // O_RDONLY | O_WRONLY | O_RDWR + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rowo.txt", O_RDONLY | O_WRONLY | O_RDWR, "O_RDONLY | O_WRONLY | O_RDWR"); + _errno == EINVAL, "Pass (EINVAL)", "Fail", "( errno =", _errno, "should be =", 22, ")"); + + // O_TRUNC + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rot.txt", O_TRUNC, "O_RDONLY | O_TRUNC"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wot.txt", O_WRONLY | O_TRUNC, "O_WRONLY | O_TRUNC"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwt.txt", O_RDWR | O_TRUNC, "O_RDWR | O_TRUNC"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + // O_CREAT + // these create a file + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roc.txt", O_RDONLY | O_CREAT, "O_RDONLY | O_CREAT"); + _errno == 0, "Pass", "Fail", "( errno =", _errno, "should be =", 0, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woc.txt", O_WRONLY | O_CREAT, "O_WRONLY | O_CREAT"); + _errno == 0, "Pass", "Fail", "( errno =", _errno, "should be =", 0, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwc.txt", O_RDWR | O_CREAT, "O_RDWR | O_CREAT"); + _errno == 0, "Pass", "Fail", "( errno =", _errno, "should be =", 0, ")"); + // O_CREAT | O_EXCL + // exists, not creating + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roc.txt", O_RDONLY | O_CREAT | O_EXCL, "O_RDONLY | O_CREAT | O_EXCL"); + _errno == 17, "Pass (EEXIST)", "Fail", "( errno =", _errno, "should be =", EEXIST, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woc.txt", O_WRONLY | O_CREAT | O_EXCL, "O_WRONLY | O_CREAT | O_EXCL"); + _errno == 17, "Pass (EEXIST)", "Fail", "( errno =", _errno, "should be =", EEXIST, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwc.txt", O_RDWR | O_CREAT | O_EXCL, "O_RDWR | O_CREAT | O_EXCL"); + _errno == 17, "Pass (EEXIST)", "Fail", "( errno =", _errno, "should be =", EEXIST, ")"); + // O_APPEND + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roa.txt", O_RDONLY | O_APPEND, "O_RDONLY | O_APPEND"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woa.txt", O_WRONLY | O_APPEND, "O_WRONLY | O_APPEND"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwa.txt", O_RDWR | O_APPEND, "O_RDWR | O_APPEND"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + // O_TRUNC | O_APPEND + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rota.txt", O_RDONLY | O_TRUNC | O_APPEND, "O_RDONLY | O_TRUNC | O_APPEND"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wota.txt", O_WRONLY | O_TRUNC | O_APPEND, "O_WRONLY | O_TRUNC | O_APPEND"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwta.txt", O_RDWR | O_TRUNC | O_APPEND, "O_RDWR | O_TRUNC | O_APPEND"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + // O_DIRECTORY (nonexistent file is a target) + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_ro.txt", O_RDONLY | O_DIRECTORY, "O_RDONLY | O_DIRECTORY"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_wo.txt", O_WRONLY | O_DIRECTORY, "O_WRONLY | O_DIRECTORY"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rw.txt", O_RDWR | O_DIRECTORY, "O_RDWR | O_DIRECTORY"); + _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); + // O_DIRECTORY (existing directory) + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/", 0 | 0x20000, "O_RDONLY | O_DIRECTORY"); + _errno == 0, "Pass", "Fail", "( errno =", _errno, "should be =", 0, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/", 0x1 | 0x20000, "O_WRONLY | O_DIRECTORY"); + _errno == 21, "Pass (EISDIR)", "Fail", "( errno =", _errno, "should be =", EISDIR, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/", 0x2 | 0x20000, "O_RDWR | O_DIRECTORY"); + _errno == 21, "Pass (EISDIR)", "Fail", "( errno =", _errno, "should be =", EISDIR, ")"); + // O_CREAT | O_DIRECTORY (unspecified type, directory) + // these create a file + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rocd", 0 | 0x200 | 0x20000, "O_RDONLY | O_CREAT | O_DIRECTORY"); + _errno == 20, "Pass (ENOTDIR)", "Fail", "( errno =", _errno, "should be =", ENOTDIR, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_wocd", 0x1 | 0x200 | 0x20000, "O_WRONLY | O_CREAT | O_DIRECTORY"); + _errno == 20, "Pass (ENOTDIR)", "Fail", "( errno =", _errno, "should be =", ENOTDIR, ")"); + TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rwcd", 0x2 | 0x200 | 0x20000, "O_RDWR | O_CREAT | O_DIRECTORY"); + _errno == 20, "Pass (ENOTDIR)", "Fail", "( errno =", _errno, "should be =", ENOTDIR, ")"); + // No modifiers, RO directory + // O_RDONLY + TEST_CASE(int _errno = TestOpenFlags("/app0/assets/misc/file.txt", 0, "O_RDONLY"); + _errno == 0, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", 0, ")"); + // O_WRONLY + TEST_CASE(int _errno = TestOpenFlags("/app0/assets/misc/file.txt", 0x1, "O_WRONLY"); + _errno == 30, "Pass (EROFS)", "Fail", "( errno =", _errno, "should be =", EROFS, ")"); + // O_RDWR + TEST_CASE(int _errno = TestOpenFlags("/app0/assets/misc/file.txt", 0x2, "O_RDWR"); + _errno == 30, "Pass (EROFS)", "Fail", "( errno =", _errno, "should be =", EROFS, ")"); + // O_RDONLY | O_WRONLY | O_RDWR + TEST_CASE(int _errno = TestOpenFlags("/app0/assets/misc/file.txt", 0 | 0x1 | 0x2, "O_RDONLY | O_WRONLY | O_RDWR"); + _errno == EINVAL, "Pass (EINVAL)", "Fail", "( errno =", _errno, "should be =", EINVAL, ")"); + // Obviously bad ones, flags are irrelevant + TEST_CASE(int _errno = TestOpenFlags("assets/misc/file.txt", 0, "O_RDONLY"); + _errno == EINVAL, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", EINVAL, ")"); + TEST_CASE(int _errno = TestOpenFlags("./assets/misc/file.txt", 0, "O_RDONLY"); + _errno == EINVAL, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", EINVAL, ")"); + TEST_CASE(int _errno = TestOpenFlags("", 0, "O_RDONLY"); _errno == EINVAL, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", EINVAL, ")"); + + Log("RO+Truncate is undefined. Testing"); + int __fd = sceKernelOpen("/data/therapist/tmp_open/nonexistent_rot.txt", O_RDONLY | O_TRUNC, 0777); + TEST_CASE(errno == ENOENT, "RO+TRUNC returned correct errno", "RO+TRUNC returned wrong errno", ":", errno, "( should be:", ENOENT, ")"); + TEST_CASE(exists("/data/therapist/tmp_open/nonexistent_rot.txt"); + errno == ENOENT, "RO+TRUNC file not created", "RO+TRUNC file created", "( errno =", errno, "should be =", ENOENT, ")") + + Log("RO+Truncate+Append is undefined. Testing"); + __fd = sceKernelOpen("/data/therapist/tmp_open/nonexistent_rota.txt", O_RDONLY | O_TRUNC | O_APPEND, 0777); + TEST_CASE(errno == ENOENT, "ROTA returned correct errno", "ROTA returned wrong errno", ":", errno, "( should be:", ENOENT, ")"); + TEST_CASE(exists("/data/therapist/tmp_open/nonexistent_rota.txt"); + errno == ENOENT, "ROTA file not created", "ROTA file created", "( errno =", errno, "should be =", ENOENT, ")") + } + + // + // File ops tests + // + + Log(); + Log("\t<<<< File ops tests >>>>"); + Log(); + + bool file_op_tests_prepared = RegenerateDir("/data/therapist/tmp_rw2"); // the same conditions + if (file_op_tests_prepared) { + // short test, just depends on target location. the output is looong, don't get overboard + TEST_CASE(!TestFileOps(""), "Pass", "Fail", "[open() should fail with errno = 22]"); + TEST_CASE(!TestFileOps("/app0/assets/misc/test.txt"), "Pass", "Fail", "[open should fail with errno = 30]"); + TEST_CASE(TestFileOps("/data/therapist/tmp_rw2/test.txt"), "Pass", "Fail"); + // a true trial. should fail immediately :) + // TEST(TestFileOps("/app0/sce_sys/param.sfo", 0, "[No flags]"), "Pass", "Fail"); + } + + // + // File R/W tests + // + + Log(); + Log("\t<<<< File R/W tests >>>>"); + Log(); + + bool file_rw_tests_prepared = RegenerateDir("/data/therapist/tmp_rw3"); // the same conditions + if (file_rw_tests_prepared) { + TEST_CASE(!TestFileRW("", 32), "Test complete", "Test failed", "[empty path, should fail with errno = 22 (EINVAL)]"); + touch("/data/therapist/tmp_rw3/rwtest.txt"); + TEST_CASE(TestFileRW("/data/therapist/tmp_rw3/rwtest.txt", 32), "Test complete", "Test failed", "[both buffers should hold the same values]"); + TEST_CASE(!TestFileRW("/data/therapist/tmp_rw3", 32), "Test complete:", "Test failed:", "[R/W on a directory should fail with errno = 21 (EISDIR)]"); + TEST_CASE(!TestFileRW("/app0/assets/misc/file_empty.txt", 32), + "Test complete:", "Test failed:", "[R/W on a file in RO directory should fail with errno = 30 (EROFS)]"); + + TEST_CASE(!TestFileRW("/dev/stdin", 32), "Test complete", "Test failed", "[Should fail with errno = 2 (ENOENT)]"); + TEST_CASE(!TestFileRW("/dev/stdout", 32), "Test complete", "Test failed", "[Should fail with errno = 2 (ENOENT)]"); + TEST_CASE(!TestFileRW("/dev/null", 32), "Test complete", "Test failed", "[Write should pass, read should return 0 bytes]"); + TEST_CASE(TestFileRW("/dev/random", 32), "Test complete", "Test failed", "[All should pass, random reads]"); + TEST_CASE(TestFileRW("/dev/urandom", 32), "Test complete", "Test failed", "[All should pass, random reads]"); + TEST_CASE(TestFileRW("/dev/zero", 32), "Test complete", "Test failed", "[All should pass, read buffer zeroed out]"); + } + + RegenerateDir("/data/therapist/tmd"); + for (u16 idx = 0; idx < 16; idx++) { + std::string p = std::string("/data/therapist/tmd/AFileWithAReallyLongName-") + std::to_string(idx); + touch(p.c_str()); + } + for (u16 idx = 0; idx < 64; idx++) { + std::string p = std::string("/data/therapist/tmd/SN-") + std::to_string(idx); + touch(p.c_str()); + } + dumpDirRecursive("/data/therapist/tmd"); + + /// + /// Case sensitivity + /// + + Log(); + Log("\t<<<< Case sensitivity tests >>>>"); + Log(); + + struct stat st; + const char* case_insensitive_path = "/data/therapist/cAsEinSenSiTive.hwdp"; + const char* case_insensitive_path_lower = "/data/therapist/caseinsensitive.hwdp"; + const char* case_insensitive_path_upper = "/DATA/THERAPIST/CASEINSENSITIVE.HWDP"; + const char* case_insensitive_path_upper_end = "/data/THERAPIST/CASEINSENSITIVE.HWDP"; + TEST_CASE(sceKernelClose(sceKernelOpen(case_insensitive_path, O_RDWR | O_TRUNC | O_CREAT, 0777)) == 0, "Test file created", "Test file not created"); + + TEST_CASE(stat(case_insensitive_path, &st) == 0, "Data: 1:1 case sensitivity passed", "Data: Can't resolve 1:1 name", "( ", case_insensitive_path, " )"); + TEST_CASE(stat(case_insensitive_path_lower, &st) != 0 && errno == ENOENT, "Data: Data: Lowercase sensitivity passed", "Data: Resolved name in lowercase", + "( ", case_insensitive_path_lower, " )"); + TEST_CASE(stat(case_insensitive_path_upper, &st) != 0 && errno == ENOENT, "Data: Uppercase sensitivity passed", "Data: Resolved name in uppercase", "( ", + case_insensitive_path_upper, " )"); + TEST_CASE(stat(case_insensitive_path_upper_end, &st) != 0 && errno == ENOENT, "Data: Uppercase sensitivity (2nd half) passed", + "Data: Resolved name (2nd half) in uppercase", "( ", case_insensitive_path_upper_end, " )"); + + const char* case_insensitive_app0_path = "/app0/assets/misc/cAsEinSEnsITiVE.HwDp"; + const char* case_insensitive_path_app0_lower = "/app0/assets/misc/caseinsensitive.hwdp"; + const char* case_insensitive_path_app0_upper = "/APP0/ASSETS/misc/CASEINSENSITIVE.HWDP"; + const char* case_insensitive_path_app0_upper_end = "/app0/ASSETS/misc/CASEINSENSITIVE.HWDP"; + TEST_CASE(stat(case_insensitive_app0_path, &st) == 0, "app0: 1:1 case sensitivity passed", "app0: Can't resolve 1:1 name", "( ", case_insensitive_app0_path, + " )"); + TEST_CASE(stat(case_insensitive_path_app0_lower, &st) == 0, "app0: Data: Lowercase sensitivity passed", "app0: Can't resolve name in lowercase", "( ", + case_insensitive_path_app0_lower, " )"); + TEST_CASE(stat(case_insensitive_path_app0_upper, &st) != 0 && errno == ENOENT, "app0: Uppercase (whole path) sensitivity passed", + "app0: Resolved (whole path) name in uppercase", "( ", case_insensitive_path_app0_upper, " )"); + TEST_CASE(stat(case_insensitive_path_app0_upper_end, &st) == 0, "app0: Uppercase (app0 path) sensitivity passed", + "app0: Can't resolve (app0 path) name in uppercase", "( ", case_insensitive_path_app0_upper_end, " )"); + + /// + /// Long names (ENAMETOOLONG) + /// + + Log(); + Log("\tLong names (ENAMETOOLONG)"); + Log(); + + sceKernelClose(sceKernelOpen("/data/therapist/dummy_target", O_CREAT | O_WRONLY, 0777)); + OrbisKernelStat st_long_orbis {}; + struct stat st_long_posix {}; + + const char* very_long_path = "/data/therapist/" + "thisisafilewithaverylongnameForrealthisfileissupposedtohaveareallylongnameforthistestcaseOtherwisewewontknowifitworkscorrec" + "tlyItsnotusedoftenbutcanbepro" + "blematicasthisbreaksdirentswhichcanstoreonly255charactersincludingnullterminatorThisisthelastsentence.goodluck"; + // sceKernel* + TEST_CASE(int status = sceKernelOpen(very_long_path, O_RDONLY, 0777); errno == ENAMETOOLONG, "File name too long detected", + "Didn't detect file name >255 characters", "sceKernelOpen(RO) ( errno =", errno, + ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = sceKernelOpen(very_long_path, O_WRONLY | O_RDWR | O_RDONLY, 0777); + errno == EINVAL, "Cursed rw flags are more important than ENAMETOOLONG", "Didn't detect file name >255 characters", + "sceKernelOpen(RDO|WRO|RW) ( errno =", errno, ", should be", EINVAL, ")"); + TEST_CASE(int status = sceKernelOpen(very_long_path, O_CREAT | O_RDONLY, 0777); + errno == ENAMETOOLONG, "File creation flags are less important than ENAMETOOLONG", "Didn't detect file name >255 characters", + "sceKernelOpen(CREAT|RDO) ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = sceKernelRename(very_long_path, "/data/therapist/dummy_target_2"); + errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters", "sceKernelRename(long,normal) ( errno =", errno, + ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = sceKernelRename("/data/therapist/dummy_target", very_long_path); + errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters", "sceKernelRename(normal,long) ( errno =", errno, + ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = sceKernelCheckReachability(very_long_path); errno == ENAMETOOLONG, "File name too long detected", + "Didn't detect file name >255 characters", "sceKernelCheckReachability() ( errno =", errno, + ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = sceKernelMkdir(very_long_path, 0777); errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters ", + "sceKernelMkdir() ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + + TEST_CASE(int status = sceKernelStat(very_long_path, &st_long_orbis); errno == ENAMETOOLONG, "File name too long detected", + "Didn't detect file name >255 characters", "sceKernelStat() ( errno =", errno, + ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = sceKernelUnlink(very_long_path); errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters", + "sceKernelUnlink() ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + + // posix_* + TEST_CASE(int status = open(very_long_path, O_RDONLY, 0777); errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters ", + "open(RO) ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = open(very_long_path, O_WRONLY | O_RDWR | O_RDONLY, 0777); errno == EINVAL, "Cursed rw flags are more important than ENAMETOOLONG", + "Didn't detect file name >255 characters", + "open(RDO|WRO|RW) ( errno =", errno, ", should be", EINVAL, ")"); + TEST_CASE(int status = open(very_long_path, O_CREAT | O_RDONLY, 0777); errno == ENAMETOOLONG, "File creation flags are less important than ENAMETOOLONG", + "Didn't detect file name >255 characters", "open(CREAT|RDO) ( errno =", errno, + ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = rename(very_long_path, "/data/therapist/dummy_target_2"); errno == ENAMETOOLONG, "File name too long detected", + "Didn't detect file name >255 characters", + "rename(long,normal) ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = rename("/data/therapist/dummy_target", very_long_path); errno == ENAMETOOLONG, "File name too long detected", + "Didn't detect file name >255 characters", + "rename(normal,long) ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = mkdir(very_long_path, 0777); errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters", + "mkdir() ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = stat(very_long_path, &st_long_posix); errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters ", + "stat() ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + TEST_CASE(int status = unlink(very_long_path); errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters", + "unlink() ( errno =", errno, ", should be", ENAMETOOLONG, ")"); + + /// + /// Moving files + /// + + Log(); + Log("\t<<<< Moving files >>>>"); + Log(); + + const char* movingFileA = "/data/therapist/moves/fileA"; + const char* movingFileB = "/data/therapist/moves/fileB"; + const char* movingFileC = "/data/therapist/moves/fileC"; + + const char* movingDirectoryA = "/data/therapist/moves/dirA"; + const char* movingDirectoryB = "/data/therapist/moves/dirB"; + const char* movingDirectoryC = "/data/therapist/moves/dirC"; + const char* movingDirectoryD = "/data/therapist/moves/dirD"; + + Obliterate("/data/therapist/moves"); + sceKernelMkdir("/data/therapist/moves", 0777); + sceKernelMkdir(movingDirectoryA, 0777); + sceKernelMkdir(movingDirectoryB, 0777); + sceKernelMkdir(movingDirectoryC, 0777); + sceKernelMkdir(movingDirectoryD, 0777); + touch(movingFileA); + touch(movingFileB); + touch(movingFileC); + + ino_t fileno_movingDirectoryA = get_fileno(movingDirectoryA); + ino_t fileno_movingDirectoryB = get_fileno(movingDirectoryB); + ino_t fileno_movingDirectoryC = get_fileno(movingDirectoryC); + ino_t fileno_movingDirectoryD = get_fileno(movingDirectoryD); + ino_t fileno_movingFileA = get_fileno(movingFileA); + ino_t fileno_movingFileB = get_fileno(movingFileB); + ino_t fileno_movingFileC = get_fileno(movingFileC); + + Log("fileno of: movingDirectoryA:\t", fileno_movingDirectoryA); + Log("fileno of: movingDirectoryB:\t", fileno_movingDirectoryB); + Log("fileno of: movingDirectoryC:\t", fileno_movingDirectoryC); + Log("fileno of: movingDirectoryD:\t", fileno_movingDirectoryD); + Log("fileno of: movingFileA:\t", fileno_movingFileA); + Log("fileno of: movingFileB:\t", fileno_movingFileB); + Log("fileno of: movingFileC:\t", fileno_movingFileC); + + const char* yeetFile = "/data/therapist/moves/yeet"; + const char* yeetDir = "/data/therapist/moves/yeet_dir"; + + TEST_CASE(int status = sceKernelRename(movingFileA, movingFileB); + status == 0 && get_fileno(movingFileB) == fileno_movingFileA, "Moved", "Not moved", "file->(existent)file:", status); + fileno_movingFileB = fileno_movingFileA; + TEST_CASE(int status = sceKernelRename(movingFileC, yeetFile); + status == 0 && get_fileno(yeetFile) == fileno_movingFileC, "Moved", "Not moved", "file->(nonexistent)file:", status); + ino_t fileno_movingFileYeet = fileno_movingFileC; + Log("fileno of: yeetFile:\t", fileno_movingFileYeet); + + TEST_CASE(int status = sceKernelRename(movingDirectoryA, movingDirectoryB); + status == 0 && get_fileno(movingDirectoryB) == fileno_movingDirectoryA, "Moved", "Not moved", "dir->(existing)dir:", status); + fileno_movingDirectoryB = fileno_movingDirectoryA; + TEST_CASE(int status = sceKernelRename(movingDirectoryC, yeetDir); + status == 0 && get_fileno(yeetDir) == fileno_movingDirectoryC, "Moved", "Not moved", "dir->(nonexistent)dir:", status); + ino_t fileno_movingDirYeet = fileno_movingDirectoryC; + Log("fileno of: yeetDir:\t", fileno_movingDirYeet); + + // no change in folder structure + TEST_CASE(int status = sceKernelRename(yeetFile, yeetDir); errno == EISDIR, "Not moved", "Moved", "file->(existent)dir:", status); + // no change either + TEST_CASE(int status = sceKernelRename(yeetDir, yeetFile); errno == ENOTDIR, "Not moved", "Moved", "dir->(existent)file:", status); + TEST_CASE(int status = sceKernelRename(yeetFile, "/data/therapist/moves/yeet_dir/yeeee"); + status == 0 && get_fileno("/data/therapist/moves/yeet_dir/yeeee") == fileno_movingFileYeet, "Moved", "Not moved", + "file->(into existent)dir:", status); + + // move empty to not empty dir, no change + sceKernelMkdir(movingDirectoryD, 0777); + TEST_CASE(int status = sceKernelRename(movingDirectoryD, yeetDir); + errno == ENOTEMPTY && get_fileno(yeetDir) == fileno_movingDirYeet, "Not moved", "Moved", "empty dir->not empty dir:", status); + // not empty to empty, changed + TEST_CASE(int status = sceKernelRename(yeetDir, movingDirectoryD); + status == 0 && get_fileno(movingDirectoryD) == fileno_movingDirYeet, "Moved", "Not moved", "not empty dir->empty dir:", status); + fileno_movingDirectoryD = fileno_movingDirYeet; + + /// + /// Open fd abuse (moving/removing files with open fd) + /// + + Log(); + Log("\t<<<< Open fd abuse (moving/removing files with open fd) >>>>"); + Log(); + + const char* abused_file = "/data/therapist/abuse.txt"; + const char* teststring1 = "0123456789\r\n"; + const char* teststring2 = "9876543210\r\n"; + const char* readback_string = "0123456789\r\n9876543210\r\n"; + int64_t readback_string_len = strlen(readback_string); + char* abused_buffer[256] {0}; + + touch(abused_file); + int abused_fd = sceKernelOpen(abused_file, O_RDWR, 0777); + auto abused_fileno = get_fileno(abused_file); + + if (abused_fileno == 0) LogError("File not created"); + TEST_CASE(abused_fd >= 0, "Test file opened", "Test file not opened", "status =", abused_fd); + + if (int bw = sceKernelWrite(abused_fd, teststring1, strlen(teststring1)); bw < 0) LogError("Didn't write the whole string 1:", bw, "written"); + TEST_CASE(int status = sceKernelUnlink(abused_file); status == 0, "File", "File not", "unlinked ( status =", status, ")"); + if (get_fileno(abused_file) != 0) LogError("File not unlinked"); + + if (int bw = sceKernelWrite(abused_fd, teststring2, strlen(teststring2)); bw < 0) LogError("Didn't write the whole string 2:", bw, "written"); + if (int lsr = sceKernelLseek(abused_fd, 0, 0); lsr != 0) LogError("Can't lseek:", lsr); + if (int br = sceKernelRead(abused_fd, abused_buffer, 256); br < 0) LogError("Didn't read the whole string:", br, "read"); + TEST_CASE(memcmp(abused_buffer, readback_string, readback_string_len) == 0, "Readback string is correct", "Readback string is incorrect", ""); + + Log("fstat() Fileno before removal =", abused_fileno, "after =", get_fileno(abused_fd)); + Log("stat() after removal =", exists(abused_file)); + + if (int status = sceKernelClose(abused_fd); status != 0) LogError("File didn't close properly ( status =", status, ")"); + + struct OrbisKernelStat ost; + Log(sceKernelStat("/download0", &ost)); + Log(sceKernelMkdir("/download0/temp/", 0777)); +} + +bool TestFileOps(const char* path) { + LogTest("Testing file operations on [", path, "]"); + OrbisKernelStat st {}; + int _errno = 0; + int fd = -1; + // shhh, don't spoil it yet + if (sceKernelStat(path, &st) > -1) sceKernelUnlink(path); + + ResetErrorCounter(); + errno = 0; + TEST_CASE(sceKernelStat(path, &st) < 0, "Stat failed on nonexistent file", "Stat'd nonexistent file", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(sceKernelTruncate(path, 0) < 0, "Truncate to 0 failed on nonexistent file", "Truncated nonexistent file to 0", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(sceKernelTruncate(path, 10) < 0, "Truncate to 10 failed on nonexistent file", "Truncated nonexistent file to 10", "( errno =", errno, ")"); + + errno = 0; + TEST_CASE(fd = sceKernelOpen(path, 0x2 | 0x200, 0777); fd > -1, "File opened", "Can't open file", "[", path, "]", "( errno =", errno, ")"); + if (fd < 0) return false; + + // expand to 10 characters + errno = 0; + TEST_CASE(sceKernelFtruncate(fd, 10) == 0, "File expanded", "File not expanded", "( errno =", errno, ")"); + errno = 0; + // new size + TEST_CASE(int news = GetSize(fd); news == 10, "File resized", "File not resized", "(current size:", news, "should be:", 10, ") ( errno =", errno, ")"); + errno = 0; + // truncating up doesn't change file ptr + TEST_CASE(int newp = sceKernelLseek(fd, 0, 1); newp == 0, "ptr is valid", "ptr is invalid", "(lseek is", newp, "should be", 0, ") ( errno =", errno, ")"); + + char readbuffer[256]; + + const char teststr[] = "If you can read this, unused gibberish"; + auto teststr_len = strlen(teststr); + + // write test string + errno = 0; + TEST_CASE(int bw = sceKernelWrite(fd, teststr, teststr_len); + bw == teststr_len, "Write successful", "Write failed", "(Written:", bw, ") should write", teststr_len, "( errno =", errno, ")"); + // check ptr after writing + errno = 0; + TEST_CASE(int curp = sceKernelLseek(fd, 0, 1); + curp == teststr_len, "ptr is valid", "ptr is invalid", "(lseek is", curp, "should be:", teststr_len, ") ( errno =", errno, ")"); + // return to origin + errno = 0; + TEST_CASE(int curp = sceKernelLseek(fd, 0, 0); curp == 0, "ok:", "fail:", "origin+0 (lseek is", curp, "should be:", 0, ") ( errno =", errno, ")"); + errno = 0; + memset(readbuffer, 0, 256); + TEST_CASE(int br = sceKernelRead(fd, readbuffer, 256); + br == teststr_len, "Read successful", "Read failed", "(Read:", br, "should read:", teststr_len, ") ( errno =", errno, ")"); + Log("\t", readbuffer); + errno = 0; + // check lseek after reading + TEST_CASE(int curp = sceKernelLseek(fd, 0, 1); + curp == teststr_len, "ptr is valid", "ptr is invalid", "(lseek is", curp, "should be:", teststr_len, ") ( errno =", errno, ")"); + + // truncate to save only the beginning + errno = 0; + TEST_CASE(sceKernelFtruncate(fd, 20) == 0, "File truncated", "File not truncated", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int news = GetSize(path); news == 20, "File resized", "File not resized", "(current size:", news, "should be:", 20, ") ( errno =", errno, ")"); + errno = 0; + TEST_CASE(int newp = sceKernelLseek(fd, 0, 1); newp == 38, "file pointer not changed after resizing", "file ptr changed after resizing", "(lseek is", newp, + "should be", 38, ") ( errno =", errno, ")"); + + // overwrite 2nd half of the string + const char teststr2[] = "xxxxxxxxxxxxxxxxxxxx, remember to drink some water. This is saved for later."; + auto teststr2_len = strlen(teststr2); + errno = 0; + // lseek to the end of the file + TEST_CASE(int newp = sceKernelLseek(fd, 0, 2); newp == 20, "ok:", "fail:", "end+0 (lseek is", newp, "should be", 20, ") ( errno =", errno, ")"); + errno = 0; + // write the other half + TEST_CASE(int bw = sceKernelWrite(fd, teststr2 + 20, teststr2_len - 20); bw == teststr2_len - 20, "2-nd write successful", "2-nd write failed", + "(Written:", bw, ") should write", teststr2_len - 20, "( errno =", errno, ")"); + errno = 0; + // good advice + TEST_CASE(int curp = sceKernelLseek(fd, 0, 0); curp == 0, "ok:", "fail:", "origin+0 (lseek is", curp, "should be:", 0, ") ( errno =", errno, ")"); + errno = 0; + memset(readbuffer, 0, 256); + TEST_CASE(int br = sceKernelRead(fd, readbuffer, 51); + br == 51, "Read successful", "Read failed", "(Read:", br, "should read:", 51, ") ( errno =", errno, ")"); + Log("\t", readbuffer); + // last element + errno = 0; + TEST_CASE(int curp = sceKernelLseek(fd, -24, 2); curp == 52, "ok:", "fail:", "end-24 (lseek is", curp, "should be:", 52, ") ( errno =", errno, ")"); + errno = 0; + memset(readbuffer, 0, 256); + TEST_CASE(int br = sceKernelRead(fd, readbuffer, 256); + br == 24, "Read successful", "Read failed", "(Read:", br, "should read:", 24, ") ( errno =", errno, ")"); + Log("\t", readbuffer); + + // random stuff + // drink + errno = 0; + sceKernelLseek(fd, 0, 0); + TEST_CASE(int curp = sceKernelLseek(fd, 34, 1); curp == 34, "ok:", "fail:", "current+34 (lseek is", curp, "should be:", 34, ") ( errno =", errno, ")"); + memset(readbuffer, 0, 256); + TEST_CASE(int br = sceKernelRead(fd, readbuffer, 5); br == 5, "Read successful", "Read failed", "(Read:", br, "should read:", 5, ") ( errno =", errno, ")"); + Log("\t", readbuffer); + + // water + errno = 0; + TEST_CASE(int curp = sceKernelLseek(fd, 6, 1); curp == 45, "ok:", "fail:", "current+6 (lseek is", curp, "should be:", 45, ") ( errno =", errno, ")"); + memset(readbuffer, 0, 256); + TEST_CASE(int br = sceKernelRead(fd, readbuffer, 5); br == 5, "Read successful", "Read failed", "(Read:", br, "should read:", 5, ") ( errno =", errno, ")"); + Log("\t", readbuffer); + // remember + TEST_CASE(int curp = sceKernelLseek(fd, -28, 1); curp == 22, "ok:", "fail:", "current-28 (lseek is", curp, "should be:", 22, ") ( errno =", errno, ")"); + memset(readbuffer, 0, 256); + TEST_CASE(int br = sceKernelRead(fd, readbuffer, 8); br == 8, "Read successful", "Read failed", "(Read:", br, "should read:", 8, ") ( errno =", errno, ")"); + Log("\t", readbuffer); + + // OOB tests + // TLDR - outcoming -OOB results in EINVAL, doesn't change ptr. +OOB is a fair game + errno = 0; + // absolute, 2137 + TEST_CASE(int curp = sceKernelLseek(fd, 2137, 0); + curp == 2137, "ok:", "fail:", "origin+2137 (OOB) (lseek is", curp, "should be:", 2137, ") ( errno =", errno, ")"); + errno = 0; + // error, no change in ptr + TEST_CASE(sceKernelLseek(fd, -2137, 0) < 0 && errno == 22, "ok:", "fail:", "origin-2137 (OOB) (errno should be 22 - EINVAL) ( errno =", errno, ")"); + errno = 0; + // n to the front of current ptr, 2137+2137 + TEST_CASE(int curp = sceKernelLseek(fd, 2137, 1); + curp == 2137 * 2, "ok:", "fail:", "current+2137 (OOB) (lseek is", curp, "should be:", 4274, ") ( errno =", errno, ")"); + errno = 0; + // n to the back of current ptr, 2137+2137-1234 + TEST_CASE(int curp = sceKernelLseek(fd, -1234, 1); + curp == 3040, "ok:", "fail:", "current-1234 (OOB) (lseek is", curp, "should be:", 3040, ") ( errno =", errno, ")"); + errno = 0; + // n to the back of current ptr, into the negative 2137+2137-1234-5000 + TEST_CASE(sceKernelLseek(fd, -5000, 1) < 0 && errno == 22, "ok:", "fail:", "current-5000 (into -OOB) (errno should be 22 - EINVAL) ( errno =", errno, ")"); + errno = 0; + // n after the end, i.e. size+n + auto oob_end_pos = GetSize(fd) + 2137; + TEST_CASE(int curp = sceKernelLseek(fd, 2137, 2); + curp == oob_end_pos, "ok:", "fail:", "end+2137 (OOB) (lseek is", curp, "should be:", oob_end_pos, ") ( errno =", errno, ")"); + errno = 0; + // error, no change in ptr + TEST_CASE(sceKernelLseek(fd, -2137, 2) < 0 && errno == 22, "ok:", "fail:", "end-2137 (OOB) (errno should be 22 - EINVAL) ( errno =", errno, ")"); + + if (0 != sceKernelClose(fd)) LogError("Can't close [", path, "]", "( errno =", errno, ")"); + + return GetErrorCounter() == 0; +} + +int TestOpenFlags(const char* path, int32_t flags, const char* flags_str) { + LogTest("Testing open() on [", path, "] with flags:", to_hex(flags), "(", flags_str, ")"); + + errno = 0; + int fd = sceKernelOpen(path, flags, 0777); + int _errno = errno; + // dummy string, some files need text to be created + sceKernelWrite(fd, "TEST", 4); + if (fd > -1) sceKernelClose(fd); + return _errno; +} + +bool TestFileRW(const char* path, u16 to_test) { + LogTest("Testing r/w on [", path, "]"); + ResetErrorCounter(); + if (to_test < 8) { + LogError("Must test at least 8 bytes!"); + return false; + } + + int fd = -1; + uint8_t* writebuf = new uint8_t[to_test + 2]; + uint8_t* readbuf = new uint8_t[to_test + 2]; + memset(writebuf, 0xFF, to_test); + memset(readbuf, 0xFF, to_test); + + char tmpchr = 'a'; + u16 cnt = 0; + while (cnt < to_test) { + writebuf[cnt++] = tmpchr; + if (++tmpchr == 'z') tmpchr = 'a'; + } + writebuf[cnt++] = '\r'; + writebuf[cnt] = '\n'; + + errno = 0; + fd = sceKernelOpen(path, 0x2, 0777); + TEST_CASE(fd > 0, "Opened", "Can't open", "[", path, "]", "( errno =", errno, ")"); + + if (fd < 0) return false; + + errno = 0; + int bw = sceKernelWrite(fd, writebuf, to_test); + TEST_CASE(bw == to_test, "Write succeded", "Write failed", "(", bw, " bytes written)", "( errno =", errno, ")"); + + struct OrbisKernelStat st {}; + + sceKernelFstat(fd, &st); + // device is always 0 in size + bool not_a_dev = !S_ISCHR(st.st_mode); + auto target_size = st.st_size * not_a_dev; + + errno = 0; + TEST_CASE(int status = sceKernelLseek(fd, 10, 0); status == 10, "", "", "Lseek ORIGIN+10", "val =", status, "should be", 10, "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int status = sceKernelLseek(fd, 1, 1); status == 11, "", "", "Lseek CURRENT+1", "val =", status, "should be", 11, "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int status = sceKernelLseek(fd, -1, 1); status == 10, "", "", "Lseek CURRENT-1", "val =", status, "should be", 10, "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int status = sceKernelLseek(fd, 0, 2); + status == target_size, "", "", "Lseek END", "val =", status, "should be", target_size, "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int status = sceKernelLseek(fd, -1, 2); status == (target_size - (1 * not_a_dev)), "", "", "Lseek END-1", "val =", status, "should be", + target_size - (1 * not_a_dev), "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int status = sceKernelLseek(fd, 1, 2); + status == (target_size + 1), "", "", "Lseek END+1", "val =", status, "should be", target_size + 1, "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int status = sceKernelLseek(fd, 0, 0); status == 0, "", "", "Lseek ORIGIN+0", "val =", status, "should be", 0, "( errno =", errno, ")"); + + errno = 0; + int br = sceKernelRead(fd, readbuf, to_test); + TEST_CASE(br == to_test, "Read succeded", "Read failed", "(", br, " bytes read)", "( errno =", errno, ")") + Log("Buffers are equal? :", (memcmp(writebuf, readbuf, to_test) == 0 ? "yes" : "no")); + + if (bw > 0) Log("Write preview:", right(STR(writebuf[0]), 3), right(STR(writebuf[1]), 3), right(STR(writebuf[2]), 3), right(STR(writebuf[3]), 3)); + if (br > 0) Log("Read preview:", right(STR(readbuf[0]), 3), right(STR(readbuf[1]), 3), right(STR(readbuf[2]), 3), right(STR(readbuf[3]), 3)); + + bool all_zeros = true; + for (u16 i = 0; i < to_test; i++) { + if (readbuf[i] == 0) continue; + all_zeros = false; + break; + } + + Log("Is reading buffer full of zeros? :", (all_zeros ? "yes" : "no")); + + delete[] writebuf; + delete[] readbuf; + + return GetErrorCounter() == 0; +} + +bool TestFileTouch(const char* path) { + LogTest("Cursed file operations: [", path, "]"); + ResetErrorCounter(); + OrbisKernelStat st {}; + + errno = 0; + TEST_CASE(0 == touch(path), "touched", "can'touch", "( errno =", errno, ")"); + + errno = 0; + TEST_CASE(0 == sceKernelStat(path, &st), "stat success", "stat fail", "( errno =", errno, ")") + + return GetErrorCounter() == 0; +} + +bool PrepareCursedFileop(void) { + Obliterate("/data/therapist/tmp_cursed"); + + LogTest("Cursed file operations"); + bool is_ok = true; + + is_ok &= (0 == sceKernelMkdir("/data/therapist/tmp_cursed", 0777)); + is_ok &= (0 == sceKernelMkdir("/data/therapist/tmp_cursed/Aursed", 0777)); + is_ok &= (0 == sceKernelMkdir("/data/therapist/tmp_cursed/Aursed/AAursed", 0777)); + is_ok &= (0 == sceKernelMkdir("/data/therapist/tmp_cursed/Bursed", 0777)); + is_ok &= (0 == sceKernelMkdir("/data/therapist/tmp_cursed/Bursed/BBursed", 0777)); + is_ok &= (0 == sceKernelMkdir("/data/therapist/tmp_cursed/Cursed", 0777)); + is_ok &= (0 == sceKernelMkdir("/data/therapist/tmp_cursed/Cursed/CCursed", 0777)); + + return is_ok; +} + +bool TestStat(fs::path path, const OrbisKernelStat* original) { + LogTest("Testing stat on [", path, "]"); + OrbisKernelStat st {}; + + errno = 0; + TEST_CASE(0 == sceKernelStat(path.c_str(), &st), "Stat successful", "Stat failed", "[", path, "]", "( errno =", errno, ")"); + + if (nullptr == original) { + Log("No comparsiton target provided for [", path, "]. Dumping your own :)"); + PrintStatInfo(&st); + return true; + } + + return StatCmp(&st, original); +} + +bool TestLStat(fs::path path) { + LogTest("Testing lstat on [", path, "]"); + struct stat st {}; + + errno = 0; + + return 0 == lstat(path.c_str(), &st); +} + +bool RegenerateDir(const char* path) { + Obliterate(path); + sceKernelMkdir(path, 0777); + return true; +} + +bool TestDirEnts() { + // + // Setup + // + LogTest("Testing dirents"); + + s32 result = 0; + char prebuffer[DIRENT_BUFFER_SIZE] {0}; + char postbuffer[DIRENT_BUFFER_SIZE] {0}; + + ResetErrorCounter(); + + // + // Creating target directory + // + + errno = 0; + TEST_CASE(sceKernelMkdir("/data/therapist/tmp_dirent", 0777) == 0x80020011, "Creating [ /data/therapist/tmp_dirent ] failed (EEXIST)", + "Created [ /data/therapist/tmp_dirent ] even though it existed before", "( errno =", errno, ")"); + + // + // Test opening first + // + + errno = 0; + int fd = sceKernelOpen("/data/therapist/tmp_dirent", 0, 0777); + TEST_CASE(fd > -1, "open() succeeded on", "can't open", "[ /data/therapist/tmp_dirent ] ( errno =", errno, ")"); + + errno = 0; + TEST_CASE(sceKernelClose(fd) > -1, "Closed", "Can't close", "[ /data/therapist/tmp_dirent ]", "( errno =", errno, ")"); + + // + // Create dummy files, read dir + // + + errno = 0; + int tmp_creat_cnt = 0; + // basically creat(), but it's not available in sceKernel + tmp_creat_cnt += touch("/data/therapist/tmp_dirent/dummy_file_1"); + tmp_creat_cnt += touch("/data/therapist/tmp_dirent/dummy_file_2"); + tmp_creat_cnt += touch("/data/therapist/tmp_dirent/dummy_file_3"); + tmp_creat_cnt += touch("/data/therapist/tmp_dirent/dummy_file_4"); + TEST_CASE(tmp_creat_cnt == 0, "Dummy files (1-4) created", "Can't create dummy files in [ /data/therapist/tmp_dirent ]", "( errno =", errno, ")"); + + errno = 0; + fd = sceKernelOpen("/data/therapist/tmp_dirent", 0, 0777); + TEST_CASE(fd > -1, "open() succeeded on", "can't open", "[ /data/therapist/tmp_dirent ] ( errno =", errno, ")"); + + errno = 0; + TEST_CASE(sceKernelLseek(fd, 0, 0) == 0, "Seek to start", "Seek failed", "(dirents, pre)", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int status = sceKernelGetdirentries(fd, prebuffer, DIRENT_BUFFER_SIZE, nullptr); + status == DIRENT_BUFFER_SIZE, "Direntries read correctly", "Can't get direntries", "( read bytes:", status, ")", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(sceKernelLseek(fd, 0, 0) == 0, "Seek to start", "Seek failed", "(dump, pre)", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int last_reclen = dumpDir(fd); last_reclen == (DIRENT_BUFFER_SIZE - 96), "Read correct amount of data", "Last dirent has incorrect value", + "(dump, pre)", "( last_reclen =", last_reclen, "should be =", DIRENT_BUFFER_SIZE - 96, ")", "( errno =", errno, ")"); + Log("You should see 4 dummy files here"); + + // + // Create more dummy files while dir is open + // + + errno = 0; + tmp_creat_cnt = 0; + tmp_creat_cnt += touch("/data/therapist/tmp_dirent/dummy_file_5"); + tmp_creat_cnt += touch("/data/therapist/tmp_dirent/dummy_file_6"); + tmp_creat_cnt += touch("/data/therapist/tmp_dirent/dummy_file_7"); + tmp_creat_cnt += touch("/data/therapist/tmp_dirent/dummy_file_8"); + TEST_CASE(tmp_creat_cnt == 0, "Dummy files (5-8) created", "Can't create dummy files in [ /data/therapist/tmp_dirent ]", "( errno =", errno, ")"); + + errno = 0; + TEST_CASE(sceKernelLseek(fd, 0, 0) == 0, "Seek to start", "Seek failed", "(dirents, post)", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int status = sceKernelGetdirentries(fd, postbuffer, DIRENT_BUFFER_SIZE, nullptr); + status == DIRENT_BUFFER_SIZE, "Direntries read correctly", "Can't get direntries", "( read bytes:", status, ")", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(sceKernelLseek(fd, 0, 0) == 0, "Seek to start", "Seek failed", "(dump, post)", "( errno =", errno, ")"); + errno = 0; + TEST_CASE(int last_reclen = dumpDir(fd); last_reclen == (DIRENT_BUFFER_SIZE - 192), "Read correct amount of data", "Last dirent has incorrect value", + "(dump, post)", "( last_reclen =", last_reclen, "should be =", DIRENT_BUFFER_SIZE - 192, ")", "( errno =", errno, + ")"); + Log("You should see 8 dummy files here"); + + // + // Cave Johnson. We're done here + // + + errno = 0; + TEST_CASE(sceKernelClose(fd) != -1, "Closed", "Can't close", "[ /data/therapist/tmp_dirent ]", "( errno =", errno, ")"); + + return GetErrorCounter() == 0; + + // // compare before and after opening + + // LogFilesystem("Creating a new file...\n"); + // sceKernelClose(sceKernelOpen("/data/therapist/tmp/2created_after_opening", (int32_t)OpenFlags::Create, 0644)); + + // sceKernelLseek(tmpfd, 0, 0); + // result = sceKernelGetdirentries(tmpfd, buffer, BUFFER_SIZE, nullptr); + // LogFilesystemStatus("Printed entries (%lu bytes)\n", ASSERT(printContents(buffer, result)), result); + + // auto q = memcmp(prebuffer, buffer, BUFFER_SIZE); + // LogFilesystemStatus("Comparing dirent buffers\n", q != 0); + + // sceKernelClose(tmpfd); + + // { + // LogFilesystemStatus("Opening directory again after creating a file\n", Test::TEST); + // tmpfd = sceKernelOpen("/data/therapist/tmp_dirent", 0, 0777); + // LogFilesystemStatus("Printed entries (%lu bytes)\n", ASSERT(printContents(prebuffer, result)), result); + // sceKernelClose(tmpfd); + // } + + // // timing tests + + // char tmpname[24]{0}; + // const char *tftemplate = "/data/therapist/tmp/XD%d"; + + // tmpfd = sceKernelOpen("/data/therapist/tmp_dirent", 0, 0644); + // result = sceKernelGetdirentries(tmpfd, prebuffer, BUFFER_SIZE, nullptr); + + // for (u16 idx = 0; idx < TESTFILES; idx++) + // { + // snprintf(tmpname, 24, tftemplate, idx); + // sceKernelClose(sceKernelOpen(tmpname, (int32_t)OpenFlags::Create, 0644)); + // } + + // for (u16 midx = 0; midx < 10; midx++) + // { + // auto bench_start = std::chrono::high_resolution_clock::now(); + // for (u16 idx = 0; idx < TIMING_ITERATIONS; idx++) + // { + // sceKernelLseek(tmpfd, 0, 0); + // sceKernelGetdirentries(tmpfd, buffer, BUFFER_SIZE, &dirents_index); + // } + // auto bench_end = std::chrono::high_resolution_clock::now(); + // auto duration = std::chrono::duration_cast(bench_end - bench_start).count(); + // unsigned long long avgtime = duration / TIMING_ITERATIONS / 1000; + // LogFilesystem("Refreshing %d files %d times (no changes): avg %llu us/it\n", TESTFILES, TIMING_ITERATIONS, avgtime); + // } + + // // test removing files sequentially + + // { + // result = sceKernelGetdirentries(tmpfd, buffer, BUFFER_SIZE, nullptr); + + // auto bench_start = std::chrono::high_resolution_clock::now(); + // for (u16 idx = 0; idx < TESTFILES - 1; idx++) + // { + // snprintf(tmpname, 24, tftemplate, idx); + // sceKernelUnlink(tmpname); + + // sceKernelLseek(tmpfd, 0, 0); + // sceKernelGetdirentries(tmpfd, buffer, BUFFER_SIZE, &dirents_index); + // } + // auto bench_end = std::chrono::high_resolution_clock::now(); + // unsigned long long duration = std::chrono::duration_cast(bench_end - bench_start).count(); + // LogFilesystem("Removed %d files in %llu us\n", TESTFILES - 1, duration / 1000); + // } + + // sceKernelClose(tmpfd); +} + +bool TestRelatives(fs::path path, bool expected_mountpoint) { + LogTest("Testing relative fileno perception of [", path.string(), "]"); + + const std::string path_str = path.string(); + std::string leafstr = path.filename().string(); + oi::FolderDirent leaf {}; + + s64 leaf_to_self {-2}; + s64 parent_to_leaf {-2}; + s64 leaf_to_parent {-2}; + + u8 ret {}; + + ResetErrorCounter(); + + // + // test self (2 if mountpoint root) + ret = GetDir(path, ".", &leaf); + if (ret <= 0) { + LogError("Cannot get [ . ] from", path_str); + } else + leaf_to_self = leaf.d_fileno; + + // + // test self-parent path (2 if mountpoint root) + ret = GetDir(path, "..", &leaf); + if (ret <= 0) { + LogError("Cannot get [ .. ] from", path_str); + } else + leaf_to_parent = leaf.d_fileno; + + // + // test how parent sees the child + if (!leafstr.empty()) { + ret = GetDir(path.parent_path(), (path == "/" ? "/" : leafstr), &leaf); + if (ret <= 0) { + LogError("Cannot get [", leafstr, "] from", path_str); + } else + parent_to_leaf = leaf.d_fileno; + } + + Log(path_str, "sees itself with fileno=", leaf_to_self); + Log(path_str, "sees its parent with fileno=", leaf_to_parent); + Log(path_str, "is seen with fileno=", parent_to_leaf); + + bool is_mountpoint = leaf_to_self != parent_to_leaf && leaf_to_self != -2 && leaf_to_parent != -2 && parent_to_leaf != -2; + if (expected_mountpoint) { + TEST_CASE(is_mountpoint == expected_mountpoint, "It's a mountpoint", "It's not a mountpoint"); + } else { + Log(is_mountpoint ? "It's a mountpoint" : "It's not a mountpoint"); + } + + return GetErrorCounter() == 0; +} + +bool CompareNormalVsPFS(fs::path path, fs::path leaf, s32 expected_normal_reclen, s32 expected_pfs_reclen) { + oi::PfsDirent pfs_dir {}; + oi::FolderDirent normal_dir {}; + const char* path_str = path.c_str(); + const char* leaf_str = leaf.c_str(); + fs::path q = path / leaf; + const char* path_full_str = q.c_str(); + + ResetErrorCounter(); + + LogTest("Compare Normal and PFS dirent for", path_full_str); + if (GetDir(path, leaf, &normal_dir) == -1) { + LogError("Can't open", path_full_str, "as normal"); + } + if (GetDir(path, leaf, &pfs_dir) == -1) { + LogError("Can't open", path_full_str, "as PFS"); + } + + // return early, there's no point in trying if can't open either + if (GetErrorCounter() != 0) { + return false; + } + + bool expr; + + expr = normal_dir.d_fileno == pfs_dir.d_fileno; + + { + std::stringstream ss; + ss << path_full_str << " fileno " << normal_dir.d_fileno << (expr ? " == " : " != ") << pfs_dir.d_fileno; + TEST_CASE(expr, ss.str(), ss.str()); + } + + expr = normal_dir.d_namlen == pfs_dir.d_namlen; + + { + std::stringstream ss; + ss << path_full_str << " namlen " << STR(normal_dir.d_namlen) << (expr ? " == " : " != ") << pfs_dir.d_namlen; + TEST_CASE(expr, ss.str(), ss.str()); + } + + if (expected_normal_reclen == -1 || expected_pfs_reclen == -1) + expr = normal_dir.d_reclen == pfs_dir.d_reclen; + else + expr = (normal_dir.d_reclen == expected_normal_reclen) && (pfs_dir.d_reclen == expected_pfs_reclen); + + // may not be equal, hence expected values + { + std::stringstream ss; + ss << path_full_str << " reclen " << normal_dir.d_reclen << (expr ? " == " : " != ") << pfs_dir.d_reclen; + TEST_CASE(expr, ss.str(), ss.str()); + } + + expr = memcmp(normal_dir.d_name, pfs_dir.d_name, normal_dir.d_namlen) == 0; + TEST_CASE(expr, "Names are equal", "Names are not equal", "(memcmp)") + + if (!expr) { + // just in case + normal_dir.d_name[255] = 0; + pfs_dir.d_name[255] = 0; + Log("Normal:\t", normal_dir.d_name); + Log("PFS:\t", pfs_dir.d_name); + } + + return GetErrorCounter() == 0; +} +} // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_test/code/fs_test.h b/tests/code/filesystem_test/code/fs_test.h new file mode 100644 index 0000000..0835510 --- /dev/null +++ b/tests/code/filesystem_test/code/fs_test.h @@ -0,0 +1,81 @@ +#ifndef FS_TEST_H +#define FS_TEST_H + +#include "log.h" + +#include +#include +#include +#include +#include + +namespace fs = std::filesystem; + +namespace FS_Test { +#define DIRENT_PFS_BUFFER_SIZE 65536 +#define DIRENT_BUFFER_SIZE 512 + +using s8 = int8_t; +using s16 = int16_t; +using s32 = int32_t; +using s64 = int64_t; + +using u8 = uint8_t; +using u16 = uint16_t; +using u32 = uint32_t; +using u64 = uint64_t; + +namespace OrbisInternals { +typedef struct PfsDirent { + s32 d_fileno; + s32 d_type; + s32 d_namlen; + s32 d_reclen; + char d_name[256]; +} PfsDirent; + +typedef struct FolderDirent { + u32 d_fileno; + u16 d_reclen; + u8 d_type; + u8 d_namlen; + char d_name[256]; +} FolderDirent; +} // namespace OrbisInternals + +void RunTests(void); +s32 TestMovements(const char* from, const char* to); +bool TestRelatives(fs::path path, bool expected_mountpoint = false); +bool CompareNormalVsPFS(fs::path path, fs::path leaf, s32 expected_normal_reclen = -1, s32 expected_pfs_reclen = -1); +bool RegenerateDir(const char* path); +bool TestDirEnts(void); +bool TestStat(fs::path path, const OrbisKernelStat* original = nullptr); +bool TestLStat(fs::path path); +bool PrepareCursedFileop(void); +bool TestFileTouch(const char* path); +int TestOpenFlags(const char* path, int32_t flags, const char* flags_str); +bool TestFileRW(const char* path, u16 to_test); +bool TestFileOps(const char* path); + +bool StatCmp(const OrbisKernelStat* lhs, const OrbisKernelStat* rhs); + +u16 dumpDirRecursive(fs::path path, int depth = 0); +u16 dumpDir(int fd); + +void PrintStatInfo(const struct stat* info); +void PrintStatInfo(const OrbisKernelStat* info); +s8 GetDir(fs::path path, fs::path leaf, OrbisInternals::FolderDirent* dirent); +s8 GetDir(fs::path path, fs::path leaf, OrbisInternals::PfsDirent* dirent); + +std::string file_mode(OrbisKernelMode mode); +ino_t get_fileno(const char* path); +ino_t get_fileno(int fd); +void Obliterate(const char* path); +void ElEsDashElAy(const char* path); +int32_t touch(const char* path); +off_t GetSize(const char* path); +off_t GetSize(int fd); +int exists(const char* path); + +} // namespace FS_Test +#endif // FS_TEST_H diff --git a/tests/code/filesystem_test/code/fs_test_tools.cpp b/tests/code/filesystem_test/code/fs_test_tools.cpp new file mode 100644 index 0000000..b399422 --- /dev/null +++ b/tests/code/filesystem_test/code/fs_test_tools.cpp @@ -0,0 +1,520 @@ +#include "fs_test.h" + +#include +#include +#include +#include +#include +#include + +namespace FS_Test { +namespace oi = OrbisInternals; + +off_t GetSize(int fd) { + OrbisKernelStat st; + if (int status = sceKernelFstat(fd, &st); status < 0) return status; + return st.st_size; +} + +off_t GetSize(const char* path) { + int fd = sceKernelOpen(path, O_RDONLY, 0777); + int size = GetSize(fd); + sceKernelClose(fd); + return size; +} + +int32_t touch(const char* path) { + return sceKernelClose(sceKernelOpen(path, O_RDWR | O_CREAT | O_TRUNC, 0777)); +} + +ino_t get_fileno(int fd) { + struct OrbisKernelStat st {}; + int status = sceKernelFstat(fd, &st); + return (status == 0) * st.st_ino; +} + +ino_t get_fileno(const char* path) { + struct OrbisKernelStat st {}; + int fd = sceKernelOpen(path, O_RDONLY, 0777); + if (fd < 0) return 0; + int status = sceKernelFstat(fd, &st); + sceKernelClose(fd); + return (status == 0) * st.st_ino; +} + +int exists(const char* path) { + struct OrbisKernelStat ost {}; + return sceKernelStat(path, &ost); +} + +void Obliterate(const char* path) { + Log("<< rm -rf [", path, "] >>"); + std::error_code ec {}; + + std::vector entries; + for (auto& p: fs::recursive_directory_iterator(path, fs::directory_options::skip_permission_denied, ec)) + entries.push_back(p.path().string()); + + for (auto it = entries.rbegin(); it != entries.rend(); ++it) { + if (ec) { + LogError("Exception: [", ec.value(), "] :", ec.message()); + ec.clear(); + continue; + } + + const char* pp = it->c_str(); + + // see what sticks + + struct OrbisKernelStat st {0}; + + errno = 0; + sceKernelStat(pp, &st); + if (2 == errno) + // not found, good + continue; + + errno = 0; + if (S_ISDIR(st.st_mode)) sceKernelRmdir(pp); + if (S_ISREG(st.st_mode)) sceKernelUnlink(pp); + + if (errno != 0) LogError("Cannot remove [", pp, "] ( errno =", errno, ")"); + } + + errno = 0; + sceKernelRmdir(path); + + if (!(ENOENT == errno || 0 == errno)) LogError("Cannot remove [", path, "] ( errno =", errno, ")"); + + LogSuccess(">> rm -rf [", path, "] <<"); + return; +} + +void ElEsDashElAy(const char* path) { + Log("<< ls -la [", path, "] >>"); + std::error_code ec {}; + + for (const auto& entry: fs::directory_iterator(path, ec)) { + struct OrbisKernelStat st {}; + std::string pathstr = entry.path().string(); + int fd = 0; + + if (fd = sceKernelOpen(entry.path().c_str(), 0x0, 0777); fd < 0) { + LogError("Cannot open ", entry.path()); + continue; + } + if (sceKernelFstat(fd, &st) == -1) { + LogError("Cannot stat ", entry.path()); + continue; + } + + char timebuf[64]; + std::tm* t = std::localtime(&st.st_mtime); + std::strftime(timebuf, sizeof(timebuf), "%EY-%m-%d %H:%M", t); + + Log(file_mode(st.st_mode), right('0' + to_octal(st.st_mode), 8), std::dec, right(STR(st.st_nlink), 3), st.st_uid, ":", st.st_gid, right(STR(st.st_size), 8), + timebuf, pathstr); + + // uncomment for hex dump + // std::cout << "\t\t"; + // for (auto q = 0; q < sizeof(st); ++q) + // { + // std::cout << " " << std::setw(2) << std::setfill('0') << std::hex << static_cast((reinterpret_cast(&st)[q])); + // if ((q + 1) % 32 == 0) + // std::cout << std::endl + // << "\t\t"; + // } + // std::cout << std::endl; + + if (sceKernelClose(fd) < 0) LogError("Can't close [", path, "]"); + } + + LogSuccess(">> ls -la [", path, "] <<"); + return; +} + +std::string file_mode(OrbisKernelMode mode) { + std::string s; + + if (S_ISREG(mode)) + s += '-'; + else if (S_ISDIR(mode)) + s += 'd'; + else if (S_ISLNK(mode)) + s += 'l'; + else if (S_ISCHR(mode)) + s += 'c'; + else if (S_ISBLK(mode)) + s += 'b'; + else if (S_ISFIFO(mode)) + s += 'p'; + else if (S_ISSOCK(mode)) + s += 's'; + else + s += '?'; + + // owner + s += (mode & S_IRUSR) ? 'r' : '-'; + s += (mode & S_IWUSR) ? 'w' : '-'; + s += (mode & S_IXUSR) ? 'x' : '-'; + + // group + s += (mode & S_IRGRP) ? 'r' : '-'; + s += (mode & S_IWGRP) ? 'w' : '-'; + s += (mode & S_IXGRP) ? 'x' : '-'; + + // other + s += (mode & S_IROTH) ? 'r' : '-'; + s += (mode & S_IWOTH) ? 'w' : '-'; + s += (mode & S_IXOTH) ? 'x' : '-'; + + return s; +} + +u16 dumpDirRecursive(fs::path path, int depth) { + if (0 == depth) { + Log("Listing dirents of [", path.string(), "]"); + } + + std::string depEnt = "|--"; + for (u8 q = 0; q < depth; q++) { + depEnt = depEnt + "|--"; + } + depEnt[depEnt.length() - 1] = '>'; + + // Log(depDir.c_str(), path_str.c_str()); + + s32 fd = sceKernelOpen(path.c_str(), 0, 0777); + if (fd < 0) { + Log("\t\t\t\t", depEnt.c_str(), "//NO ACCESS//"); + return 0; + } + + char* buf = new char[DIRENT_BUFFER_SIZE]; + char* bufptr = buf; + s64 idx = 0; + s64 read_bytes; + + read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); + if (read_bytes <= 0) Log("\t\t\t\t", depEnt.c_str(), "//FAILED//"); + + u16 last_reclen = 0; + + while (read_bytes > 0) { + bufptr = buf; + char* endptr = buf + read_bytes; + while (bufptr < endptr) { + oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; + bufptr += static_cast(entry->d_reclen); + if (entry->d_reclen == 0) { + Log("\t\t\t\t", depEnt.c_str(), "//BAD RECLEN//"); + break; + } + + std::string ftype {}; + switch (entry->d_type) { + default: ftype = std::to_string(entry->d_type); break; + case 2: ftype = "DEV"; break; + case 4: ftype = "DIR"; break; + case 8: ftype = "FIL"; break; + case 10: ftype = "LNK"; break; + case 12: ftype = "SOC"; break; + } + + std::string tree = depEnt + std::string(entry->d_name); + + Log("[", center(ftype, 3), "][", right(STR(entry->d_fileno), 10), "][", right(STR(entry->d_namlen), 3), "][", right(STR(entry->d_reclen), 3), "]", tree); + + last_reclen = entry->d_reclen; + + if (ftype != "DIR") continue; + // preserved: parent and child may percieve each other differently + if (strncmp(".", entry->d_name, 1) == 0) continue; + if (strncmp("..", entry->d_name, 2) == 0) continue; + + std::string child(entry->d_name); + dumpDirRecursive(path / child, depth + 1); + } + // move unread data to the beginning of the buffer + s64 diff = endptr - bufptr; + // shouldn't, but shit happens + if (diff < 0) { + Log("XDXDXDXDXDXDXDXDXDXD ", diff); + diff = 0; + } + // memmove(buf, bufptr, diff); + // read into after saved remainder + // read_bytes = sceKernelGetdirentries(fd, buf + diff, DIRENT_BUFFER_SIZE - diff, &idx) + diff; + read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); + } + + sceKernelClose(fd); + delete[] buf; + + if (0 == depth) { + LogSuccess("Listing dirents of [", path.string(), "]"); + } + return last_reclen; +} + +u16 dumpDir(int fd) { + std::string depEnt = "|->"; + + char* buf = new char[DIRENT_BUFFER_SIZE]; + char* bufptr = buf; + s64 idx = 0; + s64 read_bytes; + + read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); + if (read_bytes <= 0) Log("\t\t\t\t", depEnt.c_str(), "//FAILED//"); + + u16 last_reclen = 0; + + while (read_bytes > 0) { + bufptr = buf; + char* endptr = buf + read_bytes; + while (bufptr < endptr) { + oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; + bufptr += static_cast(entry->d_reclen); + if (entry->d_reclen == 0) { + Log("\t\t\t\t", depEnt.c_str(), "//BAD RECLEN//"); + break; + } + + std::string ftype {}; + switch (entry->d_type) { + default: ftype = std::to_string(entry->d_type); break; + case 2: ftype = "DEV"; break; + case 4: ftype = "DIR"; break; + case 8: ftype = "FIL"; break; + case 10: ftype = "LNK"; break; + case 12: ftype = "SOC"; break; + } + + std::string tree = depEnt + std::string(entry->d_name); + + Log("[", center(ftype, 3), "][", right(STR(entry->d_fileno), 10), "][", right(STR(entry->d_namlen), 3), "][", right(STR(entry->d_reclen), 3), "]", tree); + + last_reclen = entry->d_reclen; + + if (ftype != "DIR") continue; + // preserved: parent and child may percieve each other differently + if (strncmp(".", entry->d_name, 1) == 0) continue; + if (strncmp("..", entry->d_name, 2) == 0) continue; + } + // move unread data to the beginning of the buffer + s64 diff = endptr - bufptr; + // shouldn't, but shit happens + if (diff < 0) { + Log("XDXDXDXDXDXDXDXDXDXD ", diff); + diff = 0; + } + memmove(buf, bufptr, diff); + // read into after saved remainder + read_bytes = sceKernelGetdirentries(fd, buf + diff, DIRENT_BUFFER_SIZE - diff, &idx) + diff; + } + + delete[] buf; + + return last_reclen; +} + +void PrintStatInfo(const struct stat* info) { + Log("stat", "info.st_dev =", info->st_dev); + Log("stat", "info.st_ino =", info->st_ino); + Log("stat", "info.st_mode =", "0" + to_octal(info->st_mode)); + Log("stat", "info.st_nlink =", info->st_nlink); + Log("stat", "info.st_uid =", info->st_uid); + Log("stat", "info.st_gid =", info->st_gid); + Log("stat", "info.st_rdev =", info->st_rdev); + Log("stat", "info.st_atim.tv_sec =", info->st_atim.tv_sec); + Log("stat", "info.st_atim.tv_nsec =", info->st_atim.tv_nsec); + Log("stat", "info.st_mtim.tv_sec =", info->st_mtim.tv_sec); + Log("stat", "info.st_mtim.tv_nsec =", info->st_mtim.tv_nsec); + Log("stat", "info.st_ctim.tv_sec =", info->st_ctim.tv_sec); + Log("stat", "info.st_ctim.tv_nsec =", info->st_ctim.tv_nsec); + Log("stat", "info.st_size = ", info->st_size); + Log("stat", "info.st_blocks =", info->st_blocks); + Log("stat", "info.st_blksize =", info->st_blksize); + Log("stat", "info.st_flags =", info->st_flags); + Log("stat", "info.st_gen =", info->st_gen); + Log("stat", "info.st_birthtim.tv_sec =", info->st_birthtim.tv_sec); + Log("stat", "info.st_birthtim.tv_nsec =", info->st_birthtim.tv_nsec); +} + +void PrintStatInfo(const OrbisKernelStat* info) { + Log("stat", "info.st_dev =", info->st_dev); + Log("stat", "info.st_ino =", info->st_ino); + Log("stat", "info.st_mode =", "0" + to_octal(info->st_mode)); + Log("stat", "info.st_nlink =", info->st_nlink); + Log("stat", "info.st_uid =", info->st_uid); + Log("stat", "info.st_gid =", info->st_gid); + Log("stat", "info.st_rdev =", info->st_rdev); + Log("stat", "info.st_atim.tv_sec =", info->st_atim.tv_sec); + Log("stat", "info.st_atim.tv_nsec =", info->st_atim.tv_nsec); + Log("stat", "info.st_mtim.tv_sec =", info->st_mtim.tv_sec); + Log("stat", "info.st_mtim.tv_nsec =", info->st_mtim.tv_nsec); + Log("stat", "info.st_ctim.tv_sec =", info->st_ctim.tv_sec); + Log("stat", "info.st_ctim.tv_nsec =", info->st_ctim.tv_nsec); + Log("stat", "info.st_size = ", info->st_size); + Log("stat", "info.st_blocks =", info->st_blocks); + Log("stat", "info.st_blksize =", info->st_blksize); + Log("stat", "info.st_flags =", info->st_flags); + Log("stat", "info.st_gen =", info->st_gen); + Log("stat", "info.st_lspare =", info->st_lspare); + Log("stat", "info.st_birthtim.tv_sec =", info->st_birthtim.tv_sec); + Log("stat", "info.st_birthtim.tv_nsec =", info->st_birthtim.tv_nsec); +} + +bool StatCmp(const OrbisKernelStat* lhs, const OrbisKernelStat* rhs) { + if (nullptr == rhs) return true; + + bool was_error = false; + was_error |= lhs->st_mode != rhs->st_mode; + was_error |= lhs->st_nlink != rhs->st_nlink; + was_error |= lhs->st_uid != rhs->st_uid; + was_error |= lhs->st_gid != rhs->st_gid; + was_error |= lhs->st_size != rhs->st_size; + was_error |= lhs->st_blocks != rhs->st_blocks; + was_error |= lhs->st_blksize != rhs->st_blksize; + was_error |= lhs->st_flags != rhs->st_flags; + + Log("---- OrbisKernelStat comparsion ----"); + Log("st_mode \tLHS = ", right("0" + to_octal(lhs->st_mode), 7), "\t|\tRHS = ", right("0" + to_octal(rhs->st_mode), 7)); + // nlink can differ between localizations, constant in RO locations + Log("st_nlink \tLHS = ", right(STR(lhs->st_nlink), 7), "\t|\tRHS = ", right(STR(rhs->st_nlink), 7)); + Log("st_uid \tLHS = ", right(STR(lhs->st_uid), 7), "\t|\tRHS = ", right(STR(rhs->st_uid), 7)); + Log("st_gid \tLHS = ", right(STR(lhs->st_gid), 7), "\t|\tRHS = ", right(STR(rhs->st_gid), 7)); + Log("st_size \tLHS = ", right(STR(lhs->st_size), 7), "\t|\tRHS = ", right(STR(rhs->st_size), 7)); + Log("st_blocks \tLHS = ", right(STR(lhs->st_blocks), 7), "\t|\tRHS = ", right(STR(rhs->st_blocks), 7)); + Log("st_blksize\tLHS = ", right(STR(lhs->st_blksize), 7), "\t|\tRHS = ", right(STR(rhs->st_blksize), 7)); + Log("st_flags \tLHS = ", right(STR(lhs->st_flags), 7), "\t|\tRHS = ", right(STR(rhs->st_flags), 7)); + return !was_error; +} + +s8 GetDir(fs::path path, fs::path leaf, oi::PfsDirent* dirent) { + const char* target_file_name = leaf.c_str(); + const u16 target_file_name_length = leaf.string().size(); + char buffer[DIRENT_PFS_BUFFER_SIZE]; + char* bufptr; + char* bufend; + u64 total_read {0}; + s64 diff; + bool found {false}; + + int fd = sceKernelOpen(path.c_str(), 0, 0777); + if (fd < 0) { + LogError("[PFS] Cannot open [", target_file_name, "]"); + return -1; + } + + s64 read_bytes = sceKernelRead(fd, buffer, DIRENT_PFS_BUFFER_SIZE); + + // redundant + while (read_bytes > 0 && !found) { + total_read += read_bytes; + bufptr = buffer; + bufend = buffer + read_bytes; + + while (bufptr < bufend) { + oi::PfsDirent* entry = (oi::PfsDirent*)bufptr; + + if (entry->d_reclen >= 0) bufptr += static_cast(entry->d_reclen); + + if (entry->d_reclen <= 0) { + LogError("[PFS] //BAD RECLEN// at offset [", std::hex, total_read, "]"); + break; + } + + if (entry->d_namlen == 0) { + LogError("[PFS] //BAD FILENAME// at offset [", std::hex, total_read, "]"); + break; + } + + if (entry->d_namlen != target_file_name_length) continue; + + if (strncmp(entry->d_name, target_file_name, target_file_name_length) == 0) { + memcpy(dirent, entry, entry->d_reclen); + found = true; + break; + } + } + + if (read_bytes < DIRENT_PFS_BUFFER_SIZE) break; + + if (found) break; + + read_bytes = sceKernelRead(fd, buffer, DIRENT_PFS_BUFFER_SIZE); + } + + fd = sceKernelClose(fd); + if (fd < 0) { + LogError("[PFS] Cannot close", target_file_name); + return -1; + } + + return found; +} + +s8 GetDir(fs::path path, fs::path leaf, oi::FolderDirent* dirent) { + const char* target_file_name = leaf.c_str(); + const u16 target_file_name_length = leaf.string().size(); + char buffer[DIRENT_BUFFER_SIZE]; + char* bufptr; + char* bufend; + u64 total_read {0}; + s64 diff; + bool found {false}; + + int fd = sceKernelOpen(path.c_str(), 0, 0777); + if (fd < 0) { + LogError("[Normal] Cannot open [", target_file_name, "]"); + return -1; + } + + s64 read_bytes = sceKernelGetdirentries(fd, buffer, DIRENT_BUFFER_SIZE, nullptr); + + // redundant + while (read_bytes > 0 && !found) { + total_read += read_bytes; + bufptr = buffer; + bufend = buffer + read_bytes; + + while (bufptr < bufend) { + oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; + bufptr += static_cast(entry->d_reclen); + + if (entry->d_reclen == 0) { + LogError("[Normal] //BAD RECLEN// at offset [", std::hex, total_read, "]"); + break; + } + + if (entry->d_namlen == 0) { + LogError("[Normal] //BAD FILENAME// at offset [", std::hex, total_read, "]"); + break; + } + + if (entry->d_namlen != target_file_name_length) continue; + + if (strncmp(entry->d_name, target_file_name, target_file_name_length) == 0) { + memcpy(dirent, entry, sizeof(oi::FolderDirent)); + found = true; + break; + } + } + + if (found) break; + + // read into after saved remainder + read_bytes = sceKernelGetdirentries(fd, buffer, DIRENT_BUFFER_SIZE, nullptr); + } + + fd = sceKernelClose(fd); + if (fd < 0) { + LogError("[Normal] Cannot close", target_file_name); + return -1; + } + + return found; +} +} // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_test/code/log.cpp b/tests/code/filesystem_test/code/log.cpp new file mode 100644 index 0000000..3381d8d --- /dev/null +++ b/tests/code/filesystem_test/code/log.cpp @@ -0,0 +1,62 @@ +#include "log.h" + +#include +#include + +int error_counter = 0; + +int GetErrorCounter(void) { + return error_counter; +} + +void ResetErrorCounter(void) { + error_counter = 0; +} + +std::ostream& center(std::ostream& os, const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return os << s.substr(0, width); + int left = (width - len) / 2; + int right = width - len - left; + return os << std::string(left, ' ') << s << std::string(right, ' '); +} + +std::ostream& right(std::ostream& os, const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return os << s.substr(0, width); + int left = (width - len); + return os << std::string(left, ' ') << s; +} + +std::string center(const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return s.substr(0, width); + int left = (width - len) / 2; + int right = width - len - left; + return std::string(left, ' ') + s + std::string(right, ' '); +} + +std::string right(const std::string& s, int width) { + int len = (int)s.size(); + if (width <= len) return s.substr(0, width); + int left = (width - len); + return std::string(left, ' ') + s; +} + +std::string to_decimal(int value) { + std::ostringstream oss; + oss << std::dec << value; + return oss.str(); +} + +std::string to_octal(int value) { + std::ostringstream oss; + oss << std::oct << value; + return oss.str(); +} + +std::string to_hex(int value) { + std::ostringstream oss; + oss << std::hex << value; + return oss.str(); +} \ No newline at end of file diff --git a/tests/code/filesystem_test/code/log.h b/tests/code/filesystem_test/code/log.h new file mode 100644 index 0000000..989e5c7 --- /dev/null +++ b/tests/code/filesystem_test/code/log.h @@ -0,0 +1,61 @@ +#pragma once + +#ifndef LOG_H +#define LOG_H + +#include +#include + +#define STR(x) std::to_string(x) + +std::ostream& center(std::ostream& os, const std::string& s, int width); +std::string center(const std::string& s, int width); +std::ostream& right(std::ostream& os, const std::string& s, int width); +std::string right(const std::string& s, int width); +std::string to_decimal(int value); +std::string to_octal(int value); +std::string to_hex(int value); + +template +void LogCustom(const char* fn, const char* msg, Args&&... args) { + std::cout << "[" << center(fn, 20) << "] " << msg; + ((std::cout << " " << args), ...); + std::cout << std::endl; +} + +extern int error_counter; + +int GetErrorCounter(void); +void ResetErrorCounter(void); + +#define Log(...) \ + { \ + LogCustom(__FUNCTION__, "[INFO]", ##__VA_ARGS__); \ + } + +#define LogTest(...) \ + { \ + LogCustom(__FUNCTION__, "\033[34;1m[TEST_CASE]\033[0m", ##__VA_ARGS__); \ + } + +#define LogError(...) \ + { \ + error_counter++; \ + LogCustom(__FUNCTION__, "\033[31;1m[FAIL]\033[0m", ##__VA_ARGS__, "( " __FILE__ ":", __LINE__, ")"); \ + } + +#define LogSuccess(...) \ + { \ + LogCustom(__FUNCTION__, "\033[32;1m[SUCC]\033[0m", ##__VA_ARGS__); \ + } + +#define TEST_CASE(cond, success_str, fail_str, ...) \ + { \ + if (cond) { \ + LogSuccess(success_str, ##__VA_ARGS__); \ + } else { \ + LogError(fail_str, ##__VA_ARGS__); \ + } \ + } + +#endif \ No newline at end of file diff --git a/tests/code/filesystem_test/code/main.cpp b/tests/code/filesystem_test/code/main.cpp new file mode 100644 index 0000000..b8c4823 --- /dev/null +++ b/tests/code/filesystem_test/code/main.cpp @@ -0,0 +1,25 @@ +#include "fs_test.h" +#include "log.h" + +#include + +int main(int ac, char** av) { + // No buffering + setvbuf(stdout, NULL, _IONBF, 0); + + // Log tests start + Log(); + Log("<<<< TESTS START >>>>"); + Log(); + + // Run file system tests + FS_Test::RunTests(); + + // Log tests end + Log(); + Log("<<<< TESTS END >>>>"); + Log(); + + sceSystemServiceLoadExec("EXIT", nullptr); + return 0; +} diff --git a/tests/code/filesystem_test/sce_sys/icon0.png b/tests/code/filesystem_test/sce_sys/icon0.png new file mode 100644 index 0000000000000000000000000000000000000000..20a851ef2f69961d58a10bef99c1b6a8b3e83a15 GIT binary patch literal 251527 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Ⓢ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

aunpH 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 Date: Thu, 19 Feb 2026 13:27:38 +0100 Subject: [PATCH 04/23] dirent code cleanup --- tests/code/filesystem_dirents/CMakeLists.txt | 2 +- .../code/filesystem_dirents/code/fs_test.cpp | 473 ++++++++---------- tests/code/filesystem_dirents/code/fs_test.h | 56 +-- .../filesystem_dirents/code/fs_test_tools.cpp | 466 +---------------- .../{log_01.05.log => log_01.06.log} | 0 5 files changed, 223 insertions(+), 774 deletions(-) rename tests/code/filesystem_dirents/{log_01.05.log => log_01.06.log} (100%) diff --git a/tests/code/filesystem_dirents/CMakeLists.txt b/tests/code/filesystem_dirents/CMakeLists.txt index 3e29653..2a92661 100644 --- a/tests/code/filesystem_dirents/CMakeLists.txt +++ b/tests/code/filesystem_dirents/CMakeLists.txt @@ -4,5 +4,5 @@ link_libraries(SceSystemService) create_pkg(TEST12345 11 00 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST12345 PROPERTIES OO_PKG_TITLE "Enderman") -set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.05") +set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.06") finalize_pkg(TEST12345) diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp index e112b66..a60435f 100644 --- a/tests/code/filesystem_dirents/code/fs_test.cpp +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -8,146 +8,24 @@ #include #include -namespace fs = std::filesystem; - namespace FS_Test { -namespace oi = OrbisInternals; - -void Drop(char* buffer, size_t size) { - std::stringstream out; - for (int b = 1; b <= size; b++) { - out << std::setw(2) << std::hex << (0xFF & static_cast(buffer[b - 1])) << " "; - if ((b % 64) == 0) { - out.flush(); - Log(out.str()); - std::stringstream().swap(out); - } - } - Log(out.str(), "\n"); -} - -bool DropRead(int dir_fd, int dump_fd, char* buffer, size_t size) { - memset(buffer, 0xAA, size); - - s64 tbr = sceKernelRead(dir_fd, buffer, size); - Log("Read got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1)); - - if (tbr < 0) { - LogError("Read finished with error:", tbr); - return false; - } - if (tbr == 0) { - LogSuccess("Read finished"); - return false; - } - - s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); - if (tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes read"); - return true; -} - -bool DropDirents(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) { - memset(buffer, 0xAA, size); - - s64 tbr = sceKernelGetdirentries(dir_fd, buffer, size, idx); - Log("Dirent got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1), "idx =", *idx); - - if (tbr < 0) { - LogError("Dirent finished with error:", tbr); - return false; - } - if (tbr == 0) { - LogSuccess("Dirent finished"); - return false; - } - s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); - if (tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes read"); - return true; -} - -void DumpDirents(int fd, int buffer_size, s64 offset, bool is_pfs = false) { - char* buffer = new char[buffer_size] {0}; - - fs::path read_path = - "/data/enderman/dumps/read_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; - fs::path dirent_path = - "/data/enderman/dumps/dirent_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; - - int read_fd = sceKernelOpen(read_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); - int dirent_fd = sceKernelOpen(dirent_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); - - LogTest("Read", is_pfs ? "PFS" : "normal", "directory, fd =", fd, "size =", buffer_size, "offset =", offset); - u16 max_loops = 0; // 65536 iterations lmao - if (int _tmp = sceKernelLseek(fd, offset, 0); _tmp < 0) LogError("Lseek failed:", _tmp); - while (--max_loops && DropRead(fd, read_fd, buffer, buffer_size)) - ; - if (0 == max_loops) LogError("Aborted"); - - s64 idx = 0; - max_loops = 0; - if (int _tmp = sceKernelLseek(fd, offset, 0); _tmp < 0) LogError("Lseek failed:", _tmp); - while (--max_loops && DropDirents(fd, dirent_fd, buffer, buffer_size, &idx)) - ; - if (0 == max_loops) LogError("Aborted"); +namespace fs = std::filesystem; +namespace oi = OrbisInternals; - sceKernelClose(read_fd); - sceKernelClose(dirent_fd); -} +bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size); +bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx); +void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs = false); void RunTests() { RegenerateDir("/data/enderman"); sceKernelMkdir("/data/enderman/dumps", 0777); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname01", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname02", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname03", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname04", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname05", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname06", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname07", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname08", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname09", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname10", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname11", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname12", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname13", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname14", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname15", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname16", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname17", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname18", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname19", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname10", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname21", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname22", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname23", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname24", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname25", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname26", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname27", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname28", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname29", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname30", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname31", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname32", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname33", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname34", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname35", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname36", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname37", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname38", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname39", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname40", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname41", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname42", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname43", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname44", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname45", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname46", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname47", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname48", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname49", O_CREAT | O_WRONLY | O_TRUNC, 0777)); - sceKernelClose(sceKernelOpen("/data/enderman/filewithaverylongname50", O_CREAT | O_WRONLY | O_TRUNC, 0777)); + std::string nf_path = "/data/enderman/filewithaverylongname"; + char nf_num[4] {0}; + for (u8 idx = 1; idx <= 50; idx++) { + snprintf(nf_num, 4, "%02d", idx); + touch(nf_path + std::string(nf_num)); + } Log("---------------------"); Log("Dump normal directory"); @@ -171,76 +49,76 @@ void RunTests() { Log("LSeek END-100=", sceKernelLseek(fd, -100, 2)); Log("LSeek END-100000=", sceKernelLseek(fd, -100000, 2)); - DumpDirents(fd, 16, 0); - DumpDirents(fd, 16, 7); - DumpDirents(fd, 16, 47); - DumpDirents(fd, 16, 123); - DumpDirents(fd, 16, 128); - DumpDirents(fd, 23, 0); - DumpDirents(fd, 23, 7); - DumpDirents(fd, 23, 47); - DumpDirents(fd, 23, 123); - DumpDirents(fd, 23, 128); - DumpDirents(fd, 64, 0); - DumpDirents(fd, 64, 7); - DumpDirents(fd, 64, 47); - DumpDirents(fd, 64, 123); - DumpDirents(fd, 64, 128); - DumpDirents(fd, 123, 0); - DumpDirents(fd, 123, 7); - DumpDirents(fd, 123, 47); - DumpDirents(fd, 123, 123); - DumpDirents(fd, 123, 128); - DumpDirents(fd, 128, 0); - DumpDirents(fd, 128, 7); - DumpDirents(fd, 128, 47); - DumpDirents(fd, 128, 123); - DumpDirents(fd, 128, 128); - DumpDirents(fd, 199, 0); - DumpDirents(fd, 199, 7); - DumpDirents(fd, 199, 47); - DumpDirents(fd, 199, 123); - DumpDirents(fd, 199, 128); - DumpDirents(fd, 256, 0); - DumpDirents(fd, 256, 7); - DumpDirents(fd, 256, 47); - DumpDirents(fd, 256, 123); - DumpDirents(fd, 256, 128); - DumpDirents(fd, 512, 0); - DumpDirents(fd, 512, 7); - DumpDirents(fd, 512, 47); - DumpDirents(fd, 512, 123); - DumpDirents(fd, 512, 128); - DumpDirents(fd, 567, 0); - DumpDirents(fd, 567, 7); - DumpDirents(fd, 567, 47); - DumpDirents(fd, 567, 123); - DumpDirents(fd, 567, 128); - DumpDirents(fd, 999, 0); - DumpDirents(fd, 999, 7); - DumpDirents(fd, 999, 47); - DumpDirents(fd, 999, 123); - DumpDirents(fd, 999, 128); - DumpDirents(fd, 1024, 0); - DumpDirents(fd, 1024, 7); - DumpDirents(fd, 1024, 47); - DumpDirents(fd, 1024, 123); - DumpDirents(fd, 1024, 128); - DumpDirents(fd, 1555, 0); - DumpDirents(fd, 1555, 7); - DumpDirents(fd, 1555, 47); - DumpDirents(fd, 1555, 123); - DumpDirents(fd, 1555, 128); - DumpDirents(fd, 2048, 0); - DumpDirents(fd, 2048, 7); - DumpDirents(fd, 2048, 47); - DumpDirents(fd, 2048, 123); - DumpDirents(fd, 2048, 128); - DumpDirents(fd, 2123, 0); - DumpDirents(fd, 2123, 7); - DumpDirents(fd, 2123, 47); - DumpDirents(fd, 2123, 123); - DumpDirents(fd, 2123, 128); + DumpDirectory(fd, 16, 0); + DumpDirectory(fd, 16, 7); + DumpDirectory(fd, 16, 47); + DumpDirectory(fd, 16, 123); + DumpDirectory(fd, 16, 128); + DumpDirectory(fd, 23, 0); + DumpDirectory(fd, 23, 7); + DumpDirectory(fd, 23, 47); + DumpDirectory(fd, 23, 123); + DumpDirectory(fd, 23, 128); + DumpDirectory(fd, 64, 0); + DumpDirectory(fd, 64, 7); + DumpDirectory(fd, 64, 47); + DumpDirectory(fd, 64, 123); + DumpDirectory(fd, 64, 128); + DumpDirectory(fd, 123, 0); + DumpDirectory(fd, 123, 7); + DumpDirectory(fd, 123, 47); + DumpDirectory(fd, 123, 123); + DumpDirectory(fd, 123, 128); + DumpDirectory(fd, 128, 0); + DumpDirectory(fd, 128, 7); + DumpDirectory(fd, 128, 47); + DumpDirectory(fd, 128, 123); + DumpDirectory(fd, 128, 128); + DumpDirectory(fd, 199, 0); + DumpDirectory(fd, 199, 7); + DumpDirectory(fd, 199, 47); + DumpDirectory(fd, 199, 123); + DumpDirectory(fd, 199, 128); + DumpDirectory(fd, 256, 0); + DumpDirectory(fd, 256, 7); + DumpDirectory(fd, 256, 47); + DumpDirectory(fd, 256, 123); + DumpDirectory(fd, 256, 128); + DumpDirectory(fd, 512, 0); + DumpDirectory(fd, 512, 7); + DumpDirectory(fd, 512, 47); + DumpDirectory(fd, 512, 123); + DumpDirectory(fd, 512, 128); + DumpDirectory(fd, 567, 0); + DumpDirectory(fd, 567, 7); + DumpDirectory(fd, 567, 47); + DumpDirectory(fd, 567, 123); + DumpDirectory(fd, 567, 128); + DumpDirectory(fd, 999, 0); + DumpDirectory(fd, 999, 7); + DumpDirectory(fd, 999, 47); + DumpDirectory(fd, 999, 123); + DumpDirectory(fd, 999, 128); + DumpDirectory(fd, 1024, 0); + DumpDirectory(fd, 1024, 7); + DumpDirectory(fd, 1024, 47); + DumpDirectory(fd, 1024, 123); + DumpDirectory(fd, 1024, 128); + DumpDirectory(fd, 1555, 0); + DumpDirectory(fd, 1555, 7); + DumpDirectory(fd, 1555, 47); + DumpDirectory(fd, 1555, 123); + DumpDirectory(fd, 1555, 128); + DumpDirectory(fd, 2048, 0); + DumpDirectory(fd, 2048, 7); + DumpDirectory(fd, 2048, 47); + DumpDirectory(fd, 2048, 123); + DumpDirectory(fd, 2048, 128); + DumpDirectory(fd, 2123, 0); + DumpDirectory(fd, 2123, 7); + DumpDirectory(fd, 2123, 47); + DumpDirectory(fd, 2123, 123); + DumpDirectory(fd, 2123, 128); sceKernelClose(fd); @@ -266,74 +144,137 @@ void RunTests() { Log("LSeek END-100=", sceKernelLseek(fd, -100, 2)); Log("LSeek END-100000=", sceKernelLseek(fd, -100000, 2)); - DumpDirents(fd, 16, 0, true); - DumpDirents(fd, 16, 7, true); - DumpDirents(fd, 16, 47, true); - DumpDirents(fd, 16, 123, true); - DumpDirents(fd, 16, 128, true); - DumpDirents(fd, 23, 0, true); - DumpDirents(fd, 23, 7, true); - DumpDirents(fd, 23, 47, true); - DumpDirents(fd, 23, 123, true); - DumpDirents(fd, 23, 128, true); - DumpDirents(fd, 64, 0, true); - DumpDirents(fd, 64, 7, true); - DumpDirents(fd, 64, 47, true); - DumpDirents(fd, 64, 123, true); - DumpDirents(fd, 64, 128, true); - DumpDirents(fd, 123, 0, true); - DumpDirents(fd, 123, 7, true); - DumpDirents(fd, 123, 47, true); - DumpDirents(fd, 123, 123, true); - DumpDirents(fd, 123, 128, true); - DumpDirents(fd, 128, 0, true); - DumpDirents(fd, 128, 7, true); - DumpDirents(fd, 128, 47, true); - DumpDirents(fd, 128, 123, true); - DumpDirents(fd, 128, 128, true); - DumpDirents(fd, 199, 0, true); - DumpDirents(fd, 199, 7, true); - DumpDirents(fd, 199, 47, true); - DumpDirents(fd, 199, 123, true); - DumpDirents(fd, 199, 128, true); - DumpDirents(fd, 256, 0, true); - DumpDirents(fd, 256, 7, true); - DumpDirents(fd, 256, 47, true); - DumpDirents(fd, 256, 123, true); - DumpDirents(fd, 256, 128, true); - DumpDirents(fd, 512, 0, true); - DumpDirents(fd, 512, 7, true); - DumpDirents(fd, 512, 47, true); - DumpDirents(fd, 512, 123, true); - DumpDirents(fd, 512, 128, true); - DumpDirents(fd, 567, 0, true); - DumpDirents(fd, 567, 7, true); - DumpDirents(fd, 567, 47, true); - DumpDirents(fd, 567, 123, true); - DumpDirents(fd, 567, 128, true); - DumpDirents(fd, 999, 0, true); - DumpDirents(fd, 999, 7, true); - DumpDirents(fd, 999, 47, true); - DumpDirents(fd, 999, 123, true); - DumpDirents(fd, 999, 128, true); - DumpDirents(fd, 1024, 0, true); - DumpDirents(fd, 1024, 7, true); - DumpDirents(fd, 1024, 47, true); - DumpDirents(fd, 1024, 123, true); - DumpDirents(fd, 1024, 128, true); - DumpDirents(fd, 65536, 0, true); - DumpDirents(fd, 65536, 7, true); - DumpDirents(fd, 65536, 47, true); - DumpDirents(fd, 65536, 123, true); - DumpDirents(fd, 65536, 128, true); + DumpDirectory(fd, 16, 0, true); + DumpDirectory(fd, 16, 7, true); + DumpDirectory(fd, 16, 47, true); + DumpDirectory(fd, 16, 123, true); + DumpDirectory(fd, 16, 128, true); + DumpDirectory(fd, 23, 0, true); + DumpDirectory(fd, 23, 7, true); + DumpDirectory(fd, 23, 47, true); + DumpDirectory(fd, 23, 123, true); + DumpDirectory(fd, 23, 128, true); + DumpDirectory(fd, 64, 0, true); + DumpDirectory(fd, 64, 7, true); + DumpDirectory(fd, 64, 47, true); + DumpDirectory(fd, 64, 123, true); + DumpDirectory(fd, 64, 128, true); + DumpDirectory(fd, 123, 0, true); + DumpDirectory(fd, 123, 7, true); + DumpDirectory(fd, 123, 47, true); + DumpDirectory(fd, 123, 123, true); + DumpDirectory(fd, 123, 128, true); + DumpDirectory(fd, 128, 0, true); + DumpDirectory(fd, 128, 7, true); + DumpDirectory(fd, 128, 47, true); + DumpDirectory(fd, 128, 123, true); + DumpDirectory(fd, 128, 128, true); + DumpDirectory(fd, 199, 0, true); + DumpDirectory(fd, 199, 7, true); + DumpDirectory(fd, 199, 47, true); + DumpDirectory(fd, 199, 123, true); + DumpDirectory(fd, 199, 128, true); + DumpDirectory(fd, 256, 0, true); + DumpDirectory(fd, 256, 7, true); + DumpDirectory(fd, 256, 47, true); + DumpDirectory(fd, 256, 123, true); + DumpDirectory(fd, 256, 128, true); + DumpDirectory(fd, 512, 0, true); + DumpDirectory(fd, 512, 7, true); + DumpDirectory(fd, 512, 47, true); + DumpDirectory(fd, 512, 123, true); + DumpDirectory(fd, 512, 128, true); + DumpDirectory(fd, 567, 0, true); + DumpDirectory(fd, 567, 7, true); + DumpDirectory(fd, 567, 47, true); + DumpDirectory(fd, 567, 123, true); + DumpDirectory(fd, 567, 128, true); + DumpDirectory(fd, 999, 0, true); + DumpDirectory(fd, 999, 7, true); + DumpDirectory(fd, 999, 47, true); + DumpDirectory(fd, 999, 123, true); + DumpDirectory(fd, 999, 128, true); + DumpDirectory(fd, 1024, 0, true); + DumpDirectory(fd, 1024, 7, true); + DumpDirectory(fd, 1024, 47, true); + DumpDirectory(fd, 1024, 123, true); + DumpDirectory(fd, 1024, 128, true); + DumpDirectory(fd, 65536, 0, true); + DumpDirectory(fd, 65536, 7, true); + DumpDirectory(fd, 65536, 47, true); + DumpDirectory(fd, 65536, 123, true); + DumpDirectory(fd, 65536, 128, true); sceKernelClose(fd); } -bool RegenerateDir(const char* path) { - Obliterate(path); - sceKernelMkdir(path, 0777); +bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size) { + memset(buffer, 0xAA, size); + + s64 tbr = sceKernelRead(dir_fd, buffer, size); + Log("Read got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1)); + + if (tbr < 0) { + LogError("Read finished with error:", tbr); + return false; + } + if (tbr == 0) { + LogSuccess("Read finished"); + return false; + } + + s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); + if (tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes read"); + return true; +} + +bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) { + memset(buffer, 0xAA, size); + + s64 tbr = sceKernelGetdirentries(dir_fd, buffer, size, idx); + Log("Dirent got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1), "idx =", *idx); + + if (tbr < 0) { + LogError("Dirent finished with error:", tbr); + return false; + } + if (tbr == 0) { + LogSuccess("Dirent finished"); + return false; + } + + s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); + if (tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes read"); return true; } +void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs) { + char* buffer = new char[buffer_size] {0}; + + fs::path read_path = + "/data/enderman/dumps/read_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; + fs::path dirent_path = + "/data/enderman/dumps/dirent_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; + + LogTest("Read", is_pfs ? "PFS" : "normal", "directory, fd =", fd, "size =", buffer_size, "offset =", offset); + + u16 max_loops = 0; // 65536 iterations lmao + int read_fd = sceKernelOpen(read_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); + if (int _tmp = sceKernelLseek(fd, offset, 0); _tmp != offset) LogError("Lseek failed:", _tmp); + while (--max_loops && DumpByRead(fd, read_fd, buffer, buffer_size)) + ; + if (0 == max_loops) LogError("Aborted"); + sceKernelClose(read_fd); + + s64 idx = 0; + max_loops = 0; + int dirent_fd = sceKernelOpen(dirent_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); + if (int _tmp = sceKernelLseek(fd, offset, 0); _tmp != offset) LogError("Lseek failed:", _tmp); + while (--max_loops && DumpByDirent(fd, dirent_fd, buffer, buffer_size, &idx)) + ; + if (0 == max_loops) LogError("Aborted"); + + sceKernelClose(dirent_fd); +} + } // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_dirents/code/fs_test.h b/tests/code/filesystem_dirents/code/fs_test.h index 58a56f7..67af56d 100644 --- a/tests/code/filesystem_dirents/code/fs_test.h +++ b/tests/code/filesystem_dirents/code/fs_test.h @@ -3,16 +3,9 @@ #include "log.h" -#include -#include -#include #include -#include - -namespace fs = std::filesystem; namespace FS_Test { -#define DIRENT_BUFFER_SIZE 512 using s8 = int8_t; using s16 = int16_t; @@ -25,30 +18,6 @@ using u32 = uint32_t; using u64 = uint64_t; namespace OrbisInternals { -enum class OpenFlags : s32 { - ReadOnly = 0x0, - WriteOnly = 0x1, - ReadWrite = 0x2, - NonBlock = 0x4, - Append = 0x8, - Fsync = 0x80, - Sync = 0x80, - Create = 0x200, - Truncate = 0x400, - Excl = 0x800, - Dsync = 0x1000, - Direct = 0x10000, - Directory = 0x20000, -}; - -enum class SeekWhence : s32 { - SeekSet = 0, - SeekCur = 1, - SeekEnd = 2, - // The following two are unsupported on Orbis, with unique error behavior when used. - SeekHole = 3, - SeekData = 4, -}; typedef struct PfsDirent { s32 d_fileno; @@ -67,26 +36,11 @@ typedef struct FolderDirent { } FolderDirent; } // namespace OrbisInternals -void RunTests(void); - -bool RegenerateDir(const char* path); - -bool StatCmp(const OrbisKernelStat* lhs, const OrbisKernelStat* rhs); - -u16 dumpDirRecursive(fs::path path, int depth = 0); -u16 dumpDir(int fd); - -void PrintStatInfo(const struct stat* info); -void PrintStatInfo(const OrbisKernelStat* info); -s8 GetDir(fs::path path, fs::path leaf, OrbisInternals::FolderDirent* dirent); -s8 GetDir(fs::path path, fs::path leaf, OrbisInternals::PfsDirent* dirent); - -std::string file_mode(OrbisKernelMode mode); -void Obliterate(const char* path); -void ElEsDashElAy(const char* path); -int32_t touch(const char* path); -off_t GetSize(const char* path); -off_t GetSize(int fd); +void RunTests(void); +void RegenerateDir(const char* path); +void Obliterate(const char* path); +int32_t touch(const char* path); +int32_t touch(const std::string& path); } // namespace FS_Test #endif // FS_TEST_H diff --git a/tests/code/filesystem_dirents/code/fs_test_tools.cpp b/tests/code/filesystem_dirents/code/fs_test_tools.cpp index 1f3cd64..2b667a3 100644 --- a/tests/code/filesystem_dirents/code/fs_test_tools.cpp +++ b/tests/code/filesystem_dirents/code/fs_test_tools.cpp @@ -1,28 +1,20 @@ #include "fs_test.h" -#include +#include #include -#include -#include #include namespace FS_Test { -namespace oi = OrbisInternals; -off_t GetSize(int fd) { - OrbisKernelStat st; - if (int status = sceKernelFstat(fd, &st); status < 0) return status; - return st.st_size; -} +namespace fs = std::filesystem; +namespace oi = OrbisInternals; -off_t GetSize(const char* path) { - OrbisKernelStat st; - if (int status = sceKernelStat(path, &st); status < 0) return status; - return st.st_size; +int32_t touch(const char* path) { + return sceKernelClose(sceKernelOpen(path, O_CREAT | O_WRONLY | O_TRUNC, 0777)); } -int32_t touch(const char* path) { - return sceKernelClose(sceKernelOpen(path, 0x1 | 0x200 | 0x400, 0777)); +int32_t touch(const std::string& path) { + return sceKernelClose(sceKernelOpen(path.c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0777)); } void Obliterate(const char* path) { @@ -55,447 +47,9 @@ void Obliterate(const char* path) { return; } -void ElEsDashElAy(const char* path) { - Log("<< ls -la [", path, "] >>"); - std::error_code ec {}; - - for (const auto& entry: fs::directory_iterator(path, ec)) { - struct OrbisKernelStat st {}; - std::string pathstr = entry.path().string(); - int fd = 0; - - if (fd = sceKernelOpen(entry.path().c_str(), 0x0, 0777); fd < 0) { - LogError("Cannot open ", entry.path()); - continue; - } - if (sceKernelFstat(fd, &st) == -1) { - LogError("Cannot stat ", entry.path()); - continue; - } - - char timebuf[64]; - std::tm* t = std::localtime(&st.st_mtime); - std::strftime(timebuf, sizeof(timebuf), "%EY-%m-%d %H:%M", t); - - Log(file_mode(st.st_mode), right('0' + to_octal(st.st_mode), 8), std::dec, right(STR(st.st_nlink), 3), st.st_uid, ":", st.st_gid, right(STR(st.st_size), 8), - timebuf, pathstr); - - // uncomment for hex dump - // std::cout << "\t\t"; - // for (auto q = 0; q < sizeof(st); ++q) - // { - // std::cout << " " << std::setw(2) << std::setfill('0') << std::hex << static_cast((reinterpret_cast(&st)[q])); - // if ((q + 1) % 32 == 0) - // std::cout << std::endl - // << "\t\t"; - // } - // std::cout << std::endl; - - if (sceKernelClose(fd) < 0) LogError("Can't close [", path, "]"); - } - - LogSuccess(">> ls -la [", path, "] <<"); - return; -} - -std::string file_mode(OrbisKernelMode mode) { - std::string s; - - if (S_ISREG(mode)) - s += '-'; - else if (S_ISDIR(mode)) - s += 'd'; - else if (S_ISLNK(mode)) - s += 'l'; - else if (S_ISCHR(mode)) - s += 'c'; - else if (S_ISBLK(mode)) - s += 'b'; - else if (S_ISFIFO(mode)) - s += 'p'; - else if (S_ISSOCK(mode)) - s += 's'; - else - s += '?'; - - // owner - s += (mode & S_IRUSR) ? 'r' : '-'; - s += (mode & S_IWUSR) ? 'w' : '-'; - s += (mode & S_IXUSR) ? 'x' : '-'; - - // group - s += (mode & S_IRGRP) ? 'r' : '-'; - s += (mode & S_IWGRP) ? 'w' : '-'; - s += (mode & S_IXGRP) ? 'x' : '-'; - - // other - s += (mode & S_IROTH) ? 'r' : '-'; - s += (mode & S_IWOTH) ? 'w' : '-'; - s += (mode & S_IXOTH) ? 'x' : '-'; - - return s; +void RegenerateDir(const char* path) { + Obliterate(path); + sceKernelMkdir(path, 0777); } -u16 dumpDirRecursive(fs::path path, int depth) { - if (0 == depth) { - Log("Listing dirents of [", path.string(), "]"); - } - - std::string depEnt = "|--"; - for (u8 q = 0; q < depth; q++) { - depEnt = depEnt + "|--"; - } - depEnt[depEnt.length() - 1] = '>'; - - // Log(depDir.c_str(), path_str.c_str()); - - s32 fd = sceKernelOpen(path.c_str(), 0, 511); - if (fd < 0) { - Log("\t\t\t\t", depEnt.c_str(), "//NO ACCESS//"); - return 0; - } - - char* buf = new char[DIRENT_BUFFER_SIZE]; - char* bufptr = buf; - s64 idx = 0; - s64 read_bytes; - - read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); - if (read_bytes <= 0) Log("\t\t\t\t", depEnt.c_str(), "//FAILED//"); - - u16 last_reclen = 0; - - while (read_bytes > 0) { - bufptr = buf; - char* endptr = buf + read_bytes; - while (bufptr < endptr) { - oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; - bufptr += static_cast(entry->d_reclen); - if (entry->d_reclen == 0) { - Log("\t\t\t\t", depEnt.c_str(), "//BAD RECLEN//"); - break; - } - - std::string ftype {}; - switch (entry->d_type) { - default: ftype = std::to_string(entry->d_type); break; - case 2: ftype = "DEV"; break; - case 4: ftype = "DIR"; break; - case 8: ftype = "FIL"; break; - case 10: ftype = "LNK"; break; - case 12: ftype = "SOC"; break; - } - - std::string tree = depEnt + std::string(entry->d_name); - - Log("[", center(ftype, 3), "][", right(STR(entry->d_fileno), 10), "][", right(STR(entry->d_namlen), 3), "][", right(STR(entry->d_reclen), 3), "]", tree); - - last_reclen = entry->d_reclen; - - if (ftype != "DIR") continue; - // preserved: parent and child may percieve each other differently - if (strncmp(".", entry->d_name, 1) == 0) continue; - if (strncmp("..", entry->d_name, 2) == 0) continue; - - std::string child(entry->d_name); - dumpDirRecursive(path / child, depth + 1); - } - // move unread data to the beginning of the buffer - s64 diff = endptr - bufptr; - // shouldn't, but shit happens - if (diff < 0) { - Log("XDXDXDXDXDXDXDXDXDXD ", diff); - diff = 0; - } - // memmove(buf, bufptr, diff); - // read into after saved remainder - // read_bytes = sceKernelGetdirentries(fd, buf + diff, DIRENT_BUFFER_SIZE - diff, &idx) + diff; - read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); - } - - sceKernelClose(fd); - delete[] buf; - - if (0 == depth) { - LogSuccess("Listing dirents of [", path.string(), "]"); - } - return last_reclen; -} - -u16 dumpDir(int fd) { - std::string depEnt = "|->"; - - char* buf = new char[DIRENT_BUFFER_SIZE]; - char* bufptr = buf; - s64 idx = 0; - s64 read_bytes; - - read_bytes = sceKernelGetdirentries(fd, buf, DIRENT_BUFFER_SIZE, &idx); - if (read_bytes <= 0) Log("\t\t\t\t", depEnt.c_str(), "//FAILED//"); - - u16 last_reclen = 0; - - while (read_bytes > 0) { - bufptr = buf; - char* endptr = buf + read_bytes; - while (bufptr < endptr) { - oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; - bufptr += static_cast(entry->d_reclen); - if (entry->d_reclen == 0) { - Log("\t\t\t\t", depEnt.c_str(), "//BAD RECLEN//"); - break; - } - - std::string ftype {}; - switch (entry->d_type) { - default: ftype = std::to_string(entry->d_type); break; - case 2: ftype = "DEV"; break; - case 4: ftype = "DIR"; break; - case 8: ftype = "FIL"; break; - case 10: ftype = "LNK"; break; - case 12: ftype = "SOC"; break; - } - - std::string tree = depEnt + std::string(entry->d_name); - - Log("[", center(ftype, 3), "][", right(STR(entry->d_fileno), 10), "][", right(STR(entry->d_namlen), 3), "][", right(STR(entry->d_reclen), 3), "]", tree); - - last_reclen = entry->d_reclen; - - if (ftype != "DIR") continue; - // preserved: parent and child may percieve each other differently - if (strncmp(".", entry->d_name, 1) == 0) continue; - if (strncmp("..", entry->d_name, 2) == 0) continue; - } - // move unread data to the beginning of the buffer - s64 diff = endptr - bufptr; - // shouldn't, but shit happens - if (diff < 0) { - Log("XDXDXDXDXDXDXDXDXDXD ", diff); - diff = 0; - } - memmove(buf, bufptr, diff); - // read into after saved remainder - read_bytes = sceKernelGetdirentries(fd, buf + diff, DIRENT_BUFFER_SIZE - diff, &idx) + diff; - } - - delete[] buf; - - return last_reclen; -} - -void PrintStatInfo(const struct stat* info) { - Log("stat", "info.st_dev =", info->st_dev); - Log("stat", "info.st_ino =", info->st_ino); - Log("stat", "info.st_mode =", "0" + to_octal(info->st_mode)); - Log("stat", "info.st_nlink =", info->st_nlink); - Log("stat", "info.st_uid =", info->st_uid); - Log("stat", "info.st_gid =", info->st_gid); - Log("stat", "info.st_rdev =", info->st_rdev); - Log("stat", "info.st_atim.tv_sec =", info->st_atim.tv_sec); - Log("stat", "info.st_atim.tv_nsec =", info->st_atim.tv_nsec); - Log("stat", "info.st_mtim.tv_sec =", info->st_mtim.tv_sec); - Log("stat", "info.st_mtim.tv_nsec =", info->st_mtim.tv_nsec); - Log("stat", "info.st_ctim.tv_sec =", info->st_ctim.tv_sec); - Log("stat", "info.st_ctim.tv_nsec =", info->st_ctim.tv_nsec); - Log("stat", "info.st_size = ", info->st_size); - Log("stat", "info.st_blocks =", info->st_blocks); - Log("stat", "info.st_blksize =", info->st_blksize); - Log("stat", "info.st_flags =", info->st_flags); - Log("stat", "info.st_gen =", info->st_gen); - Log("stat", "info.st_birthtim.tv_sec =", info->st_birthtim.tv_sec); - Log("stat", "info.st_birthtim.tv_nsec =", info->st_birthtim.tv_nsec); -} - -void PrintStatInfo(const OrbisKernelStat* info) { - Log("stat", "info.st_dev =", info->st_dev); - Log("stat", "info.st_ino =", info->st_ino); - Log("stat", "info.st_mode =", "0" + to_octal(info->st_mode)); - Log("stat", "info.st_nlink =", info->st_nlink); - Log("stat", "info.st_uid =", info->st_uid); - Log("stat", "info.st_gid =", info->st_gid); - Log("stat", "info.st_rdev =", info->st_rdev); - Log("stat", "info.st_atim.tv_sec =", info->st_atim.tv_sec); - Log("stat", "info.st_atim.tv_nsec =", info->st_atim.tv_nsec); - Log("stat", "info.st_mtim.tv_sec =", info->st_mtim.tv_sec); - Log("stat", "info.st_mtim.tv_nsec =", info->st_mtim.tv_nsec); - Log("stat", "info.st_ctim.tv_sec =", info->st_ctim.tv_sec); - Log("stat", "info.st_ctim.tv_nsec =", info->st_ctim.tv_nsec); - Log("stat", "info.st_size = ", info->st_size); - Log("stat", "info.st_blocks =", info->st_blocks); - Log("stat", "info.st_blksize =", info->st_blksize); - Log("stat", "info.st_flags =", info->st_flags); - Log("stat", "info.st_gen =", info->st_gen); - Log("stat", "info.st_lspare =", info->st_lspare); - Log("stat", "info.st_birthtim.tv_sec =", info->st_birthtim.tv_sec); - Log("stat", "info.st_birthtim.tv_nsec =", info->st_birthtim.tv_nsec); -} - -bool StatCmp(const OrbisKernelStat* lhs, const OrbisKernelStat* rhs) { - bool was_error = false; - was_error |= lhs->st_mode != rhs->st_mode; - was_error |= lhs->st_nlink != rhs->st_nlink; - was_error |= lhs->st_uid != rhs->st_uid; - was_error |= lhs->st_gid != rhs->st_gid; - was_error |= lhs->st_size != rhs->st_size; - was_error |= lhs->st_blocks != rhs->st_blocks; - was_error |= lhs->st_blksize != rhs->st_blksize; - was_error |= lhs->st_flags != rhs->st_flags; - - if (!was_error) return true; - - Log("---- OrbisKernelStat comparsion ----"); - Log("st_mode \tLHS = ", right("0" + to_octal(lhs->st_mode), 7), "\t|\tRHS = ", right("0" + to_octal(rhs->st_mode), 7)); - // nlink can differ between localizations, constant in RO locations - Log("st_nlink \tLHS = ", right(STR(lhs->st_nlink), 7), "\t|\tRHS = ", right(STR(rhs->st_nlink), 7)); - Log("st_uid \tLHS = ", right(STR(lhs->st_uid), 7), "\t|\tRHS = ", right(STR(rhs->st_uid), 7)); - Log("st_gid \tLHS = ", right(STR(lhs->st_gid), 7), "\t|\tRHS = ", right(STR(rhs->st_gid), 7)); - Log("st_size \tLHS = ", right(STR(lhs->st_size), 7), "\t|\tRHS = ", right(STR(rhs->st_size), 7)); - Log("st_blocks \tLHS = ", right(STR(lhs->st_blocks), 7), "\t|\tRHS = ", right(STR(rhs->st_blocks), 7)); - Log("st_blksize\tLHS = ", right(STR(lhs->st_blksize), 7), "\t|\tRHS = ", right(STR(rhs->st_blksize), 7)); - Log("st_flags \tLHS = ", right(STR(lhs->st_flags), 7), "\t|\tRHS = ", right(STR(rhs->st_flags), 7)); - return false; -} - -s8 GetDir(fs::path path, fs::path leaf, oi::PfsDirent* dirent) { - const char* target_file_name = leaf.c_str(); - const u16 target_file_name_length = leaf.string().size(); - char buffer[DIRENT_BUFFER_SIZE]; - char* bufptr; - char* bufend; - u64 total_read {0}; - s64 diff; - bool found {false}; - - int fd = sceKernelOpen(path.c_str(), 0, 511); - if (fd < 0) { - LogError("[PFS] Cannot open [", target_file_name, "]"); - return -1; - } - - s64 read_bytes = sceKernelRead(fd, buffer, DIRENT_BUFFER_SIZE); - - // redundant - while (read_bytes > 0 && !found) { - total_read += read_bytes; - bufptr = buffer; - bufend = buffer + read_bytes; - - while (bufptr < bufend) { - oi::PfsDirent* entry = (oi::PfsDirent*)bufptr; - - if (entry->d_reclen >= 0) bufptr += static_cast(entry->d_reclen); - - if (entry->d_reclen <= 0) { - LogError("[PFS] //BAD RECLEN// at offset [", std::hex, total_read, "]"); - break; - } - - if (entry->d_namlen == 0) { - LogError("[PFS] //BAD FILENAME// at offset [", std::hex, total_read, "]"); - break; - } - - if (entry->d_namlen != target_file_name_length) continue; - - if (strncmp(entry->d_name, target_file_name, target_file_name_length) == 0) { - memcpy(dirent, entry, entry->d_reclen); - found = true; - break; - } - } - - if (read_bytes < DIRENT_BUFFER_SIZE) break; - - if (found) break; - - // move unread data to the beginning of the buffer - diff = bufend - bufptr; - // shouldn't, but shit happens - if (diff < 0) { - LogError("[PFS] Read", -diff, "bytes more than buffer was supposed to have"); - diff = 0; - } - memmove(buffer, bufptr, diff); - // read into after saved remainder - read_bytes = sceKernelRead(fd, buffer + diff, DIRENT_BUFFER_SIZE) + diff; - } - - fd = sceKernelClose(fd); - if (fd < 0) { - LogError("[PFS] Cannot close", target_file_name); - return -1; - } - - return found; -} - -s8 GetDir(fs::path path, fs::path leaf, oi::FolderDirent* dirent) { - const char* target_file_name = leaf.c_str(); - const u16 target_file_name_length = leaf.string().size(); - char buffer[DIRENT_BUFFER_SIZE]; - char* bufptr; - char* bufend; - u64 total_read {0}; - s64 diff; - bool found {false}; - - int fd = sceKernelOpen(path.c_str(), 0, 511); - if (fd < 0) { - LogError("[Normal] Cannot open [", target_file_name, "]"); - return -1; - } - - s64 read_bytes = sceKernelGetdirentries(fd, buffer, DIRENT_BUFFER_SIZE, nullptr); - - // redundant - while (read_bytes > 0 && !found) { - total_read += read_bytes; - bufptr = buffer; - bufend = buffer + read_bytes; - - while (bufptr < bufend) { - oi::FolderDirent* entry = (oi::FolderDirent*)bufptr; - bufptr += static_cast(entry->d_reclen); - - if (entry->d_reclen == 0) { - LogError("[Normal] //BAD RECLEN// at offset [", std::hex, total_read, "]"); - break; - } - - if (entry->d_namlen == 0) { - LogError("[Normal] //BAD FILENAME// at offset [", std::hex, total_read, "]"); - break; - } - - if (entry->d_namlen != target_file_name_length) continue; - - if (strncmp(entry->d_name, target_file_name, target_file_name_length) == 0) { - memcpy(dirent, entry, sizeof(oi::FolderDirent)); - found = true; - break; - } - } - - if (found) break; - - // move unread data to the beginning of the buffer - diff = bufend - bufptr; - // shouldn't, but shit happens - if (diff < 0) { - LogError("[Normal] Read", -diff, "bytes more than buffer was supposed to have"); - diff = 0; - } - // read into after saved remainder - read_bytes = sceKernelGetdirentries(fd, buffer, DIRENT_BUFFER_SIZE, nullptr); - } - - fd = sceKernelClose(fd); - if (fd < 0) { - LogError("[Normal] Cannot close", target_file_name); - return -1; - } - - return found; -} } // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_dirents/log_01.05.log b/tests/code/filesystem_dirents/log_01.06.log similarity index 100% rename from tests/code/filesystem_dirents/log_01.05.log rename to tests/code/filesystem_dirents/log_01.06.log From 3134f8d34661e2137ce1d15e361a215d0b11cdac Mon Sep 17 00:00:00 2001 From: marecl Date: Thu, 19 Feb 2026 14:57:41 +0100 Subject: [PATCH 05/23] Therapist WIP --- .../filesystem_test/{01.31.log => 01.35.log} | 0 tests/code/filesystem_test/CMakeLists.txt | 2 +- tests/code/filesystem_test/code/fs_test.cpp | 315 ++++++++++-------- tests/code/filesystem_test/code/fs_test.h | 8 +- .../filesystem_test/code/fs_test_tools.cpp | 9 +- tests/code/filesystem_test/code/main.cpp | 9 +- 6 files changed, 203 insertions(+), 140 deletions(-) rename tests/code/filesystem_test/{01.31.log => 01.35.log} (100%) diff --git a/tests/code/filesystem_test/01.31.log b/tests/code/filesystem_test/01.35.log similarity index 100% rename from tests/code/filesystem_test/01.31.log rename to tests/code/filesystem_test/01.35.log diff --git a/tests/code/filesystem_test/CMakeLists.txt b/tests/code/filesystem_test/CMakeLists.txt index 91162c4..237750c 100644 --- a/tests/code/filesystem_test/CMakeLists.txt +++ b/tests/code/filesystem_test/CMakeLists.txt @@ -4,5 +4,5 @@ link_libraries(SceSystemService) create_pkg(TEST21370 11 00 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST21370 PROPERTIES OO_PKG_TITLE "Therapist") -set_target_properties(TEST21370 PROPERTIES OO_PKG_APPVER "1.32") +set_target_properties(TEST21370 PROPERTIES OO_PKG_APPVER "1.35") finalize_pkg(TEST21370) diff --git a/tests/code/filesystem_test/code/fs_test.cpp b/tests/code/filesystem_test/code/fs_test.cpp index 5e4b615..d7685f7 100644 --- a/tests/code/filesystem_test/code/fs_test.cpp +++ b/tests/code/filesystem_test/code/fs_test.cpp @@ -2,6 +2,7 @@ #include "fs_constants.h" +#include #include #include #include @@ -12,12 +13,181 @@ #include namespace fs = std::filesystem; - -namespace FS_Test { namespace oi = OrbisInternals; +TEST_GROUP (FilesystemTests) { + void setup() {} + void teardown() {} +}; + +TEST(FilesystemTests, FileOpenTests) { + Log(); + Log("\t<<<< File open tests >>>>"); + Log("\tAcual flag values for Orbis are different from sys/fcntl.h"); + Log("\tNumerical values are correct as of today, macro flags are not"); + Log(); + + RegenerateDir("/data/therapist/tmp_open"); + int status {0}; + int status_errno {0}; + + // No modifiers + // O_RDONLY + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_ro.txt", O_RDONLY, "O_RDONLY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + // O_WRONLY + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wo.txt", O_WRONLY, "O_WRONLY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + // O_RDWR + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rw.txt", O_RDWR, "O_RDWR", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + // O_RDONLY | O_WRONLY | O_RDWR + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rowo.txt", O_RDONLY | O_WRONLY | O_RDWR, "O_RDONLY | O_WRONLY | O_RDWR", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); + UNSIGNED_INT_EQUALS(EINVAL, status_errno); + + // O_TRUNC + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rot.txt", O_TRUNC, "O_RDONLY | O_TRUNC", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wot.txt", O_WRONLY | O_TRUNC, "O_WRONLY | O_TRUNC", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwt.txt", O_RDWR | O_TRUNC, "O_RDWR | O_TRUNC", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + + // O_CREAT + // these create a file + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roc.txt", O_RDONLY | O_CREAT, "O_RDONLY | O_CREAT", &status_errno); + UNSIGNED_INT_EQUALS(0, status); + UNSIGNED_INT_EQUALS(0, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woc.txt", O_WRONLY | O_CREAT, "O_WRONLY | O_CREAT", &status_errno); + UNSIGNED_INT_EQUALS(0, status); + UNSIGNED_INT_EQUALS(0, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwc.txt", O_RDWR | O_CREAT, "O_RDWR | O_CREAT", &status_errno); + UNSIGNED_INT_EQUALS(0, status); + UNSIGNED_INT_EQUALS(0, status_errno); + + // O_CREAT | O_EXCL + // exists, not creating + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roc.txt", O_RDONLY | O_CREAT | O_EXCL, "O_RDONLY | O_CREAT | O_EXCL", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EEXIST, status); + UNSIGNED_INT_EQUALS(EEXIST, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woc.txt", O_WRONLY | O_CREAT | O_EXCL, "O_WRONLY | O_CREAT | O_EXCL", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EEXIST, status); + UNSIGNED_INT_EQUALS(EEXIST, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwc.txt", O_RDWR | O_CREAT | O_EXCL, "O_RDWR | O_CREAT | O_EXCL", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EEXIST, status); + UNSIGNED_INT_EQUALS(EEXIST, status_errno); + + // O_APPEND + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roa.txt", O_RDONLY | O_APPEND, "O_RDONLY | O_APPEND", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woa.txt", O_WRONLY | O_APPEND, "O_WRONLY | O_APPEND", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwa.txt", O_RDWR | O_APPEND, "O_RDWR | O_APPEND", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + + // O_TRUNC | O_APPEND + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rota.txt", O_RDONLY | O_TRUNC | O_APPEND, "O_RDONLY | O_TRUNC | O_APPEND", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wota.txt", O_WRONLY | O_TRUNC | O_APPEND, "O_WRONLY | O_TRUNC | O_APPEND", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwta.txt", O_RDWR | O_TRUNC | O_APPEND, "O_RDWR | O_TRUNC | O_APPEND", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + + // O_DIRECTORY (nonexistent file is a target) + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_ro", O_RDONLY | O_DIRECTORY, "O_RDONLY | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_wo", O_WRONLY | O_DIRECTORY, "O_WRONLY | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rw", O_RDWR | O_DIRECTORY, "O_RDWR | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + + // O_DIRECTORY (existing directory) + status = TestOpenFlags("/data/therapist/tmp_open/", 0 | 0x20000, "O_RDONLY | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(0, status); + status = TestOpenFlags("/data/therapist/tmp_open/", 0x1 | 0x20000, "O_WRONLY | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EISDIR, status); + UNSIGNED_INT_EQUALS(EISDIR, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/", 0x2 | 0x20000, "O_RDWR | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EISDIR, status); + UNSIGNED_INT_EQUALS(EISDIR, status_errno); + + // O_CREAT | O_DIRECTORY (unspecified type, directory) + // these create a file + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rocd", 0 | 0x200 | 0x20000, "O_RDONLY | O_CREAT | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOTDIR, status); + UNSIGNED_INT_EQUALS(ENOTDIR, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_wocd", 0x1 | 0x200 | 0x20000, "O_WRONLY | O_CREAT | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOTDIR, status); + UNSIGNED_INT_EQUALS(ENOTDIR, status_errno); + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rwcd", 0x2 | 0x200 | 0x20000, "O_RDWR | O_CREAT | O_DIRECTORY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOTDIR, status); + UNSIGNED_INT_EQUALS(ENOTDIR, status_errno); + + // No modifiers, RO directory + // O_RDONLY + status = TestOpenFlags("/app0/assets/misc/file.txt", 0, "O_RDONLY", &status_errno); + UNSIGNED_INT_EQUALS(0, status); + UNSIGNED_INT_EQUALS(0, status_errno); + // O_WRONLY + status = TestOpenFlags("/app0/assets/misc/file.txt", 0x1, "O_WRONLY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EROFS, status); + UNSIGNED_INT_EQUALS(EROFS, status_errno); + // O_RDWR + status = TestOpenFlags("/app0/assets/misc/file.txt", 0x2, "O_RDWR", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EROFS, status); + UNSIGNED_INT_EQUALS(EROFS, status_errno); + // O_RDONLY | O_WRONLY | O_RDWR + status = TestOpenFlags("/app0/assets/misc/file.txt", 0 | 0x1 | 0x2, "O_RDONLY | O_WRONLY | O_RDWR", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); + UNSIGNED_INT_EQUALS(EINVAL, status_errno); + + // Obviously bad ones, flags are irrelevant + // #warning Disabled test + status = TestOpenFlags("assets/misc/file.txt", 0, "O_RDONLY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); + UNSIGNED_INT_EQUALS(EINVAL, status_errno); + status = TestOpenFlags("./assets/misc/file.txt", 0, "O_RDONLY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); + UNSIGNED_INT_EQUALS(EINVAL, status_errno); + status = TestOpenFlags("", 0, "O_RDONLY", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); + UNSIGNED_INT_EQUALS(EINVAL, status_errno); + + Log("Edge case: RO+Truncate"); + int __fd = sceKernelOpen("/data/therapist/tmp_open/nonexistent_rot.txt", O_RDONLY | O_TRUNC, 0777); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, __fd); + UNSIGNED_INT_EQUALS(ENOENT, errno); + exists("/data/therapist/tmp_open/nonexistent_rot.txt"); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, __fd); + UNSIGNED_INT_EQUALS(ENOENT, errno); + + Log("Edge case: RO+Truncate"); + __fd = sceKernelOpen("/data/therapist/tmp_open/nonexistent_rota.txt", O_RDONLY | O_TRUNC | O_APPEND, 0777); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, __fd); + UNSIGNED_INT_EQUALS(ENOENT, errno); + exists("/data/therapist/tmp_open/nonexistent_rota.txt"); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, __fd, "hehehe"); + UNSIGNED_INT_EQUALS(ENOENT, errno, "XDXDXD"); + UNSIGNED_INT_EQUALS(0, 1, "qweqweqwe"); +} + void RunTests() { - RegenerateDir("/data/therapist"); Log(); Log("<<<< TEST SUITE STARTING >>>>"); @@ -81,8 +251,8 @@ void RunTests() { Log("\t UID, GID are always 0"); Log(); - ElEsDashElAy("/"); - ElEsDashElAy("/app0"); + // ElEsDashElAy("/"); + // ElEsDashElAy("/app0"); // // Dirents @@ -154,124 +324,6 @@ void RunTests() { TEST_CASE(!TestFileTouch("app0_file.txt"), "Test complete: File not", "Test failed: File", "written to (RO?) curdir"); } - // - // File open tests - // - - Log(); - Log("\t<<<< File open tests >>>>"); - Log("\tAcual flag values for Orbis are different from sys/fcntl.h"); - Log("\tNumerical values are correct as of today, macro flags are not"); - Log(); - - bool file_open_tests_prepared = RegenerateDir("/data/therapist/tmp_open"); // the same conditions - if (file_open_tests_prepared) { - // No modifiers - // O_RDONLY - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_ro.txt", O_RDONLY, "O_RDONLY"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", 2, ")"); - // O_WRONLY - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wo.txt", O_WRONLY, "O_WRONLY"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", 2, ")"); - // O_RDWR - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rw.txt", O_RDWR, "O_RDWR"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", 2, ")"); - // O_RDONLY | O_WRONLY | O_RDWR - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rowo.txt", O_RDONLY | O_WRONLY | O_RDWR, "O_RDONLY | O_WRONLY | O_RDWR"); - _errno == EINVAL, "Pass (EINVAL)", "Fail", "( errno =", _errno, "should be =", 22, ")"); - - // O_TRUNC - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rot.txt", O_TRUNC, "O_RDONLY | O_TRUNC"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wot.txt", O_WRONLY | O_TRUNC, "O_WRONLY | O_TRUNC"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwt.txt", O_RDWR | O_TRUNC, "O_RDWR | O_TRUNC"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - // O_CREAT - // these create a file - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roc.txt", O_RDONLY | O_CREAT, "O_RDONLY | O_CREAT"); - _errno == 0, "Pass", "Fail", "( errno =", _errno, "should be =", 0, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woc.txt", O_WRONLY | O_CREAT, "O_WRONLY | O_CREAT"); - _errno == 0, "Pass", "Fail", "( errno =", _errno, "should be =", 0, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwc.txt", O_RDWR | O_CREAT, "O_RDWR | O_CREAT"); - _errno == 0, "Pass", "Fail", "( errno =", _errno, "should be =", 0, ")"); - // O_CREAT | O_EXCL - // exists, not creating - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roc.txt", O_RDONLY | O_CREAT | O_EXCL, "O_RDONLY | O_CREAT | O_EXCL"); - _errno == 17, "Pass (EEXIST)", "Fail", "( errno =", _errno, "should be =", EEXIST, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woc.txt", O_WRONLY | O_CREAT | O_EXCL, "O_WRONLY | O_CREAT | O_EXCL"); - _errno == 17, "Pass (EEXIST)", "Fail", "( errno =", _errno, "should be =", EEXIST, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwc.txt", O_RDWR | O_CREAT | O_EXCL, "O_RDWR | O_CREAT | O_EXCL"); - _errno == 17, "Pass (EEXIST)", "Fail", "( errno =", _errno, "should be =", EEXIST, ")"); - // O_APPEND - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_roa.txt", O_RDONLY | O_APPEND, "O_RDONLY | O_APPEND"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_woa.txt", O_WRONLY | O_APPEND, "O_WRONLY | O_APPEND"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwa.txt", O_RDWR | O_APPEND, "O_RDWR | O_APPEND"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - // O_TRUNC | O_APPEND - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rota.txt", O_RDONLY | O_TRUNC | O_APPEND, "O_RDONLY | O_TRUNC | O_APPEND"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_wota.txt", O_WRONLY | O_TRUNC | O_APPEND, "O_WRONLY | O_TRUNC | O_APPEND"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rwta.txt", O_RDWR | O_TRUNC | O_APPEND, "O_RDWR | O_TRUNC | O_APPEND"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - // O_DIRECTORY (nonexistent file is a target) - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_ro.txt", O_RDONLY | O_DIRECTORY, "O_RDONLY | O_DIRECTORY"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_wo.txt", O_WRONLY | O_DIRECTORY, "O_WRONLY | O_DIRECTORY"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rw.txt", O_RDWR | O_DIRECTORY, "O_RDWR | O_DIRECTORY"); - _errno == ENOENT, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", ENOENT, ")"); - // O_DIRECTORY (existing directory) - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/", 0 | 0x20000, "O_RDONLY | O_DIRECTORY"); - _errno == 0, "Pass", "Fail", "( errno =", _errno, "should be =", 0, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/", 0x1 | 0x20000, "O_WRONLY | O_DIRECTORY"); - _errno == 21, "Pass (EISDIR)", "Fail", "( errno =", _errno, "should be =", EISDIR, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/", 0x2 | 0x20000, "O_RDWR | O_DIRECTORY"); - _errno == 21, "Pass (EISDIR)", "Fail", "( errno =", _errno, "should be =", EISDIR, ")"); - // O_CREAT | O_DIRECTORY (unspecified type, directory) - // these create a file - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rocd", 0 | 0x200 | 0x20000, "O_RDONLY | O_CREAT | O_DIRECTORY"); - _errno == 20, "Pass (ENOTDIR)", "Fail", "( errno =", _errno, "should be =", ENOTDIR, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_wocd", 0x1 | 0x200 | 0x20000, "O_WRONLY | O_CREAT | O_DIRECTORY"); - _errno == 20, "Pass (ENOTDIR)", "Fail", "( errno =", _errno, "should be =", ENOTDIR, ")"); - TEST_CASE(int _errno = TestOpenFlags("/data/therapist/tmp_open/nonexistent_dir_rwcd", 0x2 | 0x200 | 0x20000, "O_RDWR | O_CREAT | O_DIRECTORY"); - _errno == 20, "Pass (ENOTDIR)", "Fail", "( errno =", _errno, "should be =", ENOTDIR, ")"); - // No modifiers, RO directory - // O_RDONLY - TEST_CASE(int _errno = TestOpenFlags("/app0/assets/misc/file.txt", 0, "O_RDONLY"); - _errno == 0, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", 0, ")"); - // O_WRONLY - TEST_CASE(int _errno = TestOpenFlags("/app0/assets/misc/file.txt", 0x1, "O_WRONLY"); - _errno == 30, "Pass (EROFS)", "Fail", "( errno =", _errno, "should be =", EROFS, ")"); - // O_RDWR - TEST_CASE(int _errno = TestOpenFlags("/app0/assets/misc/file.txt", 0x2, "O_RDWR"); - _errno == 30, "Pass (EROFS)", "Fail", "( errno =", _errno, "should be =", EROFS, ")"); - // O_RDONLY | O_WRONLY | O_RDWR - TEST_CASE(int _errno = TestOpenFlags("/app0/assets/misc/file.txt", 0 | 0x1 | 0x2, "O_RDONLY | O_WRONLY | O_RDWR"); - _errno == EINVAL, "Pass (EINVAL)", "Fail", "( errno =", _errno, "should be =", EINVAL, ")"); - // Obviously bad ones, flags are irrelevant - TEST_CASE(int _errno = TestOpenFlags("assets/misc/file.txt", 0, "O_RDONLY"); - _errno == EINVAL, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", EINVAL, ")"); - TEST_CASE(int _errno = TestOpenFlags("./assets/misc/file.txt", 0, "O_RDONLY"); - _errno == EINVAL, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", EINVAL, ")"); - TEST_CASE(int _errno = TestOpenFlags("", 0, "O_RDONLY"); _errno == EINVAL, "Pass (ENOENT)", "Fail", "( errno =", _errno, "should be =", EINVAL, ")"); - - Log("RO+Truncate is undefined. Testing"); - int __fd = sceKernelOpen("/data/therapist/tmp_open/nonexistent_rot.txt", O_RDONLY | O_TRUNC, 0777); - TEST_CASE(errno == ENOENT, "RO+TRUNC returned correct errno", "RO+TRUNC returned wrong errno", ":", errno, "( should be:", ENOENT, ")"); - TEST_CASE(exists("/data/therapist/tmp_open/nonexistent_rot.txt"); - errno == ENOENT, "RO+TRUNC file not created", "RO+TRUNC file created", "( errno =", errno, "should be =", ENOENT, ")") - - Log("RO+Truncate+Append is undefined. Testing"); - __fd = sceKernelOpen("/data/therapist/tmp_open/nonexistent_rota.txt", O_RDONLY | O_TRUNC | O_APPEND, 0777); - TEST_CASE(errno == ENOENT, "ROTA returned correct errno", "ROTA returned wrong errno", ":", errno, "( should be:", ENOENT, ")"); - TEST_CASE(exists("/data/therapist/tmp_open/nonexistent_rota.txt"); - errno == ENOENT, "ROTA file not created", "ROTA file created", "( errno =", errno, "should be =", ENOENT, ")") - } - // // File ops tests // @@ -695,16 +747,18 @@ bool TestFileOps(const char* path) { return GetErrorCounter() == 0; } -int TestOpenFlags(const char* path, int32_t flags, const char* flags_str) { +int TestOpenFlags(const char* path, int32_t flags, const char* flags_str, int* errno_return) { LogTest("Testing open() on [", path, "] with flags:", to_hex(flags), "(", flags_str, ")"); - errno = 0; - int fd = sceKernelOpen(path, flags, 0777); - int _errno = errno; + errno = 0; + int fd = sceKernelOpen(path, flags, 0777); + if (nullptr != errno_return) *errno_return = errno; + if (fd < 0) return fd; + // dummy string, some files need text to be created sceKernelWrite(fd, "TEST", 4); - if (fd > -1) sceKernelClose(fd); - return _errno; + sceKernelClose(fd); + return 0; } bool TestFileRW(const char* path, u16 to_test) { @@ -1135,5 +1189,4 @@ bool CompareNormalVsPFS(fs::path path, fs::path leaf, s32 expected_normal_reclen } return GetErrorCounter() == 0; -} -} // namespace FS_Test \ No newline at end of file +} \ No newline at end of file diff --git a/tests/code/filesystem_test/code/fs_test.h b/tests/code/filesystem_test/code/fs_test.h index 0835510..69a7454 100644 --- a/tests/code/filesystem_test/code/fs_test.h +++ b/tests/code/filesystem_test/code/fs_test.h @@ -1,6 +1,9 @@ #ifndef FS_TEST_H #define FS_TEST_H +#define UNSIGNED_INT_EQUALS(expected, actual) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, NULLPTR, __FILE__, __LINE__) +#define UNSIGNED_INT_EQUALS_TEXT(expected, actual, text) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, text, __FILE__, __LINE__) + #include "log.h" #include @@ -11,7 +14,6 @@ namespace fs = std::filesystem; -namespace FS_Test { #define DIRENT_PFS_BUFFER_SIZE 65536 #define DIRENT_BUFFER_SIZE 512 @@ -53,7 +55,7 @@ bool TestStat(fs::path path, const OrbisKernelStat* original = nullptr); bool TestLStat(fs::path path); bool PrepareCursedFileop(void); bool TestFileTouch(const char* path); -int TestOpenFlags(const char* path, int32_t flags, const char* flags_str); +int TestOpenFlags(const char* path, int32_t flags, const char* flags_str, int* errno_return = nullptr); bool TestFileRW(const char* path, u16 to_test); bool TestFileOps(const char* path); @@ -73,9 +75,9 @@ ino_t get_fileno(int fd); void Obliterate(const char* path); void ElEsDashElAy(const char* path); int32_t touch(const char* path); +int32_t touch(const std::string& path); off_t GetSize(const char* path); off_t GetSize(int fd); int exists(const char* path); -} // namespace FS_Test #endif // FS_TEST_H diff --git a/tests/code/filesystem_test/code/fs_test_tools.cpp b/tests/code/filesystem_test/code/fs_test_tools.cpp index b399422..29757c8 100644 --- a/tests/code/filesystem_test/code/fs_test_tools.cpp +++ b/tests/code/filesystem_test/code/fs_test_tools.cpp @@ -7,7 +7,6 @@ #include #include -namespace FS_Test { namespace oi = OrbisInternals; off_t GetSize(int fd) { @@ -24,7 +23,11 @@ off_t GetSize(const char* path) { } int32_t touch(const char* path) { - return sceKernelClose(sceKernelOpen(path, O_RDWR | O_CREAT | O_TRUNC, 0777)); + return sceKernelClose(sceKernelOpen(path, O_WRONLY | O_CREAT | O_TRUNC, 0777)); +} + +int32_t touch(const std::string& path) { + return sceKernelClose(sceKernelOpen(path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777)); } ino_t get_fileno(int fd) { @@ -516,5 +519,5 @@ s8 GetDir(fs::path path, fs::path leaf, oi::FolderDirent* dirent) { } return found; -} + } // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_test/code/main.cpp b/tests/code/filesystem_test/code/main.cpp index b8c4823..21be268 100644 --- a/tests/code/filesystem_test/code/main.cpp +++ b/tests/code/filesystem_test/code/main.cpp @@ -1,8 +1,11 @@ #include "fs_test.h" #include "log.h" +#include #include +IMPORT_TEST_GROUP(FilesystemTests); + int main(int ac, char** av) { // No buffering setvbuf(stdout, NULL, _IONBF, 0); @@ -13,7 +16,9 @@ int main(int ac, char** av) { Log(); // Run file system tests - FS_Test::RunTests(); + RegenerateDir("/data/therapist"); + RunTests(); + int result = RUN_ALL_TESTS(ac, av); // Log tests end Log(); @@ -21,5 +26,5 @@ int main(int ac, char** av) { Log(); sceSystemServiceLoadExec("EXIT", nullptr); - return 0; + return result; } From b3e30081efffb3ddd7835f4386c713a6d64623d7 Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Thu, 19 Feb 2026 23:47:05 +0100 Subject: [PATCH 06/23] Refactored some tests to CppUTest --- tests/code/filesystem_dirents/CMakeLists.txt | 2 +- .../code/filesystem_speed_test/CMakeLists.txt | 2 +- tests/code/filesystem_test/CMakeLists.txt | 2 +- tests/code/filesystem_test/code/fs_test.cpp | 292 ++++++++++-------- tests/code/filesystem_test/code/fs_test.h | 1 - 5 files changed, 159 insertions(+), 140 deletions(-) diff --git a/tests/code/filesystem_dirents/CMakeLists.txt b/tests/code/filesystem_dirents/CMakeLists.txt index 2a92661..390fe14 100644 --- a/tests/code/filesystem_dirents/CMakeLists.txt +++ b/tests/code/filesystem_dirents/CMakeLists.txt @@ -2,7 +2,7 @@ project(Enderman VERSION 0.0.1) link_libraries(SceSystemService) -create_pkg(TEST12345 11 00 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") +create_pkg(TEST12345 5 50 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST12345 PROPERTIES OO_PKG_TITLE "Enderman") set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.06") finalize_pkg(TEST12345) diff --git a/tests/code/filesystem_speed_test/CMakeLists.txt b/tests/code/filesystem_speed_test/CMakeLists.txt index f9b641a..81537cd 100644 --- a/tests/code/filesystem_speed_test/CMakeLists.txt +++ b/tests/code/filesystem_speed_test/CMakeLists.txt @@ -2,7 +2,7 @@ project(Amphitheathre VERSION 0.0.1) link_libraries(SceSystemService) -create_pkg(TEST00666 11 00 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") +create_pkg(TEST00666 5 50 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST00666 PROPERTIES OO_PKG_TITLE "Amphitheathre") set_target_properties(TEST00666 PROPERTIES OO_PKG_APPVER "1.02") finalize_pkg(TEST00666) diff --git a/tests/code/filesystem_test/CMakeLists.txt b/tests/code/filesystem_test/CMakeLists.txt index 237750c..e5894ba 100644 --- a/tests/code/filesystem_test/CMakeLists.txt +++ b/tests/code/filesystem_test/CMakeLists.txt @@ -2,7 +2,7 @@ project(Therapist VERSION 0.0.1) link_libraries(SceSystemService) -create_pkg(TEST21370 11 00 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") +create_pkg(TEST21370 5 50 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST21370 PROPERTIES OO_PKG_TITLE "Therapist") set_target_properties(TEST21370 PROPERTIES OO_PKG_APPVER "1.35") finalize_pkg(TEST21370) diff --git a/tests/code/filesystem_test/code/fs_test.cpp b/tests/code/filesystem_test/code/fs_test.cpp index d7685f7..fd98f99 100644 --- a/tests/code/filesystem_test/code/fs_test.cpp +++ b/tests/code/filesystem_test/code/fs_test.cpp @@ -158,7 +158,6 @@ TEST(FilesystemTests, FileOpenTests) { UNSIGNED_INT_EQUALS(EINVAL, status_errno); // Obviously bad ones, flags are irrelevant - // #warning Disabled test status = TestOpenFlags("assets/misc/file.txt", 0, "O_RDONLY", &status_errno); UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); UNSIGNED_INT_EQUALS(EINVAL, status_errno); @@ -169,22 +168,162 @@ TEST(FilesystemTests, FileOpenTests) { UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); UNSIGNED_INT_EQUALS(EINVAL, status_errno); - Log("Edge case: RO+Truncate"); - int __fd = sceKernelOpen("/data/therapist/tmp_open/nonexistent_rot.txt", O_RDONLY | O_TRUNC, 0777); - UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, __fd); - UNSIGNED_INT_EQUALS(ENOENT, errno); - exists("/data/therapist/tmp_open/nonexistent_rot.txt"); - UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, __fd); - UNSIGNED_INT_EQUALS(ENOENT, errno); - - Log("Edge case: RO+Truncate"); - __fd = sceKernelOpen("/data/therapist/tmp_open/nonexistent_rota.txt", O_RDONLY | O_TRUNC | O_APPEND, 0777); - UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, __fd); - UNSIGNED_INT_EQUALS(ENOENT, errno); - exists("/data/therapist/tmp_open/nonexistent_rota.txt"); - UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, __fd, "hehehe"); - UNSIGNED_INT_EQUALS(ENOENT, errno, "XDXDXD"); - UNSIGNED_INT_EQUALS(0, 1, "qweqweqwe"); + // Edge cases - oficial behaviour is undefined + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rot.txt", O_RDONLY | O_TRUNC, "O_RDONLY | O_TRUNC", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + CHECK_TRUE_TEXT(exists("/data/therapist/tmp_open/nonexistent_rot.txt"), "R+TR should error but create a file"); + + status = TestOpenFlags("/data/therapist/tmp_open/nonexistent_rota.txt", O_RDONLY | O_TRUNC | O_APPEND, "O_RDONLY | O_TRUNC | O_APPEND", &status_errno); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOENT, status); + UNSIGNED_INT_EQUALS(ENOENT, status_errno); + CHECK_TRUE_TEXT(exists("/data/therapist/tmp_open/nonexistent_rota.txt"), "R+A+TR should error but create a file"); +} + +TEST(FilesystemTests, FileMovementTests) { + Log(); + Log("\t<<<< Moving files >>>>"); + Log(); + + const char* movingFileA = "/data/therapist/moves/fileA"; + const char* movingFileB = "/data/therapist/moves/fileB"; + const char* movingFileC = "/data/therapist/moves/fileC"; + + const char* movingDirectoryA = "/data/therapist/moves/dirA"; + const char* movingDirectoryB = "/data/therapist/moves/dirB"; + const char* movingDirectoryC = "/data/therapist/moves/dirC"; + const char* movingDirectoryD = "/data/therapist/moves/dirD"; + + Obliterate("/data/therapist/moves"); + CHECK_EQUAL_ZERO(sceKernelMkdir("/data/therapist/moves", 0777)); + CHECK_EQUAL_ZERO(sceKernelMkdir(movingDirectoryA, 0777)); + CHECK_EQUAL_ZERO(sceKernelMkdir(movingDirectoryB, 0777)); + CHECK_EQUAL_ZERO(sceKernelMkdir(movingDirectoryC, 0777)); + CHECK_EQUAL_ZERO(sceKernelMkdir(movingDirectoryD, 0777)); + CHECK_EQUAL_ZERO(touch(movingFileA)); + CHECK_EQUAL_ZERO(touch(movingFileB)); + CHECK_EQUAL_ZERO(touch(movingFileC)); + + ino_t fileno_movingDirectoryA = get_fileno(movingDirectoryA); + ino_t fileno_movingDirectoryB = get_fileno(movingDirectoryB); + ino_t fileno_movingDirectoryC = get_fileno(movingDirectoryC); + ino_t fileno_movingDirectoryD = get_fileno(movingDirectoryD); + ino_t fileno_movingFileA = get_fileno(movingFileA); + ino_t fileno_movingFileB = get_fileno(movingFileB); + ino_t fileno_movingFileC = get_fileno(movingFileC); + + Log("fileno of: movingDirectoryA:\t", fileno_movingDirectoryA); + Log("fileno of: movingDirectoryB:\t", fileno_movingDirectoryB); + Log("fileno of: movingDirectoryC:\t", fileno_movingDirectoryC); + Log("fileno of: movingDirectoryD:\t", fileno_movingDirectoryD); + Log("fileno of: movingFileA:\t", fileno_movingFileA); + Log("fileno of: movingFileB:\t", fileno_movingFileB); + Log("fileno of: movingFileC:\t", fileno_movingFileC); + + const char* yeetFile = "/data/therapist/moves/yeet"; + const char* yeetDir = "/data/therapist/moves/yeet_dir"; + + int status {0}; + // file->(existent)file: + status = sceKernelRename(movingFileA, movingFileB); + CHECK_EQUAL_ZERO(status); + UNSIGNED_LONGS_EQUAL(fileno_movingFileA, get_fileno(movingFileB)); + fileno_movingFileB = fileno_movingFileA; + + // file->(nonexistent)file + status = sceKernelRename(movingFileC, yeetFile); + CHECK_EQUAL_ZERO(status); + UNSIGNED_LONGS_EQUAL(fileno_movingFileC, get_fileno(yeetFile)); + ino_t fileno_movingFileYeet = fileno_movingFileC; + Log("fileno of: yeetFile:\t", fileno_movingFileYeet); + + // dir->(existing)dir + status = sceKernelRename(movingDirectoryA, movingDirectoryB); + CHECK_EQUAL_ZERO(status); + UNSIGNED_LONGS_EQUAL(fileno_movingDirectoryA, get_fileno(movingDirectoryB)); + fileno_movingDirectoryB = fileno_movingDirectoryA; + + // dir->(nonexistent)dir + status = sceKernelRename(movingDirectoryC, yeetDir); + CHECK_EQUAL_ZERO(status); + UNSIGNED_LONGS_EQUAL(fileno_movingDirectoryC, get_fileno(yeetDir)); + fileno_movingDirectoryB = fileno_movingDirectoryA; + ino_t fileno_movingDirYeet = fileno_movingDirectoryC; + Log("fileno of: yeetDir:\t", fileno_movingDirYeet); + + // no change in folder structure + // file->(existent)dir + status = sceKernelRename(yeetFile, yeetDir); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EISDIR, status); + UNSIGNED_INT_EQUALS(EISDIR, errno); + + // no change either + // dir->(existent)file + status = sceKernelRename(yeetDir, yeetFile); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOTDIR, status); + UNSIGNED_INT_EQUALS(ENOTDIR, errno); + // file->(into existent)dir + status = sceKernelRename(yeetFile, "/data/therapist/moves/yeet_dir/yeeee"); + CHECK_EQUAL_ZERO(status); + UNSIGNED_LONGS_EQUAL(fileno_movingFileYeet, get_fileno("/data/therapist/moves/yeet_dir/yeeee")); + + // move empty to not empty dir, no change + // empty dir->not empty dir + status = sceKernelRename(movingDirectoryD, yeetDir); + UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_ENOTEMPTY, status); + UNSIGNED_INT_EQUALS(ENOTEMPTY, errno); + UNSIGNED_LONGS_EQUAL(fileno_movingDirYeet, get_fileno(yeetDir)); + + // not empty to empty, changed + // not empty dir->empty dir + status = sceKernelRename(yeetDir, movingDirectoryD); + CHECK_EQUAL_ZERO(status); + UNSIGNED_LONGS_EQUAL(fileno_movingDirYeet, get_fileno(movingDirectoryD)); + fileno_movingDirectoryD = fileno_movingDirYeet; // just to keep track +} + +TEST(FilesystemTests, FileOpenAbuseTest) { + Log(); + Log("\t<<<< Open fd abuse (moving/removing files with open fd) >>>>"); + Log(); + + const char* abused_file = "/data/therapist/abuse.txt"; + const char* teststring1 = "0123456789\r\n"; + const char* teststring2 = "9876543210\r\n"; + const char* readback_string = "0123456789\r\n9876543210\r\n"; + int64_t readback_string_len = strlen(readback_string); + char* abused_buffer[256] {0}; + + touch(abused_file); + int status {0}; + int abused_fd = sceKernelOpen(abused_file, O_RDWR, 0777); + auto abused_fileno = get_fileno(abused_file); + + CHECK_COMPARE(0, <, abused_fileno); // File not created otherwise + + // write to opened file + status = sceKernelWrite(abused_fd, teststring1, strlen(teststring1)); + LONGLONGS_EQUAL(strlen(teststring1), status); + // remove that file + status = sceKernelUnlink(abused_file); + CHECK_EQUAL_ZERO(status); + // should be unlinked + CHECK_EQUAL_ZERO(get_fileno(abused_file)); // not unlinked if !=0 + + // should be able to r/w to it, inode remains while directory entry is deleted + LONGLONGS_EQUAL(strlen(teststring2), sceKernelWrite(abused_fd, teststring2, strlen(teststring2))); + CHECK_EQUAL_ZERO(sceKernelLseek(abused_fd, 0, 0)); + CHECK_COMPARE_TEXT(sceKernelRead(abused_fd, abused_buffer, 256), >, 0, "XDXDXD"); + CHECK_EQUAL_ZERO(memcmp(abused_buffer, readback_string, readback_string_len)); + + Log("fstat() Fileno before removal =", abused_fileno, "after =", get_fileno(abused_fd)); + Log("stat() after removal =", exists(abused_file)); + + if (int status = sceKernelClose(abused_fd); status != 0) LogError("File didn't close properly ( status =", status, ")"); + + struct OrbisKernelStat ost; + Log(sceKernelStat("/download0", &ost)); + Log(sceKernelMkdir("/download0/temp/", 0777)); } void RunTests() { @@ -479,125 +618,6 @@ void RunTests() { "stat() ( errno =", errno, ", should be", ENAMETOOLONG, ")"); TEST_CASE(int status = unlink(very_long_path); errno == ENAMETOOLONG, "File name too long detected", "Didn't detect file name >255 characters", "unlink() ( errno =", errno, ", should be", ENAMETOOLONG, ")"); - - /// - /// Moving files - /// - - Log(); - Log("\t<<<< Moving files >>>>"); - Log(); - - const char* movingFileA = "/data/therapist/moves/fileA"; - const char* movingFileB = "/data/therapist/moves/fileB"; - const char* movingFileC = "/data/therapist/moves/fileC"; - - const char* movingDirectoryA = "/data/therapist/moves/dirA"; - const char* movingDirectoryB = "/data/therapist/moves/dirB"; - const char* movingDirectoryC = "/data/therapist/moves/dirC"; - const char* movingDirectoryD = "/data/therapist/moves/dirD"; - - Obliterate("/data/therapist/moves"); - sceKernelMkdir("/data/therapist/moves", 0777); - sceKernelMkdir(movingDirectoryA, 0777); - sceKernelMkdir(movingDirectoryB, 0777); - sceKernelMkdir(movingDirectoryC, 0777); - sceKernelMkdir(movingDirectoryD, 0777); - touch(movingFileA); - touch(movingFileB); - touch(movingFileC); - - ino_t fileno_movingDirectoryA = get_fileno(movingDirectoryA); - ino_t fileno_movingDirectoryB = get_fileno(movingDirectoryB); - ino_t fileno_movingDirectoryC = get_fileno(movingDirectoryC); - ino_t fileno_movingDirectoryD = get_fileno(movingDirectoryD); - ino_t fileno_movingFileA = get_fileno(movingFileA); - ino_t fileno_movingFileB = get_fileno(movingFileB); - ino_t fileno_movingFileC = get_fileno(movingFileC); - - Log("fileno of: movingDirectoryA:\t", fileno_movingDirectoryA); - Log("fileno of: movingDirectoryB:\t", fileno_movingDirectoryB); - Log("fileno of: movingDirectoryC:\t", fileno_movingDirectoryC); - Log("fileno of: movingDirectoryD:\t", fileno_movingDirectoryD); - Log("fileno of: movingFileA:\t", fileno_movingFileA); - Log("fileno of: movingFileB:\t", fileno_movingFileB); - Log("fileno of: movingFileC:\t", fileno_movingFileC); - - const char* yeetFile = "/data/therapist/moves/yeet"; - const char* yeetDir = "/data/therapist/moves/yeet_dir"; - - TEST_CASE(int status = sceKernelRename(movingFileA, movingFileB); - status == 0 && get_fileno(movingFileB) == fileno_movingFileA, "Moved", "Not moved", "file->(existent)file:", status); - fileno_movingFileB = fileno_movingFileA; - TEST_CASE(int status = sceKernelRename(movingFileC, yeetFile); - status == 0 && get_fileno(yeetFile) == fileno_movingFileC, "Moved", "Not moved", "file->(nonexistent)file:", status); - ino_t fileno_movingFileYeet = fileno_movingFileC; - Log("fileno of: yeetFile:\t", fileno_movingFileYeet); - - TEST_CASE(int status = sceKernelRename(movingDirectoryA, movingDirectoryB); - status == 0 && get_fileno(movingDirectoryB) == fileno_movingDirectoryA, "Moved", "Not moved", "dir->(existing)dir:", status); - fileno_movingDirectoryB = fileno_movingDirectoryA; - TEST_CASE(int status = sceKernelRename(movingDirectoryC, yeetDir); - status == 0 && get_fileno(yeetDir) == fileno_movingDirectoryC, "Moved", "Not moved", "dir->(nonexistent)dir:", status); - ino_t fileno_movingDirYeet = fileno_movingDirectoryC; - Log("fileno of: yeetDir:\t", fileno_movingDirYeet); - - // no change in folder structure - TEST_CASE(int status = sceKernelRename(yeetFile, yeetDir); errno == EISDIR, "Not moved", "Moved", "file->(existent)dir:", status); - // no change either - TEST_CASE(int status = sceKernelRename(yeetDir, yeetFile); errno == ENOTDIR, "Not moved", "Moved", "dir->(existent)file:", status); - TEST_CASE(int status = sceKernelRename(yeetFile, "/data/therapist/moves/yeet_dir/yeeee"); - status == 0 && get_fileno("/data/therapist/moves/yeet_dir/yeeee") == fileno_movingFileYeet, "Moved", "Not moved", - "file->(into existent)dir:", status); - - // move empty to not empty dir, no change - sceKernelMkdir(movingDirectoryD, 0777); - TEST_CASE(int status = sceKernelRename(movingDirectoryD, yeetDir); - errno == ENOTEMPTY && get_fileno(yeetDir) == fileno_movingDirYeet, "Not moved", "Moved", "empty dir->not empty dir:", status); - // not empty to empty, changed - TEST_CASE(int status = sceKernelRename(yeetDir, movingDirectoryD); - status == 0 && get_fileno(movingDirectoryD) == fileno_movingDirYeet, "Moved", "Not moved", "not empty dir->empty dir:", status); - fileno_movingDirectoryD = fileno_movingDirYeet; - - /// - /// Open fd abuse (moving/removing files with open fd) - /// - - Log(); - Log("\t<<<< Open fd abuse (moving/removing files with open fd) >>>>"); - Log(); - - const char* abused_file = "/data/therapist/abuse.txt"; - const char* teststring1 = "0123456789\r\n"; - const char* teststring2 = "9876543210\r\n"; - const char* readback_string = "0123456789\r\n9876543210\r\n"; - int64_t readback_string_len = strlen(readback_string); - char* abused_buffer[256] {0}; - - touch(abused_file); - int abused_fd = sceKernelOpen(abused_file, O_RDWR, 0777); - auto abused_fileno = get_fileno(abused_file); - - if (abused_fileno == 0) LogError("File not created"); - TEST_CASE(abused_fd >= 0, "Test file opened", "Test file not opened", "status =", abused_fd); - - if (int bw = sceKernelWrite(abused_fd, teststring1, strlen(teststring1)); bw < 0) LogError("Didn't write the whole string 1:", bw, "written"); - TEST_CASE(int status = sceKernelUnlink(abused_file); status == 0, "File", "File not", "unlinked ( status =", status, ")"); - if (get_fileno(abused_file) != 0) LogError("File not unlinked"); - - if (int bw = sceKernelWrite(abused_fd, teststring2, strlen(teststring2)); bw < 0) LogError("Didn't write the whole string 2:", bw, "written"); - if (int lsr = sceKernelLseek(abused_fd, 0, 0); lsr != 0) LogError("Can't lseek:", lsr); - if (int br = sceKernelRead(abused_fd, abused_buffer, 256); br < 0) LogError("Didn't read the whole string:", br, "read"); - TEST_CASE(memcmp(abused_buffer, readback_string, readback_string_len) == 0, "Readback string is correct", "Readback string is incorrect", ""); - - Log("fstat() Fileno before removal =", abused_fileno, "after =", get_fileno(abused_fd)); - Log("stat() after removal =", exists(abused_file)); - - if (int status = sceKernelClose(abused_fd); status != 0) LogError("File didn't close properly ( status =", status, ")"); - - struct OrbisKernelStat ost; - Log(sceKernelStat("/download0", &ost)); - Log(sceKernelMkdir("/download0/temp/", 0777)); } bool TestFileOps(const char* path) { diff --git a/tests/code/filesystem_test/code/fs_test.h b/tests/code/filesystem_test/code/fs_test.h index 69a7454..deb3429 100644 --- a/tests/code/filesystem_test/code/fs_test.h +++ b/tests/code/filesystem_test/code/fs_test.h @@ -2,7 +2,6 @@ #define FS_TEST_H #define UNSIGNED_INT_EQUALS(expected, actual) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, NULLPTR, __FILE__, __LINE__) -#define UNSIGNED_INT_EQUALS_TEXT(expected, actual, text) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, text, __FILE__, __LINE__) #include "log.h" From 7bee57b3ed5934dcd8cf2e7692aa0bf56551cc4c Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Tue, 24 Feb 2026 01:27:59 +0100 Subject: [PATCH 07/23] preliminary toolset for Enderman memory leak D: full buffers read, not just what's reported some comments/messages in Therapist --- .vscode/launch.json | 31 ++ .vscode/settings.json | 2 + .../code/filesystem_dirents/code/fs_test.cpp | 10 +- .../filesystem_dirents/dumps/comparator.py | 137 +++++ tests/code/filesystem_test/01.35.log | 509 ++++++++---------- .../code/filesystem_test/code/fs_constants.h | 390 ++++---------- tests/code/filesystem_test/code/fs_test.cpp | 72 ++- tests/code/filesystem_test/code/fs_test.h | 3 +- 8 files changed, 552 insertions(+), 602 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 tests/code/filesystem_dirents/dumps/comparator.py diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..66f6075 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,31 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Compare dumps (main)", + "type": "python", + "request": "launch", + "program": "${workspaceFolder}/tests/code/filesystem_dirents/dumps/comparator.py", + "console": "integratedTerminal", + "args": [ + // change accordingly + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/407d287-main" + ] + }, + { + "name": "Compare dumps (qfs)", + "type": "python", + "request": "launch", + "program": "${workspaceFolder}/tests/code/filesystem_dirents/dumps/comparator.py", + "console": "integratedTerminal", + "args": [ + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/08f4458-qfs" + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 7076da8..9a054af 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -16,4 +16,6 @@ "C_Cpp.autoAddFileAssociations": false, "editor.tabSize": 2, "editor.insertSpaces": true, + "python.languageServer": "Pylance", + "python.formatting.provider": "black" } diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp index a60435f..9f4a8c2 100644 --- a/tests/code/filesystem_dirents/code/fs_test.cpp +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -223,12 +223,13 @@ bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size) { return false; } - s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); - if (tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes read"); + s64 tbw = sceKernelWrite(dump_fd, buffer, size); + if (tbw != tbr) LogError("Written", tbw, "bytes out of", size, "bytes read"); return true; } bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) { + // magic to determine how many trailing elements were cut memset(buffer, 0xAA, size); s64 tbr = sceKernelGetdirentries(dir_fd, buffer, size, idx); @@ -243,8 +244,8 @@ bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) return false; } - s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); - if (tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes read"); + s64 tbw = sceKernelWrite(dump_fd, buffer, size); + if (tbw != tbr) LogError("Written", tbw, "bytes out of", size, "bytes read"); return true; } @@ -275,6 +276,7 @@ void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs) { if (0 == max_loops) LogError("Aborted"); sceKernelClose(dirent_fd); + delete[] buffer; } } // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_dirents/dumps/comparator.py b/tests/code/filesystem_dirents/dumps/comparator.py new file mode 100644 index 0000000..8888fd6 --- /dev/null +++ b/tests/code/filesystem_dirents/dumps/comparator.py @@ -0,0 +1,137 @@ +import os +import sys +import hashlib +import re + +if len(sys.argv) != 3: + print(f"comparator.py [PS4] [Emulator]") + print("Compare dirent dumps between console and dump") + sys.exit(0) + +dir_left = sys.argv[1] +dir_right = sys.argv[2] + +dir_left_contents = None +dir_right_contents = None + +try: + dir_left_contents = os.listdir(dir_left) + dir_right_contents = os.listdir(dir_right) +except: + print("Error during listing directories") + sys.exit(-1) + +for filename in dir_left_contents: + file_left_path = os.path.join(os.path.abspath(dir_left), filename) + file_right_path = os.path.join(os.path.abspath(dir_right), filename) + is_pfs = "PFS" in filename + + # temporarily + if is_pfs: + continue + + print() + print(f"<<<< Testing file {filename} >>>>") + + size_left = os.path.getsize(file_left_path) + size_right = os.path.getsize(file_right_path) + size_match = size_left == size_right + + content_left = None + content_right = None + with open(file_left_path, "rb") as lhsf: + content_left = lhsf.read() + with open(file_right_path, "rb") as rhsf: + content_right = rhsf.read() + + hash_left = hashlib.md5(content_left).hexdigest() + hash_right = hashlib.md5(content_right).hexdigest() + hash_match = hash_left == hash_right + + print(f"Size:\t{size_match}\t{size_left}\t{size_right}") + print(f"MD5:\t{hash_match}\t{hash_left}\t{hash_right}") + + if size_match and hash_match: + continue + + left_file_list = [] + right_file_list = [] + + left_dirent_offsets = [] + right_dirent_offsets = [] + + left_skipped_bytes = [] + right_skipped_bytes = [] + + prev_end = 0 + search_query = re.finditer(b"(.{8})([ -~]{1,255})\x00", content_left) + for lsresult in search_query: + left_file_list.append(lsresult.group(2)) + result_pos = lsresult.start() + left_dirent_offsets.append(result_pos) + left_skipped_bytes_temp = result_pos - prev_end + if left_skipped_bytes_temp != 0: + left_skipped_bytes.append(left_skipped_bytes_temp) + prev_end = lsresult.end() + + prev_end = 0 + search_query = re.finditer(b"(.{8})([ -~]{1,255})\x00", content_left) + for lsresult in search_query: + right_file_list.append(lsresult.group(2)) + result_pos = lsresult.start() + right_dirent_offsets.append(result_pos) + right_skipped_bytes_temp = result_pos - prev_end + if right_skipped_bytes_temp != 0: + right_skipped_bytes.append(right_skipped_bytes_temp) + + prev_end = lsresult.end() + + left_set = set(left_file_list) + right_set = set(right_file_list) + if len(left_set) != len(left_file_list): + print("Left has repeating filenames") + if len(right_set) != len(right_file_list): + print("Right has repeating filenames") + merged_results = set(left_file_list + right_file_list) + if (len(merged_results) != len(left_file_list)) or ( + len(merged_results) != len(right_file_list) + ): + print( + f"Unique differences between files: L:{len(left_file_list)}<->R:{len(right_file_list)}\tTotal:{len(merged_results)}" + ) + + for idx, left_excl_filename in enumerate(right_file_list): + if left_excl_filename not in right_file_list: + print(f"Right exclusive:{left_excl_filename}") + + for idx, right_excl_filename in enumerate(left_file_list): + if right_excl_filename not in left_file_list: + print(f"Right exclusive:{right_excl_filename}") + + for idx, offset_value in enumerate(left_dirent_offsets): + if offset_value != right_dirent_offsets[idx]: + print( + f"Left: Inconsistent offsets: L:{offset_value}<=>R:{right_dirent_offsets[idx]}" + ) + for idx, offset_value in enumerate(right_dirent_offsets): + if offset_value != left_dirent_offsets[idx]: + print( + f"Right: Inconsistent offsets: L:{offset_value}<=>R:{left_dirent_offsets[idx]}" + ) + + for idx, skipped_bytes in enumerate(left_skipped_bytes): + if skipped_bytes != right_skipped_bytes[idx]: + print( + f"Left: Inconsistent skipped byted: L:{skipped_bytes}<=>R:{right_skipped_bytes[idx]}" + ) + for idx, skipped_bytes in enumerate(right_skipped_bytes): + if skipped_bytes != left_skipped_bytes[idx]: + print( + f"Right: Inconsistent skipped byted: L:{skipped_bytes}<=>R:{left_skipped_bytes[idx]}" + ) + + + + + + pass diff --git a/tests/code/filesystem_test/01.35.log b/tests/code/filesystem_test/01.35.log index b014388..a586348 100644 --- a/tests/code/filesystem_test/01.35.log +++ b/tests/code/filesystem_test/01.35.log @@ -54,7 +54,7 @@ <118>[ RunTests ] [INFO] <<<< RELATIVE FILENO >>>> <118>[ RunTests ] [INFO] <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ / ] -<118>[ TestRelatives ] [INFO] / sees itself with fileno= 764 +<118>[ TestRelatives ] [INFO] / sees itself with fileno= 781 <118>[ TestRelatives ] [INFO] / sees its parent with fileno= 3 <118>[ TestRelatives ] [INFO] / is seen with fileno= -2 <118>[ TestRelatives ] [INFO] It's not a mountpoint @@ -62,7 +62,7 @@ <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /app0 ] <118>[ TestRelatives ] [INFO] /app0 sees itself with fileno= 2 <118>[ TestRelatives ] [INFO] /app0 sees its parent with fileno= 2 -<118>[ TestRelatives ] [INFO] /app0 is seen with fileno= 769 +<118>[ TestRelatives ] [INFO] /app0 is seen with fileno= 784 <118>[ TestRelatives ] [SUCC] It's a mountpoint <118>[ RunTests ] [SUCC] Test complete <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /app0/sce_sys ] @@ -72,47 +72,47 @@ <118>[ TestRelatives ] [INFO] It's not a mountpoint <118>[ RunTests ] [SUCC] Test complete <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /av_contents ] -<118>[ TestRelatives ] [INFO] /av_contents sees itself with fileno= 791 -<118>[ TestRelatives ] [INFO] /av_contents sees its parent with fileno= 764 -<118>[ TestRelatives ] [INFO] /av_contents is seen with fileno= 791 +<118>[ TestRelatives ] [INFO] /av_contents sees itself with fileno= 808 +<118>[ TestRelatives ] [INFO] /av_contents sees its parent with fileno= 781 +<118>[ TestRelatives ] [INFO] /av_contents is seen with fileno= 808 <118>[ TestRelatives ] [INFO] It's not a mountpoint <118>[ RunTests ] [SUCC] Test complete <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /data ] <118>[ TestRelatives ] [INFO] /data sees itself with fileno= 15202560 <118>[ TestRelatives ] [INFO] /data sees its parent with fileno= 2 -<118>[ TestRelatives ] [INFO] /data is seen with fileno= 773 +<118>[ TestRelatives ] [INFO] /data is seen with fileno= 790 <118>[ TestRelatives ] [SUCC] It's a mountpoint <118>[ RunTests ] [SUCC] Test complete <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /dev ] -<118>[ TestRelatives ] [FAIL] Cannot get [ . ] from /dev ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1037 ) -<118>[ TestRelatives ] [FAIL] Cannot get [ .. ] from /dev ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1045 ) +<118>[ TestRelatives ] [FAIL] Cannot get [ . ] from /dev ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1107 ) +<118>[ TestRelatives ] [FAIL] Cannot get [ .. ] from /dev ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1115 ) <118>[ TestRelatives ] [INFO] /dev sees itself with fileno= -2 <118>[ TestRelatives ] [INFO] /dev sees its parent with fileno= -2 -<118>[ TestRelatives ] [INFO] /dev is seen with fileno= 771 +<118>[ TestRelatives ] [INFO] /dev is seen with fileno= 788 <118>[ TestRelatives ] [INFO] It's not a mountpoint <118>[ RunTests ] [SUCC] Test complete. Expected values: -2, -2, ~800 <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /host ] <118>[ TestRelatives ] [INFO] /host sees itself with fileno= 9 <118>[ TestRelatives ] [INFO] /host sees its parent with fileno= 1 -<118>[ TestRelatives ] [INFO] /host is seen with fileno= 774 +<118>[ TestRelatives ] [INFO] /host is seen with fileno= 791 <118>[ TestRelatives ] [SUCC] It's a mountpoint <118>[ RunTests ] [SUCC] /host is a superblock partition. Expected values: 9, 1, ~700 <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /hostapp ] <118>[ TestRelatives ] [INFO] /hostapp sees itself with fileno= 10 <118>[ TestRelatives ] [INFO] /hostapp sees its parent with fileno= 1 -<118>[ TestRelatives ] [INFO] /hostapp is seen with fileno= 775 +<118>[ TestRelatives ] [INFO] /hostapp is seen with fileno= 792 <118>[ TestRelatives ] [SUCC] It's a mountpoint <118>[ RunTests ] [SUCC] /hostapp is a superblock partition. Expected values: 10, 1, ~700 <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /system_tmp ] <118>[ TestRelatives ] [INFO] /system_tmp sees itself with fileno= 2 <118>[ TestRelatives ] [INFO] /system_tmp sees its parent with fileno= 2 -<118>[ TestRelatives ] [INFO] /system_tmp is seen with fileno= 772 +<118>[ TestRelatives ] [INFO] /system_tmp is seen with fileno= 789 <118>[ TestRelatives ] [SUCC] It's a mountpoint <118>[ RunTests ] [SUCC] Test complete <118>[ TestRelatives ] [TEST_CASE] Testing relative fileno perception of [ /this_should_fail ] -<118>[ GetDir ] [FAIL] [Normal] Cannot open [ . ] ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test_tools.cpp: 471 ) -<118>[ GetDir ] [FAIL] [Normal] Cannot open [ .. ] ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test_tools.cpp: 471 ) -<118>[ TestRelatives ] [FAIL] Cannot get [ this_should_fail ] from /this_should_fail ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1054 ) +<118>[ GetDir ] [FAIL] [Normal] Cannot open [ . ] ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test_tools.cpp: 474 ) +<118>[ GetDir ] [FAIL] [Normal] Cannot open [ .. ] ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test_tools.cpp: 474 ) +<118>[ TestRelatives ] [FAIL] Cannot get [ this_should_fail ] from /this_should_fail ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1124 ) <118>[ TestRelatives ] [INFO] /this_should_fail sees itself with fileno= 0 <118>[ TestRelatives ] [INFO] /this_should_fail sees its parent with fileno= 0 <118>[ TestRelatives ] [INFO] /this_should_fail is seen with fileno= -2 @@ -125,26 +125,26 @@ <118>[ RunTests ] [INFO] so it can refer to a file, directory or relative entry [ . ], [ .. ] <118>[ RunTests ] [INFO] <118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /. -<118>[ CompareNormalVsPFS ] [FAIL] /. fileno 764 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1103 ) -<118>[ CompareNormalVsPFS ] [FAIL] /. namlen 1 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1111 ) -<118>[ CompareNormalVsPFS ] [FAIL] /. reclen 12 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1123 ) -<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1127 ) +<118>[ CompareNormalVsPFS ] [FAIL] /. fileno 781 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1173 ) +<118>[ CompareNormalVsPFS ] [FAIL] /. namlen 1 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1181 ) +<118>[ CompareNormalVsPFS ] [FAIL] /. reclen 12 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1193 ) +<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1197 ) <118>[ CompareNormalVsPFS ] [INFO] Normal: . <118>[ CompareNormalVsPFS ] [INFO] PFS: <118>[ RunTests ] [SUCC] Test complete [PFS should fail] <118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /app0 -<118>[ CompareNormalVsPFS ] [FAIL] /app0 fileno 769 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1103 ) -<118>[ CompareNormalVsPFS ] [FAIL] /app0 namlen 4 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1111 ) -<118>[ CompareNormalVsPFS ] [FAIL] /app0 reclen 16 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1123 ) -<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1127 ) +<118>[ CompareNormalVsPFS ] [FAIL] /app0 fileno 784 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1173 ) +<118>[ CompareNormalVsPFS ] [FAIL] /app0 namlen 4 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1181 ) +<118>[ CompareNormalVsPFS ] [FAIL] /app0 reclen 16 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1193 ) +<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1197 ) <118>[ CompareNormalVsPFS ] [INFO] Normal: app0 <118>[ CompareNormalVsPFS ] [INFO] PFS: <118>[ RunTests ] [SUCC] Test complete [PFS should fail] <118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /data -<118>[ CompareNormalVsPFS ] [FAIL] /data fileno 773 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1103 ) -<118>[ CompareNormalVsPFS ] [FAIL] /data namlen 4 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1111 ) -<118>[ CompareNormalVsPFS ] [FAIL] /data reclen 16 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1123 ) -<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1127 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data fileno 790 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1173 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data namlen 4 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1181 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data reclen 16 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1193 ) +<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1197 ) <118>[ CompareNormalVsPFS ] [INFO] Normal: data <118>[ CompareNormalVsPFS ] [INFO] PFS: <118>[ RunTests ] [SUCC] Test complete [PFS should fail] @@ -173,40 +173,24 @@ <118>[ CompareNormalVsPFS ] [SUCC] Names are equal (memcmp) <118>[ RunTests ] [SUCC] Test complete <118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /data/therapist/. -<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. fileno 15581444 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1103 ) -<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. namlen 1 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1111 ) -<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. reclen 12 != 0 ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1123 ) -<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1127 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. fileno 15581570 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1173 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. namlen 1 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1181 ) +<118>[ CompareNormalVsPFS ] [FAIL] /data/therapist/. reclen 12 != 0 ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1193 ) +<118>[ CompareNormalVsPFS ] [FAIL] Names are not equal (memcmp) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1197 ) <118>[ CompareNormalVsPFS ] [INFO] Normal: . <118>[ CompareNormalVsPFS ] [INFO] PFS: <118>[ RunTests ] [SUCC] Test complete [PFS should fail] <118>[ CompareNormalVsPFS ] [TEST_CASE] Compare Normal and PFS dirent for /this_should_fail/. -<118>[ GetDir ] [FAIL] [Normal] Cannot open [ . ] ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test_tools.cpp: 471 ) -<118>[ CompareNormalVsPFS ] [FAIL] Can't open /this_should_fail/. as normal ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1085 ) -<118>[ GetDir ] [FAIL] [PFS] Cannot open [ . ] ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test_tools.cpp: 407 ) -<118>[ CompareNormalVsPFS ] [FAIL] Can't open /this_should_fail/. as PFS ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 1088 ) +<118>[ GetDir ] [FAIL] [Normal] Cannot open [ . ] ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test_tools.cpp: 474 ) +<118>[ CompareNormalVsPFS ] [FAIL] Can't open /this_should_fail/. as normal ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1155 ) +<118>[ GetDir ] [FAIL] [PFS] Cannot open [ . ] ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test_tools.cpp: 410 ) +<118>[ CompareNormalVsPFS ] [FAIL] Can't open /this_should_fail/. as PFS ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 1158 ) <118>[ RunTests ] [SUCC] Test complete [All should fail] <118>[ RunTests ] [INFO] <118>[ RunTests ] [INFO] <<<< Example directory listings >>>> <118>[ RunTests ] [INFO] This is made to mimic `ls -la`. <118>[ RunTests ] [INFO] UID, GID are always 0 <118>[ RunTests ] [INFO] -<118>[ ElEsDashElAy ] [INFO] << ls -la [ / ] >> -<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 6 0 : 0 65536 2025-12-28 14:25 /app0 -<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 3 0 : 0 512 2025-12-28 14:26 /dev -<118>[ ElEsDashElAy ] [INFO] drwxr-xr-x 040755 2 0 : 0 240 2025-12-28 14:02 /system_tmp -<118>[ ElEsDashElAy ] [INFO] drwxrwxrwx 040777 13 0 : 0 512 2025-12-28 14:26 /data -<118>[ ElEsDashElAy ] [INFO] drwxrwxrwx 040777 1 0 : 0 4096 2024-07-01 20:12 /host -<118>[ ElEsDashElAy ] [INFO] drwxrwxrwx 040777 1 0 : 0 4096 2024-07-01 20:12 /hostapp -<118>[ ElEsDashElAy ] [INFO] drwxrwxr-x 040775 5 0 : 0 120 2025-12-28 14:26 /vCjSh8DpB3 -<118>[ ElEsDashElAy ] [INFO] drwxrwxr-x 040775 6 0 : 0 160 2025-12-28 14:26 /av_contents -<118>[ ElEsDashElAy ] [SUCC] >> ls -la [ / ] << -<118>[ ElEsDashElAy ] [INFO] << ls -la [ /app0 ] >> -<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 7 0 : 0 65536 2025-12-28 14:25 /app0/assets -<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 2 0 : 0 65536 2025-12-28 14:25 /app0/sce_module -<118>[ ElEsDashElAy ] [INFO] dr-xr-xr-x 040555 3 0 : 0 65536 2025-12-28 14:25 /app0/sce_sys -<118>[ ElEsDashElAy ] [INFO] -r-xr-xr-x 0100555 1 0 : 0 1898400 2025-12-28 14:25 /app0/eboot.bin -<118>[ ElEsDashElAy ] [SUCC] >> ls -la [ /app0 ] << <118>[ RunTests ] [INFO] <118>[ RunTests ] [INFO] <<<< DIRENTS >>>> <118>[ RunTests ] [INFO] @@ -222,28 +206,28 @@ <118>[ TestDirEnts ] [SUCC] Seek to start (dirents, pre) ( errno = 0 ) <118>[ TestDirEnts ] [SUCC] Direntries read correctly ( read bytes: 512 ) ( errno = 0 ) <118>[ TestDirEnts ] [SUCC] Seek to start (dump, pre) ( errno = 0 ) -<118>[ dumpDir ] [INFO] [ DIR ][ 15581451 ][ 1 ][ 12 ] |->. -<118>[ dumpDir ] [INFO] [ DIR ][ 15581444 ][ 2 ][ 12 ] |->.. -<118>[ dumpDir ] [INFO] [ FIL ][ 15581457 ][ 12 ][ 24 ] |->dummy_file_1 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581459 ][ 12 ][ 24 ] |->dummy_file_2 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581460 ][ 12 ][ 24 ] |->dummy_file_3 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581466 ][ 12 ][ 416 ] |->dummy_file_4 +<118>[ dumpDir ] [INFO] [ DIR ][ 15581573 ][ 1 ][ 12 ] |->. +<118>[ dumpDir ] [INFO] [ DIR ][ 15581570 ][ 2 ][ 12 ] |->.. +<118>[ dumpDir ] [INFO] [ FIL ][ 15581797 ][ 12 ][ 24 ] |->dummy_file_1 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581801 ][ 12 ][ 24 ] |->dummy_file_2 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581803 ][ 12 ][ 24 ] |->dummy_file_3 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581906 ][ 12 ][ 416 ] |->dummy_file_4 <118>[ TestDirEnts ] [SUCC] Read correct amount of data (dump, pre) ( last_reclen = 416 should be = 416 ) ( errno = 0 ) <118>[ TestDirEnts ] [INFO] You should see 4 dummy files here <118>[ TestDirEnts ] [SUCC] Dummy files (5-8) created ( errno = 0 ) <118>[ TestDirEnts ] [SUCC] Seek to start (dirents, post) ( errno = 0 ) <118>[ TestDirEnts ] [SUCC] Direntries read correctly ( read bytes: 512 ) ( errno = 0 ) <118>[ TestDirEnts ] [SUCC] Seek to start (dump, post) ( errno = 0 ) -<118>[ dumpDir ] [INFO] [ DIR ][ 15581451 ][ 1 ][ 12 ] |->. -<118>[ dumpDir ] [INFO] [ DIR ][ 15581444 ][ 2 ][ 12 ] |->.. -<118>[ dumpDir ] [INFO] [ FIL ][ 15581457 ][ 12 ][ 24 ] |->dummy_file_1 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581459 ][ 12 ][ 24 ] |->dummy_file_2 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581460 ][ 12 ][ 24 ] |->dummy_file_3 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581466 ][ 12 ][ 24 ] |->dummy_file_4 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581467 ][ 12 ][ 24 ] |->dummy_file_5 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581469 ][ 12 ][ 24 ] |->dummy_file_6 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581488 ][ 12 ][ 24 ] |->dummy_file_7 -<118>[ dumpDir ] [INFO] [ FIL ][ 15581490 ][ 12 ][ 320 ] |->dummy_file_8 +<118>[ dumpDir ] [INFO] [ DIR ][ 15581573 ][ 1 ][ 12 ] |->. +<118>[ dumpDir ] [INFO] [ DIR ][ 15581570 ][ 2 ][ 12 ] |->.. +<118>[ dumpDir ] [INFO] [ FIL ][ 15581797 ][ 12 ][ 24 ] |->dummy_file_1 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581801 ][ 12 ][ 24 ] |->dummy_file_2 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581803 ][ 12 ][ 24 ] |->dummy_file_3 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581906 ][ 12 ][ 24 ] |->dummy_file_4 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581907 ][ 12 ][ 24 ] |->dummy_file_5 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581909 ][ 12 ][ 24 ] |->dummy_file_6 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581910 ][ 12 ][ 24 ] |->dummy_file_7 +<118>[ dumpDir ] [INFO] [ FIL ][ 15581911 ][ 12 ][ 320 ] |->dummy_file_8 <118>[ TestDirEnts ] [SUCC] Read correct amount of data (dump, post) ( last_reclen = 320 should be = 320 ) ( errno = 0 ) <118>[ TestDirEnts ] [INFO] You should see 8 dummy files here <118>[ TestDirEnts ] [SUCC] Closed [ /data/therapist/tmp_dirent ] ( errno = 0 ) @@ -255,15 +239,15 @@ <118>[ TestStat ] [TEST_CASE] Testing stat on [ "/" ] <118>[ TestStat ] [SUCC] Stat successful [ "/" ] ( errno = 0 ) <118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- -<118>[ StatCmp ] [INFO] st_mode LHS = 040777 | RHS = 040777 +<118>[ StatCmp ] [INFO] st_mode LHS = 040775 | RHS = 040777 <118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 <118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 <118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 -<118>[ StatCmp ] [INFO] st_size LHS = 320 | RHS = 320 +<118>[ StatCmp ] [INFO] st_size LHS = 360 | RHS = 320 <118>[ StatCmp ] [INFO] st_blocks LHS = 32 | RHS = 32 <118>[ StatCmp ] [INFO] st_blksize LHS = 16384 | RHS = 16384 <118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 -<118>[ RunTests ] [SUCC] Test complete +<118>[ RunTests ] [FAIL] Stat comparsion failed ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 415 ) <118>[ TestStat ] [TEST_CASE] Testing stat on [ "/app0" ] <118>[ TestStat ] [SUCC] Stat successful [ "/app0" ] ( errno = 0 ) <118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- @@ -283,11 +267,11 @@ <118>[ StatCmp ] [INFO] st_nlink LHS = 0 | RHS = 0 <118>[ StatCmp ] [INFO] st_uid LHS = 0 | RHS = 0 <118>[ StatCmp ] [INFO] st_gid LHS = 0 | RHS = 0 -<118>[ StatCmp ] [INFO] st_size LHS = 1898400 | RHS = 1645264 -<118>[ StatCmp ] [INFO] st_blocks LHS = 3712 | RHS = 3328 +<118>[ StatCmp ] [INFO] st_size LHS = 1921088 | RHS = 1645264 +<118>[ StatCmp ] [INFO] st_blocks LHS = 3840 | RHS = 3328 <118>[ StatCmp ] [INFO] st_blksize LHS = 65536 | RHS = 65536 <118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 -<118>[ RunTests ] [FAIL] Stat comparsion failed ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 112 ) +<118>[ RunTests ] [FAIL] Stat comparsion failed ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 417 ) <118>[ TestStat ] [TEST_CASE] Testing stat on [ "/app0/assets/misc/file.txt" ] <118>[ TestStat ] [SUCC] Stat successful [ "/app0/assets/misc/file.txt" ] ( errno = 0 ) <118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- @@ -337,7 +321,7 @@ <118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 <118>[ RunTests ] [SUCC] Test complete <118>[ TestLStat ] [TEST_CASE] Testing lstat on [ "/dev/deci_stderr" ] -<118>[ RunTests ] [FAIL] Stat comparsion failed ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 117 ) +<118>[ RunTests ] [FAIL] Stat comparsion failed ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 422 ) <118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/deci_stdout" ] <118>[ TestStat ] [SUCC] Stat successful [ "/dev/deci_stdout" ] ( errno = 0 ) <118>[ StatCmp ] [INFO] ---- OrbisKernelStat comparsion ---- @@ -351,7 +335,7 @@ <118>[ StatCmp ] [INFO] st_flags LHS = 0 | RHS = 0 <118>[ RunTests ] [SUCC] Test complete <118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/stdin" ] -<118>[ TestStat ] [FAIL] Stat failed [ "/dev/stdin" ] ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 827 ) +<118>[ TestStat ] [FAIL] Stat failed [ "/dev/stdin" ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 897 ) <118>[ TestStat ] [INFO] No comparsiton target provided for [ "/dev/stdin" ]. Dumping your own :) <118>[ PrintStatInfo ] [INFO] stat info.st_dev = 0 <118>[ PrintStatInfo ] [INFO] stat info.st_ino = 0 @@ -376,7 +360,7 @@ <118>[ PrintStatInfo ] [INFO] stat info.st_birthtim.tv_nsec = 0 <118>[ RunTests ] [SUCC] Test complete [stat should fail] <118>[ TestStat ] [TEST_CASE] Testing stat on [ "/dev/stdout" ] -<118>[ TestStat ] [FAIL] Stat failed [ "/dev/stdout" ] ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 827 ) +<118>[ TestStat ] [FAIL] Stat failed [ "/dev/stdout" ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 897 ) <118>[ TestStat ] [INFO] No comparsiton target provided for [ "/dev/stdout" ]. Dumping your own :) <118>[ PrintStatInfo ] [INFO] stat info.st_dev = 0 <118>[ PrintStatInfo ] [INFO] stat info.st_ino = 0 @@ -497,102 +481,19 @@ <118>[ RunTests ] [SUCC] Test complete <118>[ RunTests ] [INFO] errno for tests below should equal 9 (EBADF) and 2 (ENOENT) <118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ /data/therapist/tmp_cursed/../tmp_cursed/../../././data/therapist/../data/therapist/././tmp_cursed/Cursed/../../../data/therapist/tmp_cursed/Cursed/idfk.txt ] -<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 797 ) -<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 800 ) +<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 867 ) +<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 870 ) <118>[ RunTests ] [SUCC] Test complete <118>[ RunTests ] [INFO] errno for tests below should equal 9 (EBADF) and 22 (EINVAL) <118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ ../../../data/therapist/tmp_cursed/escape_from_app0_file.txt ] -<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 797 ) -<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 22 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 800 ) +<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 867 ) +<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 22 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 870 ) <118>[ RunTests ] [SUCC] Test complete: Can't escape from curdir with relatives <118>[ TestFileTouch ] [TEST_CASE] Cursed file operations: [ app0_file.txt ] -<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 797 ) -<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 22 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 800 ) +<118>[ TestFileTouch ] [FAIL] can'touch ( errno = 9 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 867 ) +<118>[ TestFileTouch ] [FAIL] stat fail ( errno = 22 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 870 ) <118>[ RunTests ] [SUCC] Test complete: File not written to (RO?) curdir <118>[ RunTests ] [INFO] -<118>[ RunTests ] [INFO] <<<< File open tests >>>> -<118>[ RunTests ] [INFO] Acual flag values for Orbis are different from sys/fcntl.h -<118>[ RunTests ] [INFO] Numerical values are correct as of today, macro flags are not -<118>[ RunTests ] [INFO] -<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_open ] >> -<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmp_open ] << -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_ro.txt ] with flags: 0 ( O_RDONLY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wo.txt ] with flags: 1 ( O_WRONLY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rw.txt ] with flags: 2 ( O_RDWR ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rowo.txt ] with flags: 3 ( O_RDONLY | O_WRONLY | O_RDWR ) -<118>[ RunTests ] [SUCC] Pass (EINVAL) ( errno = 22 should be = 22 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rot.txt ] with flags: 400 ( O_RDONLY | O_TRUNC ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wot.txt ] with flags: 401 ( O_WRONLY | O_TRUNC ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwt.txt ] with flags: 402 ( O_RDWR | O_TRUNC ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roc.txt ] with flags: 200 ( O_RDONLY | O_CREAT ) -<118>[ RunTests ] [SUCC] Pass ( errno = 0 should be = 0 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woc.txt ] with flags: 201 ( O_WRONLY | O_CREAT ) -<118>[ RunTests ] [SUCC] Pass ( errno = 0 should be = 0 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwc.txt ] with flags: 202 ( O_RDWR | O_CREAT ) -<118>[ RunTests ] [SUCC] Pass ( errno = 0 should be = 0 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roc.txt ] with flags: a00 ( O_RDONLY | O_CREAT | O_EXCL ) -<118>[ RunTests ] [SUCC] Pass (EEXIST) ( errno = 17 should be = 17 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woc.txt ] with flags: a01 ( O_WRONLY | O_CREAT | O_EXCL ) -<118>[ RunTests ] [SUCC] Pass (EEXIST) ( errno = 17 should be = 17 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwc.txt ] with flags: a02 ( O_RDWR | O_CREAT | O_EXCL ) -<118>[ RunTests ] [SUCC] Pass (EEXIST) ( errno = 17 should be = 17 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roa.txt ] with flags: 8 ( O_RDONLY | O_APPEND ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woa.txt ] with flags: 9 ( O_WRONLY | O_APPEND ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwa.txt ] with flags: a ( O_RDWR | O_APPEND ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rota.txt ] with flags: 408 ( O_RDONLY | O_TRUNC | O_APPEND ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wota.txt ] with flags: 409 ( O_WRONLY | O_TRUNC | O_APPEND ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwta.txt ] with flags: 40a ( O_RDWR | O_TRUNC | O_APPEND ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_ro.txt ] with flags: 20000 ( O_RDONLY | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_wo.txt ] with flags: 20001 ( O_WRONLY | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rw.txt ] with flags: 20002 ( O_RDWR | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 2 should be = 2 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20000 ( O_RDONLY | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass ( errno = 0 should be = 0 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20001 ( O_WRONLY | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass (EISDIR) ( errno = 21 should be = 21 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20002 ( O_RDWR | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass (EISDIR) ( errno = 21 should be = 21 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rocd ] with flags: 20200 ( O_RDONLY | O_CREAT | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass (ENOTDIR) ( errno = 20 should be = 20 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_wocd ] with flags: 20201 ( O_WRONLY | O_CREAT | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass (ENOTDIR) ( errno = 20 should be = 20 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rwcd ] with flags: 20202 ( O_RDWR | O_CREAT | O_DIRECTORY ) -<118>[ RunTests ] [SUCC] Pass (ENOTDIR) ( errno = 20 should be = 20 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 0 should be = 0 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 1 ( O_WRONLY ) -<118>[ RunTests ] [SUCC] Pass (EROFS) ( errno = 30 should be = 30 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 2 ( O_RDWR ) -<118>[ RunTests ] [SUCC] Pass (EROFS) ( errno = 30 should be = 30 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 3 ( O_RDONLY | O_WRONLY | O_RDWR ) -<118>[ RunTests ] [SUCC] Pass (EINVAL) ( errno = 22 should be = 22 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 22 should be = 22 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ ./assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 22 should be = 22 ) -<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ ] with flags: 0 ( O_RDONLY ) -<118>[ RunTests ] [SUCC] Pass (ENOENT) ( errno = 22 should be = 22 ) -<118>[ RunTests ] [INFO] RO+Truncate is undefined. Testing -<118>[ RunTests ] [SUCC] RO+TRUNC returned correct errno : 2 ( should be: 2 ) -<118>[ RunTests ] [SUCC] RO+TRUNC file not created ( errno = 2 should be = 2 ) -<118>[ RunTests ] [INFO] RO+Truncate+Append is undefined. Testing -<118>[ RunTests ] [SUCC] ROTA returned correct errno : 2 ( should be: 2 ) -<118>[ RunTests ] [SUCC] ROTA file not created ( errno = 2 should be = 2 ) -<118>[ RunTests ] [INFO] <118>[ RunTests ] [INFO] <<<< File ops tests >>>> <118>[ RunTests ] [INFO] <118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_rw2 ] >> @@ -601,13 +502,13 @@ <118>[ TestFileOps ] [SUCC] Stat failed on nonexistent file ( errno = 22 ) <118>[ TestFileOps ] [SUCC] Truncate to 0 failed on nonexistent file ( errno = 22 ) <118>[ TestFileOps ] [SUCC] Truncate to 10 failed on nonexistent file ( errno = 22 ) -<118>[ TestFileOps ] [FAIL] Can't open file [ ] ( errno = 22 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 568 ) +<118>[ TestFileOps ] [FAIL] Can't open file [ ] ( errno = 22 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 636 ) <118>[ RunTests ] [SUCC] Pass [open() should fail with errno = 22] <118>[ TestFileOps ] [TEST_CASE] Testing file operations on [ /app0/assets/misc/test.txt ] <118>[ TestFileOps ] [SUCC] Stat failed on nonexistent file ( errno = 2 ) <118>[ TestFileOps ] [SUCC] Truncate to 0 failed on nonexistent file ( errno = 2 ) <118>[ TestFileOps ] [SUCC] Truncate to 10 failed on nonexistent file ( errno = 2 ) -<118>[ TestFileOps ] [FAIL] Can't open file [ /app0/assets/misc/test.txt ] ( errno = 30 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 568 ) +<118>[ TestFileOps ] [FAIL] Can't open file [ /app0/assets/misc/test.txt ] ( errno = 30 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 636 ) <118>[ RunTests ] [SUCC] Pass [open should fail with errno = 30] <118>[ TestFileOps ] [TEST_CASE] Testing file operations on [ /data/therapist/tmp_rw2/test.txt ] <118>[ TestFileOps ] [SUCC] Stat failed on nonexistent file ( errno = 2 ) @@ -657,7 +558,7 @@ <118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_rw3 ] >> <118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmp_rw3 ] << <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ ] -<118>[ TestFileRW ] [FAIL] Can't open [ ] ( errno = 22 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ TestFileRW ] [FAIL] Can't open [ ] ( errno = 22 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 805 ) <118>[ RunTests ] [SUCC] Test complete [empty path, should fail with errno = 22 (EINVAL)] <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /data/therapist/tmp_rw3/rwtest.txt ] <118>[ TestFileRW ] [SUCC] Opened [ /data/therapist/tmp_rw3/rwtest.txt ] ( errno = 0 ) @@ -676,16 +577,16 @@ <118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : no <118>[ RunTests ] [SUCC] Test complete [both buffers should hold the same values] <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /data/therapist/tmp_rw3 ] -<118>[ TestFileRW ] [FAIL] Can't open [ /data/therapist/tmp_rw3 ] ( errno = 21 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ TestFileRW ] [FAIL] Can't open [ /data/therapist/tmp_rw3 ] ( errno = 21 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 805 ) <118>[ RunTests ] [SUCC] Test complete: [R/W on a directory should fail with errno = 21 (EISDIR)] <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /app0/assets/misc/file_empty.txt ] -<118>[ TestFileRW ] [FAIL] Can't open [ /app0/assets/misc/file_empty.txt ] ( errno = 30 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ TestFileRW ] [FAIL] Can't open [ /app0/assets/misc/file_empty.txt ] ( errno = 30 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 805 ) <118>[ RunTests ] [SUCC] Test complete: [R/W on a file in RO directory should fail with errno = 30 (EROFS)] <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/stdin ] -<118>[ TestFileRW ] [FAIL] Can't open [ /dev/stdin ] ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ TestFileRW ] [FAIL] Can't open [ /dev/stdin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 805 ) <118>[ RunTests ] [SUCC] Test complete [Should fail with errno = 2 (ENOENT)] <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/stdout ] -<118>[ TestFileRW ] [FAIL] Can't open [ /dev/stdout ] ( errno = 2 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 735 ) +<118>[ TestFileRW ] [FAIL] Can't open [ /dev/stdout ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 805 ) <118>[ RunTests ] [SUCC] Test complete [Should fail with errno = 2 (ENOENT)] <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/null ] <118>[ TestFileRW ] [SUCC] Opened [ /dev/null ] ( errno = 0 ) @@ -697,7 +598,7 @@ <118>[ TestFileRW ] [SUCC] Lseek END-1 val = 0 should be 0 ( errno = 0 ) <118>[ TestFileRW ] [SUCC] Lseek END+1 val = 1 should be 1 ( errno = 0 ) <118>[ TestFileRW ] [SUCC] Lseek ORIGIN+0 val = 0 should be 0 ( errno = 0 ) -<118>[ TestFileRW ] [FAIL] Read failed ( 0 bytes read) ( errno = 0 ) ( /home/mledworo/github/integration_tests/tests/filesystem_test/code/fs_test.cpp: 770 ) +<118>[ TestFileRW ] [FAIL] Read failed ( 0 bytes read) ( errno = 0 ) ( /home/user/github/integration_tests/tests/code/filesystem_test/code/fs_test.cpp: 840 ) <118>[ TestFileRW ] [INFO] Buffers are equal? : no <118>[ TestFileRW ] [INFO] Write preview: 97 98 99 100 <118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : no @@ -715,7 +616,7 @@ <118>[ TestFileRW ] [SUCC] Read succeded ( 32 bytes read) ( errno = 0 ) <118>[ TestFileRW ] [INFO] Buffers are equal? : no <118>[ TestFileRW ] [INFO] Write preview: 97 98 99 100 -<118>[ TestFileRW ] [INFO] Read preview: 68 163 104 33 +<118>[ TestFileRW ] [INFO] Read preview: 112 152 152 26 <118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : no <118>[ RunTests ] [SUCC] Test complete [All should pass, random reads] <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/urandom ] @@ -731,7 +632,7 @@ <118>[ TestFileRW ] [SUCC] Read succeded ( 32 bytes read) ( errno = 0 ) <118>[ TestFileRW ] [INFO] Buffers are equal? : no <118>[ TestFileRW ] [INFO] Write preview: 97 98 99 100 -<118>[ TestFileRW ] [INFO] Read preview: 199 56 5 91 +<118>[ TestFileRW ] [INFO] Read preview: 54 124 7 43 <118>[ TestFileRW ] [INFO] Is reading buffer full of zeros? : no <118>[ RunTests ] [SUCC] Test complete [All should pass, random reads] <118>[ TestFileRW ] [TEST_CASE] Testing r/w on [ /dev/zero ] @@ -753,89 +654,88 @@ <118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmd ] >> <118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmd ] << <118>[ dumpDirRecursive ] [INFO] Listing dirents of [ /data/therapist/tmd ] -<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 15581555 ][ 1 ][ 12 ] |->. -<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 15581444 ][ 2 ][ 12 ] |->.. -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581556 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-0 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581557 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-1 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581558 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-2 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581559 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-3 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581560 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-4 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581563 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-5 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581564 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-6 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581565 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-7 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581566 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-8 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581689 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-9 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581698 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-10 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581699 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-11 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581700 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-12 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581704 ][ 4 ][ 20 ] |->SN-0 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581701 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-13 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581702 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-14 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581703 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-15 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581705 ][ 4 ][ 16 ] |->SN-1 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581706 ][ 4 ][ 16 ] |->SN-2 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581707 ][ 4 ][ 16 ] |->SN-3 -<118>[ dumpDirRecursive ] [INFO] [SL][00:00:00:000][Thread 0x00018845][INFO][TRACE][ALWAYS][MAIN STREAM][BEGIN][Heap]sanity OK, free 2291872 (37%), in-use 3934048 (63%), peak 4432128 (71%), when 1529 [sec] -<118>[ FIL ][ 15581708 ][ 4 ][ 16 ] |->SN-4 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581709 ][ 4 ][ 16 ] |->SN-5 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581710 ][ 4 ][ 16 ] |->SN-6 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581711 ][ 4 ][ 16 ] |->SN-7 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581712 ][ 4 ][ 16 ] |->SN-8 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581713 ][ 4 ][ 16 ] |->SN-9 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581714 ][ 5 ][ 16 ] |->SN-10 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581715 ][ 5 ][ 16 ] |->SN-11 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581716 ][ 5 ][ 16 ] |->SN-12 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581717 ][ 5 ][ 16 ] |->SN-13 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581718 ][ 5 ][ 16 ] |->SN-14 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581719 ][ 5 ][ 16 ] |->SN-15 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581720 ][ 5 ][ 16 ] |->SN-16 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581721 ][ 5 ][ 16 ] |->SN-17 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581722 ][ 5 ][ 16 ] |->SN-18 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581723 ][ 5 ][ 16 ] |->SN-19 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581724 ][ 5 ][ 16 ] |->SN-20 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581725 ][ 5 ][ 16 ] |->SN-21 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581726 ][ 5 ][ 16 ] |->SN-22 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581727 ][ 5 ][ 16 ] |->SN-23 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581728 ][ 5 ][ 16 ] |->SN-24 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581729 ][ 5 ][ 20 ] |->SN-25 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581730 ][ 5 ][ 16 ] |->SN-26 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581731 ][ 5 ][ 16 ] |->SN-27 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581732 ][ 5 ][ 16 ] |->SN-28 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581733 ][ 5 ][ 16 ] |->SN-29 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581734 ][ 5 ][ 16 ] |->SN-30 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581735 ][ 5 ][ 16 ] |->SN-31 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581736 ][ 5 ][ 16 ] |->SN-32 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581737 ][ 5 ][ 16 ] |->SN-33 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581738 ][ 5 ][ 16 ] |->SN-34 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581739 ][ 5 ][ 16 ] |->SN-35 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581740 ][ 5 ][ 16 ] |->SN-36 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581741 ][ 5 ][ 16 ] |->SN-37 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581742 ][ 5 ][ 16 ] |->SN-38 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581743 ][ 5 ][ 16 ] |->SN-39 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581744 ][ 5 ][ 16 ] |->SN-40 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581745 ][ 5 ][ 16 ] |->SN-41 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581746 ][ 5 ][ 16 ] |->SN-42 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581747 ][ 5 ][ 16 ] |->SN-43 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581748 ][ 5 ][ 16 ] |->SN-44 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581749 ][ 5 ][ 16 ] |->SN-45 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581750 ][ 5 ][ 16 ] |->SN-46 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581751 ][ 5 ][ 16 ] |->SN-47 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581752 ][ 5 ][ 16 ] |->SN-48 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581753 ][ 5 ][ 16 ] |->SN-49 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581754 ][ 5 ][ 16 ] |->SN-50 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581755 ][ 5 ][ 16 ] |->SN-51 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581756 ][ 5 ][ 16 ] |->SN-52 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581757 ][ 5 ][ 16 ] |->SN-53 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581758 ][ 5 ][ 16 ] |->SN-54 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581759 ][ 5 ][ 16 ] |->SN-55 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581760 ][ 5 ][ 16 ] |->SN-56 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581761 ][ 5 ][ 16 ] |->SN-57 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581762 ][ 5 ][ 16 ] |->SN-58 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581763 ][ 5 ][ 16 ] |->SN-59 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581764 ][ 5 ][ 16 ] |->SN-60 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581765 ][ 5 ][ 16 ] |->SN-61 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581766 ][ 5 ][ 16 ] |->SN-62 -<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581767 ][ 5 ][ 432 ] |->SN-63 +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 15581929 ][ 1 ][ 12 ] |->. +<118>[ dumpDirRecursive ] [INFO] [ DIR ][ 15581570 ][ 2 ][ 12 ] |->.. +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581930 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-0 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581931 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-1 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581932 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-2 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581933 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-3 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581934 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-4 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581935 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-5 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581936 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-6 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581937 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-7 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581938 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-8 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581939 ][ 26 ][ 36 ] |->AFileWithAReallyLongName-9 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581940 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-10 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581941 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-11 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581942 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-12 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581946 ][ 4 ][ 20 ] |->SN-0 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581943 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-13 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581944 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-14 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581945 ][ 27 ][ 36 ] |->AFileWithAReallyLongName-15 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581947 ][ 4 ][ 16 ] |->SN-1 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581948 ][ 4 ][ 16 ] |->SN-2 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581949 ][ 4 ][ 16 ] |->SN-3 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581950 ][ 4 ][ 16 ] |->SN-4 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581951 ][ 4 ][ 16 ] |->SN-5 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581952 ][ 4 ][ 16 ] |->SN-6 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581953 ][ 4 ][ 16 ] |->SN-7 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581954 ][ 4 ][ 16 ] |->SN-8 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581955 ][ 4 ][ 16 ] |->SN-9 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581956 ][ 5 ][ 16 ] |->SN-10 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581957 ][ 5 ][ 16 ] |->SN-11 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581958 ][ 5 ][ 16 ] |->SN-12 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581959 ][ 5 ][ 16 ] |->SN-13 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581960 ][ 5 ][ 16 ] |->SN-14 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581961 ][ 5 ][ 16 ] |->SN-15 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581962 ][ 5 ][ 16 ] |->SN-16 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581963 ][ 5 ][ 16 ] |->SN-17 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581964 ][ 5 ][ 16 ] |->SN-18 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581965 ][ 5 ][ 16 ] |->SN-19 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581966 ][ 5 ][ 16 ] |->SN-20 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581967 ][ 5 ][ 16 ] |->SN-21 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581968 ][ 5 ][ 16 ] |->SN-22 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581969 ][ 5 ][ 16 ] |->SN-23 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581970 ][ 5 ][ 16 ] |->SN-24 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581971 ][ 5 ][ 20 ] |->SN-25 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581972 ][ 5 ][ 16 ] |->SN-26 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581973 ][ 5 ][ 16 ] |->SN-27 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581974 ][ 5 ][ 16 ] |->SN-28 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581975 ][ 5 ][ 16 ] |->SN-29 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581976 ][ 5 ][ 16 ] |->SN-30 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581977 ][ 5 ][ 16 ] |->SN-31 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581978 ][ 5 ][ 16 ] |->SN-32 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581979 ][ 5 ][ 16 ] |->SN-33 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581980 ][ 5 ][ 16 ] |->SN-34 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581981 ][ 5 ][ 16 ] |->SN-35 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581982 ][ 5 ][ 16 ] |->SN-36 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581983 ][ 5 ][ 16 ] |->SN-37 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581984 ][ 5 ][ 16 ] |->SN-38 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581985 ][ 5 ][ 16 ] |->SN-39 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581986 ][ 5 ][ 16 ] |->SN-40 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581987 ][ 5 ][ 16 ] |->SN-41 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581988 ][ 5 ][ 16 ] |->SN-42 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581989 ][ 5 ][ 16 ] |->SN-43 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581990 ][ 5 ][ 16 ] |->SN-44 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581991 ][ 5 ][ 16 ] |->SN-45 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581992 ][ 5 ][ 16 ] |->SN-46 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581993 ][ 5 ][ 16 ] |->SN-47 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581994 ][ 5 ][ 16 ] |->SN-48 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581995 ][ 5 ][ 16 ] |->SN-49 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581996 ][ 5 ][ 16 ] |->SN-50 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581997 ][ 5 ][ 16 ] |->SN-51 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581998 ][ 5 ][ 16 ] |->SN-52 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15581999 ][ 5 ][ 16 ] |->SN-53 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582000 ][ 5 ][ 16 ] |->SN-54 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582001 ][ 5 ][ 16 ] |->SN-55 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582002 ][ 5 ][ 16 ] |->SN-56 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582003 ][ 5 ][ 16 ] |->SN-57 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582004 ][ 5 ][ 16 ] |->SN-58 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582005 ][ 5 ][ 16 ] |->SN-59 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582006 ][ 5 ][ 16 ] |->SN-60 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582007 ][ 5 ][ 16 ] |->SN-61 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582008 ][ 5 ][ 16 ] |->SN-62 +<118>[ dumpDirRecursive ] [INFO] [ FIL ][ 15582009 ][ 5 ][ 432 ] |->SN-63 <118>[ dumpDirRecursive ] [SUCC] Listing dirents of [ /data/therapist/tmd ] <118>[ RunTests ] [INFO] <118>[ RunTests ] [INFO] <<<< Case sensitivity tests >>>> @@ -869,39 +769,70 @@ <118>[ RunTests ] [SUCC] File name too long detected mkdir() ( errno = 63 , should be 63 ) <118>[ RunTests ] [SUCC] File name too long detected stat() ( errno = 63 , should be 63 ) <118>[ RunTests ] [SUCC] File name too long detected unlink() ( errno = 63 , should be 63 ) -<118>[ RunTests ] [INFO] -<118>[ RunTests ] [INFO] <<<< Moving files >>>> -<118>[ RunTests ] [INFO] +<118>[ testBody ] [INFO] +<118>[ testBody ] [INFO] <<<< Open fd abuse (moving/removing files with open fd) >>>> +<118>[ testBody ] [INFO] +<118>.[ testBody ] [INFO] +<118>[ testBody ] [INFO] <<<< Moving files >>>> +<118>[ testBody ] [INFO] <118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/moves ] >> <118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/moves ] << -<118>[ RunTests ] [INFO] fileno of: movingDirectoryA: 15581771 -<118>[ RunTests ] [INFO] fileno of: movingDirectoryB: 15581772 -<118>[ RunTests ] [INFO] fileno of: movingDirectoryC: 15581773 -<118>[ RunTests ] [INFO] fileno of: movingDirectoryD: 15581774 -<118>[ RunTests ] [INFO] fileno of: movingFileA: 15581775 -<118>[ RunTests ] [INFO] fileno of: movingFileB: 15581776 -<118>[ RunTests ] [INFO] fileno of: movingFileC: 15581777 -<118>[ RunTests ] [SUCC] Moved file->(existent)file: 0 -<118>[ RunTests ] [SUCC] Moved file->(nonexistent)file: 0 -<118>[ RunTests ] [INFO] fileno of: yeetFile: 15581777 -<118>[ RunTests ] [SUCC] Moved dir->(existing)dir: 0 -<118>[ RunTests ] [SUCC] Moved dir->(nonexistent)dir: 0 -<118>[ RunTests ] [INFO] fileno of: yeetDir: 15581773 -<118>[ RunTests ] [SUCC] Not moved file->(existent)dir: -2147352555 -<118>[ RunTests ] [SUCC] Not moved dir->(existent)file: -2147352556 -<118>[ RunTests ] [SUCC] Moved file->(into existent)dir: 0 -<118>[ RunTests ] [SUCC] Not moved empty dir->not empty dir: -2147352510 -<118>[ RunTests ] [SUCC] Moved not empty dir->empty dir: 0 -<118>[ RunTests ] [INFO] -<118>[ RunTests ] [INFO] <<<< Open fd abuse (moving/removing files with open fd) >>>> -<118>[ RunTests ] [INFO] -<118>[ RunTests ] [SUCC] Test file opened status = 18 -<118>[ RunTests ] [SUCC] File unlinked ( status = 0 ) -<118>[ RunTests ] [SUCC] Readback string is correct -<118>[ RunTests ] [INFO] fstat() Fileno before removal = 15581778 after = 15581778 -<118>[ RunTests ] [INFO] stat() after removal = -2147352574 -<118>[ RunTests ] [INFO] -2147352574 -<118>[ RunTests ] [INFO] -2147352574 +<118>[ testBody ] [INFO] fileno of: movingDirectoryA: 15582013 +<118>[ testBody ] [INFO] fileno of: movingDirectoryB: 15582014 +<118>[ testBody ] [INFO] fileno of: movingDirectoryC: 15582015 +<118>[ testBody ] [INFO] fileno of: movingDirectoryD: 15582016 +<118>[ testBody ] [INFO] fileno of: movingFileA: 15582017 +<118>[ testBody ] [INFO] fileno of: movingFileB: 15582019 +<118>[ testBody ] [INFO] fileno of: movingFileC: 15582021 +<118>[ testBody ] [INFO] fileno of: yeetFile: 15582021 +<118>[ testBody ] [INFO] fileno of: yeetDir: 15582015 +<118>.[ testBody ] [INFO] +<118>[ testBody ] [INFO] <<<< File open tests >>>> +<118>[ testBody ] [INFO] Acual flag values for Orbis are different from sys/fcntl.h +<118>[ testBody ] [INFO] Numerical values are correct as of today, macro flags are not +<118>[ testBody ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/therapist/tmp_open ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/therapist/tmp_open ] << +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_ro.txt ] with flags: 0 ( O_RDONLY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wo.txt ] with flags: 1 ( O_WRONLY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rw.txt ] with flags: 2 ( O_RDWR ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rowo.txt ] with flags: 3 ( O_RDONLY | O_WRONLY | O_RDWR ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rot.txt ] with flags: 400 ( O_RDONLY | O_TRUNC ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wot.txt ] with flags: 401 ( O_WRONLY | O_TRUNC ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwt.txt ] with flags: 402 ( O_RDWR | O_TRUNC ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roc.txt ] with flags: 200 ( O_RDONLY | O_CREAT ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woc.txt ] with flags: 201 ( O_WRONLY | O_CREAT ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwc.txt ] with flags: 202 ( O_RDWR | O_CREAT ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roc.txt ] with flags: a00 ( O_RDONLY | O_CREAT | O_EXCL ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woc.txt ] with flags: a01 ( O_WRONLY | O_CREAT | O_EXCL ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwc.txt ] with flags: a02 ( O_RDWR | O_CREAT | O_EXCL ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_roa.txt ] with flags: 8 ( O_RDONLY | O_APPEND ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_woa.txt ] with flags: 9 ( O_WRONLY | O_APPEND ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwa.txt ] with flags: a ( O_RDWR | O_APPEND ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rota.txt ] with flags: 408 ( O_RDONLY | O_TRUNC | O_APPEND ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_wota.txt ] with flags: 409 ( O_WRONLY | O_TRUNC | O_APPEND ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rwta.txt ] with flags: 40a ( O_RDWR | O_TRUNC | O_APPEND ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_ro ] with flags: 20000 ( O_RDONLY | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_wo ] with flags: 20001 ( O_WRONLY | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rw ] with flags: 20002 ( O_RDWR | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20000 ( O_RDONLY | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20001 ( O_WRONLY | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/ ] with flags: 20002 ( O_RDWR | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rocd ] with flags: 20200 ( O_RDONLY | O_CREAT | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_wocd ] with flags: 20201 ( O_WRONLY | O_CREAT | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_dir_rwcd ] with flags: 20202 ( O_RDWR | O_CREAT | O_DIRECTORY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 1 ( O_WRONLY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 2 ( O_RDWR ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /app0/assets/misc/file.txt ] with flags: 3 ( O_RDONLY | O_WRONLY | O_RDWR ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ ./assets/misc/file.txt ] with flags: 0 ( O_RDONLY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ ] with flags: 0 ( O_RDONLY ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rot.txt ] with flags: 400 ( O_RDONLY | O_TRUNC ) +<118>[ TestOpenFlags ] [TEST_CASE] Testing open() on [ /data/therapist/tmp_open/nonexistent_rota.txt ] with flags: 408 ( O_RDONLY | O_TRUNC | O_APPEND ) +<118>. +<118>OK (3 tests, 3 ran, 112 checks, 0 ignored, 0 filtered out, 1813 ms) +<118> <118>[ main ] [INFO] <118>[ main ] [INFO] <<<< TESTS END >>>> <118>[ main ] [INFO] \ No newline at end of file diff --git a/tests/code/filesystem_test/code/fs_constants.h b/tests/code/filesystem_test/code/fs_constants.h index 15ad083..317c90a 100644 --- a/tests/code/filesystem_test/code/fs_constants.h +++ b/tests/code/filesystem_test/code/fs_constants.h @@ -7,224 +7,102 @@ namespace DumpedConstants { // size, blocks and blksize seem constant const OrbisKernelStat stat_root { - .st_dev = 0, - .st_ino = 0, - .st_mode = 040777, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758754566, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758754566, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758754566, - .st_ctim.tv_nsec = 0, - .st_size = 320, - .st_blocks = 32, - .st_blksize = 16384, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = 1758754562, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 040775, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 360, + .st_blocks = 32, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; const OrbisKernelStat stat_root_app0 = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 040555, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758754519, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758754519, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758754519, - .st_ctim.tv_nsec = 0, - .st_size = 65536, - .st_blocks = 128, - .st_blksize = 65536, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = 1758754519, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 040555, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 65536, + .st_blocks = 128, + .st_blksize = 65536, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; const OrbisKernelStat stat_root_app0_eboot = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 0100555, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758754519, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758754519, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758754519, - .st_ctim.tv_nsec = 0, - .st_size = 1645264, - .st_blocks = 3328, - .st_blksize = 65536, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = 1758754519, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 0100555, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 1645264, + .st_blocks = 3328, + .st_blksize = 65536, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; const OrbisKernelStat stat_root_app0_assets_misc_file = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 0100555, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758754519, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758754519, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758754519, - .st_ctim.tv_nsec = 0, - .st_size = 45, - .st_blocks = 128, - .st_blksize = 65536, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = 1758754519, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 0100555, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 45, + .st_blocks = 128, + .st_blksize = 65536, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; const OrbisKernelStat stat_root_data = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 040777, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1754042762, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758754566, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758754566, - .st_ctim.tv_nsec = 0, - .st_size = 512, - .st_blocks = 8, - .st_blksize = 32768, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = 1754042762, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 040777, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 512, + .st_blocks = 8, + .st_blksize = 32768, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; const OrbisKernelStat stat_root_dev = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 040555, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758801536, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758801536, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758801536, - .st_ctim.tv_nsec = 0, - .st_size = 512, - .st_blocks = 1, - .st_blksize = 16384, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = -1, - .st_birthtim.tv_nsec = 0, -}; - -const OrbisKernelStat stat_root_dev_deci_stderr = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 020666, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758641838, - .st_atim.tv_nsec = 476662000, - .st_mtim.tv_sec = 1758803999, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758803999, - .st_ctim.tv_nsec = 0, - .st_size = 0, - .st_blocks = 0, - .st_blksize = 16384, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = -1, - .st_birthtim.tv_nsec = 0, -}; - -const OrbisKernelStat stat_root_dev_deci_stdout = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 020666, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758641838, - .st_atim.tv_nsec = 476662000, - .st_mtim.tv_sec = 1758804023, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758804023, - .st_ctim.tv_nsec = 0, - .st_size = 0, - .st_blocks = 0, - .st_blksize = 16384, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = -1, - .st_birthtim.tv_nsec = 0, -}; - -const OrbisKernelStat stat_root_dev_stdin {0}; -const OrbisKernelStat stat_root_dev_stdout {0}; - -const OrbisKernelStat stat_root_dev_random = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 020666, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758803652, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758641838, - .st_mtim.tv_nsec = 476662000, - .st_ctim.tv_nsec = 476662000, - .st_size = 0, - .st_blocks = 0, - .st_blksize = 16384, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = -1, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 040555, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 512, + .st_blocks = 1, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; -const OrbisKernelStat stat_root_dev_urandom = { +const OrbisKernelStat stat_blkdev = { .st_dev = 0, .st_ino = 0, .st_mode = 020666, @@ -232,91 +110,61 @@ const OrbisKernelStat stat_root_dev_urandom = { .st_uid = 0, .st_gid = 0, .st_rdev = 0, - .st_atim.tv_sec = 1758803654, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758641838, - .st_mtim.tv_nsec = 476662000, - .st_ctim.tv_sec = 1758641838, - .st_ctim.tv_nsec = 476662000, .st_size = 0, .st_blocks = 0, .st_blksize = 16384, .st_flags = 0, .st_gen = 0, .st_lspare = 0, - .st_birthtim.tv_sec = -1, + .st_birthtim.tv_sec = -1, // leave it alone :c .st_birthtim.tv_nsec = 0, }; const OrbisKernelStat stat_root_host = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 040777, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1719788400, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1719864764, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1719864764, - .st_ctim.tv_nsec = 0, - .st_size = 4096, - .st_blocks = 8, - .st_blksize = 16384, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = 1719864764, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 040777, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 4096, + .st_blocks = 8, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; const OrbisKernelStat stat_root_hostapp = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 040777, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1719784800, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1719861164, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1719861164, - .st_ctim.tv_nsec = 0, - .st_size = 4096, - .st_blocks = 8, - .st_blksize = 16384, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = 1719861164, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 040777, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 4096, + .st_blocks = 8, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; const OrbisKernelStat stat_root_av_contents = { - .st_dev = 0, - .st_ino = 0, - .st_mode = 040775, - .st_nlink = 0, - .st_uid = 0, - .st_gid = 0, - .st_rdev = 0, - .st_atim.tv_sec = 1758801537, - .st_atim.tv_nsec = 0, - .st_mtim.tv_sec = 1758801537, - .st_mtim.tv_nsec = 0, - .st_ctim.tv_sec = 1758801537, - .st_ctim.tv_nsec = 0, - .st_size = 160, - .st_blocks = 32, - .st_blksize = 16384, - .st_flags = 0, - .st_gen = 0, - .st_lspare = 0, - .st_birthtim.tv_sec = 1758801536, - .st_birthtim.tv_nsec = 0, + .st_dev = 0, + .st_ino = 0, + .st_mode = 040775, + .st_nlink = 0, + .st_uid = 0, + .st_gid = 0, + .st_rdev = 0, + .st_size = 160, + .st_blocks = 32, + .st_blksize = 16384, + .st_flags = 0, + .st_gen = 0, + .st_lspare = 0, }; } // namespace DumpedConstants \ No newline at end of file diff --git a/tests/code/filesystem_test/code/fs_test.cpp b/tests/code/filesystem_test/code/fs_test.cpp index fd98f99..9f310fd 100644 --- a/tests/code/filesystem_test/code/fs_test.cpp +++ b/tests/code/filesystem_test/code/fs_test.cpp @@ -159,8 +159,8 @@ TEST(FilesystemTests, FileOpenTests) { // Obviously bad ones, flags are irrelevant status = TestOpenFlags("assets/misc/file.txt", 0, "O_RDONLY", &status_errno); - UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); - UNSIGNED_INT_EQUALS(EINVAL, status_errno); + UNSIGNED_INT_EQUALS_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "Relative paths = EINVAL"); + UNSIGNED_INT_EQUALS_TEXT(EINVAL, status_errno, "Relative paths = EINVAL"); status = TestOpenFlags("./assets/misc/file.txt", 0, "O_RDONLY", &status_errno); UNSIGNED_INT_EQUALS(ORBIS_KERNEL_ERROR_EINVAL, status); UNSIGNED_INT_EQUALS(EINVAL, status_errno); @@ -226,7 +226,7 @@ TEST(FilesystemTests, FileMovementTests) { int status {0}; // file->(existent)file: status = sceKernelRename(movingFileA, movingFileB); - CHECK_EQUAL_ZERO(status); + CHECK_EQUAL_ZERO_TEXT(status, "If target exists, it should be overwritten"); UNSIGNED_LONGS_EQUAL(fileno_movingFileA, get_fileno(movingFileB)); fileno_movingFileB = fileno_movingFileA; @@ -299,7 +299,7 @@ TEST(FilesystemTests, FileOpenAbuseTest) { int abused_fd = sceKernelOpen(abused_file, O_RDWR, 0777); auto abused_fileno = get_fileno(abused_file); - CHECK_COMPARE(0, <, abused_fileno); // File not created otherwise + CHECK_COMPARE_TEXT(0, <, abused_fileno, "Fileno cannot be 0"); // File not created otherwise // write to opened file status = sceKernelWrite(abused_fd, teststring1, strlen(teststring1)); @@ -313,17 +313,39 @@ TEST(FilesystemTests, FileOpenAbuseTest) { // should be able to r/w to it, inode remains while directory entry is deleted LONGLONGS_EQUAL(strlen(teststring2), sceKernelWrite(abused_fd, teststring2, strlen(teststring2))); CHECK_EQUAL_ZERO(sceKernelLseek(abused_fd, 0, 0)); - CHECK_COMPARE_TEXT(sceKernelRead(abused_fd, abused_buffer, 256), >, 0, "XDXDXD"); + CHECK_COMPARE(sceKernelRead(abused_fd, abused_buffer, 256), >, 0); CHECK_EQUAL_ZERO(memcmp(abused_buffer, readback_string, readback_string_len)); - Log("fstat() Fileno before removal =", abused_fileno, "after =", get_fileno(abused_fd)); - Log("stat() after removal =", exists(abused_file)); + UNSIGNED_LONGS_EQUAL_TEXT(abused_fileno, get_fileno(abused_fd), "fileno should be preserved after unlink before closing the file"); + UNSIGNED_INT_EQUALS_TEXT(ORBIS_KERNEL_ERROR_ENOENT, exists(abused_file), "Disk entry should be removed"); + UNSIGNED_INT_EQUALS_TEXT(ENOENT, errno, "Disk entry should be removed"); + CHECK_EQUAL_ZERO_TEXT(sceKernelClose(abused_fd), "Descriptor should be valid up until now"); +} - if (int status = sceKernelClose(abused_fd); status != 0) LogError("File didn't close properly ( status =", status, ")"); +TEST(FilesystemTests, StatDumpTests) { + Log(); + Log("\t<<<< STAT >>>>"); + Log("\tLHS - current, RHS - original HW"); + Log(); - struct OrbisKernelStat ost; - Log(sceKernelStat("/download0", &ost)); - Log(sceKernelMkdir("/download0/temp/", 0777)); + CHECK_TRUE(TestStat("/", &DumpedConstants::stat_root)); + CHECK_TRUE(TestStat("/app0", &DumpedConstants::stat_root_app0)); + CHECK_TRUE(TestStat("/app0/eboot.bin", &DumpedConstants::stat_root_app0_eboot)); + CHECK_TRUE(TestStat("/app0/assets/misc/file.txt", &DumpedConstants::stat_root_app0_assets_misc_file)); + CHECK_TRUE(TestStat("/data/therapist", &DumpedConstants::stat_root_data)); + CHECK_TRUE(TestStat("/dev", &DumpedConstants::stat_root_dev)); + CHECK_TRUE(TestStat("/dev/deci_stderr", &DumpedConstants::stat_blkdev)); + CHECK_TRUE(TestLStat("/dev/deci_stderr")); + CHECK_TRUE(TestStat("/dev/deci_stdout", &DumpedConstants::stat_blkdev)); + CHECK_TRUE(TestStat("/dev/stdin", nullptr)); + CHECK_TRUE_TEXT(TestStat("/dev/stdout", nullptr), "Stat shouldn't work on /dev/stdout"); + CHECK_TRUE_TEXT(!TestLStat("/dev/stdout"), "LStat shouldn't work on /dev/stdout"); + CHECK_TRUE(TestStat("/dev/random", &DumpedConstants::stat_blkdev)); + CHECK_TRUE(TestStat("/dev/urandom", &DumpedConstants::stat_blkdev)); + CHECK_TRUE(TestStat("/host", &DumpedConstants::stat_root_host)); + CHECK_TRUE(TestStat("/hostapp", &DumpedConstants::stat_root_hostapp)); + CHECK_TRUE(TestStat("/av_contents", &DumpedConstants::stat_root_av_contents)); + CHECK_TRUE_TEXT(!TestLStat("/av_contents"), "LStat shouldn't work on /av_contents"); } void RunTests() { @@ -390,8 +412,8 @@ void RunTests() { Log("\t UID, GID are always 0"); Log(); - // ElEsDashElAy("/"); - // ElEsDashElAy("/app0"); + ElEsDashElAy("/"); + ElEsDashElAy("/app0"); // // Dirents @@ -411,30 +433,6 @@ void RunTests() { // Stat // - Log(); - Log("\t<<<< STAT >>>>"); - Log("\tLHS - emulated, RHS - OG"); - Log(); - - TEST_CASE(TestStat("/", &DumpedConstants::stat_root), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/app0", &DumpedConstants::stat_root_app0), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/app0/eboot.bin", &DumpedConstants::stat_root_app0_eboot), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/app0/assets/misc/file.txt", &DumpedConstants::stat_root_app0_assets_misc_file), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/data/therapist", &DumpedConstants::stat_root_data), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/dev", &DumpedConstants::stat_root_dev), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/dev/deci_stderr", &DumpedConstants::stat_root_dev_deci_stderr), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestLStat("/dev/deci_stderr"), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/dev/deci_stdout", &DumpedConstants::stat_root_dev_deci_stdout), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/dev/stdin", nullptr), "Test complete [stat should fail]", "Stat comparsion failed"); - TEST_CASE(TestStat("/dev/stdout", nullptr), "Test complete", "Stat worked on /dev/stdout"); - TEST_CASE(!TestLStat("/dev/stdout"), "Test complete", "LStat worked on /dev/stdout"); - TEST_CASE(TestStat("/dev/random", &DumpedConstants::stat_root_dev_random), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/dev/urandom", &DumpedConstants::stat_root_dev_urandom), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/host", &DumpedConstants::stat_root_host), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/hostapp", &DumpedConstants::stat_root_hostapp), "Test complete", "Stat comparsion failed"); - TEST_CASE(TestStat("/av_contents", &DumpedConstants::stat_root_av_contents), "Test complete", "Stat comparsion failed"); - TEST_CASE(!TestLStat("/av_contents"), "Test complete", "LStat worked on /av_contents"); - // // CURSED FILE CREATION // diff --git a/tests/code/filesystem_test/code/fs_test.h b/tests/code/filesystem_test/code/fs_test.h index deb3429..c2c8723 100644 --- a/tests/code/filesystem_test/code/fs_test.h +++ b/tests/code/filesystem_test/code/fs_test.h @@ -1,7 +1,8 @@ #ifndef FS_TEST_H #define FS_TEST_H -#define UNSIGNED_INT_EQUALS(expected, actual) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, NULLPTR, __FILE__, __LINE__) +#define UNSIGNED_INT_EQUALS(expected, actual) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, NULLPTR, __FILE__, __LINE__) +#define UNSIGNED_INT_EQUALS_TEXT(expected, actual, text) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, text, __FILE__, __LINE__) #include "log.h" From ac0b29a20bd081f91a442ce4fa20a81810bce8d6 Mon Sep 17 00:00:00 2001 From: igor725 Date: Sun, 8 Feb 2026 23:17:04 +0300 Subject: [PATCH 08/23] Cleanup + update template --- template/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/CMakeLists.txt b/template/CMakeLists.txt index 101ddd6..6a86e53 100644 --- a/template/CMakeLists.txt +++ b/template/CMakeLists.txt @@ -9,7 +9,7 @@ set(SRC_FILES create_pkg(TEMT00350 3 50 ${SRC_FILES}) set_target_properties(TEMT00350 PROPERTIES OO_PKG_TITLE "PS4 test template for SDK 3.50") -finalize_pkg(TEMT00350) # This call should be done after EVERY create_pkg call, will cause fatal error otherwise +finalize_pkg(TEMT00350) create_pkg(TEMT00550 5 50 ${SRC_FILES}) set_target_properties(TEMT00550 PROPERTIES OO_PKG_TITLE "PS4 test template for SDK 5.50") From 006c1f68c91e044f9c932860958757ef6cb7898f Mon Sep 17 00:00:00 2001 From: igor725 Date: Wed, 11 Feb 2026 14:06:40 +0300 Subject: [PATCH 09/23] Validate pkgs --- template/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/CMakeLists.txt b/template/CMakeLists.txt index 6a86e53..101ddd6 100644 --- a/template/CMakeLists.txt +++ b/template/CMakeLists.txt @@ -9,7 +9,7 @@ set(SRC_FILES create_pkg(TEMT00350 3 50 ${SRC_FILES}) set_target_properties(TEMT00350 PROPERTIES OO_PKG_TITLE "PS4 test template for SDK 3.50") -finalize_pkg(TEMT00350) +finalize_pkg(TEMT00350) # This call should be done after EVERY create_pkg call, will cause fatal error otherwise create_pkg(TEMT00550 5 50 ${SRC_FILES}) set_target_properties(TEMT00550 PROPERTIES OO_PKG_TITLE "PS4 test template for SDK 5.50") From 90314221d1c7213d555eddb16fd19ebda5f623d4 Mon Sep 17 00:00:00 2001 From: igor725 Date: Wed, 18 Feb 2026 23:37:15 +0300 Subject: [PATCH 10/23] Make sources list a variadic argument --- tests/ps4_package.cmake | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/tests/ps4_package.cmake b/tests/ps4_package.cmake index 3c0344f..977665c 100644 --- a/tests/ps4_package.cmake +++ b/tests/ps4_package.cmake @@ -3,7 +3,6 @@ # # params: # work_lib_name - Name for the library target in CMake project -# src_files - List of files/objects to compile into this prx lib # fw_version - Firmware version of the library, it is recommended to use the same version as pkg version to avoid linking problems # pkg_title_id - Package CMake target where to install this library # inst_path - Relative to project install directory path where to install the library, i.e. "sce_module" to put it in /app0/sce_module @@ -13,7 +12,13 @@ # result: # This function sets ${prx_first_occur} variable in parent scope to TRUE if library with specified parameters was just built the first time. # The function always sets this variable to TRUE if reuse_existing set to FALSE. -function(create_lib work_lib_name src_files fw_version pkg_title_id inst_path out_lib_name reuse_existing) +function(create_lib work_lib_name fw_version pkg_title_id inst_path out_lib_name reuse_existing) + list(LENGTH ARGN source_count) + + if(source_count LESS 1) + message(FATAL_ERROR "No source files were provided to the create_lib call") + endif() + if(NOT ${reuse_existing} AND TARGET ${work_lib_name}) message(FATAL_ERROR "Library name collision detected: ${work_lib_name}.") endif() @@ -32,7 +37,10 @@ function(create_lib work_lib_name src_files fw_version pkg_title_id inst_path ou ) set(prx_first_occur FALSE PARENT_SCOPE) else() - add_library(${work_lib_name} SHARED ${src_files} ${OO_PS4_TOOLCHAIN}/lib/crtlib.o) + add_library(${work_lib_name} SHARED + ${OO_PS4_TOOLCHAIN}/lib/crtlib.o + ${ARGN} + ) OpenOrbis_AddFSelfCommand(${work_lib_name} ${CMAKE_CURRENT_BINARY_DIR} ${work_lib_name} ${fw_version}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${work_lib_name}.prx @@ -45,20 +53,26 @@ endfunction() function(internal_create_stub_libs pkg_title_id fw_version) # Generate libc.prx stub - create_lib("c${fw_version}" "${OO_PS4_TOOLCHAIN}/src/modules/libc/libc/lib.c" ${fw_version} ${pkg_title_id} "sce_module" "libc.prx" TRUE) + create_lib("c${fw_version}" ${fw_version} ${pkg_title_id} "sce_module" "libc.prx" TRUE "${OO_PS4_TOOLCHAIN}/src/modules/libc/libc/lib.c") # Generate libSceFios2.prx - create_lib("fios${fw_version}" "${OO_PS4_TOOLCHAIN}/src/modules/libSceFios2/libSceFios2/lib.c" ${fw_version} ${pkg_title_id} "sce_module" "libSceFios2.prx" TRUE) + create_lib("fios${fw_version}" ${fw_version} ${pkg_title_id} "sce_module" "libSceFios2.prx" TRUE "${OO_PS4_TOOLCHAIN}/src/modules/libSceFios2/libSceFios2/lib.c") # Generate right.sprx - create_lib("right${fw_version}" "${OO_PS4_TOOLCHAIN}/src/modules/right/right/lib.c" ${fw_version} ${pkg_title_id} "sce_sys/about" "right.sprx" TRUE) + create_lib("right${fw_version}" ${fw_version} ${pkg_title_id} "sce_sys/about" "right.sprx" TRUE "${OO_PS4_TOOLCHAIN}/src/modules/right/right/lib.c") if(${prx_first_occur}) # No need to re-set this option every time target_link_options("right${fw_version}" PRIVATE "-Wl,--version-script=${OO_PS4_TOOLCHAIN}/src/modules/right/right/right.version") endif() endfunction() -function(create_pkg title_id fw_major fw_minor src_files) +function(create_pkg title_id fw_major fw_minor) + list(LENGTH ARGN source_count) + + if(source_count LESS 1) + message(FATAL_ERROR "No source files were provided to the create_pkg call") + endif() + set(FW_MAJOR_PADDED 0) set(FW_MINOR_PADDED 0) @@ -100,8 +114,8 @@ function(create_pkg title_id fw_major fw_minor src_files) message(STATUS "Creating package id:${title_id} fw:${fw_version_hex}") add_executable(${title_id} - ${src_files} ${OO_PS4_TOOLCHAIN}/lib/crt1.o + ${ARGN} ) string(SUBSTRING "${title_id}" 0 4 default_title) From 67116c9b0b55514054024e0896507f4e66f5c286 Mon Sep 17 00:00:00 2001 From: igor725 Date: Thu, 19 Feb 2026 05:27:59 +0300 Subject: [PATCH 11/23] Update comments and README.md + move template to tests directory --- README.md | 10 +++--- tests/CMakeLists.txt | 2 +- .../code/template}/CMakeLists.txt | 0 .../code/template}/assets/.gitkeep | 0 .../code/template}/code/main.cpp | 0 .../code/template}/code/sfoparams.h | 0 .../code/template}/code/test.cpp | 0 tests/ps4_package.cmake | 31 +++++++++++++++++-- 8 files changed, 35 insertions(+), 8 deletions(-) rename {template => tests/code/template}/CMakeLists.txt (100%) rename {template => tests/code/template}/assets/.gitkeep (100%) rename {template => tests/code/template}/code/main.cpp (100%) rename {template => tests/code/template}/code/sfoparams.h (100%) rename {template => tests/code/template}/code/test.cpp (100%) diff --git a/README.md b/README.md index 2bfb2ae..56417be 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,10 @@ cmake --build ./build/ After build, tests are in `./build/install` and are ready to use (no cmake install needed) ## Adding new test -copy template into tests/ and rename it. Add tests into code/test.cpp -If sys libs are needed, then add them to `set(PRJ_ADD_LIBS SceVideoOut SceAudioOut ScePad SceUserService)` - -> **_NOTE:_** No need to add tests folder into CMakeLists. All folder under tests are automatically build. +Create a copy of `template` directory in `./tests/code` and rename it. Add tests into test's `code/test.cpp`. +If sys libs are needed, then add them using `link_libraries()` call inside the test's CMake file. +It is recommended to read comments in `.tests/code/ps4_packatge.cmake` and `./OpenOrbis-tc.cmake` to get the +better understanding of how targets are working and learn how to set them up. +> [!NOTE] +> No need to add tests folder into CMakeLists. All folder under tests are automatically build. diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8750300..6253fbb 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -36,7 +36,7 @@ macro(SUBDIRLIST result curdir) set(dirlist) foreach(child ${children}) - if(IS_DIRECTORY ${curdir}/${child} AND NOT child STREQUAL "template") + if(IS_DIRECTORY ${curdir}/${child} AND NOT child STREQUAL "template" AND EXISTS "{curdir}/${child}/CMakeLists.txt") LIST(APPEND dirlist ${child}) endif() endforeach() diff --git a/template/CMakeLists.txt b/tests/code/template/CMakeLists.txt similarity index 100% rename from template/CMakeLists.txt rename to tests/code/template/CMakeLists.txt diff --git a/template/assets/.gitkeep b/tests/code/template/assets/.gitkeep similarity index 100% rename from template/assets/.gitkeep rename to tests/code/template/assets/.gitkeep diff --git a/template/code/main.cpp b/tests/code/template/code/main.cpp similarity index 100% rename from template/code/main.cpp rename to tests/code/template/code/main.cpp diff --git a/template/code/sfoparams.h b/tests/code/template/code/sfoparams.h similarity index 100% rename from template/code/sfoparams.h rename to tests/code/template/code/sfoparams.h diff --git a/template/code/test.cpp b/tests/code/template/code/test.cpp similarity index 100% rename from template/code/test.cpp rename to tests/code/template/code/test.cpp diff --git a/tests/ps4_package.cmake b/tests/ps4_package.cmake index 977665c..eaa63e0 100644 --- a/tests/ps4_package.cmake +++ b/tests/ps4_package.cmake @@ -1,15 +1,16 @@ -# description: +# Description: # This function creates an OpenOrbis prx library with specified parameters. # -# params: +# Params: # work_lib_name - Name for the library target in CMake project # fw_version - Firmware version of the library, it is recommended to use the same version as pkg version to avoid linking problems # pkg_title_id - Package CMake target where to install this library # inst_path - Relative to project install directory path where to install the library, i.e. "sce_module" to put it in /app0/sce_module # out_lib_name - Final library name, the one it will be installed with to the `inst_path` # reuse_existing - Boolean argument, if set to true it will not error on CMake target name collision, already compiled lib will be installed to the specified directory +# vararg... - The list of files to compile into a library # -# result: +# Result: # This function sets ${prx_first_occur} variable in parent scope to TRUE if library with specified parameters was just built the first time. # The function always sets this variable to TRUE if reuse_existing set to FALSE. function(create_lib work_lib_name fw_version pkg_title_id inst_path out_lib_name reuse_existing) @@ -66,6 +67,22 @@ function(internal_create_stub_libs pkg_title_id fw_version) endif() endfunction() +# Description: +# This function is a first stage for pkg creation. The `finalize_pkg` function should always +# be called after this one. It is allowed to change CMake's target properties for package +# between `create_pkg` and `finalize_pkg` calls. All available for change target properties +# are listed in OpenOrbis-tc.cmake file with brief description explicitly state the +# permission to change the value. +# +# Params: +# title_id - the package title id +# fw_major - the major firmware version +# fw_minor - the first two digits of minor firmware version +# vararg... - The list of files to compile into a eboot.bin file +# +# Result: +# Creates a target with the `title_id` name, this target builds the eboot.bin file and necessary +# stub libraries like libc.prx, libSceFios2.prx and right.sprx for specified firmware version. function(create_pkg title_id fw_major fw_minor) list(LENGTH ARGN source_count) @@ -142,6 +159,14 @@ function(create_pkg title_id fw_major fw_minor) internal_create_stub_libs(${title_id} ${fw_version_hex}) endfunction(create_pkg) +# Description: +# Finishes the package setup process, none of the parameters for +# finalized package target should be changed after this call. +# Changing target parameters after this call could lead to +# undefined behavior and compilation fails. +# +# Params: +# title_id - the package title id function(finalize_pkg pkg_title_id) OpenOrbisPackage_FinalizeProject(${pkg_title_id}) endfunction(finalize_pkg) From 23d7dd1f1a54151204daf7a7588b9f66ffec57fc Mon Sep 17 00:00:00 2001 From: igor725 Date: Thu, 19 Feb 2026 15:34:47 +0300 Subject: [PATCH 12/23] Fix README typos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 56417be..e4b4636 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,8 @@ After build, tests are in `./build/install` and are ready to use (no cmake insta ## Adding new test Create a copy of `template` directory in `./tests/code` and rename it. Add tests into test's `code/test.cpp`. If sys libs are needed, then add them using `link_libraries()` call inside the test's CMake file. -It is recommended to read comments in `.tests/code/ps4_packatge.cmake` and `./OpenOrbis-tc.cmake` to get the +It is recommended to read comments in `./tests/code/ps4_package.cmake` and `./OpenOrbis-tc.cmake` to get the better understanding of how targets are working and learn how to set them up. > [!NOTE] -> No need to add tests folder into CMakeLists. All folder under tests are automatically build. +> No need to add tests folder into `CMakeLists.txt`, all folders under `./tests/` are automatically built. From 4f45cca7b031a39f1de230073041215079039ba3 Mon Sep 17 00:00:00 2001 From: igor725 Date: Fri, 20 Feb 2026 01:21:25 +0300 Subject: [PATCH 13/23] Missing $ sign --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6253fbb..2313b2f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -36,7 +36,7 @@ macro(SUBDIRLIST result curdir) set(dirlist) foreach(child ${children}) - if(IS_DIRECTORY ${curdir}/${child} AND NOT child STREQUAL "template" AND EXISTS "{curdir}/${child}/CMakeLists.txt") + if(IS_DIRECTORY ${curdir}/${child} AND NOT child STREQUAL "template" AND EXISTS "${curdir}/${child}/CMakeLists.txt") LIST(APPEND dirlist ${child}) endif() endforeach() From db35148e1dd04a16fe4ba2eea5a66d1b61a642fc Mon Sep 17 00:00:00 2001 From: igor725 Date: Fri, 20 Feb 2026 01:38:48 +0300 Subject: [PATCH 14/23] Add package count validator --- OpenOrbis-tc.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/OpenOrbis-tc.cmake b/OpenOrbis-tc.cmake index 8604e11..c09e72c 100644 --- a/OpenOrbis-tc.cmake +++ b/OpenOrbis-tc.cmake @@ -209,6 +209,11 @@ endfunction() function(OpenOrbisPackage_Validate) get_property(list GLOBAL PROPERTY OO_PRJ_LIST) + list(LENGTH list list_len) + + if(${list_len} LESS 1) + message(FATAL_ERROR "No packages were added") + endif() foreach(Target ${list}) get_target_property(IsFinalized ${Target} OO_PKG_FINALIZED) From 3b4b4c1ea9ac48c0f74ad5e0b158e3ddf20a3ea7 Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Tue, 24 Feb 2026 16:04:00 +0100 Subject: [PATCH 15/23] cursed shall be thy read parameters --- .vscode/launch.json | 26 +- tests/code/filesystem_dirents/CMakeLists.txt | 2 +- .../code/filesystem_dirents/code/fs_test.cpp | 182 +- tests/code/filesystem_dirents/log_01.06.log | 0 tests/code/filesystem_dirents/log_01.07.log | 6186 +++++++++++++++++ 5 files changed, 6257 insertions(+), 139 deletions(-) delete mode 100644 tests/code/filesystem_dirents/log_01.06.log create mode 100644 tests/code/filesystem_dirents/log_01.07.log diff --git a/.vscode/launch.json b/.vscode/launch.json index 66f6075..9434fc0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -13,7 +13,31 @@ "args": [ // change accordingly "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", - "${workspaceFolder}/tests/code/filesystem_dirents/dumps/407d287-main" + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/af9cbb8-main" + ] + }, + { + "name": "Compare dumps (main mod)", + "type": "python", + "request": "launch", + "program": "${workspaceFolder}/tests/code/filesystem_dirents/dumps/comparator.py", + "console": "integratedTerminal", + "args": [ + // change accordingly + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/af9cbb8-main-mod" + ] + }, + { + "name": "Compare dumps (current)", + "type": "python", + "request": "launch", + "program": "${workspaceFolder}/tests/code/filesystem_dirents/dumps/comparator.py", + "console": "integratedTerminal", + "args": [ + // change accordingly + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", + "${userHome}/.local/share/shadps4/data/enderman/dumps" ] }, { diff --git a/tests/code/filesystem_dirents/CMakeLists.txt b/tests/code/filesystem_dirents/CMakeLists.txt index 390fe14..f6982f7 100644 --- a/tests/code/filesystem_dirents/CMakeLists.txt +++ b/tests/code/filesystem_dirents/CMakeLists.txt @@ -4,5 +4,5 @@ link_libraries(SceSystemService) create_pkg(TEST12345 5 50 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST12345 PROPERTIES OO_PKG_TITLE "Enderman") -set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.06") +set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.07") finalize_pkg(TEST12345) diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp index 9f4a8c2..7375bc6 100644 --- a/tests/code/filesystem_dirents/code/fs_test.cpp +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -7,9 +7,39 @@ #include #include #include +#include namespace FS_Test { +std::vector read_sizes {// 8 + 7, 8, 9, + // 16 + 15, 16, 17, + // 32 + 31, 32, 33, + // 64 + 63, 64, 65, + // 128 + 127, 128, 129, + // 256 + 255, 256, 257, + // 512 + 511, 512, 513, + // 1024 + 1023, 1024, 1025, + // 2048 + 2047, 2048, 2049, + // 4096 + 4095, 4096, 4097, + // 65536 + 65535, 65536, 65537, + // cursed + 2137, 21, 37, 69, 420, 42, 123, 222, 666, 911, 112, 997, + // something for zoomers + 67}; +std::vector read_sizes_pfs {65535, 65536, 65537}; +std::vector read_offsets {0, 1, 5, 10, 21, 37, 127, 128, 129, 400, 500, 512, 768, 1024, 111, 666, 420, 1234, 96, 42}; + namespace fs = std::filesystem; namespace oi = OrbisInternals; @@ -49,76 +79,11 @@ void RunTests() { Log("LSeek END-100=", sceKernelLseek(fd, -100, 2)); Log("LSeek END-100000=", sceKernelLseek(fd, -100000, 2)); - DumpDirectory(fd, 16, 0); - DumpDirectory(fd, 16, 7); - DumpDirectory(fd, 16, 47); - DumpDirectory(fd, 16, 123); - DumpDirectory(fd, 16, 128); - DumpDirectory(fd, 23, 0); - DumpDirectory(fd, 23, 7); - DumpDirectory(fd, 23, 47); - DumpDirectory(fd, 23, 123); - DumpDirectory(fd, 23, 128); - DumpDirectory(fd, 64, 0); - DumpDirectory(fd, 64, 7); - DumpDirectory(fd, 64, 47); - DumpDirectory(fd, 64, 123); - DumpDirectory(fd, 64, 128); - DumpDirectory(fd, 123, 0); - DumpDirectory(fd, 123, 7); - DumpDirectory(fd, 123, 47); - DumpDirectory(fd, 123, 123); - DumpDirectory(fd, 123, 128); - DumpDirectory(fd, 128, 0); - DumpDirectory(fd, 128, 7); - DumpDirectory(fd, 128, 47); - DumpDirectory(fd, 128, 123); - DumpDirectory(fd, 128, 128); - DumpDirectory(fd, 199, 0); - DumpDirectory(fd, 199, 7); - DumpDirectory(fd, 199, 47); - DumpDirectory(fd, 199, 123); - DumpDirectory(fd, 199, 128); - DumpDirectory(fd, 256, 0); - DumpDirectory(fd, 256, 7); - DumpDirectory(fd, 256, 47); - DumpDirectory(fd, 256, 123); - DumpDirectory(fd, 256, 128); - DumpDirectory(fd, 512, 0); - DumpDirectory(fd, 512, 7); - DumpDirectory(fd, 512, 47); - DumpDirectory(fd, 512, 123); - DumpDirectory(fd, 512, 128); - DumpDirectory(fd, 567, 0); - DumpDirectory(fd, 567, 7); - DumpDirectory(fd, 567, 47); - DumpDirectory(fd, 567, 123); - DumpDirectory(fd, 567, 128); - DumpDirectory(fd, 999, 0); - DumpDirectory(fd, 999, 7); - DumpDirectory(fd, 999, 47); - DumpDirectory(fd, 999, 123); - DumpDirectory(fd, 999, 128); - DumpDirectory(fd, 1024, 0); - DumpDirectory(fd, 1024, 7); - DumpDirectory(fd, 1024, 47); - DumpDirectory(fd, 1024, 123); - DumpDirectory(fd, 1024, 128); - DumpDirectory(fd, 1555, 0); - DumpDirectory(fd, 1555, 7); - DumpDirectory(fd, 1555, 47); - DumpDirectory(fd, 1555, 123); - DumpDirectory(fd, 1555, 128); - DumpDirectory(fd, 2048, 0); - DumpDirectory(fd, 2048, 7); - DumpDirectory(fd, 2048, 47); - DumpDirectory(fd, 2048, 123); - DumpDirectory(fd, 2048, 128); - DumpDirectory(fd, 2123, 0); - DumpDirectory(fd, 2123, 7); - DumpDirectory(fd, 2123, 47); - DumpDirectory(fd, 2123, 123); - DumpDirectory(fd, 2123, 128); + for (auto read_size: read_sizes) { + for (auto read_offset: read_offsets) { + DumpDirectory(fd, read_size, read_offset); + } + } sceKernelClose(fd); @@ -144,66 +109,11 @@ void RunTests() { Log("LSeek END-100=", sceKernelLseek(fd, -100, 2)); Log("LSeek END-100000=", sceKernelLseek(fd, -100000, 2)); - DumpDirectory(fd, 16, 0, true); - DumpDirectory(fd, 16, 7, true); - DumpDirectory(fd, 16, 47, true); - DumpDirectory(fd, 16, 123, true); - DumpDirectory(fd, 16, 128, true); - DumpDirectory(fd, 23, 0, true); - DumpDirectory(fd, 23, 7, true); - DumpDirectory(fd, 23, 47, true); - DumpDirectory(fd, 23, 123, true); - DumpDirectory(fd, 23, 128, true); - DumpDirectory(fd, 64, 0, true); - DumpDirectory(fd, 64, 7, true); - DumpDirectory(fd, 64, 47, true); - DumpDirectory(fd, 64, 123, true); - DumpDirectory(fd, 64, 128, true); - DumpDirectory(fd, 123, 0, true); - DumpDirectory(fd, 123, 7, true); - DumpDirectory(fd, 123, 47, true); - DumpDirectory(fd, 123, 123, true); - DumpDirectory(fd, 123, 128, true); - DumpDirectory(fd, 128, 0, true); - DumpDirectory(fd, 128, 7, true); - DumpDirectory(fd, 128, 47, true); - DumpDirectory(fd, 128, 123, true); - DumpDirectory(fd, 128, 128, true); - DumpDirectory(fd, 199, 0, true); - DumpDirectory(fd, 199, 7, true); - DumpDirectory(fd, 199, 47, true); - DumpDirectory(fd, 199, 123, true); - DumpDirectory(fd, 199, 128, true); - DumpDirectory(fd, 256, 0, true); - DumpDirectory(fd, 256, 7, true); - DumpDirectory(fd, 256, 47, true); - DumpDirectory(fd, 256, 123, true); - DumpDirectory(fd, 256, 128, true); - DumpDirectory(fd, 512, 0, true); - DumpDirectory(fd, 512, 7, true); - DumpDirectory(fd, 512, 47, true); - DumpDirectory(fd, 512, 123, true); - DumpDirectory(fd, 512, 128, true); - DumpDirectory(fd, 567, 0, true); - DumpDirectory(fd, 567, 7, true); - DumpDirectory(fd, 567, 47, true); - DumpDirectory(fd, 567, 123, true); - DumpDirectory(fd, 567, 128, true); - DumpDirectory(fd, 999, 0, true); - DumpDirectory(fd, 999, 7, true); - DumpDirectory(fd, 999, 47, true); - DumpDirectory(fd, 999, 123, true); - DumpDirectory(fd, 999, 128, true); - DumpDirectory(fd, 1024, 0, true); - DumpDirectory(fd, 1024, 7, true); - DumpDirectory(fd, 1024, 47, true); - DumpDirectory(fd, 1024, 123, true); - DumpDirectory(fd, 1024, 128, true); - DumpDirectory(fd, 65536, 0, true); - DumpDirectory(fd, 65536, 7, true); - DumpDirectory(fd, 65536, 47, true); - DumpDirectory(fd, 65536, 123, true); - DumpDirectory(fd, 65536, 128, true); + for (auto read_size: read_sizes) { + for (auto read_offset: read_offsets) { + DumpDirectory(fd, read_size, read_offset, true); + } + } sceKernelClose(fd); } @@ -212,7 +122,7 @@ bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size) { memset(buffer, 0xAA, size); s64 tbr = sceKernelRead(dir_fd, buffer, size); - Log("Read got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1)); + // Log("Read got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1)); if (tbr < 0) { LogError("Read finished with error:", tbr); @@ -223,8 +133,7 @@ bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size) { return false; } - s64 tbw = sceKernelWrite(dump_fd, buffer, size); - if (tbw != tbr) LogError("Written", tbw, "bytes out of", size, "bytes read"); + if (s64 tbw = sceKernelWrite(dump_fd, buffer, size); tbw != size) LogError("Written", tbw, "bytes out of", size, "bytes"); return true; } @@ -233,7 +142,7 @@ bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) memset(buffer, 0xAA, size); s64 tbr = sceKernelGetdirentries(dir_fd, buffer, size, idx); - Log("Dirent got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1), "idx =", *idx); + // Log("Dirent got", tbr, "/", size, "bytes, ptr =", sceKernelLseek(dir_fd, 0, 1), "idx =", *idx); if (tbr < 0) { LogError("Dirent finished with error:", tbr); @@ -244,8 +153,7 @@ bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) return false; } - s64 tbw = sceKernelWrite(dump_fd, buffer, size); - if (tbw != tbr) LogError("Written", tbw, "bytes out of", size, "bytes read"); + if (s64 tbw = sceKernelWrite(dump_fd, buffer, size); tbw != size) LogError("Written", tbw, "bytes out of", size, "bytes"); return true; } @@ -257,7 +165,7 @@ void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs) { fs::path dirent_path = "/data/enderman/dumps/dirent_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; - LogTest("Read", is_pfs ? "PFS" : "normal", "directory, fd =", fd, "size =", buffer_size, "offset =", offset); + LogTest("Read", is_pfs ? "PFS" : "normal", "directory, fd =", fd, "buffer size =", buffer_size, "starting offset =", offset); u16 max_loops = 0; // 65536 iterations lmao int read_fd = sceKernelOpen(read_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); diff --git a/tests/code/filesystem_dirents/log_01.06.log b/tests/code/filesystem_dirents/log_01.06.log deleted file mode 100644 index e69de29..0000000 diff --git a/tests/code/filesystem_dirents/log_01.07.log b/tests/code/filesystem_dirents/log_01.07.log new file mode 100644 index 0000000..cb6bfa4 --- /dev/null +++ b/tests/code/filesystem_dirents/log_01.07.log @@ -0,0 +1,6186 @@ +<118>**** Base Mode **** +<118>[ main ] [INFO] +<118>[ main ] [INFO] <<<< TESTS START >>>> +<118>[ main ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/enderman ] >> +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65536+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65536+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65536+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65535+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65535+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4097+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4097+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp:[SceShellCore] VM Stats: RSS 557.6, kernel 262.7, wire count 347.6, swap out 0.0, page table CPU 2341/6144 GPU 371/2048 +<118> 42 ) +<118>[SceShellCore] FMEM 1.3/ 4.5 NPXS20977 SceSysAvControl.elf +<118>[SceShellCore] FMEM 11.0/ 74.3 NPXS20991 SceSysCore.elf +<118>[SceShellCore] FMEM 9.5/ 54.3 NPXS20973 orbis_audiod.elf +<118>[[SceShellCore] FMEM 3.4/ 11.2 NPXS20976 GnmCompositor.elf +<118> Obliterate ] [SceShellCore] FMEM 29.2/ 342.8 NPXS20000 SceShellCore +<118>[FAIL] Cannot remove [[SceShellCore] FMEM 341.0/ 858.8 NPXS20001 SceShellUI +<118> /data/enderman/dumps/read_PFS_4096+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[SceShellCore] FMEM 7.5/ 12.6 NPXS21003 SceAvCapture +<118>[SceShellCore] FMEM 9.4/ 24.6 NPXS21000 SceGameLiveStreaming +<118>[SceShellCore] FMEM 15.1/ 48.4 NPXS21002 ScePartyDaemon +<118>[ Obliterate [SceShellCore] FMEM 4.6/ 25.4 NPXS21004 SceVideoCoreServer +<118>] [FAIL] [SceShellCore] FMEM 10.8/ 51.3 NPXS21006 SceRemotePlay +<118>Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+128.bin[SceShellCore] FMEM 8.3/ 43.2 NPXS21010 SceCloudClientDaemon +<118> ] ( errno = [SceShellCore] FMEM 3.5/ 10.8 NPXS21016 SceSpZeroConf +<118>2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 [SceShellCore] FMEM 9.0/ 156.0 NPXS21002 webrtc_daemon.self +<118>) +<118>[SceShellCore] FMEM 7.4/ 18.1 NPXS21019 SceSocialScreenMgr +<118>[SceShellCore] FMEM 5.5/ 9.8 NPXS21007 SceMusicCoreServer +<118>[SceShellCore] FMEM 7.7/ 14.4 NPXS21020 SceVoiceAndAgent +<118>[SceShellCore] FMEM 2.3/ 5.1 NPXS20967 fs_cleaner.elf +<118>[ Obliterate [SceShellCore] FMEM 2.3/ 10.2 NPXS20974 SceVdecProxy.elf +<118>] [FAIL] [SceShellCore] FMEM 2.3/ 10.3 NPXS20975 SceVencProxy.elf +<118>Cannot remove [ /data/enderman/dumps/read_PFS_4096+128.bin ] ( errno = 2 ) [SceShellCore] FMEM 23.8/ 263.9 NPXS20001 SecureUIProcess.self +<118>( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[SceShellCore] FMEM 32.1/ 526.0 NPXS20001 SecureWebProcess.self +<118>[SceShellCore] FMEM 10.7/ 358.8 NPXS20001 orbis-jsc-compiler.self +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4096+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4096+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_4095+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_4095+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate [SceShellCore] Libc Heap Status: free 37%, in-use 3800.3 KB, trend +35.6 KB/min, peak 4142.0 KB, when 186 [sec] +<118>] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2049+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2049+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2048+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2048+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_2047+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_2047+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1025+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1025+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1024+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_1023+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1023+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_513+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_513+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_256+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_256+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_256+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_255+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_255+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_129+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_129+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_129+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_128+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_128+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_127+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_127+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_127+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_65+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_65+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_64+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_64+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_64+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_63+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_63+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_33+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_33+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_32+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_32+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_32+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_31+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_31+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_17+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_17+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_1024+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_512+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_512+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_511+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_511+0.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+42.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+1234.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+420.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+666.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+111.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+1024.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+768.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+512.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+500.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+400.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+129.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+96.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+128.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+127.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+37.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+21.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+10.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+5.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/dirent_PFS_257+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [FAIL] Cannot remove [ /data/enderman/dumps/read_PFS_257+1.bin ] ( errno = 2 ) ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test_tools.cpp: 42 ) +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/enderman ] << +<118>[ RunTests ] [INFO] --------------------- +<118>[ RunTests ] [INFO] Dump normal directory +<118>[ RunTests ] [INFO] --------------------- +<118>[ RunTests ] [INFO] Directory opened with fd= 13 +<118>[ RunTests ] [INFO] LSeek START+0= 0 +<118>[ RunTests ] [INFO] LSeek START-123= -2147352554 +<118>[ RunTests ] [INFO] LSeek START+123456= 123456 +<118>[ RunTests ] [INFO] LSeek START+60= 60 +<118>[ RunTests ] [INFO] LSeek CUR+0= 60 +<118>[ RunTests ] [INFO] LSeek CUR+24= 84 +<118>[ RunTests ] [INFO] LSeek CUR-24= 60 +<118>[ RunTests ] [INFO] LSeek CUR-6666= -2147352554 +<118>[ RunTests ] [INFO] LSeek CUR+123456= 123516 +<118>[ RunTests ] [INFO] LSeek END+0= 2048 +<118>[ RunTests ] [INFO] LSeek END+123456= 125504 +<118>[ RunTests ] [INFO] LSeek END+100= 2148 +<118>[ RunTests ] [INFO] LSeek END-100= 1948 +<118>[ RunTests ] [INFO] LSeek END-100000= -2147352554 +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 7 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 8 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 9 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 15 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 16 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 17 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 31 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 32 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 33 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 63 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 64 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 127 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 128 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 129 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 255 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 256 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 257 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 37 +<118>[ DumpByRead ^[f] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 511 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 512 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 513 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1023 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1024 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 1025 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2047 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2048 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2049 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4095 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4096 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 4097 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65535 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65536 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 65537 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 2137 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 21 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 37 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 69 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 420 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 42 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 123 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 222 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 666 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 911 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 112 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 997 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read normal directory, fd = 13 buffer size = 67 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ RunTests ] [INFO] ------------------ +<118>[ RunTests ] [INFO] Dump PFS directory +<118>[ RunTests ] [INFO] ------------------ +<118>[ RunTests ] [INFO] Directory opened with fd= 13 +<118>[ RunTests ] [INFO] LSeek START+0= 0 +<118>[ RunTests ] [INFO] LSeek START-123= -2147352554 +<118>[ RunTests ] [INFO] LSeek START+123456= 123456 +<118>[ RunTests ] [INFO] LSeek START+60= 60 +<118>[ RunTests ] [INFO] LSeek CUR+0= 60 +<118>[ RunTests ] [INFO] LSeek CUR+24= 84 +<118>[ RunTests ] [INFO] LSeek CUR-24= 60 +<118>[ RunTests ] [INFO] LSeek CUR-6666= -2147352554 +<118>[ RunTests ] [INFO] LSeek CUR+123456= 123516 +<118>[ RunTests ] [INFO] LSeek END+0= 65536 +<118>[ RunTests ] [INFO] LSeek END+123456= 188992 +<118>[ RunTests ] [INFO] LSeek END+100= 65636 +<118>[ RunTests ] [INFO] LSeek END-100= 65436 +<118>[ RunTests ] [INFO] LSeek END-100000= -2147352554 +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 7 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 8 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 9 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 15 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 16 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 17 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 31 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS ^[[Bdirectory, fd = 13 buffer size = 32 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 32 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 33 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 63 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 64 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 127 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 21 +<118>[ DumpByRead ] #LOGIN MGR# Receive Event : SCE_MBUS_EVENT_DEVICE_STATUS_UPDATED [DeviceId:0x30300] +<118>[SUCC] #LOGIN MGR# Battery status changed. +<118>Read finished +<118>Battery status : 0 +<118>Battery level : 100 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 128 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 129 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 255 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 256 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 257 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 511 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 512 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 513 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1023 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1024 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 1025 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2047 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2048 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2049 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4095 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4096 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 4097 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65535 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65536 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 65537 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 2137 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 21 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 37 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 69 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 420 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 42 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 123 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 222 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 666 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 911 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 112 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 0 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 10 +<118>[ DumpByRead [SceSystemStateMgr] No user input for 60 seconds +<118>] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 997 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 0 +<118>[SceShellCore] Main thread has frozen in sceKernelUsleep(100 * 1000) for 2 seconds +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 1 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 5 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 10 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 21 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 37 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 127 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 128 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 129 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 400 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 500 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [SUCC] Dirent finished +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 512 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 768 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 1024 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 111 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 666 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 420 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 1234 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 96 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ DumpDirectory ] [TEST] Read PFS directory, fd = 13 buffer size = 67 starting offset = 42 +<118>[ DumpByRead ] [SUCC] Read finished +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 148 ) +<118>[ main ] [INFO] +<118>[ main ] [INFO] <<<< TESTS END >>>> +<118>[ main ] [INFO] \ No newline at end of file From 5d1514466d757091ca50a71d2eaf4f6a6128c34c Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Wed, 25 Feb 2026 14:59:52 +0100 Subject: [PATCH 16/23] toolset ctd. --- .vscode/launch.json | 2 +- tests/code/filesystem_dirents/CMakeLists.txt | 2 +- .../code/filesystem_dirents/code/fs_test.cpp | 2 +- .../filesystem_dirents/dumps/comparator.py | 42 ++++++++++++------- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 9434fc0..a65ed8a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -37,7 +37,7 @@ "args": [ // change accordingly "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", - "${userHome}/.local/share/shadps4/data/enderman/dumps" + "${userHome}/.local/share/shadPS4/data/enderman/dumps" ] }, { diff --git a/tests/code/filesystem_dirents/CMakeLists.txt b/tests/code/filesystem_dirents/CMakeLists.txt index f6982f7..7f06fc4 100644 --- a/tests/code/filesystem_dirents/CMakeLists.txt +++ b/tests/code/filesystem_dirents/CMakeLists.txt @@ -4,5 +4,5 @@ link_libraries(SceSystemService) create_pkg(TEST12345 5 50 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST12345 PROPERTIES OO_PKG_TITLE "Enderman") -set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.07") +set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.08") finalize_pkg(TEST12345) diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp index 7375bc6..d5e11c5 100644 --- a/tests/code/filesystem_dirents/code/fs_test.cpp +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -165,7 +165,7 @@ void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs) { fs::path dirent_path = "/data/enderman/dumps/dirent_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; - LogTest("Read", is_pfs ? "PFS" : "normal", "directory, fd =", fd, "buffer size =", buffer_size, "starting offset =", offset); + LogTest(is_pfs ? "PFS" : "normal", "directory, fd =", fd, "buffer size =", buffer_size, "starting offset =", offset); u16 max_loops = 0; // 65536 iterations lmao int read_fd = sceKernelOpen(read_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); diff --git a/tests/code/filesystem_dirents/dumps/comparator.py b/tests/code/filesystem_dirents/dumps/comparator.py index 8888fd6..eaf4166 100644 --- a/tests/code/filesystem_dirents/dumps/comparator.py +++ b/tests/code/filesystem_dirents/dumps/comparator.py @@ -1,6 +1,5 @@ import os import sys -import hashlib import re if len(sys.argv) != 3: @@ -8,6 +7,11 @@ print("Compare dirent dumps between console and dump") sys.exit(0) +regular_dirent_query_re = re.compile(b"(.{4}.{2}[\x02\x04\x08].)([ -~]{1,255})\x00") +pfs_query_getdents_re = re.compile( + b"(.{4}[\x02\x04\x08]\x00{3}.{4}.{4})([ -~]{1,255})\x00" +) + dir_left = sys.argv[1] dir_right = sys.argv[2] @@ -25,9 +29,10 @@ file_left_path = os.path.join(os.path.abspath(dir_left), filename) file_right_path = os.path.join(os.path.abspath(dir_right), filename) is_pfs = "PFS" in filename + is_read = "read" in filename + is_getdents = "dirent" in filename - # temporarily - if is_pfs: + if not (is_read or is_getdents): continue print() @@ -44,14 +49,12 @@ with open(file_right_path, "rb") as rhsf: content_right = rhsf.read() - hash_left = hashlib.md5(content_left).hexdigest() - hash_right = hashlib.md5(content_right).hexdigest() - hash_match = hash_left == hash_right + if size_left == 0 and size_right == 0: + continue - print(f"Size:\t{size_match}\t{size_left}\t{size_right}") - print(f"MD5:\t{hash_match}\t{hash_left}\t{hash_right}") + print(f"Size:\t{size_left}\t{size_right}") - if size_match and hash_match: + if not size_match: continue left_file_list = [] @@ -62,9 +65,14 @@ left_skipped_bytes = [] right_skipped_bytes = [] + search_query = None prev_end = 0 - search_query = re.finditer(b"(.{8})([ -~]{1,255})\x00", content_left) + lsresult = None + if is_pfs and is_read: + search_query = pfs_query_getdents_re.finditer(content_left) + else: + search_query = regular_dirent_query_re.finditer(content_left) for lsresult in search_query: left_file_list.append(lsresult.group(2)) result_pos = lsresult.start() @@ -73,9 +81,15 @@ if left_skipped_bytes_temp != 0: left_skipped_bytes.append(left_skipped_bytes_temp) prev_end = lsresult.end() + if lsresult is None: + print("Left: can't match file entries") prev_end = 0 - search_query = re.finditer(b"(.{8})([ -~]{1,255})\x00", content_left) + lsresult = None + if is_pfs and is_read: + search_query = pfs_query_getdents_re.finditer(content_right) + else: + search_query = regular_dirent_query_re.finditer(content_right) for lsresult in search_query: right_file_list.append(lsresult.group(2)) result_pos = lsresult.start() @@ -85,6 +99,8 @@ right_skipped_bytes.append(right_skipped_bytes_temp) prev_end = lsresult.end() + if lsresult is None: + print("Right: can't match file entries") left_set = set(left_file_list) right_set = set(right_file_list) @@ -130,8 +146,4 @@ f"Right: Inconsistent skipped byted: L:{skipped_bytes}<=>R:{left_skipped_bytes[idx]}" ) - - - - pass From c1ed010cd32651af1f6d8a7298e9014bcef5fad8 Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Wed, 25 Feb 2026 15:21:23 +0100 Subject: [PATCH 17/23] macos adaptation --- .gitignore | 1 + .vscode/launch.json | 22 +++++----------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index ffc5abb..389e902 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ build/ .*/ !.github !.vscode +.DS_Store diff --git a/.vscode/launch.json b/.vscode/launch.json index a65ed8a..852a5e5 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,20 +4,8 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "name": "Compare dumps (main)", - "type": "python", - "request": "launch", - "program": "${workspaceFolder}/tests/code/filesystem_dirents/dumps/comparator.py", - "console": "integratedTerminal", - "args": [ - // change accordingly - "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", - "${workspaceFolder}/tests/code/filesystem_dirents/dumps/af9cbb8-main" - ] - }, { - "name": "Compare dumps (main mod)", + "name": "Compare dumps (current, linux)", "type": "python", "request": "launch", "program": "${workspaceFolder}/tests/code/filesystem_dirents/dumps/comparator.py", @@ -25,11 +13,11 @@ "args": [ // change accordingly "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", - "${workspaceFolder}/tests/code/filesystem_dirents/dumps/af9cbb8-main-mod" + "${userHome}/.local/share/shadPS4/data/enderman/dumps" ] }, { - "name": "Compare dumps (current)", + "name": "Compare dumps (current, macOS)", "type": "python", "request": "launch", "program": "${workspaceFolder}/tests/code/filesystem_dirents/dumps/comparator.py", @@ -37,7 +25,7 @@ "args": [ // change accordingly "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", - "${userHome}/.local/share/shadPS4/data/enderman/dumps" + "${userHome}/Library/Application Support/shadPS4/data/enderman/dumps" ] }, { @@ -48,7 +36,7 @@ "console": "integratedTerminal", "args": [ "${workspaceFolder}/tests/code/filesystem_dirents/dumps/1202", - "${workspaceFolder}/tests/code/filesystem_dirents/dumps/08f4458-qfs" + "${workspaceFolder}/tests/code/filesystem_dirents/dumps/qfs-08f4458" ] } ] From 53aa2861eae3098b9841bdbe95f906c0abeb6bd0 Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Thu, 26 Feb 2026 21:25:51 +0100 Subject: [PATCH 18/23] Dirents are dumped by read value (again) Removed error counter from ly log util Moved Enderman to UTests --- tests/code/filesystem_dirents/CMakeLists.txt | 2 +- .../code/filesystem_dirents/code/fs_test.cpp | 214 ++++++++++++++---- tests/code/filesystem_dirents/code/fs_test.h | 6 +- .../filesystem_dirents/code/fs_test_tools.cpp | 4 - tests/code/filesystem_dirents/code/log.cpp | 11 - tests/code/filesystem_dirents/code/log.h | 3 +- tests/code/filesystem_dirents/code/main.cpp | 10 +- tests/code/filesystem_test/code/fs_test.cpp | 29 +-- tests/code/filesystem_test/code/log.cpp | 10 - tests/code/filesystem_test/code/log.h | 6 - 10 files changed, 188 insertions(+), 107 deletions(-) diff --git a/tests/code/filesystem_dirents/CMakeLists.txt b/tests/code/filesystem_dirents/CMakeLists.txt index 7f06fc4..750a4cb 100644 --- a/tests/code/filesystem_dirents/CMakeLists.txt +++ b/tests/code/filesystem_dirents/CMakeLists.txt @@ -4,5 +4,5 @@ link_libraries(SceSystemService) create_pkg(TEST12345 5 50 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST12345 PROPERTIES OO_PKG_TITLE "Enderman") -set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.08") +set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.10") finalize_pkg(TEST12345) diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp index d5e11c5..d659abc 100644 --- a/tests/code/filesystem_dirents/code/fs_test.cpp +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -2,6 +2,7 @@ #include "orbis/UserService.h" +#include #include #include #include @@ -9,8 +10,6 @@ #include #include -namespace FS_Test { - std::vector read_sizes {// 8 7, 8, 9, // 16 @@ -37,7 +36,6 @@ std::vector read_sizes {// 8 2137, 21, 37, 69, 420, 42, 123, 222, 666, 911, 112, 997, // something for zoomers 67}; -std::vector read_sizes_pfs {65535, 65536, 65537}; std::vector read_offsets {0, 1, 5, 10, 21, 37, 127, 128, 129, 400, 500, 512, 768, 1024, 111, 666, 420, 1234, 96, 42}; namespace fs = std::filesystem; @@ -47,9 +45,170 @@ bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size); bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx); void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs = false); +TEST_GROUP (DirentTests) { + void setup() {} + void teardown() {} +}; + +TEST(DirentTests, LseekRegularTests) { + int fd = sceKernelOpen("/data/enderman", O_DIRECTORY | O_RDONLY, 0777); + CHECK_COMPARE_TEXT(fd, >, 0, "Unable to open /data/enderman"); + + int status; + + errno = 0; + status = sceKernelLseek(fd, 0, 0); + UNSIGNED_LONGLONGS_EQUAL_TEXT(0, status, "START+0"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, -123, 0); + UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "START-123"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + errno = 0; + status = sceKernelLseek(fd, 123456, 0); + UNSIGNED_LONGLONGS_EQUAL_TEXT(123456, status, "START+123456"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 60, 0); + UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "START+60"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 0, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "CUR+0"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 24, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(84, status, "CUR+24"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, -24, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "CUR-24"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + errno = 0; + status = sceKernelLseek(fd, -6666, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "CUR-6666"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + errno = 0; + status = sceKernelLseek(fd, 123456, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(123516, status, "CUR+123456"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 0, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(2048, status, "END+0"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 123456, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(125504, status, "END+123456"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 100, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(2148, status, "END+100"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, -100, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(1948, status, "END-100"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + errno = 0; + status = sceKernelLseek(fd, -100000, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "END-100000"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + sceKernelClose(fd); +} + +TEST(DirentTests, LseekPFSTests) { + int fd = sceKernelOpen("/app0/assets/misc", O_DIRECTORY | O_RDONLY, 0777); + CHECK_COMPARE_TEXT(fd, >, 0, "Unable to open /app0/assets/misc"); + + s64 status; + + errno = 0; + status = sceKernelLseek(fd, 0, 0); + UNSIGNED_LONGLONGS_EQUAL_TEXT(0, status, "START+0"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, -123, 0); + UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "START-123"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + errno = 0; + status = sceKernelLseek(fd, 123456, 0); + UNSIGNED_LONGLONGS_EQUAL_TEXT(123456, status, "START+123456"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 60, 0); + UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "START+60"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 0, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "CUR+0"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 24, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(84, status, "CUR+24"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, -24, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "CUR-24"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + errno = 0; + status = sceKernelLseek(fd, -6666, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "CUR-6666"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + errno = 0; + status = sceKernelLseek(fd, 123456, 1); + UNSIGNED_LONGLONGS_EQUAL_TEXT(123516, status, "CUR+123456"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 0, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(2048, status, "END+0"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 123456, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(125504, status, "END+123456"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, 100, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(2148, status, "END+100"); + UNSIGNED_INT_EQUALS(0, errno); + + errno = 0; + status = sceKernelLseek(fd, -100, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(1948, status, "END-100"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + errno = 0; + status = sceKernelLseek(fd, -100000, 2); + UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "END-100000"); + UNSIGNED_INT_EQUALS(EINVAL, errno); + + sceKernelClose(fd); +} + void RunTests() { - RegenerateDir("/data/enderman"); - sceKernelMkdir("/data/enderman/dumps", 0777); std::string nf_path = "/data/enderman/filewithaverylongname"; char nf_num[4] {0}; for (u8 idx = 1; idx <= 50; idx++) { @@ -62,59 +221,22 @@ void RunTests() { Log("---------------------"); int fd = sceKernelOpen("/data/enderman", O_DIRECTORY | O_RDONLY, 0777); - Log("Directory opened with fd=", fd); - - Log("LSeek START+0=", sceKernelLseek(fd, 0, 0)); - Log("LSeek START-123=", sceKernelLseek(fd, -123, 0)); - Log("LSeek START+123456=", sceKernelLseek(fd, 123456, 0)); - Log("LSeek START+60=", sceKernelLseek(fd, 60, 0)); - Log("LSeek CUR+0=", sceKernelLseek(fd, 0, 1)); - Log("LSeek CUR+24=", sceKernelLseek(fd, 24, 1)); - Log("LSeek CUR-24=", sceKernelLseek(fd, -24, 1)); - Log("LSeek CUR-6666=", sceKernelLseek(fd, -6666, 1)); - Log("LSeek CUR+123456=", sceKernelLseek(fd, 123456, 1)); - Log("LSeek END+0=", sceKernelLseek(fd, 0, 2)); - Log("LSeek END+123456=", sceKernelLseek(fd, 123456, 2)); - Log("LSeek END+100=", sceKernelLseek(fd, 100, 2)); - Log("LSeek END-100=", sceKernelLseek(fd, -100, 2)); - Log("LSeek END-100000=", sceKernelLseek(fd, -100000, 2)); - for (auto read_size: read_sizes) { for (auto read_offset: read_offsets) { DumpDirectory(fd, read_size, read_offset); } } - sceKernelClose(fd); Log("------------------"); Log("Dump PFS directory"); Log("------------------"); fd = sceKernelOpen("/app0/assets/misc", O_DIRECTORY | O_RDONLY, 0777); - - Log("Directory opened with fd=", fd); - - Log("LSeek START+0=", sceKernelLseek(fd, 0, 0)); - Log("LSeek START-123=", sceKernelLseek(fd, -123, 0)); - Log("LSeek START+123456=", sceKernelLseek(fd, 123456, 0)); - Log("LSeek START+60=", sceKernelLseek(fd, 60, 0)); - Log("LSeek CUR+0=", sceKernelLseek(fd, 0, 1)); - Log("LSeek CUR+24=", sceKernelLseek(fd, 24, 1)); - Log("LSeek CUR-24=", sceKernelLseek(fd, -24, 1)); - Log("LSeek CUR-6666=", sceKernelLseek(fd, -6666, 1)); - Log("LSeek CUR+123456=", sceKernelLseek(fd, 123456, 1)); - Log("LSeek END+0=", sceKernelLseek(fd, 0, 2)); - Log("LSeek END+123456=", sceKernelLseek(fd, 123456, 2)); - Log("LSeek END+100=", sceKernelLseek(fd, 100, 2)); - Log("LSeek END-100=", sceKernelLseek(fd, -100, 2)); - Log("LSeek END-100000=", sceKernelLseek(fd, -100000, 2)); - for (auto read_size: read_sizes) { for (auto read_offset: read_offsets) { DumpDirectory(fd, read_size, read_offset, true); } } - sceKernelClose(fd); } @@ -129,11 +251,10 @@ bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size) { return false; } if (tbr == 0) { - LogSuccess("Read finished"); return false; } - if (s64 tbw = sceKernelWrite(dump_fd, buffer, size); tbw != size) LogError("Written", tbw, "bytes out of", size, "bytes"); + if (s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes"); return true; } @@ -149,11 +270,10 @@ bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) return false; } if (tbr == 0) { - LogSuccess("Dirent finished"); return false; } - if (s64 tbw = sceKernelWrite(dump_fd, buffer, size); tbw != size) LogError("Written", tbw, "bytes out of", size, "bytes"); + if (s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes"); return true; } @@ -186,5 +306,3 @@ void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs) { sceKernelClose(dirent_fd); delete[] buffer; } - -} // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_dirents/code/fs_test.h b/tests/code/filesystem_dirents/code/fs_test.h index 67af56d..b5a57cb 100644 --- a/tests/code/filesystem_dirents/code/fs_test.h +++ b/tests/code/filesystem_dirents/code/fs_test.h @@ -1,12 +1,13 @@ #ifndef FS_TEST_H #define FS_TEST_H +#define UNSIGNED_INT_EQUALS(expected, actual) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, NULLPTR, __FILE__, __LINE__) +#define UNSIGNED_INT_EQUALS_TEXT(expected, actual, text) UNSIGNED_LONGS_EQUAL_LOCATION((uint32_t)expected, (uint32_t)actual, text, __FILE__, __LINE__) + #include "log.h" #include -namespace FS_Test { - using s8 = int8_t; using s16 = int16_t; using s32 = int32_t; @@ -42,5 +43,4 @@ void Obliterate(const char* path); int32_t touch(const char* path); int32_t touch(const std::string& path); -} // namespace FS_Test #endif // FS_TEST_H diff --git a/tests/code/filesystem_dirents/code/fs_test_tools.cpp b/tests/code/filesystem_dirents/code/fs_test_tools.cpp index 2b667a3..f3ee3e0 100644 --- a/tests/code/filesystem_dirents/code/fs_test_tools.cpp +++ b/tests/code/filesystem_dirents/code/fs_test_tools.cpp @@ -4,8 +4,6 @@ #include #include -namespace FS_Test { - namespace fs = std::filesystem; namespace oi = OrbisInternals; @@ -51,5 +49,3 @@ void RegenerateDir(const char* path) { Obliterate(path); sceKernelMkdir(path, 0777); } - -} // namespace FS_Test \ No newline at end of file diff --git a/tests/code/filesystem_dirents/code/log.cpp b/tests/code/filesystem_dirents/code/log.cpp index 69d51f2..4ee13cd 100644 --- a/tests/code/filesystem_dirents/code/log.cpp +++ b/tests/code/filesystem_dirents/code/log.cpp @@ -3,17 +3,6 @@ #include #include -int error_counter = 0; - -int GetErrorCounter(void) { - Log("rtyrtyrty"); - return error_counter; -} - -void ResetErrorCounter(void) { - error_counter = 0; -} - std::ostream& center(std::ostream& os, const std::string& s, int width) { int len = (int)s.size(); if (width <= len) return os << s.substr(0, width); diff --git a/tests/code/filesystem_dirents/code/log.h b/tests/code/filesystem_dirents/code/log.h index 238b95d..9ae0c7a 100644 --- a/tests/code/filesystem_dirents/code/log.h +++ b/tests/code/filesystem_dirents/code/log.h @@ -39,7 +39,6 @@ void ResetErrorCounter(void); #define LogError(...) \ { \ - error_counter++; \ LogCustom(__FUNCTION__, "\033[31;1m[FAIL]\033[0m", ##__VA_ARGS__, "( " __FILE__ ":", __LINE__, ")"); \ } @@ -48,7 +47,7 @@ void ResetErrorCounter(void); LogCustom(__FUNCTION__, "\033[32;1m[SUCC]\033[0m", ##__VA_ARGS__); \ } -#define TEST(cond, success_str, fail_str, ...) \ +#define TEST_CASE(cond, success_str, fail_str, ...) \ { \ if (cond) { \ LogSuccess(success_str, ##__VA_ARGS__); \ diff --git a/tests/code/filesystem_dirents/code/main.cpp b/tests/code/filesystem_dirents/code/main.cpp index b8c4823..2334d48 100644 --- a/tests/code/filesystem_dirents/code/main.cpp +++ b/tests/code/filesystem_dirents/code/main.cpp @@ -1,8 +1,11 @@ #include "fs_test.h" #include "log.h" +#include #include +IMPORT_TEST_GROUP(DirentTests); + int main(int ac, char** av) { // No buffering setvbuf(stdout, NULL, _IONBF, 0); @@ -13,7 +16,10 @@ int main(int ac, char** av) { Log(); // Run file system tests - FS_Test::RunTests(); + RegenerateDir("/data/enderman"); + sceKernelMkdir("/data/enderman/dumps", 0777); + int result = RUN_ALL_TESTS(ac, av); + RunTests(); // Log tests end Log(); @@ -21,5 +27,5 @@ int main(int ac, char** av) { Log(); sceSystemServiceLoadExec("EXIT", nullptr); - return 0; + return result; } diff --git a/tests/code/filesystem_test/code/fs_test.cpp b/tests/code/filesystem_test/code/fs_test.cpp index 9f310fd..19d736a 100644 --- a/tests/code/filesystem_test/code/fs_test.cpp +++ b/tests/code/filesystem_test/code/fs_test.cpp @@ -626,7 +626,6 @@ bool TestFileOps(const char* path) { // shhh, don't spoil it yet if (sceKernelStat(path, &st) > -1) sceKernelUnlink(path); - ResetErrorCounter(); errno = 0; TEST_CASE(sceKernelStat(path, &st) < 0, "Stat failed on nonexistent file", "Stat'd nonexistent file", "( errno =", errno, ")"); errno = 0; @@ -762,7 +761,7 @@ bool TestFileOps(const char* path) { if (0 != sceKernelClose(fd)) LogError("Can't close [", path, "]", "( errno =", errno, ")"); - return GetErrorCounter() == 0; + return true; } int TestOpenFlags(const char* path, int32_t flags, const char* flags_str, int* errno_return) { @@ -781,7 +780,7 @@ int TestOpenFlags(const char* path, int32_t flags, const char* flags_str, int* e bool TestFileRW(const char* path, u16 to_test) { LogTest("Testing r/w on [", path, "]"); - ResetErrorCounter(); + if (to_test < 8) { LogError("Must test at least 8 bytes!"); return false; @@ -857,12 +856,12 @@ bool TestFileRW(const char* path, u16 to_test) { delete[] writebuf; delete[] readbuf; - return GetErrorCounter() == 0; + return true; } bool TestFileTouch(const char* path) { LogTest("Cursed file operations: [", path, "]"); - ResetErrorCounter(); + OrbisKernelStat st {}; errno = 0; @@ -871,7 +870,7 @@ bool TestFileTouch(const char* path) { errno = 0; TEST_CASE(0 == sceKernelStat(path, &st), "stat success", "stat fail", "( errno =", errno, ")") - return GetErrorCounter() == 0; + return true; } bool PrepareCursedFileop(void) { @@ -917,6 +916,7 @@ bool TestLStat(fs::path path) { } bool RegenerateDir(const char* path) { + // TODO: this should return false sometimes *cough cough* Obliterate(path); sceKernelMkdir(path, 0777); return true; @@ -932,8 +932,6 @@ bool TestDirEnts() { char prebuffer[DIRENT_BUFFER_SIZE] {0}; char postbuffer[DIRENT_BUFFER_SIZE] {0}; - ResetErrorCounter(); - // // Creating target directory // @@ -1014,7 +1012,7 @@ bool TestDirEnts() { errno = 0; TEST_CASE(sceKernelClose(fd) != -1, "Closed", "Can't close", "[ /data/therapist/tmp_dirent ]", "( errno =", errno, ")"); - return GetErrorCounter() == 0; + return true; // // compare before and after opening @@ -1100,8 +1098,6 @@ bool TestRelatives(fs::path path, bool expected_mountpoint) { u8 ret {}; - ResetErrorCounter(); - // // test self (2 if mountpoint root) ret = GetDir(path, ".", &leaf); @@ -1139,7 +1135,7 @@ bool TestRelatives(fs::path path, bool expected_mountpoint) { Log(is_mountpoint ? "It's a mountpoint" : "It's not a mountpoint"); } - return GetErrorCounter() == 0; + return true; } bool CompareNormalVsPFS(fs::path path, fs::path leaf, s32 expected_normal_reclen, s32 expected_pfs_reclen) { @@ -1150,8 +1146,6 @@ bool CompareNormalVsPFS(fs::path path, fs::path leaf, s32 expected_normal_reclen fs::path q = path / leaf; const char* path_full_str = q.c_str(); - ResetErrorCounter(); - LogTest("Compare Normal and PFS dirent for", path_full_str); if (GetDir(path, leaf, &normal_dir) == -1) { LogError("Can't open", path_full_str, "as normal"); @@ -1160,11 +1154,6 @@ bool CompareNormalVsPFS(fs::path path, fs::path leaf, s32 expected_normal_reclen LogError("Can't open", path_full_str, "as PFS"); } - // return early, there's no point in trying if can't open either - if (GetErrorCounter() != 0) { - return false; - } - bool expr; expr = normal_dir.d_fileno == pfs_dir.d_fileno; @@ -1206,5 +1195,5 @@ bool CompareNormalVsPFS(fs::path path, fs::path leaf, s32 expected_normal_reclen Log("PFS:\t", pfs_dir.d_name); } - return GetErrorCounter() == 0; + return true; } \ No newline at end of file diff --git a/tests/code/filesystem_test/code/log.cpp b/tests/code/filesystem_test/code/log.cpp index 3381d8d..150261b 100644 --- a/tests/code/filesystem_test/code/log.cpp +++ b/tests/code/filesystem_test/code/log.cpp @@ -3,16 +3,6 @@ #include #include -int error_counter = 0; - -int GetErrorCounter(void) { - return error_counter; -} - -void ResetErrorCounter(void) { - error_counter = 0; -} - std::ostream& center(std::ostream& os, const std::string& s, int width) { int len = (int)s.size(); if (width <= len) return os << s.substr(0, width); diff --git a/tests/code/filesystem_test/code/log.h b/tests/code/filesystem_test/code/log.h index 989e5c7..f4d0785 100644 --- a/tests/code/filesystem_test/code/log.h +++ b/tests/code/filesystem_test/code/log.h @@ -23,11 +23,6 @@ void LogCustom(const char* fn, const char* msg, Args&&... args) { std::cout << std::endl; } -extern int error_counter; - -int GetErrorCounter(void); -void ResetErrorCounter(void); - #define Log(...) \ { \ LogCustom(__FUNCTION__, "[INFO]", ##__VA_ARGS__); \ @@ -40,7 +35,6 @@ void ResetErrorCounter(void); #define LogError(...) \ { \ - error_counter++; \ LogCustom(__FUNCTION__, "\033[31;1m[FAIL]\033[0m", ##__VA_ARGS__, "( " __FILE__ ":", __LINE__, ")"); \ } From 762982ccb44e4192a5a0d93e9142d963dbcfbd0d Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Fri, 27 Feb 2026 00:58:49 +0100 Subject: [PATCH 19/23] comparator cleanup, better comparsions even more annoying files --- .gitignore | 1 + .vscode/settings.json | 6 +- .../code/filesystem_dirents/code/fs_test.cpp | 2 + .../filesystem_dirents/dumps/comparator.py | 152 ++++++++++-------- .../filesystem_dirents/dumps/requirements.txt | 1 + 5 files changed, 90 insertions(+), 72 deletions(-) create mode 100644 tests/code/filesystem_dirents/dumps/requirements.txt diff --git a/.gitignore b/.gitignore index 389e902..2d4c0a3 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ build/ !.github !.vscode .DS_Store +.venv \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 9a054af..039f4a3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -17,5 +17,7 @@ "editor.tabSize": 2, "editor.insertSpaces": true, "python.languageServer": "Pylance", - "python.formatting.provider": "black" -} + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter", + } +} \ No newline at end of file diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp index d659abc..a6a4499 100644 --- a/tests/code/filesystem_dirents/code/fs_test.cpp +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -210,10 +210,12 @@ TEST(DirentTests, LseekPFSTests) { void RunTests() { std::string nf_path = "/data/enderman/filewithaverylongname"; + std::string nf_path_longer = "/data/enderman/filewithunnecesarilylongnamejusttomesswitheveryone"; char nf_num[4] {0}; for (u8 idx = 1; idx <= 50; idx++) { snprintf(nf_num, 4, "%02d", idx); touch(nf_path + std::string(nf_num)); + touch(nf_path_longer + std::string(nf_num)); } Log("---------------------"); diff --git a/tests/code/filesystem_dirents/dumps/comparator.py b/tests/code/filesystem_dirents/dumps/comparator.py index eaf4166..57a75be 100644 --- a/tests/code/filesystem_dirents/dumps/comparator.py +++ b/tests/code/filesystem_dirents/dumps/comparator.py @@ -1,17 +1,13 @@ import os import sys import re +from dataclasses import dataclass if len(sys.argv) != 3: print(f"comparator.py [PS4] [Emulator]") print("Compare dirent dumps between console and dump") sys.exit(0) -regular_dirent_query_re = re.compile(b"(.{4}.{2}[\x02\x04\x08].)([ -~]{1,255})\x00") -pfs_query_getdents_re = re.compile( - b"(.{4}[\x02\x04\x08]\x00{3}.{4}.{4})([ -~]{1,255})\x00" -) - dir_left = sys.argv[1] dir_right = sys.argv[2] @@ -25,6 +21,45 @@ print("Error during listing directories") sys.exit(-1) + +@dataclass(kw_only=True) +class Dirent: + chk: str + offset: int + end: int + fileno: str # 4 for pfs, 4 for reg + entry_type: str # 4 for pfs, 1 for reg + namelen: str # 4 for pfs, 1 for reg + reclen: str # 4 for pfs, 2 for reg + name: str # up to 255 characters + null terminator + padding: str + + def __repr__(self) -> str: + return self.chk + + def __eq__(self, other): + if isinstance(other, Dirent): + return False + if ( + (self.offset != other.offset) + # fileno is ignored, those can be different + or (self.entry_type != other.entry_type) + or (self.namelen != other.namelen) + or (self.reclen != other.reclen) + or (self.name != other.name) + or (len(self.padding) != len(other.padding)) + ): + return False + + +find_buffer_end_re = re.compile(b"\x00+(\xaa+)") +regular_dirent_query_re = re.compile( + b"(?P....)(?P..)(?P[\x02\x04\x08])(?P.)(?P[ -~]{1,255})(?P\x00*)" +) +pfs_query_getdents_re = re.compile( + b"(?P.{4})(?P[\x02\x04\x08]\x00{3})(?P....)(?P....)(?P[ -~]{1,255})(?P\x00*)" +) + for filename in dir_left_contents: file_left_path = os.path.join(os.path.abspath(dir_left), filename) file_right_path = os.path.join(os.path.abspath(dir_right), filename) @@ -49,101 +84,78 @@ with open(file_right_path, "rb") as rhsf: content_right = rhsf.read() + ### Verify size + if size_left == 0 and size_right == 0: + print("Both are empty. Continuing...") continue print(f"Size:\t{size_left}\t{size_right}") if not size_match: + print("Error: sizes don't match. Continuing...") continue - left_file_list = [] - right_file_list = [] - - left_dirent_offsets = [] - right_dirent_offsets = [] - - left_skipped_bytes = [] - right_skipped_bytes = [] + # + ### Search for entries + ### Search for entry offsets + ### Search for skipped bytes (0-fills, cut off data) + # + left_dirent_list: list[Dirent] = [] + right_dirent_list: list[Dirent] = [] search_query = None - prev_end = 0 lsresult = None if is_pfs and is_read: search_query = pfs_query_getdents_re.finditer(content_left) else: search_query = regular_dirent_query_re.finditer(content_left) for lsresult in search_query: - left_file_list.append(lsresult.group(2)) - result_pos = lsresult.start() - left_dirent_offsets.append(result_pos) - left_skipped_bytes_temp = result_pos - prev_end - if left_skipped_bytes_temp != 0: - left_skipped_bytes.append(left_skipped_bytes_temp) - prev_end = lsresult.end() + dirent_init_dict = lsresult.groupdict() + dirent_init_dict["offset"] = lsresult.start() + dirent_init_dict["end"] = lsresult.end() + _name = dirent_init_dict["name"] + _reclen = dirent_init_dict["reclen"] + _offset = dirent_init_dict["offset"] + dirent_init_dict["chk"] = f"{_name[-2:]}{str(_offset)}{str(_reclen)}" + new_dirent = Dirent(**dirent_init_dict) + left_dirent_list.append(new_dirent) if lsresult is None: print("Left: can't match file entries") - prev_end = 0 lsresult = None if is_pfs and is_read: search_query = pfs_query_getdents_re.finditer(content_right) else: search_query = regular_dirent_query_re.finditer(content_right) for lsresult in search_query: - right_file_list.append(lsresult.group(2)) - result_pos = lsresult.start() - right_dirent_offsets.append(result_pos) - right_skipped_bytes_temp = result_pos - prev_end - if right_skipped_bytes_temp != 0: - right_skipped_bytes.append(right_skipped_bytes_temp) - - prev_end = lsresult.end() + dirent_init_dict = lsresult.groupdict() + dirent_init_dict["offset"] = lsresult.start() + dirent_init_dict["end"] = lsresult.end() + _name = dirent_init_dict["name"] + _reclen = dirent_init_dict["reclen"] + _offset = dirent_init_dict["offset"] + dirent_init_dict["chk"] = f"{_name[-2:]}{str(_offset)}{str(_reclen)}" + new_dirent = Dirent(**dirent_init_dict) + right_dirent_list.append(new_dirent) if lsresult is None: print("Right: can't match file entries") - left_set = set(left_file_list) - right_set = set(right_file_list) - if len(left_set) != len(left_file_list): - print("Left has repeating filenames") - if len(right_set) != len(right_file_list): - print("Right has repeating filenames") - merged_results = set(left_file_list + right_file_list) - if (len(merged_results) != len(left_file_list)) or ( - len(merged_results) != len(right_file_list) - ): + left_dirent_list_len = len(left_dirent_list) + right_dirent_list_len = len(right_dirent_list) + + if left_dirent_list_len != right_dirent_list_len: print( - f"Unique differences between files: L:{len(left_file_list)}<->R:{len(right_file_list)}\tTotal:{len(merged_results)}" + f"Error: Different amount of dirents: L:{left_dirent_list_len} R:{right_dirent_list_len}. Continuing..." ) + continue - for idx, left_excl_filename in enumerate(right_file_list): - if left_excl_filename not in right_file_list: - print(f"Right exclusive:{left_excl_filename}") - - for idx, right_excl_filename in enumerate(left_file_list): - if right_excl_filename not in left_file_list: - print(f"Right exclusive:{right_excl_filename}") - - for idx, offset_value in enumerate(left_dirent_offsets): - if offset_value != right_dirent_offsets[idx]: - print( - f"Left: Inconsistent offsets: L:{offset_value}<=>R:{right_dirent_offsets[idx]}" - ) - for idx, offset_value in enumerate(right_dirent_offsets): - if offset_value != left_dirent_offsets[idx]: - print( - f"Right: Inconsistent offsets: L:{offset_value}<=>R:{left_dirent_offsets[idx]}" - ) - - for idx, skipped_bytes in enumerate(left_skipped_bytes): - if skipped_bytes != right_skipped_bytes[idx]: - print( - f"Left: Inconsistent skipped byted: L:{skipped_bytes}<=>R:{right_skipped_bytes[idx]}" - ) - for idx, skipped_bytes in enumerate(right_skipped_bytes): - if skipped_bytes != left_skipped_bytes[idx]: - print( - f"Right: Inconsistent skipped byted: L:{skipped_bytes}<=>R:{left_skipped_bytes[idx]}" - ) + for idx, lval in enumerate(left_dirent_list): + rval = right_dirent_list[idx] + if repr(lval) == repr(rval): + continue + print(f"Mismatch at\tL:{lval.offset}\tR:{rval.offset}") + print(f"\t{lval.name}\t{rval.name}") + print("Tests complete") pass diff --git a/tests/code/filesystem_dirents/dumps/requirements.txt b/tests/code/filesystem_dirents/dumps/requirements.txt new file mode 100644 index 0000000..79a829b --- /dev/null +++ b/tests/code/filesystem_dirents/dumps/requirements.txt @@ -0,0 +1 @@ +black==26.1.0 \ No newline at end of file From 48d573a22c274f7ea586b1de0a88218b71f99e32 Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Fri, 27 Feb 2026 01:03:23 +0100 Subject: [PATCH 20/23] more annoying files --- .../misc/filewithunnecesarilylongnamejusttomesswitheveryone01 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone02 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone03 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone04 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone05 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone06 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone07 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone08 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone09 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone10 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone11 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone12 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone13 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone14 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone15 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone16 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone17 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone18 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone19 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone20 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone21 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone22 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone23 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone24 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone25 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone26 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone27 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone28 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone29 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone30 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone31 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone32 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone33 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone34 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone35 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone36 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone37 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone38 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone39 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone40 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone41 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone42 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone43 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone44 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone45 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone46 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone47 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone48 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone49 | 0 .../misc/filewithunnecesarilylongnamejusttomesswitheveryone50 | 0 50 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone01 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone02 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone03 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone04 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone05 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone06 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone07 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone08 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone09 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone10 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone11 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone12 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone13 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone14 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone15 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone16 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone17 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone18 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone19 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone20 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone21 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone22 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone23 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone24 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone25 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone26 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone27 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone28 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone29 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone30 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone31 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone32 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone33 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone34 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone35 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone36 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone37 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone38 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone39 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone40 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone41 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone42 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone43 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone44 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone45 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone46 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone47 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone48 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone49 create mode 100644 tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone50 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone01 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone01 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone02 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone02 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone03 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone03 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone04 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone04 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone05 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone05 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone06 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone06 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone07 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone07 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone08 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone08 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone09 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone09 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone10 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone10 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone11 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone11 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone12 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone12 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone13 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone13 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone14 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone14 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone15 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone15 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone16 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone16 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone17 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone17 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone18 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone18 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone19 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone19 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone20 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone20 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone21 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone21 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone22 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone22 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone23 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone23 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone24 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone24 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone25 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone25 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone26 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone26 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone27 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone27 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone28 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone28 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone29 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone29 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone30 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone30 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone31 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone31 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone32 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone32 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone33 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone33 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone34 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone34 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone35 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone35 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone36 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone36 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone37 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone37 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone38 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone38 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone39 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone39 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone40 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone40 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone41 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone41 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone42 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone42 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone43 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone43 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone44 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone44 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone45 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone45 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone46 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone46 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone47 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone47 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone48 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone48 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone49 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone49 new file mode 100644 index 0000000..e69de29 diff --git a/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone50 b/tests/code/filesystem_dirents/assets/misc/filewithunnecesarilylongnamejusttomesswitheveryone50 new file mode 100644 index 0000000..e69de29 From fa42c44e4324cbc1d21ecb20ec03d6cb8cb52615 Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Fri, 27 Feb 2026 11:35:11 +0100 Subject: [PATCH 21/23] added cues (read sizes/RS+basep) for read comparsions --- .../code/filesystem_dirents/code/fs_test.cpp | 67 ++++++++++++------- .../filesystem_dirents/dumps/comparator.py | 29 ++++++++ 2 files changed, 72 insertions(+), 24 deletions(-) diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp index a6a4499..891e1e2 100644 --- a/tests/code/filesystem_dirents/code/fs_test.cpp +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -41,8 +41,8 @@ std::vector read_offsets {0, 1, 5, 10, 21, 37, 127, 128, 129, 400, 500, 512 namespace fs = std::filesystem; namespace oi = OrbisInternals; -bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size); -bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx); +s64 DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size); +s64 DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx); void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs = false); TEST_GROUP (DirentTests) { @@ -209,7 +209,7 @@ TEST(DirentTests, LseekPFSTests) { } void RunTests() { - std::string nf_path = "/data/enderman/filewithaverylongname"; + std::string nf_path = "/data/enderman/filewithaverylongname"; std::string nf_path_longer = "/data/enderman/filewithunnecesarilylongnamejusttomesswitheveryone"; char nf_num[4] {0}; for (u8 idx = 1; idx <= 50; idx++) { @@ -242,7 +242,7 @@ void RunTests() { sceKernelClose(fd); } -bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size) { +s64 DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size) { memset(buffer, 0xAA, size); s64 tbr = sceKernelRead(dir_fd, buffer, size); @@ -250,17 +250,17 @@ bool DumpByRead(int dir_fd, int dump_fd, char* buffer, size_t size) { if (tbr < 0) { LogError("Read finished with error:", tbr); - return false; + return 0; } if (tbr == 0) { - return false; + return 0; } if (s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes"); - return true; + return tbr; } -bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) { +s64 DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) { // magic to determine how many trailing elements were cut memset(buffer, 0xAA, size); @@ -269,42 +269,61 @@ bool DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) if (tbr < 0) { LogError("Dirent finished with error:", tbr); - return false; + return 0; } if (tbr == 0) { - return false; + return 0; } if (s64 tbw = sceKernelWrite(dump_fd, buffer, tbr); tbw != tbr) LogError("Written", tbw, "bytes out of", tbr, "bytes"); - return true; + return tbr; } void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs) { char* buffer = new char[buffer_size] {0}; + std::string file_basename = (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset); + fs::path read_path = - "/data/enderman/dumps/read_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; + "/data/enderman/dumps/read_" +file_basename + ".bin"; fs::path dirent_path = - "/data/enderman/dumps/dirent_" + (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset) + ".bin"; + "/data/enderman/dumps/dirent_" + file_basename + ".bin"; + fs::path read_cue_path = + "/data/enderman/dumps/read_" + file_basename+ ".cue"; + fs::path dirent_cue_path = + "/data/enderman/dumps/dirent_" + file_basename + ".cue"; LogTest(is_pfs ? "PFS" : "normal", "directory, fd =", fd, "buffer size =", buffer_size, "starting offset =", offset); - u16 max_loops = 0; // 65536 iterations lmao - int read_fd = sceKernelOpen(read_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); + s64 tbr = 0; + u16 max_loops = 0; // 65536 iterations lmao + int fd_read = sceKernelOpen(read_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); + int fd_read_cue = sceKernelOpen(read_cue_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); if (int _tmp = sceKernelLseek(fd, offset, 0); _tmp != offset) LogError("Lseek failed:", _tmp); - while (--max_loops && DumpByRead(fd, read_fd, buffer, buffer_size)) - ; + while (--max_loops) { + tbr = DumpByRead(fd, fd_read, buffer, buffer_size); + sceKernelWrite(fd_read_cue, reinterpret_cast(&tbr), sizeof(s64) / sizeof(u8)); + if (tbr <= 0) break; + } if (0 == max_loops) LogError("Aborted"); - sceKernelClose(read_fd); + sceKernelClose(fd_read); + sceKernelClose(fd_read_cue); - s64 idx = 0; - max_loops = 0; - int dirent_fd = sceKernelOpen(dirent_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); + s64 idx = 0; + max_loops = 0; + int fd_dirent = sceKernelOpen(dirent_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); + int fd_dirent_cue = sceKernelOpen(dirent_cue_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777); if (int _tmp = sceKernelLseek(fd, offset, 0); _tmp != offset) LogError("Lseek failed:", _tmp); - while (--max_loops && DumpByDirent(fd, dirent_fd, buffer, buffer_size, &idx)) - ; + while (--max_loops) { + tbr = DumpByDirent(fd, fd_dirent, buffer, buffer_size, &idx); + sceKernelWrite(fd_dirent_cue, reinterpret_cast(&tbr), sizeof(s64) / sizeof(u8)); + sceKernelWrite(fd_dirent_cue, reinterpret_cast(&idx), sizeof(s64) / sizeof(u8)); + if (tbr <= 0) break; + } if (0 == max_loops) LogError("Aborted"); - sceKernelClose(dirent_fd); + sceKernelClose(fd_dirent); + sceKernelClose(fd_dirent_cue); + delete[] buffer; } diff --git a/tests/code/filesystem_dirents/dumps/comparator.py b/tests/code/filesystem_dirents/dumps/comparator.py index 57a75be..c02a40f 100644 --- a/tests/code/filesystem_dirents/dumps/comparator.py +++ b/tests/code/filesystem_dirents/dumps/comparator.py @@ -60,14 +60,24 @@ def __eq__(self, other): b"(?P.{4})(?P[\x02\x04\x08]\x00{3})(?P....)(?P....)(?P[ -~]{1,255})(?P\x00*)" ) +error_badf = [] +error_bad_size = [] +error_bad_len = [] +error_mismatch_order=[] + +counter =0 +counter_completed=0 for filename in dir_left_contents: + counter+=1 file_left_path = os.path.join(os.path.abspath(dir_left), filename) file_right_path = os.path.join(os.path.abspath(dir_right), filename) is_pfs = "PFS" in filename is_read = "read" in filename is_getdents = "dirent" in filename + if not (is_read or is_getdents): + error_badf.append(filename) continue print() @@ -87,6 +97,7 @@ def __eq__(self, other): ### Verify size if size_left == 0 and size_right == 0: + counter_completed+=1 print("Both are empty. Continuing...") continue @@ -94,6 +105,7 @@ def __eq__(self, other): if not size_match: print("Error: sizes don't match. Continuing...") + error_bad_size.append(filename) continue # @@ -145,6 +157,7 @@ def __eq__(self, other): right_dirent_list_len = len(right_dirent_list) if left_dirent_list_len != right_dirent_list_len: + error_bad_len.append(filename) print( f"Error: Different amount of dirents: L:{left_dirent_list_len} R:{right_dirent_list_len}. Continuing..." ) @@ -154,8 +167,24 @@ def __eq__(self, other): rval = right_dirent_list[idx] if repr(lval) == repr(rval): continue + error_mismatch_order.append(filename) print(f"Mismatch at\tL:{lval.offset}\tR:{rval.offset}") print(f"\t{lval.name}\t{rval.name}") + counter_completed+=1 print("Tests complete") pass + +print(f"Error: Incompatible file: {len(error_badf)}/{counter}") +for err_item in error_badf:print(f"{err_item} ",end='') +print() +print(f"Error: Mismatched size: {len(error_bad_size)}/{counter}") +for err_item in error_bad_size:print(f"{err_item} ",end='') +print() +print(f"Error: Mismatched amount of dirents: {len(error_bad_len)}/{counter}") +for err_item in error_bad_len:print(f"{err_item} ",end='') +print() +print(f"Error: Mismatched dirent order: {len(error_mismatch_order)}/{counter}") +for err_item in error_mismatch_order:print(f"{err_item} ",end='') +print() +print(f"Passed: {counter_completed}/{counter}") From c0fc3ac46161457117cbd63e1b5f0954cde5c005 Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Fri, 27 Feb 2026 12:49:42 +0100 Subject: [PATCH 22/23] fixed lseek tests might not crash the console after running more than once --- .gitignore | 1 + tests/code/filesystem_dirents/CMakeLists.txt | 2 +- .../code/filesystem_dirents/code/fs_test.cpp | 102 +- tests/code/filesystem_dirents/code/main.cpp | 12 +- tests/code/filesystem_dirents/log_01.11.log | 2931 +++++++++++++++++ 5 files changed, 2988 insertions(+), 60 deletions(-) create mode 100644 tests/code/filesystem_dirents/log_01.11.log diff --git a/.gitignore b/.gitignore index 2d4c0a3..96f9493 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ build/ **.bin +**.cue **.pkg **.gp4 **.sfo diff --git a/tests/code/filesystem_dirents/CMakeLists.txt b/tests/code/filesystem_dirents/CMakeLists.txt index 750a4cb..a013406 100644 --- a/tests/code/filesystem_dirents/CMakeLists.txt +++ b/tests/code/filesystem_dirents/CMakeLists.txt @@ -4,5 +4,5 @@ link_libraries(SceSystemService) create_pkg(TEST12345 5 50 "code/log.cpp;code/fs_test_tools.cpp;code/fs_test.cpp;code/main.cpp") set_target_properties(TEST12345 PROPERTIES OO_PKG_TITLE "Enderman") -set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.10") +set_target_properties(TEST12345 PROPERTIES OO_PKG_APPVER "1.11") finalize_pkg(TEST12345) diff --git a/tests/code/filesystem_dirents/code/fs_test.cpp b/tests/code/filesystem_dirents/code/fs_test.cpp index 891e1e2..48a5139 100644 --- a/tests/code/filesystem_dirents/code/fs_test.cpp +++ b/tests/code/filesystem_dirents/code/fs_test.cpp @@ -46,178 +46,169 @@ s64 DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx); void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs = false); TEST_GROUP (DirentTests) { + int fd; void setup() {} - void teardown() {} + void teardown() { + sceKernelClose(fd); + fd = -1; + } }; TEST(DirentTests, LseekRegularTests) { - int fd = sceKernelOpen("/data/enderman", O_DIRECTORY | O_RDONLY, 0777); + fd = sceKernelOpen("/data/enderman", O_DIRECTORY | O_RDONLY, 0777); CHECK_COMPARE_TEXT(fd, >, 0, "Unable to open /data/enderman"); int status; errno = 0; status = sceKernelLseek(fd, 0, 0); - UNSIGNED_LONGLONGS_EQUAL_TEXT(0, status, "START+0"); + LONGLONGS_EQUAL_TEXT(0, status, "START+0"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -123, 0); - UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "START-123"); + UNSIGNED_INT_EQUALS_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "START-123"); UNSIGNED_INT_EQUALS(EINVAL, errno); errno = 0; status = sceKernelLseek(fd, 123456, 0); - UNSIGNED_LONGLONGS_EQUAL_TEXT(123456, status, "START+123456"); + LONGLONGS_EQUAL_TEXT(123456, status, "START+123456"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 60, 0); - UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "START+60"); + LONGLONGS_EQUAL_TEXT(60, status, "START+60"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 0, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "CUR+0"); + LONGLONGS_EQUAL_TEXT(60, status, "CUR+0"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 24, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(84, status, "CUR+24"); + LONGLONGS_EQUAL_TEXT(84, status, "CUR+24"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -24, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "CUR-24"); - UNSIGNED_INT_EQUALS(EINVAL, errno); + LONGLONGS_EQUAL_TEXT(60, status, "CUR-24"); + UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -6666, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "CUR-6666"); + UNSIGNED_INT_EQUALS_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "CUR-6666"); UNSIGNED_INT_EQUALS(EINVAL, errno); errno = 0; status = sceKernelLseek(fd, 123456, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(123516, status, "CUR+123456"); + LONGLONGS_EQUAL_TEXT(123516, status, "CUR+123456"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 0, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(2048, status, "END+0"); + LONGLONGS_EQUAL_TEXT(5120, status, "END+0"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 123456, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(125504, status, "END+123456"); + LONGLONGS_EQUAL_TEXT(128576, status, "END+123456"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 100, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(2148, status, "END+100"); + LONGLONGS_EQUAL_TEXT(5220, status, "END+100"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -100, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(1948, status, "END-100"); - UNSIGNED_INT_EQUALS(EINVAL, errno); + LONGLONGS_EQUAL_TEXT(5020, status, "END-100"); + UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -100000, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "END-100000"); + UNSIGNED_INT_EQUALS_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "END-100000"); UNSIGNED_INT_EQUALS(EINVAL, errno); - - sceKernelClose(fd); } TEST(DirentTests, LseekPFSTests) { - int fd = sceKernelOpen("/app0/assets/misc", O_DIRECTORY | O_RDONLY, 0777); + fd = sceKernelOpen("/app0/assets/misc", O_DIRECTORY | O_RDONLY, 0777); CHECK_COMPARE_TEXT(fd, >, 0, "Unable to open /app0/assets/misc"); s64 status; errno = 0; status = sceKernelLseek(fd, 0, 0); - UNSIGNED_LONGLONGS_EQUAL_TEXT(0, status, "START+0"); + LONGLONGS_EQUAL_TEXT(0, status, "START+0"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -123, 0); - UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "START-123"); + UNSIGNED_INT_EQUALS_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "START-123"); UNSIGNED_INT_EQUALS(EINVAL, errno); errno = 0; status = sceKernelLseek(fd, 123456, 0); - UNSIGNED_LONGLONGS_EQUAL_TEXT(123456, status, "START+123456"); + LONGLONGS_EQUAL_TEXT(123456, status, "START+123456"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 60, 0); - UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "START+60"); + LONGLONGS_EQUAL_TEXT(60, status, "START+60"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 0, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "CUR+0"); + LONGLONGS_EQUAL_TEXT(60, status, "CUR+0"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 24, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(84, status, "CUR+24"); + LONGLONGS_EQUAL_TEXT(84, status, "CUR+24"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -24, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(60, status, "CUR-24"); - UNSIGNED_INT_EQUALS(EINVAL, errno); + LONGLONGS_EQUAL_TEXT(60, status, "CUR-24"); + UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -6666, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "CUR-6666"); + UNSIGNED_INT_EQUALS_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "CUR-6666"); UNSIGNED_INT_EQUALS(EINVAL, errno); errno = 0; status = sceKernelLseek(fd, 123456, 1); - UNSIGNED_LONGLONGS_EQUAL_TEXT(123516, status, "CUR+123456"); + LONGLONGS_EQUAL_TEXT(123516, status, "CUR+123456"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 0, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(2048, status, "END+0"); + LONGLONGS_EQUAL_TEXT(65536, status, "END+0"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 123456, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(125504, status, "END+123456"); + LONGLONGS_EQUAL_TEXT(188992, status, "END+123456"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, 100, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(2148, status, "END+100"); + LONGLONGS_EQUAL_TEXT(65636, status, "END+100"); UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -100, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(1948, status, "END-100"); - UNSIGNED_INT_EQUALS(EINVAL, errno); + LONGLONGS_EQUAL_TEXT(65436, status, "END-100"); + UNSIGNED_INT_EQUALS(0, errno); errno = 0; status = sceKernelLseek(fd, -100000, 2); - UNSIGNED_LONGLONGS_EQUAL_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "END-100000"); + UNSIGNED_INT_EQUALS_TEXT(ORBIS_KERNEL_ERROR_EINVAL, status, "END-100000"); UNSIGNED_INT_EQUALS(EINVAL, errno); - - sceKernelClose(fd); } void RunTests() { - std::string nf_path = "/data/enderman/filewithaverylongname"; - std::string nf_path_longer = "/data/enderman/filewithunnecesarilylongnamejusttomesswitheveryone"; - char nf_num[4] {0}; - for (u8 idx = 1; idx <= 50; idx++) { - snprintf(nf_num, 4, "%02d", idx); - touch(nf_path + std::string(nf_num)); - touch(nf_path_longer + std::string(nf_num)); - } - Log("---------------------"); Log("Dump normal directory"); Log("---------------------"); @@ -282,16 +273,12 @@ s64 DumpByDirent(int dir_fd, int dump_fd, char* buffer, size_t size, s64* idx) { void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs) { char* buffer = new char[buffer_size] {0}; - std::string file_basename = (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset); + std::string file_basename = (is_pfs ? std::string("PFS_") : std::string("")) + std::to_string(buffer_size) + '+' + std::to_string(offset); - fs::path read_path = - "/data/enderman/dumps/read_" +file_basename + ".bin"; - fs::path dirent_path = - "/data/enderman/dumps/dirent_" + file_basename + ".bin"; - fs::path read_cue_path = - "/data/enderman/dumps/read_" + file_basename+ ".cue"; - fs::path dirent_cue_path = - "/data/enderman/dumps/dirent_" + file_basename + ".cue"; + fs::path read_path = "/data/enderman/dumps/read_" + file_basename + ".bin"; + fs::path dirent_path = "/data/enderman/dumps/dirent_" + file_basename + ".bin"; + fs::path read_cue_path = "/data/enderman/dumps/read_" + file_basename + ".cue"; + fs::path dirent_cue_path = "/data/enderman/dumps/dirent_" + file_basename + ".cue"; LogTest(is_pfs ? "PFS" : "normal", "directory, fd =", fd, "buffer size =", buffer_size, "starting offset =", offset); @@ -321,7 +308,6 @@ void DumpDirectory(int fd, int buffer_size, s64 offset, bool is_pfs) { if (tbr <= 0) break; } if (0 == max_loops) LogError("Aborted"); - sceKernelClose(fd_dirent); sceKernelClose(fd_dirent_cue); diff --git a/tests/code/filesystem_dirents/code/main.cpp b/tests/code/filesystem_dirents/code/main.cpp index 2334d48..0626d42 100644 --- a/tests/code/filesystem_dirents/code/main.cpp +++ b/tests/code/filesystem_dirents/code/main.cpp @@ -15,9 +15,19 @@ int main(int ac, char** av) { Log("<<<< TESTS START >>>>"); Log(); - // Run file system tests + // prepare files RegenerateDir("/data/enderman"); sceKernelMkdir("/data/enderman/dumps", 0777); + std::string nf_path = "/data/enderman/filewithaverylongname"; + std::string nf_path_longer = "/data/enderman/filewithunnecesarilylongnamejusttomesswitheveryone"; + char nf_num[4] {0}; + for (u8 idx = 1; idx <= 50; idx++) { + snprintf(nf_num, 4, "%02d", idx); + touch(nf_path + std::string(nf_num)); + touch(nf_path_longer + std::string(nf_num)); + } + + // Run file system tests int result = RUN_ALL_TESTS(ac, av); RunTests(); diff --git a/tests/code/filesystem_dirents/log_01.11.log b/tests/code/filesystem_dirents/log_01.11.log new file mode 100644 index 0000000..014f088 --- /dev/null +++ b/tests/code/filesystem_dirents/log_01.11.log @@ -0,0 +1,2931 @@ +<118>[ main ] [INFO] +<118>[ main ] [INFO] <<<< TESTS START >>>> +<118>[ main ] [INFO] +<118>[ Obliterate ] [INFO] << rm -rf [ /data/enderman ] >> +<118>[ Obliterate ] [SUCC] >> rm -rf [ /data/enderman ] << +<118>.. +<118>OK (2 tests, 2 ran, 56 checks, 0 ignored, 0 filtered out, 1 ms) +<118> +<118>[ RunTests ] [INFO] --------------------- +<118>[ RunTests ] [INFO] Dump normal directory +<118>[ RunTests ] [INFO] --------------------- +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 7 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 8 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 9 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 15 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 16 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 17 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 31 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 32 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 33 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 63 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 64 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 127 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 128 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 129 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 255 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 256 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 257 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error:[SceShellCore] Libc Heap Status: free 37%, in-use 3809.5 KB, trend +38.5 KB/min, peak 4134.3 KB, when 217 [sec] +<118> -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 511 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 512 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 513 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1023 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1024 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 1025 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2047 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2048 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2049 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4095 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4096 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 4097 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65535 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65536 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 65537 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 2137 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 21 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 37 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 69 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 420 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp:^[[D 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 42 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 123 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 222 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 666 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 911 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 112 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 0 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 1 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 5 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 10 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 21 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 37 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 127 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 128 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 129 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 400 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 500 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 512 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 768 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 111 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 666 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 420 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 96 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 997 starting offset = 42 +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] normal directory, fd = 13 buffer size = 67 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ RunTests ] [INFO] ------------------ +<118>[ RunTests ] [INFO] Dump PFS directory +<118>[ RunTests ] [INFO] ------------------ +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 7 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 8 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 500 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 9 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 15 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 16 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 17 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 31 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 32 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 33 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 63 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 64 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 127 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 128 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 129 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 255 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 256 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 257 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 511 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 512 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 513 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1023 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1024 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 1025 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 1234 +<118>[SceShellCore] VM Stats: RSS 575.2, kernel 273.3, wire count 365.1, swap out 0.0, page table CPU 2355/6144 GPU 371/2048 +<118>[SceShellCore] FMEM 1.3/ 4.5 NPXS20977 SceSysAvControl.elf +<118>[SceShellCore] FMEM 11.0/ 74.3 NPXS20991 SceSysCore.elf +<118>[SceShellCore] FMEM 9.5/ 54.3 NPXS20973 orbis_audiod.elf +<118>[SceShellCore] FMEM 3.4/ 11.2 NPXS20976 GnmCompositor.elf +<118>[SceShellCore] FMEM 29.4/ 344.8 NPXS20000 SceShellCore +<118>[SceShellCore] FMEM 358.5/ 872.3 NPXS20001 SceShellUI +<118>[SceShellCore] FMEM 7.5/ 12.6 NPXS21003 SceAvCapture +<118>[SceShellCore] FMEM 9.4/ 24.6 NPXS21000 SceGameLiveStreaming +<118>[SceShellCore] FMEM 15.1/ 48.4 NPXS21002 ScePartyDaemon +<118>[SceShellCore] FMEM 4.6/ 25.4 NPXS21004 SceVideoCoreServer +<118>[SceShellCore] FMEM 10.8/ 51.3 NPXS21006 SceRemotePlay +<118>[SceShellCore] FMEM 8.1/ 43.1 NPXS21010 SceCloudClientDaemon +<118>[SceShellCore] FMEM 9.0/ 156.0 NPXS21002 webrtc_daemon.self +<118>[SceShellCore] FMEM 3.5/ 10.8 NPXS21016 SceSpZeroConf +<118>[SceShellCore] FMEM 7.4/ 18.1 NPXS21019 SceSocialScreenMgr +<118>[SceShellCore] FMEM 5.5/ 9.8 NPXS21007 SceMusicCoreServer +<118>[SceShellCore] FMEM 7.6/ 14.4 NPXS21020 SceVoiceAndAgent +<118>[SceShellCore] FMEM 2.3/ 5.1 NPXS20967 fs_cleaner.elf +<118>[SceShellCore] FMEM 2.3/ 10.2 NPXS20974 SceVdecProxy.elf +<118>[SceShellCore] FMEM 2.3/ 10.3 NPXS20975 SceVencProxy.elf +<118>[SceShellCore] FMEM 23.8/ 263.9 NPXS20001 SecureUIProcess.self +<118>[SceShellCore] FMEM 32.1/ 526.0 NPXS20001 SecureWebProcess.self +<118>[SceShellCore] FMEM 10.7/ 358.8 NPXS20001 orbis-jsc-compiler.self +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2047 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2048 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2049 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4095 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4096 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 4097 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65535 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65536 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 65537 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 2137 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 21 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 37 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 69 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 420 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 42 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 123 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 222 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 666 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 911 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 112 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 0 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 1 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 5 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 10 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 21 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 37 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 127 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 128 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 129 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 400 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 512 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 768 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 1024 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 111 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 666 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 420 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 1234 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 96 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 997 starting offset = 42 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 0 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 1 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 5 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 10 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 21 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 37 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 127 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 128 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 129 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 400 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 500 +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 512 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 768 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 1024 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 111 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 666 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 420 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 1234 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 96 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ DumpDirectory ] [TEST] PFS directory, fd = 13 buffer size = 67 starting offset = 42 +<118>[ DumpByDirent ] [FAIL] Dirent finished with error: -2147352554 ( /home/user/github/integration_tests/tests/code/filesystem_dirents/code/fs_test.cpp: 262 ) +<118>[ main ] [INFO] +<118>[ main ] [INFO] <<<< TESTS END >>>> +<118>[ main ] [INFO] \ No newline at end of file From ab1af71ecddec018a0619b2bed8ad350a54e227d Mon Sep 17 00:00:00 2001 From: Marek Ledworowski Date: Fri, 27 Feb 2026 15:33:17 +0100 Subject: [PATCH 23/23] formatting, cue files --- .../filesystem_dirents/dumps/comparator.py | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/tests/code/filesystem_dirents/dumps/comparator.py b/tests/code/filesystem_dirents/dumps/comparator.py index c02a40f..27deb0f 100644 --- a/tests/code/filesystem_dirents/dumps/comparator.py +++ b/tests/code/filesystem_dirents/dumps/comparator.py @@ -63,19 +63,24 @@ def __eq__(self, other): error_badf = [] error_bad_size = [] error_bad_len = [] -error_mismatch_order=[] +error_mismatch_order = [] -counter =0 -counter_completed=0 +counter = 0 +counter_completed = 0 for filename in dir_left_contents: - counter+=1 + if filename.endswith(".cue"): + continue + counter += 1 file_left_path = os.path.join(os.path.abspath(dir_left), filename) + file_left_cue_path = os.path.join(os.path.abspath(dir_left), filename[:-4] + ".cue") file_right_path = os.path.join(os.path.abspath(dir_right), filename) + file_right_cue_path = os.path.join( + os.path.abspath(dir_right), filename[:-4] + ".cue" + ) is_pfs = "PFS" in filename is_read = "read" in filename is_getdents = "dirent" in filename - if not (is_read or is_getdents): error_badf.append(filename) continue @@ -88,16 +93,22 @@ def __eq__(self, other): size_match = size_left == size_right content_left = None + content_left_cue = None content_right = None + content_right_cue = None with open(file_left_path, "rb") as lhsf: content_left = lhsf.read() with open(file_right_path, "rb") as rhsf: content_right = rhsf.read() + with open(file_left_cue_path, "rb") as lhsfc: + content_left_cue = lhsfc.read() + with open(file_right_cue_path, "rb") as rhsfc: + content_right_cue = rhsfc.read() ### Verify size if size_left == 0 and size_right == 0: - counter_completed+=1 + counter_completed += 1 print("Both are empty. Continuing...") continue @@ -171,20 +182,21 @@ def __eq__(self, other): print(f"Mismatch at\tL:{lval.offset}\tR:{rval.offset}") print(f"\t{lval.name}\t{rval.name}") - counter_completed+=1 + counter_completed += 1 print("Tests complete") pass -print(f"Error: Incompatible file: {len(error_badf)}/{counter}") -for err_item in error_badf:print(f"{err_item} ",end='') print() +print(f"Error: Incompatible file: {len(error_badf)}/{counter}") +# for err_item in error_badf:print(f"{err_item} ",end='') +# print() print(f"Error: Mismatched size: {len(error_bad_size)}/{counter}") -for err_item in error_bad_size:print(f"{err_item} ",end='') -print() +# for err_item in error_bad_size:print(f"{err_item} ",end='') +# print() print(f"Error: Mismatched amount of dirents: {len(error_bad_len)}/{counter}") -for err_item in error_bad_len:print(f"{err_item} ",end='') -print() +# for err_item in error_bad_len:print(f"{err_item} ",end='') +# print() print(f"Error: Mismatched dirent order: {len(error_mismatch_order)}/{counter}") -for err_item in error_mismatch_order:print(f"{err_item} ",end='') -print() +# for err_item in error_mismatch_order:print(f"{err_item} ",end='') +# print() print(f"Passed: {counter_completed}/{counter}")