diff --git a/CodeStyleFiles/ChronoLog.clang-format b/.github/code-style/ChronoLog.clang-format similarity index 100% rename from CodeStyleFiles/ChronoLog.clang-format rename to .github/code-style/ChronoLog.clang-format diff --git a/CodeStyleFiles/ChronoLog.xml b/.github/code-style/ChronoLog.xml similarity index 100% rename from CodeStyleFiles/ChronoLog.xml rename to .github/code-style/ChronoLog.xml diff --git a/CodeStyleFiles/pre-commit b/.github/code-style/pre-commit similarity index 89% rename from CodeStyleFiles/pre-commit rename to .github/code-style/pre-commit index f6aff540f..afd8ec314 100644 --- a/CodeStyleFiles/pre-commit +++ b/.github/code-style/pre-commit @@ -7,7 +7,7 @@ set -e REPO_ROOT=$(git rev-parse --show-toplevel) # Adjust path to clang-format config if needed -FORMAT_STYLE=file:"$REPO_ROOT/CodeStyleFiles/ChronoLog.clang-format" +FORMAT_STYLE=file:"$REPO_ROOT/.github/code-style/ChronoLog.clang-format" # Resolve clang-format: search custom paths and PATH without modifying parent shell CLANG_FORMAT_NAME="${CLANG_FORMAT:-clang-format-18}" @@ -37,8 +37,8 @@ else fi # Check if the clang-format configuration file exists -if [ ! -f "$REPO_ROOT/CodeStyleFiles/ChronoLog.clang-format" ]; then - echo "Error: clang-format configuration file not found at $REPO_ROOT/CodeStyleFiles/ChronoLog.clang-format." +if [ ! -f "$REPO_ROOT/.github/code-style/ChronoLog.clang-format" ]; then + echo "Error: clang-format configuration file not found at $REPO_ROOT/.github/code-style/ChronoLog.clang-format." exit 1 fi diff --git a/.github/workflows/check-format.yml b/.github/workflows/check-format.yml index 0292c0bd6..ddbd90cc4 100644 --- a/.github/workflows/check-format.yml +++ b/.github/workflows/check-format.yml @@ -4,7 +4,7 @@ name: "ChronoLog: Check Format" # To format code locally, install clang-format-18 from default Ubuntu repositories: # Ubuntu 24.04: # sudo apt-get update && sudo apt-get install -y clang-format-18 -# Then run: clang-format-18 -i -style=file:CodeStyleFiles/ChronoLog.clang-format +# Then run: clang-format-18 -i -style=file:.github/code-style/ChronoLog.clang-format on: pull_request: @@ -15,7 +15,7 @@ on: - '**/*.cc' - '**/*.cxx' - '**/*.c' - - 'CodeStyleFiles/ChronoLog.clang-format' + - '.github/code-style/ChronoLog.clang-format' - '.github/workflows/clang-format-check.yml' workflow_dispatch: @@ -119,7 +119,7 @@ jobs: echo "Checking: $file" # Create formatted version - clang-format-18 -style=file:CodeStyleFiles/ChronoLog.clang-format "$file" > "/tmp/formatted/$(echo "$file" | sed 's|/|_|g')" + clang-format-18 -style=file:.github/code-style/ChronoLog.clang-format "$file" > "/tmp/formatted/$(echo "$file" | sed 's|/|_|g')" # Compare with original if ! diff -q "$file" "/tmp/formatted/$(echo "$file" | sed 's|/|_|g')" > /dev/null; then @@ -154,7 +154,7 @@ jobs: echo "Generating patch for: $file" # Create formatted version - clang-format-18 -style=file:CodeStyleFiles/ChronoLog.clang-format "$file" > "/tmp/formatted/$(echo "$file" | sed 's|/|_|g')" + clang-format-18 -style=file:.github/code-style/ChronoLog.clang-format "$file" > "/tmp/formatted/$(echo "$file" | sed 's|/|_|g')" # Generate unified diff patch patch_file="format_patches/$(echo "$file" | sed 's|/|_|g').patch" @@ -243,7 +243,7 @@ jobs: commentBody += ` \`\`\`bash\n`; commentBody += ` # Ensure you have clang-format-18 from Ubuntu 24.04 default repositories installed (required for consistent formatting)\n`; issueFiles.forEach(file => { - commentBody += ` clang-format-18 -i -style=file:CodeStyleFiles/ChronoLog.clang-format ${file}\n`; + commentBody += ` clang-format-18 -i -style=file:.github/code-style/ChronoLog.clang-format ${file}\n`; }); commentBody += ` \`\`\`\n\n`; commentBody += `4. **Commit and push** the formatting changes\n\n`; diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index c1090d862..500aa3856 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -46,7 +46,7 @@ jobs: - name: Compute base image hash id: basehash run: | - echo "hash=${{ hashFiles('spack.yaml', 'Client/spack.yaml', '.github/docker/**') }}" >> $GITHUB_OUTPUT + echo "hash=${{ hashFiles('spack.yaml', 'client/spack.yaml', 'ci/docker/**') }}" >> $GITHUB_OUTPUT - name: Set base image name id: set-base-image-name @@ -74,7 +74,7 @@ jobs: if: steps.pull-base.outputs.hit != 'true' uses: docker/build-push-action@v4 with: - context: .github/docker + context: ci/docker push: false tags: ${{ steps.set-base-image-name.outputs.full-name }} cache-from: type=gha diff --git a/.github/workflows/deploy-website.yml b/.github/workflows/deploy-website.yml index a508f9972..fcbcc9836 100644 --- a/.github/workflows/deploy-website.yml +++ b/.github/workflows/deploy-website.yml @@ -5,7 +5,7 @@ on: branches: [main] paths: - 'website/**' - - 'docs-website/**' + - 'docs/**' workflow_dispatch: permissions: @@ -39,14 +39,14 @@ jobs: - name: Install docs website dependencies run: npm ci - working-directory: docs-website + working-directory: docs - name: Build docs website run: npm run build - working-directory: docs-website + working-directory: docs - name: Merge docs into main website build - run: cp -r docs-website/build/. website/dist/docs/ + run: cp -r docs/build/. website/dist/docs/ - name: Upload artifact uses: actions/upload-pages-artifact@v3 diff --git a/.github/workflows/integration-pipeline.yml b/.github/workflows/integration-pipeline.yml index 2030e6486..b6a45ee26 100644 --- a/.github/workflows/integration-pipeline.yml +++ b/.github/workflows/integration-pipeline.yml @@ -43,7 +43,7 @@ jobs: - name: Compute base image hash id: basehash run: | - echo "hash=${{ hashFiles('spack.yaml', 'Client/spack.yaml', '.github/docker/**') }}" >> $GITHUB_OUTPUT + echo "hash=${{ hashFiles('spack.yaml', 'client/spack.yaml', 'ci/docker/**') }}" >> $GITHUB_OUTPUT - name: Set base image name (immutable) id: set-base-image-name @@ -72,7 +72,7 @@ jobs: id: build-base-docker-image uses: docker/build-push-action@v4 with: - context: .github/docker + context: ci/docker push: false tags: ${{ steps.set-base-image-name.outputs.full-name }} cache-from: type=gha diff --git a/.github/workflows/publish-dev-image.yml b/.github/workflows/publish-dev-image.yml index b9f2640ce..6ed502b17 100644 --- a/.github/workflows/publish-dev-image.yml +++ b/.github/workflows/publish-dev-image.yml @@ -38,7 +38,7 @@ jobs: - name: Compute base image hash id: basehash run: | - echo "hash=${{ hashFiles('spack.yaml', 'Client/spack.yaml', '.github/docker/**') }}" >> $GITHUB_OUTPUT + echo "hash=${{ hashFiles('spack.yaml', 'client/spack.yaml', 'ci/docker/**') }}" >> $GITHUB_OUTPUT - name: Set base image name (immutable) id: set-base-image-name @@ -66,7 +66,7 @@ jobs: if: steps.pull-base.outputs.hit != 'true' uses: docker/build-push-action@v4 with: - context: .github/docker + context: ci/docker push: false tags: ${{ steps.set-base-image-name.outputs.full-name }} cache-from: type=gha diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0f42b94be..000000000 --- a/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: cpp - -matrix: - include: - - os: linux - dist: xenial - - - os: osx - osx_image: xcode10.1 - -compiler: - - gcc - - clang - -script: - - mkdir build && cd build && cmake .. && make diff --git a/CMakeLists.txt b/CMakeLists.txt index d83362a81..bf453aa69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -214,7 +214,7 @@ if(CHRONOLOG_ENABLE_DOXYGEN) BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/_build DOXY_FILE - ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in + ${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile.in TARGET_NAME dox COMMENT @@ -229,8 +229,8 @@ add_custom_target(lint COMMAND cpplint --recursive --exclude=${CMAKE_CURRENT_SOURCE_DIR}/build --exclude=${CMAKE_CURRENT_SOURCE_DIR}/cmake-build-debug --exclude=${CMAKE_CURRENT_SOURCE_DIR}/external_libs - --exclude=${CMAKE_CURRENT_SOURCE_DIR}/doc - --exclude=${CMAKE_CURRENT_SOURCE_DIR}/CI + --exclude=${CMAKE_CURRENT_SOURCE_DIR}/docs + --exclude=${CMAKE_CURRENT_SOURCE_DIR}/ci ${CMAKE_CURRENT_SOURCE_DIR}) #------------------------------------------------------------------------------ @@ -249,19 +249,19 @@ endif() #------------------------------------------------------------------------------ # ChronoLog Components #------------------------------------------------------------------------------ -add_subdirectory(chrono_common) -add_subdirectory(Client) -add_subdirectory(ChronoVisor) -add_subdirectory(ChronoKeeper) -add_subdirectory(ChronoGrapher) -add_subdirectory(ChronoPlayer) +add_subdirectory(src/chrono-common) +add_subdirectory(client) +add_subdirectory(src/chrono-visor) +add_subdirectory(src/chrono-keeper) +add_subdirectory(src/chrono-grapher) +add_subdirectory(src/chrono-player) add_subdirectory(ChronoStore) add_subdirectory(tools) -add_subdirectory(Plugins) +add_subdirectory(plugins) if(CHRONOLOG_BUILD_TESTS_NOW) enable_testing() - add_subdirectory(test) + add_subdirectory(tests) endif() #------------------------------------------------------------------------------ diff --git a/ChronoKeeper/include/StoryIngestionHandle.h b/ChronoKeeper/include/StoryIngestionHandle.h deleted file mode 100644 index 2b56be0e3..000000000 --- a/ChronoKeeper/include/StoryIngestionHandle.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef STORY_INGESTION_HANDLE_H -#define STORY_INGESTION_HANDLE_H - -#include -#include - -#include - -// -// IngestionQueue is a funnel into the KeeperDataStore -// std::deque guarantees O(1) time for addidng elements and resizing -// (vector of vectors implementation) - -namespace chronolog -{ - -typedef std::deque EventDeque; - -class StoryIngestionHandle -{ - -public: - StoryIngestionHandle(std::mutex &a_mutex, EventDeque*active, EventDeque*passive): ingestionMutex(a_mutex) - , activeDeque(active) - , passiveDeque(passive) - {} - - ~StoryIngestionHandle() = default; - - EventDeque &getActiveDeque() const - { return *activeDeque; } - - EventDeque &getPassiveDeque() const - { return *passiveDeque; } - - void ingestEvent(LogEvent const &logEvent) - { // assume multiple service threads pushing events on ingestionQueue - std::lock_guard lock(ingestionMutex); - activeDeque->push_back(logEvent); - } - - void swapActiveDeque() //EventDeque * empty_deque, EventDeque * full_deque) - { - if(!passiveDeque->empty() || activeDeque->empty()) - { return; } - -//INNA: check if atomic compare_and_swap will work here - - std::lock_guard lock_guard(ingestionMutex); - if(!passiveDeque->empty() || activeDeque->empty()) - { return; } - - EventDeque*full_deque = activeDeque; - activeDeque = passiveDeque; - passiveDeque = full_deque; - } - - -private: - std::mutex &ingestionMutex; - EventDeque*activeDeque; - EventDeque*passiveDeque; -}; - -} - -#endif diff --git a/ChronoVisor/include/Event.h b/ChronoVisor/include/Event.h deleted file mode 100644 index 14866f49d..000000000 --- a/ChronoVisor/include/Event.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// Created by kfeng on 3/7/22. -// - -#ifndef CHRONOLOG_EVENT_H -#define CHRONOLOG_EVENT_H - -#include -#include - - -class Event -{ -public: - Event(): data_(nullptr) - {}; - - const uint64_t &getSid() const - { return sid_; } - - const uint64_t &getTimestamp() const - { return timestamp_; } - - void*getData() const - { return data_; } - - size_t getSize() const - { return size_; } - - void setSid(const uint64_t &sid) - { sid_ = sid; } - - void setTimestamp(const uint64_t ×tamp) - { timestamp_ = timestamp; } - - void setData(void*data) - { Event::data_ = data; } - - void setSize(size_t size) - { size_ = size; } - -private: - uint64_t sid_{}; - uint64_t timestamp_{}; - void*data_; - size_t size_{}; -}; - -#endif //CHRONOLOG_EVENT_H diff --git a/Client/cpp/src/ChronologClient.cpp b/Client/cpp/src/ChronologClient.cpp deleted file mode 100644 index 1d900bfcb..000000000 --- a/Client/cpp/src/ChronologClient.cpp +++ /dev/null @@ -1,83 +0,0 @@ -#include "ChronologClientImpl.h" - -chronolog::Client::Client(chronolog::ClientPortalServiceConf const &visorClientPortalServiceConf) -{ - chronologClientImpl = chronolog::ChronologClientImpl::GetClientImplInstance(visorClientPortalServiceConf, chronolog::WRITER_MODE, chronolog::ClientQueryServiceConf{"","",0,0}); -} - -chronolog::Client::Client(chronolog::ClientPortalServiceConf const &visorClientPortalServiceConf, chronolog::ClientQueryServiceConf const& clientQueryServiceConf) -{ - chronologClientImpl = chronolog::ChronologClientImpl::GetClientImplInstance(visorClientPortalServiceConf, chronolog::READER_MODE, clientQueryServiceConf); -} - -chronolog::Client::~Client() -{ - delete chronologClientImpl; -} - -int chronolog::Client::Connect() -{ - return chronologClientImpl->Connect(); -} - -int chronolog::Client::Disconnect() -{ - return chronologClientImpl->Disconnect(); -} - -int chronolog::Client::CreateChronicle(std::string const &chronicle_name - , std::map const &attrs, int &flags) -{ - return chronologClientImpl->CreateChronicle(chronicle_name, attrs, flags); -} - -int chronolog::Client::DestroyChronicle(std::string const &chronicle_name) -{ - return chronologClientImpl->DestroyChronicle(chronicle_name); -} - -std::pair -chronolog::Client::AcquireStory(std::string const &chronicle_name, std::string const &story_name - , const std::map &attrs, int &flags) -{ - return chronologClientImpl->AcquireStory(chronicle_name, story_name, attrs, flags); -} - -int chronolog::Client::ReleaseStory(std::string const &chronicle_name, std::string const &story_name) -{ - return chronologClientImpl->ReleaseStory(chronicle_name, story_name); -} - -int chronolog::Client::DestroyStory(std::string const &chronicle_name, std::string const &story_name) -{ - return chronologClientImpl->DestroyStory(chronicle_name, story_name); -} - -int chronolog::Client::GetChronicleAttr(std::string const &chronicle_name, const std::string &key, std::string &value) -{ - return chronologClientImpl->GetChronicleAttr(chronicle_name, key, value); -} - -int chronolog::Client::EditChronicleAttr(std::string const &chronicle_name, const std::string &key - , const std::string &value) -{ - return chronologClientImpl->EditChronicleAttr(chronicle_name, key, value); -} - -std::vector &chronolog::Client::ShowChronicles(std::vector &chronicles) -{ - return chronologClientImpl->ShowChronicles(chronicles); -} - -std::vector & -chronolog::Client::ShowStories(std::string const &chronicle_name, std::vector &stories) -{ - return chronologClientImpl->ShowStories(chronicle_name, stories); -} - - -int chronolog::Client::ReplayStory(std::string const & chronicle_name, std::string const & story_name, uint64_t start_time, uint64_t end_time - , std::vector & event_series) -{ - return chronologClientImpl->replay_story(chronicle_name, story_name, start_time, end_time, event_series); -} diff --git a/chrono_common/include/StoryChunkIngestionHandle.h b/chrono_common/include/StoryChunkIngestionHandle.h deleted file mode 100644 index 1ab4235c0..000000000 --- a/chrono_common/include/StoryChunkIngestionHandle.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef STORY_CHUNK_INGESTION_HANDLE_H -#define STORY_CHUNK_INGESTION_HANDLE_H - -#include -#include - -#include "StoryChunk.h" - -// -// IngestionQueue is a funnel into the KeeperDataStore -// std::deque guarantees O(1) time for addidng elements and resizing -// (vector of vectors implementation) - -namespace chronolog -{ - -typedef std::deque StoryChunkDeque; - -class StoryChunkIngestionHandle -{ - -public: - StoryChunkIngestionHandle(std::mutex &a_mutex, StoryChunkDeque*active, StoryChunkDeque*passive): ingestionMutex(a_mutex) - , activeDeque(active) - , passiveDeque(passive) - {} - - ~StoryChunkIngestionHandle() = default; - - StoryChunkDeque &getActiveDeque() const - { return *activeDeque; } - - StoryChunkDeque &getPassiveDeque() const - { return *passiveDeque; } - - void ingestChunk(StoryChunk * chunk) - { // assume multiple service threads pushing chunks onto ingestionQueue - std::lock_guard lock(ingestionMutex); - activeDeque->push_back(chunk); - } - - void swapActiveDeque() - { - if(!passiveDeque->empty() || activeDeque->empty()) - { return; } - -//INNA: check if atomic compare_and_swap will work here - - std::lock_guard lock_guard(ingestionMutex); - if(!passiveDeque->empty() || activeDeque->empty()) - { return; } - - StoryChunkDeque*full_deque = activeDeque; - activeDeque = passiveDeque; - passiveDeque = full_deque; - } - - -private: - std::mutex &ingestionMutex; - StoryChunkDeque * activeDeque; - StoryChunkDeque * passiveDeque; -}; - -} - -#endif diff --git a/chrono_common/include/chronolog_errcode.h b/chrono_common/include/chronolog_errcode.h deleted file mode 100644 index f8525d850..000000000 --- a/chrono_common/include/chronolog_errcode.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef CHRONOLOG_SERVER_ERRCODE_H -#define CHRONOLOG_SERVER_ERRCODE_H - -#include - -namespace chronolog { - -// A simple enum for server-only errors: -enum ServerErrorCode { - CL_ERR_STORY_EXISTS = -101, // Specified Story exists, cannot be created/renamed to - CL_ERR_ARCHIVE_EXISTS = -102, // Specified Archive exists, cannot be created/renamed to - CL_ERR_CHRONICLE_PROPERTY_FULL = -103, // Property list of Chronicle is full, cannot add new property - CL_ERR_STORY_PROPERTY_FULL = -104, // Property list of Story is full, cannot add new property - CL_ERR_CHRONICLE_METADATA_FULL = -105, // Metadata list of Chronicle is full, cannot add new property - CL_ERR_STORY_METADATA_FULL = -106, // Metadata list of Story is full, cannot add new property - CL_ERR_INVALID_CONF = -107, // Invalid configuration, cannot be created - CL_ERR_STORY_CHUNK_EXISTS = -108, // Specified Story chunk exists, cannot be created - CL_ERR_CHRONICLE_DIR_NOT_EXIST = -109, // Chronicle directory does not exist - CL_ERR_STORY_FILE_NOT_EXIST = -110, // Story file does not exist - CL_ERR_STORY_CHUNK_DSET_NOT_EXIST = -111, // Story chunk dataset does not exist - CL_ERR_STORY_CHUNK_EXTRACTION = -112 // Error in extracting Story chunk in ChronoKeeper -}; - -// Convert enum value to its name (for logging) -inline const char* to_string(ServerErrorCode e) { - switch (e) { - case CL_ERR_STORY_EXISTS: return "CL_ERR_STORY_EXISTS"; - case CL_ERR_ARCHIVE_EXISTS: return "CL_ERR_ARCHIVE_EXISTS"; - case CL_ERR_CHRONICLE_PROPERTY_FULL: return "CL_ERR_CHRONICLE_PROPERTY_FULL"; - case CL_ERR_STORY_PROPERTY_FULL: return "CL_ERR_STORY_PROPERTY_FULL"; - case CL_ERR_CHRONICLE_METADATA_FULL: return "CL_ERR_CHRONICLE_METADATA_FULL"; - case CL_ERR_STORY_METADATA_FULL: return "CL_ERR_STORY_METADATA_FULL"; - case CL_ERR_INVALID_CONF: return "CL_ERR_INVALID_CONF"; - case CL_ERR_STORY_CHUNK_EXISTS: return "CL_ERR_STORY_CHUNK_EXISTS"; - case CL_ERR_CHRONICLE_DIR_NOT_EXIST: return "CL_ERR_CHRONICLE_DIR_NOT_EXIST"; - case CL_ERR_STORY_FILE_NOT_EXIST: return "CL_ERR_STORY_FILE_NOT_EXIST"; - case CL_ERR_STORY_CHUNK_DSET_NOT_EXIST: return "CL_ERR_STORY_CHUNK_DSET_NOT_EXIST"; - case CL_ERR_STORY_CHUNK_EXTRACTION: return "CL_ERR_STORY_CHUNK_EXTRACTION"; - default: return "UnknownServerErrorCode"; - } -} - -inline const char* to_string_server(int code) { - switch (static_cast(code)) { - case CL_ERR_STORY_EXISTS: - case CL_ERR_ARCHIVE_EXISTS: - case CL_ERR_CHRONICLE_PROPERTY_FULL: - case CL_ERR_STORY_PROPERTY_FULL: - case CL_ERR_CHRONICLE_METADATA_FULL: - case CL_ERR_STORY_METADATA_FULL: - case CL_ERR_INVALID_CONF: - case CL_ERR_STORY_CHUNK_EXISTS: - case CL_ERR_CHRONICLE_DIR_NOT_EXIST: - case CL_ERR_STORY_FILE_NOT_EXIST: - case CL_ERR_STORY_CHUNK_DSET_NOT_EXIST: - case CL_ERR_STORY_CHUNK_EXTRACTION: - return to_string(static_cast(code)); - default: - return "UnknownServerErrorCode"; - } -} - -} // namespace chronolog - -#endif // CHRONOLOG_SERVER_ERRCODE_H \ No newline at end of file diff --git a/CI/docker/chronolog-ssh.dockerfile b/ci/docker/chronolog-ssh.dockerfile similarity index 100% rename from CI/docker/chronolog-ssh.dockerfile rename to ci/docker/chronolog-ssh.dockerfile diff --git a/CI/docker/chronolog.dockerfile b/ci/docker/chronolog.dockerfile similarity index 100% rename from CI/docker/chronolog.dockerfile rename to ci/docker/chronolog.dockerfile diff --git a/CI/docker/distributed.docker-compose.yaml b/ci/docker/distributed.docker-compose.yaml similarity index 100% rename from CI/docker/distributed.docker-compose.yaml rename to ci/docker/distributed.docker-compose.yaml diff --git a/.github/docker/dockerfile b/ci/docker/dockerfile similarity index 100% rename from .github/docker/dockerfile rename to ci/docker/dockerfile diff --git a/CI/docker/dynamic_deploy.sh b/ci/docker/dynamic_deploy.sh similarity index 100% rename from CI/docker/dynamic_deploy.sh rename to ci/docker/dynamic_deploy.sh diff --git a/CI/docker/dynamic_deploy_pearc2025.sh b/ci/docker/dynamic_deploy_pearc2025.sh similarity index 100% rename from CI/docker/dynamic_deploy_pearc2025.sh rename to ci/docker/dynamic_deploy_pearc2025.sh diff --git a/CI/docker/local.dockerfile b/ci/docker/local.dockerfile similarity index 100% rename from CI/docker/local.dockerfile rename to ci/docker/local.dockerfile diff --git a/CI/enviroment/loads b/ci/enviroment/loads similarity index 100% rename from CI/enviroment/loads rename to ci/enviroment/loads diff --git a/CI/enviroment/spack.yaml b/ci/enviroment/spack.yaml similarity index 100% rename from CI/enviroment/spack.yaml rename to ci/enviroment/spack.yaml diff --git a/CI/installation/install_with_spack.sh b/ci/installation/install_with_spack.sh similarity index 100% rename from CI/installation/install_with_spack.sh rename to ci/installation/install_with_spack.sh diff --git a/CI/installation/print_env.sh b/ci/installation/print_env.sh similarity index 100% rename from CI/installation/print_env.sh rename to ci/installation/print_env.sh diff --git a/CI/spack/packages/socketpp/package.py b/ci/spack/packages/socketpp/package.py similarity index 100% rename from CI/spack/packages/socketpp/package.py rename to ci/spack/packages/socketpp/package.py diff --git a/CI/spack/repo.yaml b/ci/spack/repo.yaml similarity index 100% rename from CI/spack/repo.yaml rename to ci/spack/repo.yaml diff --git a/Client/CMakeLists.txt b/client/CMakeLists.txt similarity index 100% rename from Client/CMakeLists.txt rename to client/CMakeLists.txt diff --git a/Client/cpp/CMakeLists.txt b/client/cpp/CMakeLists.txt similarity index 94% rename from Client/cpp/CMakeLists.txt rename to client/cpp/CMakeLists.txt index cfb1a56db..26fe85fb8 100644 --- a/Client/cpp/CMakeLists.txt +++ b/client/cpp/CMakeLists.txt @@ -22,7 +22,7 @@ add_library(chronolog_client src/ChronologClient.cpp src/ChronologClientImpl.cpp src/ClientConfiguration.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) # Include directories for the library @@ -36,8 +36,8 @@ target_include_directories(chronolog_client ${JSON-C_INCLUDE_DIRS} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) # Link dependencies @@ -111,7 +111,7 @@ install(EXPORT ChronologTargets ) install( - FILES ${CMAKE_SOURCE_DIR}/default_client_conf.json.in + FILES ${CMAKE_SOURCE_DIR}/conf/default_client_conf.json.in DESTINATION ${CHRONOLOG_INSTALL_CONF_DIR} RENAME default-chrono-client-conf.json ) diff --git a/Client/cpp/include/ClientConfiguration.h b/client/cpp/include/ClientConfiguration.h similarity index 100% rename from Client/cpp/include/ClientConfiguration.h rename to client/cpp/include/ClientConfiguration.h diff --git a/Client/cpp/include/chrono_monitor.h b/client/cpp/include/chrono_monitor.h similarity index 100% rename from Client/cpp/include/chrono_monitor.h rename to client/cpp/include/chrono_monitor.h diff --git a/Client/cpp/include/chronolog_client.h b/client/cpp/include/chronolog_client.h similarity index 100% rename from Client/cpp/include/chronolog_client.h rename to client/cpp/include/chronolog_client.h diff --git a/Client/cpp/include/client_errcode.h b/client/cpp/include/client_errcode.h similarity index 100% rename from Client/cpp/include/client_errcode.h rename to client/cpp/include/client_errcode.h diff --git a/Client/cpp/include/cmd_arg_parse.h b/client/cpp/include/cmd_arg_parse.h similarity index 100% rename from Client/cpp/include/cmd_arg_parse.h rename to client/cpp/include/cmd_arg_parse.h diff --git a/Client/cpp/include/log_level.h b/client/cpp/include/log_level.h similarity index 100% rename from Client/cpp/include/log_level.h rename to client/cpp/include/log_level.h diff --git a/client/cpp/src/ChronologClient.cpp b/client/cpp/src/ChronologClient.cpp new file mode 100644 index 000000000..5713f211c --- /dev/null +++ b/client/cpp/src/ChronologClient.cpp @@ -0,0 +1,86 @@ +#include "ChronologClientImpl.h" + +chronolog::Client::Client(chronolog::ClientPortalServiceConf const& visorClientPortalServiceConf) +{ + chronologClientImpl = + chronolog::ChronologClientImpl::GetClientImplInstance(visorClientPortalServiceConf, + chronolog::WRITER_MODE, + chronolog::ClientQueryServiceConf{"", "", 0, 0}); +} + +chronolog::Client::Client(chronolog::ClientPortalServiceConf const& visorClientPortalServiceConf, + chronolog::ClientQueryServiceConf const& clientQueryServiceConf) +{ + chronologClientImpl = chronolog::ChronologClientImpl::GetClientImplInstance(visorClientPortalServiceConf, + chronolog::READER_MODE, + clientQueryServiceConf); +} + +chronolog::Client::~Client() { delete chronologClientImpl; } + +int chronolog::Client::Connect() { return chronologClientImpl->Connect(); } + +int chronolog::Client::Disconnect() { return chronologClientImpl->Disconnect(); } + +int chronolog::Client::CreateChronicle(std::string const& chronicle_name, + std::map const& attrs, + int& flags) +{ + return chronologClientImpl->CreateChronicle(chronicle_name, attrs, flags); +} + +int chronolog::Client::DestroyChronicle(std::string const& chronicle_name) +{ + return chronologClientImpl->DestroyChronicle(chronicle_name); +} + +std::pair chronolog::Client::AcquireStory(std::string const& chronicle_name, + std::string const& story_name, + const std::map& attrs, + int& flags) +{ + return chronologClientImpl->AcquireStory(chronicle_name, story_name, attrs, flags); +} + +int chronolog::Client::ReleaseStory(std::string const& chronicle_name, std::string const& story_name) +{ + return chronologClientImpl->ReleaseStory(chronicle_name, story_name); +} + +int chronolog::Client::DestroyStory(std::string const& chronicle_name, std::string const& story_name) +{ + return chronologClientImpl->DestroyStory(chronicle_name, story_name); +} + +int chronolog::Client::GetChronicleAttr(std::string const& chronicle_name, const std::string& key, std::string& value) +{ + return chronologClientImpl->GetChronicleAttr(chronicle_name, key, value); +} + +int chronolog::Client::EditChronicleAttr(std::string const& chronicle_name, + const std::string& key, + const std::string& value) +{ + return chronologClientImpl->EditChronicleAttr(chronicle_name, key, value); +} + +std::vector& chronolog::Client::ShowChronicles(std::vector& chronicles) +{ + return chronologClientImpl->ShowChronicles(chronicles); +} + +std::vector& chronolog::Client::ShowStories(std::string const& chronicle_name, + std::vector& stories) +{ + return chronologClientImpl->ShowStories(chronicle_name, stories); +} + + +int chronolog::Client::ReplayStory(std::string const& chronicle_name, + std::string const& story_name, + uint64_t start_time, + uint64_t end_time, + std::vector& event_series) +{ + return chronologClientImpl->replay_story(chronicle_name, story_name, start_time, end_time, event_series); +} diff --git a/Client/cpp/src/ChronologClientImpl.cpp b/client/cpp/src/ChronologClientImpl.cpp similarity index 100% rename from Client/cpp/src/ChronologClientImpl.cpp rename to client/cpp/src/ChronologClientImpl.cpp diff --git a/Client/cpp/src/ChronologClientImpl.h b/client/cpp/src/ChronologClientImpl.h similarity index 100% rename from Client/cpp/src/ChronologClientImpl.h rename to client/cpp/src/ChronologClientImpl.h diff --git a/Client/cpp/src/ClientConfiguration.cpp b/client/cpp/src/ClientConfiguration.cpp similarity index 100% rename from Client/cpp/src/ClientConfiguration.cpp rename to client/cpp/src/ClientConfiguration.cpp diff --git a/Client/cpp/src/ClientQueryService.cpp b/client/cpp/src/ClientQueryService.cpp similarity index 100% rename from Client/cpp/src/ClientQueryService.cpp rename to client/cpp/src/ClientQueryService.cpp diff --git a/Client/cpp/src/ClientQueryService.h b/client/cpp/src/ClientQueryService.h similarity index 100% rename from Client/cpp/src/ClientQueryService.h rename to client/cpp/src/ClientQueryService.h diff --git a/Client/cpp/src/KeeperRecordingClient.h b/client/cpp/src/KeeperRecordingClient.h similarity index 100% rename from Client/cpp/src/KeeperRecordingClient.h rename to client/cpp/src/KeeperRecordingClient.h diff --git a/Client/cpp/src/PlaybackQueryRpcClient.cpp b/client/cpp/src/PlaybackQueryRpcClient.cpp similarity index 100% rename from Client/cpp/src/PlaybackQueryRpcClient.cpp rename to client/cpp/src/PlaybackQueryRpcClient.cpp diff --git a/Client/cpp/src/PlaybackQueryRpcClient.h b/client/cpp/src/PlaybackQueryRpcClient.h similarity index 100% rename from Client/cpp/src/PlaybackQueryRpcClient.h rename to client/cpp/src/PlaybackQueryRpcClient.h diff --git a/Client/cpp/src/StorytellerClient.cpp b/client/cpp/src/StorytellerClient.cpp similarity index 100% rename from Client/cpp/src/StorytellerClient.cpp rename to client/cpp/src/StorytellerClient.cpp diff --git a/Client/cpp/src/StorytellerClient.h b/client/cpp/src/StorytellerClient.h similarity index 100% rename from Client/cpp/src/StorytellerClient.h rename to client/cpp/src/StorytellerClient.h diff --git a/Client/cpp/src/chrono_monitor.cpp b/client/cpp/src/chrono_monitor.cpp similarity index 100% rename from Client/cpp/src/chrono_monitor.cpp rename to client/cpp/src/chrono_monitor.cpp diff --git a/Client/cpp/src/rpcVisorClient.h b/client/cpp/src/rpcVisorClient.h similarity index 100% rename from Client/cpp/src/rpcVisorClient.h rename to client/cpp/src/rpcVisorClient.h diff --git a/Client/examples/CMakeLists.txt b/client/examples/CMakeLists.txt similarity index 100% rename from Client/examples/CMakeLists.txt rename to client/examples/CMakeLists.txt diff --git a/Client/examples/cpp/CMakeLists.txt b/client/examples/cpp/CMakeLists.txt similarity index 93% rename from Client/examples/cpp/CMakeLists.txt rename to client/examples/cpp/CMakeLists.txt index 5a8c91f6e..c8c1e8a8f 100644 --- a/Client/examples/cpp/CMakeLists.txt +++ b/client/examples/cpp/CMakeLists.txt @@ -13,7 +13,7 @@ add_executable(client_lib_writer_example ) target_include_directories(client_lib_writer_example PRIVATE - ${CMAKE_BINARY_DIR}/Client/cpp/include + ${CMAKE_BINARY_DIR}/client/cpp/include ) target_link_libraries(client_lib_writer_example @@ -35,7 +35,7 @@ add_executable(client_lib_reader_example ) target_include_directories(client_lib_reader_example PRIVATE - ${CMAKE_BINARY_DIR}/Client/cpp/include + ${CMAKE_BINARY_DIR}/client/cpp/include ) target_link_libraries(client_lib_reader_example @@ -57,7 +57,7 @@ add_executable(client_lib_basic_example ) target_include_directories(client_lib_basic_example PRIVATE - ${CMAKE_BINARY_DIR}/Client/cpp/include + ${CMAKE_BINARY_DIR}/client/cpp/include ) target_link_libraries(client_lib_basic_example @@ -80,7 +80,7 @@ add_executable(client_lib_distributed_telemetry_writer_example ) target_include_directories(client_lib_distributed_telemetry_writer_example PRIVATE - ${CMAKE_BINARY_DIR}/Client/cpp/include + ${CMAKE_BINARY_DIR}/client/cpp/include ) target_link_libraries(client_lib_distributed_telemetry_writer_example @@ -104,8 +104,8 @@ add_executable(client_lib_reader_to_csv_example ) target_include_directories(client_lib_reader_to_csv_example PRIVATE - ${CMAKE_BINARY_DIR}/Client/cpp/include - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_BINARY_DIR}/client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_link_libraries(client_lib_reader_to_csv_example diff --git a/Client/examples/cpp/client_lib_basic_example.cpp b/client/examples/cpp/client_lib_basic_example.cpp similarity index 100% rename from Client/examples/cpp/client_lib_basic_example.cpp rename to client/examples/cpp/client_lib_basic_example.cpp diff --git a/Client/examples/cpp/client_lib_distributed_telemetry_writer_example.cpp b/client/examples/cpp/client_lib_distributed_telemetry_writer_example.cpp similarity index 100% rename from Client/examples/cpp/client_lib_distributed_telemetry_writer_example.cpp rename to client/examples/cpp/client_lib_distributed_telemetry_writer_example.cpp diff --git a/Client/examples/cpp/client_lib_reader_example.cpp b/client/examples/cpp/client_lib_reader_example.cpp similarity index 100% rename from Client/examples/cpp/client_lib_reader_example.cpp rename to client/examples/cpp/client_lib_reader_example.cpp diff --git a/Client/examples/cpp/client_lib_reader_to_csv_example.cpp b/client/examples/cpp/client_lib_reader_to_csv_example.cpp similarity index 100% rename from Client/examples/cpp/client_lib_reader_to_csv_example.cpp rename to client/examples/cpp/client_lib_reader_to_csv_example.cpp diff --git a/Client/examples/cpp/client_lib_writer_example.cpp b/client/examples/cpp/client_lib_writer_example.cpp similarity index 100% rename from Client/examples/cpp/client_lib_writer_example.cpp rename to client/examples/cpp/client_lib_writer_example.cpp diff --git a/Client/examples/python/reader_client.py b/client/examples/python/reader_client.py similarity index 100% rename from Client/examples/python/reader_client.py rename to client/examples/python/reader_client.py diff --git a/Client/examples/python/writer_client.py b/client/examples/python/writer_client.py similarity index 100% rename from Client/examples/python/writer_client.py rename to client/examples/python/writer_client.py diff --git a/Client/python/CMakeLists.txt b/client/python/CMakeLists.txt similarity index 100% rename from Client/python/CMakeLists.txt rename to client/python/CMakeLists.txt diff --git a/Client/python/py_chronolog_client.cpp b/client/python/py_chronolog_client.cpp similarity index 100% rename from Client/python/py_chronolog_client.cpp rename to client/python/py_chronolog_client.cpp diff --git a/Client/spack.yaml b/client/spack.yaml similarity index 100% rename from Client/spack.yaml rename to client/spack.yaml diff --git a/default_client_conf.json.in b/conf/default_client_conf.json.in similarity index 100% rename from default_client_conf.json.in rename to conf/default_client_conf.json.in diff --git a/default_conf.json.in b/conf/default_conf.json.in similarity index 100% rename from default_conf.json.in rename to conf/default_conf.json.in diff --git a/docs-website/static/img/ChronoLogDesign.png b/docs-website/static/img/ChronoLogDesign.png deleted file mode 100644 index 46c3e8983..000000000 Binary files a/docs-website/static/img/ChronoLogDesign.png and /dev/null differ diff --git a/docs-website/static/logos/chronolog-full-logo-transparent.webp b/docs-website/static/logos/chronolog-full-logo-transparent.webp deleted file mode 100644 index ab9390d51..000000000 Binary files a/docs-website/static/logos/chronolog-full-logo-transparent.webp and /dev/null differ diff --git a/docs-website/.gitignore b/docs/.gitignore similarity index 100% rename from docs-website/.gitignore rename to docs/.gitignore diff --git a/docs-website/README.md b/docs/README.md similarity index 100% rename from docs-website/README.md rename to docs/README.md diff --git a/docs-website/docs/architecture.md b/docs/docs/architecture.md similarity index 100% rename from docs-website/docs/architecture.md rename to docs/docs/architecture.md diff --git a/docs-website/docs/client.md b/docs/docs/client.md similarity index 100% rename from docs-website/docs/client.md rename to docs/docs/client.md diff --git a/docs-website/docs/for-developers.md b/docs/docs/for-developers.md similarity index 100% rename from docs-website/docs/for-developers.md rename to docs/docs/for-developers.md diff --git a/docs-website/docs/getting-started.md b/docs/docs/getting-started.md similarity index 100% rename from docs-website/docs/getting-started.md rename to docs/docs/getting-started.md diff --git a/docs-website/docs/plugins.md b/docs/docs/plugins.md similarity index 100% rename from docs-website/docs/plugins.md rename to docs/docs/plugins.md diff --git a/docs-website/docs/tutorials.md b/docs/docs/tutorials.md similarity index 100% rename from docs-website/docs/tutorials.md rename to docs/docs/tutorials.md diff --git a/docs-website/docusaurus.config.ts b/docs/docusaurus.config.ts similarity index 100% rename from docs-website/docusaurus.config.ts rename to docs/docusaurus.config.ts diff --git a/docs-website/package-lock.json b/docs/package-lock.json similarity index 100% rename from docs-website/package-lock.json rename to docs/package-lock.json diff --git a/docs-website/package.json b/docs/package.json similarity index 100% rename from docs-website/package.json rename to docs/package.json diff --git a/docs-website/sidebars.ts b/docs/sidebars.ts similarity index 100% rename from docs-website/sidebars.ts rename to docs/sidebars.ts diff --git a/docs-website/src/components/YouTube.tsx b/docs/src/components/YouTube.tsx similarity index 100% rename from docs-website/src/components/YouTube.tsx rename to docs/src/components/YouTube.tsx diff --git a/docs-website/src/css/custom.css b/docs/src/css/custom.css similarity index 100% rename from docs-website/src/css/custom.css rename to docs/src/css/custom.css diff --git a/docs-website/src/pages/index.module.css b/docs/src/pages/index.module.css similarity index 100% rename from docs-website/src/pages/index.module.css rename to docs/src/pages/index.module.css diff --git a/docs-website/src/pages/index.tsx b/docs/src/pages/index.tsx similarity index 100% rename from docs-website/src/pages/index.tsx rename to docs/src/pages/index.tsx diff --git a/docs-website/src/pages/markdown-page.md b/docs/src/pages/markdown-page.md similarity index 100% rename from docs-website/src/pages/markdown-page.md rename to docs/src/pages/markdown-page.md diff --git a/docs-website/src/theme/Footer/Layout/index.tsx b/docs/src/theme/Footer/Layout/index.tsx similarity index 100% rename from docs-website/src/theme/Footer/Layout/index.tsx rename to docs/src/theme/Footer/Layout/index.tsx diff --git a/docs-website/src/theme/Footer/Links/MultiColumn/index.tsx b/docs/src/theme/Footer/Links/MultiColumn/index.tsx similarity index 100% rename from docs-website/src/theme/Footer/Links/MultiColumn/index.tsx rename to docs/src/theme/Footer/Links/MultiColumn/index.tsx diff --git a/docs-website/src/theme/Footer/Links/Simple/index.tsx b/docs/src/theme/Footer/Links/Simple/index.tsx similarity index 100% rename from docs-website/src/theme/Footer/Links/Simple/index.tsx rename to docs/src/theme/Footer/Links/Simple/index.tsx diff --git a/docs-website/src/theme/Footer/Links/index.tsx b/docs/src/theme/Footer/Links/index.tsx similarity index 100% rename from docs-website/src/theme/Footer/Links/index.tsx rename to docs/src/theme/Footer/Links/index.tsx diff --git a/docs-website/src/theme/Footer/index.tsx b/docs/src/theme/Footer/index.tsx similarity index 100% rename from docs-website/src/theme/Footer/index.tsx rename to docs/src/theme/Footer/index.tsx diff --git a/docs-website/src/theme/NavbarItem/DocSidebarNavbarItem.tsx b/docs/src/theme/NavbarItem/DocSidebarNavbarItem.tsx similarity index 100% rename from docs-website/src/theme/NavbarItem/DocSidebarNavbarItem.tsx rename to docs/src/theme/NavbarItem/DocSidebarNavbarItem.tsx diff --git a/docs-website/static/.nojekyll b/docs/static/.nojekyll similarity index 100% rename from docs-website/static/.nojekyll rename to docs/static/.nojekyll diff --git a/docs-website/static/component-icons/chrono-grapher-isometric.png b/docs/static/component-icons/chrono-grapher-isometric.png similarity index 100% rename from docs-website/static/component-icons/chrono-grapher-isometric.png rename to docs/static/component-icons/chrono-grapher-isometric.png diff --git a/docs-website/static/component-icons/chrono-grapher-isometric.svg b/docs/static/component-icons/chrono-grapher-isometric.svg similarity index 100% rename from docs-website/static/component-icons/chrono-grapher-isometric.svg rename to docs/static/component-icons/chrono-grapher-isometric.svg diff --git a/docs-website/static/component-icons/chrono-grapher-plain.png b/docs/static/component-icons/chrono-grapher-plain.png similarity index 100% rename from docs-website/static/component-icons/chrono-grapher-plain.png rename to docs/static/component-icons/chrono-grapher-plain.png diff --git a/docs-website/static/component-icons/chrono-grapher-plain.svg b/docs/static/component-icons/chrono-grapher-plain.svg similarity index 100% rename from docs-website/static/component-icons/chrono-grapher-plain.svg rename to docs/static/component-icons/chrono-grapher-plain.svg diff --git a/docs-website/static/component-icons/chrono-keeper-isometric.png b/docs/static/component-icons/chrono-keeper-isometric.png similarity index 100% rename from docs-website/static/component-icons/chrono-keeper-isometric.png rename to docs/static/component-icons/chrono-keeper-isometric.png diff --git a/docs-website/static/component-icons/chrono-keeper-isometric.svg b/docs/static/component-icons/chrono-keeper-isometric.svg similarity index 100% rename from docs-website/static/component-icons/chrono-keeper-isometric.svg rename to docs/static/component-icons/chrono-keeper-isometric.svg diff --git a/docs-website/static/component-icons/chrono-keeper-plain.png b/docs/static/component-icons/chrono-keeper-plain.png similarity index 100% rename from docs-website/static/component-icons/chrono-keeper-plain.png rename to docs/static/component-icons/chrono-keeper-plain.png diff --git a/docs-website/static/component-icons/chrono-keeper-plain.svg b/docs/static/component-icons/chrono-keeper-plain.svg similarity index 100% rename from docs-website/static/component-icons/chrono-keeper-plain.svg rename to docs/static/component-icons/chrono-keeper-plain.svg diff --git a/docs-website/static/component-icons/chrono-player-isometric.png b/docs/static/component-icons/chrono-player-isometric.png similarity index 100% rename from docs-website/static/component-icons/chrono-player-isometric.png rename to docs/static/component-icons/chrono-player-isometric.png diff --git a/docs-website/static/component-icons/chrono-player-isometric.svg b/docs/static/component-icons/chrono-player-isometric.svg similarity index 100% rename from docs-website/static/component-icons/chrono-player-isometric.svg rename to docs/static/component-icons/chrono-player-isometric.svg diff --git a/docs-website/static/component-icons/chrono-player-plain.png b/docs/static/component-icons/chrono-player-plain.png similarity index 100% rename from docs-website/static/component-icons/chrono-player-plain.png rename to docs/static/component-icons/chrono-player-plain.png diff --git a/docs-website/static/component-icons/chrono-player-plain.svg b/docs/static/component-icons/chrono-player-plain.svg similarity index 100% rename from docs-website/static/component-icons/chrono-player-plain.svg rename to docs/static/component-icons/chrono-player-plain.svg diff --git a/docs-website/static/component-icons/chrono-visor-isometric.png b/docs/static/component-icons/chrono-visor-isometric.png similarity index 100% rename from docs-website/static/component-icons/chrono-visor-isometric.png rename to docs/static/component-icons/chrono-visor-isometric.png diff --git a/docs-website/static/component-icons/chrono-visor-isometric.svg b/docs/static/component-icons/chrono-visor-isometric.svg similarity index 100% rename from docs-website/static/component-icons/chrono-visor-isometric.svg rename to docs/static/component-icons/chrono-visor-isometric.svg diff --git a/docs-website/static/component-icons/chrono-visor-plain.png b/docs/static/component-icons/chrono-visor-plain.png similarity index 100% rename from docs-website/static/component-icons/chrono-visor-plain.png rename to docs/static/component-icons/chrono-visor-plain.png diff --git a/docs-website/static/component-icons/chrono-visor-plain.svg b/docs/static/component-icons/chrono-visor-plain.svg similarity index 100% rename from docs-website/static/component-icons/chrono-visor-plain.svg rename to docs/static/component-icons/chrono-visor-plain.svg diff --git a/docs-website/static/component-icons/recording-group-isometric.png b/docs/static/component-icons/recording-group-isometric.png similarity index 100% rename from docs-website/static/component-icons/recording-group-isometric.png rename to docs/static/component-icons/recording-group-isometric.png diff --git a/docs-website/static/component-icons/recording-group-isometric.svg b/docs/static/component-icons/recording-group-isometric.svg similarity index 100% rename from docs-website/static/component-icons/recording-group-isometric.svg rename to docs/static/component-icons/recording-group-isometric.svg diff --git a/docs-website/static/component-icons/recording-group-plain.png b/docs/static/component-icons/recording-group-plain.png similarity index 100% rename from docs-website/static/component-icons/recording-group-plain.png rename to docs/static/component-icons/recording-group-plain.png diff --git a/docs-website/static/component-icons/recording-group-plain.svg b/docs/static/component-icons/recording-group-plain.svg similarity index 100% rename from docs-website/static/component-icons/recording-group-plain.svg rename to docs/static/component-icons/recording-group-plain.svg diff --git a/docs-website/static/diagrams/chrono-grapher-internal-diagram.jpg b/docs/static/diagrams/chrono-grapher-internal-diagram.jpg similarity index 100% rename from docs-website/static/diagrams/chrono-grapher-internal-diagram.jpg rename to docs/static/diagrams/chrono-grapher-internal-diagram.jpg diff --git a/docs-website/static/diagrams/chrono-keeper-internal-diagram.jpg b/docs/static/diagrams/chrono-keeper-internal-diagram.jpg similarity index 100% rename from docs-website/static/diagrams/chrono-keeper-internal-diagram.jpg rename to docs/static/diagrams/chrono-keeper-internal-diagram.jpg diff --git a/docs-website/static/diagrams/chrono-player-internal-diagram.jpg b/docs/static/diagrams/chrono-player-internal-diagram.jpg similarity index 100% rename from docs-website/static/diagrams/chrono-player-internal-diagram.jpg rename to docs/static/diagrams/chrono-player-internal-diagram.jpg diff --git a/docs-website/static/diagrams/chrono-visor-internal-diagram.jpg b/docs/static/diagrams/chrono-visor-internal-diagram.jpg similarity index 100% rename from docs-website/static/diagrams/chrono-visor-internal-diagram.jpg rename to docs/static/diagrams/chrono-visor-internal-diagram.jpg diff --git a/docs-website/static/diagrams/chrono-visor-internal-diagram.png b/docs/static/diagrams/chrono-visor-internal-diagram.png similarity index 100% rename from docs-website/static/diagrams/chrono-visor-internal-diagram.png rename to docs/static/diagrams/chrono-visor-internal-diagram.png diff --git a/docs-website/static/diagrams/container-overview-diagram.png b/docs/static/diagrams/container-overview-diagram.png similarity index 100% rename from docs-website/static/diagrams/container-overview-diagram.png rename to docs/static/diagrams/container-overview-diagram.png diff --git a/doc/images/ChronoLogDesign.png b/docs/static/img/ChronoLogDesign.png similarity index 100% rename from doc/images/ChronoLogDesign.png rename to docs/static/img/ChronoLogDesign.png diff --git a/docs-website/static/img/HighLevelComponents.jpg b/docs/static/img/HighLevelComponents.jpg similarity index 100% rename from docs-website/static/img/HighLevelComponents.jpg rename to docs/static/img/HighLevelComponents.jpg diff --git a/docs-website/static/img/StoryPipelineModel.jpg b/docs/static/img/StoryPipelineModel.jpg similarity index 100% rename from docs-website/static/img/StoryPipelineModel.jpg rename to docs/static/img/StoryPipelineModel.jpg diff --git a/docs-website/static/img/chronolog-favicon-original.png b/docs/static/img/chronolog-favicon-original.png similarity index 100% rename from docs-website/static/img/chronolog-favicon-original.png rename to docs/static/img/chronolog-favicon-original.png diff --git a/docs-website/static/img/chronolog-favicon.png b/docs/static/img/chronolog-favicon.png similarity index 100% rename from docs-website/static/img/chronolog-favicon.png rename to docs/static/img/chronolog-favicon.png diff --git a/docs-website/static/img/chronolog-isometric.jpg b/docs/static/img/chronolog-isometric.jpg similarity index 100% rename from docs-website/static/img/chronolog-isometric.jpg rename to docs/static/img/chronolog-isometric.jpg diff --git a/docs-website/static/img/chronolog-isometric.png b/docs/static/img/chronolog-isometric.png similarity index 100% rename from docs-website/static/img/chronolog-isometric.png rename to docs/static/img/chronolog-isometric.png diff --git a/docs-website/static/img/chronolog-logo-light.png b/docs/static/img/chronolog-logo-light.png similarity index 100% rename from docs-website/static/img/chronolog-logo-light.png rename to docs/static/img/chronolog-logo-light.png diff --git a/docs-website/static/img/chronolog-logo-no-background.png b/docs/static/img/chronolog-logo-no-background.png similarity index 100% rename from docs-website/static/img/chronolog-logo-no-background.png rename to docs/static/img/chronolog-logo-no-background.png diff --git a/doc/images/docker-multi-node.png b/docs/static/img/docker-multi-node.png similarity index 100% rename from doc/images/docker-multi-node.png rename to docs/static/img/docker-multi-node.png diff --git a/doc/images/docker-single-node.png b/docs/static/img/docker-single-node.png similarity index 100% rename from doc/images/docker-single-node.png rename to docs/static/img/docker-single-node.png diff --git a/docs-website/static/img/favicon.ico b/docs/static/img/favicon.ico similarity index 100% rename from docs-website/static/img/favicon.ico rename to docs/static/img/favicon.ico diff --git a/doc/images/feature-matrix.png b/docs/static/img/feature-matrix.png similarity index 100% rename from doc/images/feature-matrix.png rename to docs/static/img/feature-matrix.png diff --git a/doc/images/log_centric_paradigm.svg b/docs/static/img/log_centric_paradigm.svg similarity index 100% rename from doc/images/log_centric_paradigm.svg rename to docs/static/img/log_centric_paradigm.svg diff --git a/docs-website/static/img/logo.svg b/docs/static/img/logo.svg similarity index 100% rename from docs-website/static/img/logo.svg rename to docs/static/img/logo.svg diff --git a/docs-website/static/img/undraw_docusaurus_mountain.svg b/docs/static/img/undraw_docusaurus_mountain.svg similarity index 100% rename from docs-website/static/img/undraw_docusaurus_mountain.svg rename to docs/static/img/undraw_docusaurus_mountain.svg diff --git a/docs-website/static/img/undraw_docusaurus_react.svg b/docs/static/img/undraw_docusaurus_react.svg similarity index 100% rename from docs-website/static/img/undraw_docusaurus_react.svg rename to docs/static/img/undraw_docusaurus_react.svg diff --git a/docs-website/static/img/undraw_docusaurus_tree.svg b/docs/static/img/undraw_docusaurus_tree.svg similarity index 100% rename from docs-website/static/img/undraw_docusaurus_tree.svg rename to docs/static/img/undraw_docusaurus_tree.svg diff --git a/doc/images/logos/3red.png b/docs/static/logos/3red.png similarity index 100% rename from doc/images/logos/3red.png rename to docs/static/logos/3red.png diff --git a/doc/images/logos/IIT.png b/docs/static/logos/IIT.png similarity index 100% rename from doc/images/logos/IIT.png rename to docs/static/logos/IIT.png diff --git a/doc/images/logos/argonne.jpeg b/docs/static/logos/argonne.jpeg similarity index 100% rename from doc/images/logos/argonne.jpeg rename to docs/static/logos/argonne.jpeg diff --git a/doc/images/logos/chronolog-full-logo-transparent.webp b/docs/static/logos/chronolog-full-logo-transparent.webp similarity index 100% rename from doc/images/logos/chronolog-full-logo-transparent.webp rename to docs/static/logos/chronolog-full-logo-transparent.webp diff --git a/docs-website/static/logos/chronolog-full-logo.png b/docs/static/logos/chronolog-full-logo.png similarity index 100% rename from docs-website/static/logos/chronolog-full-logo.png rename to docs/static/logos/chronolog-full-logo.png diff --git a/doc/images/logos/depaul.png b/docs/static/logos/depaul.png similarity index 100% rename from doc/images/logos/depaul.png rename to docs/static/logos/depaul.png diff --git a/doc/images/logos/ifsh.jpg b/docs/static/logos/ifsh.jpg similarity index 100% rename from doc/images/logos/ifsh.jpg rename to docs/static/logos/ifsh.jpg diff --git a/doc/images/logos/llnl.jpg b/docs/static/logos/llnl.jpg similarity index 100% rename from doc/images/logos/llnl.jpg rename to docs/static/logos/llnl.jpg diff --git a/doc/images/logos/logo-chronolog.png b/docs/static/logos/logo-chronolog.png similarity index 100% rename from doc/images/logos/logo-chronolog.png rename to docs/static/logos/logo-chronolog.png diff --git a/doc/images/logos/nsf-fb7efe9286a9b499c5907d82af3e70fd.png b/docs/static/logos/nsf-fb7efe9286a9b499c5907d82af3e70fd.png similarity index 100% rename from doc/images/logos/nsf-fb7efe9286a9b499c5907d82af3e70fd.png rename to docs/static/logos/nsf-fb7efe9286a9b499c5907d82af3e70fd.png diff --git a/docs-website/static/logos/nsf.png b/docs/static/logos/nsf.png similarity index 100% rename from docs-website/static/logos/nsf.png rename to docs/static/logos/nsf.png diff --git a/doc/images/logos/omnibond.png b/docs/static/logos/omnibond.png similarity index 100% rename from doc/images/logos/omnibond.png rename to docs/static/logos/omnibond.png diff --git a/doc/images/logos/paratools.png b/docs/static/logos/paratools.png similarity index 100% rename from doc/images/logos/paratools.png rename to docs/static/logos/paratools.png diff --git a/doc/images/logos/parsl.svg b/docs/static/logos/parsl.svg similarity index 100% rename from doc/images/logos/parsl.svg rename to docs/static/logos/parsl.svg diff --git a/doc/images/logos/slac.png b/docs/static/logos/slac.png similarity index 100% rename from doc/images/logos/slac.png rename to docs/static/logos/slac.png diff --git a/doc/images/logos/university-of-chicago.png b/docs/static/logos/university-of-chicago.png similarity index 100% rename from doc/images/logos/university-of-chicago.png rename to docs/static/logos/university-of-chicago.png diff --git a/doc/images/logos/university-of-illinois.jpg b/docs/static/logos/university-of-illinois.jpg similarity index 100% rename from doc/images/logos/university-of-illinois.jpg rename to docs/static/logos/university-of-illinois.jpg diff --git a/doc/images/logos/university-of-wisconsin.jpg b/docs/static/logos/university-of-wisconsin.jpg similarity index 100% rename from doc/images/logos/university-of-wisconsin.jpg rename to docs/static/logos/university-of-wisconsin.jpg diff --git a/docs-website/tsconfig.json b/docs/tsconfig.json similarity index 100% rename from docs-website/tsconfig.json rename to docs/tsconfig.json diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/_category_.json b/docs/versioned_docs/version-2.4.0/architecture/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/_category_.json rename to docs/versioned_docs/version-2.4.0/architecture/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/components/_category_.json b/docs/versioned_docs/version-2.4.0/architecture/components/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/components/_category_.json rename to docs/versioned_docs/version-2.4.0/architecture/components/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/components/chronographer.md b/docs/versioned_docs/version-2.4.0/architecture/components/chronographer.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/components/chronographer.md rename to docs/versioned_docs/version-2.4.0/architecture/components/chronographer.md diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/components/chronokeeper.md b/docs/versioned_docs/version-2.4.0/architecture/components/chronokeeper.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/components/chronokeeper.md rename to docs/versioned_docs/version-2.4.0/architecture/components/chronokeeper.md diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/components/chronoplayer.md b/docs/versioned_docs/version-2.4.0/architecture/components/chronoplayer.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/components/chronoplayer.md rename to docs/versioned_docs/version-2.4.0/architecture/components/chronoplayer.md diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/components/chronovisor.md b/docs/versioned_docs/version-2.4.0/architecture/components/chronovisor.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/components/chronovisor.md rename to docs/versioned_docs/version-2.4.0/architecture/components/chronovisor.md diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/data-model/_category_.json b/docs/versioned_docs/version-2.4.0/architecture/data-model/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/data-model/_category_.json rename to docs/versioned_docs/version-2.4.0/architecture/data-model/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/data-model/definitions.md b/docs/versioned_docs/version-2.4.0/architecture/data-model/definitions.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/data-model/definitions.md rename to docs/versioned_docs/version-2.4.0/architecture/data-model/definitions.md diff --git a/docs-website/versioned_docs/version-2.4.0/architecture/data-model/story-pipeline.md b/docs/versioned_docs/version-2.4.0/architecture/data-model/story-pipeline.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/architecture/data-model/story-pipeline.md rename to docs/versioned_docs/version-2.4.0/architecture/data-model/story-pipeline.md diff --git a/docs-website/versioned_docs/version-2.4.0/client/_category_.json b/docs/versioned_docs/version-2.4.0/client/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/_category_.json rename to docs/versioned_docs/version-2.4.0/client/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-api/_category_.json b/docs/versioned_docs/version-2.4.0/client/client-api/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-api/_category_.json rename to docs/versioned_docs/version-2.4.0/client/client-api/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-api/client-class.md b/docs/versioned_docs/version-2.4.0/client/client-api/client-class.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-api/client-class.md rename to docs/versioned_docs/version-2.4.0/client/client-api/client-class.md diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-api/event-class.md b/docs/versioned_docs/version-2.4.0/client/client-api/event-class.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-api/event-class.md rename to docs/versioned_docs/version-2.4.0/client/client-api/event-class.md diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-api/story-handle.md b/docs/versioned_docs/version-2.4.0/client/client-api/story-handle.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-api/story-handle.md rename to docs/versioned_docs/version-2.4.0/client/client-api/story-handle.md diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-examples/_category_.json b/docs/versioned_docs/version-2.4.0/client/client-examples/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-examples/_category_.json rename to docs/versioned_docs/version-2.4.0/client/client-examples/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-examples/basic-client-api.md b/docs/versioned_docs/version-2.4.0/client/client-examples/basic-client-api.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-examples/basic-client-api.md rename to docs/versioned_docs/version-2.4.0/client/client-examples/basic-client-api.md diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-examples/interactive-admin.md b/docs/versioned_docs/version-2.4.0/client/client-examples/interactive-admin.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-examples/interactive-admin.md rename to docs/versioned_docs/version-2.4.0/client/client-examples/interactive-admin.md diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-examples/python-client.md b/docs/versioned_docs/version-2.4.0/client/client-examples/python-client.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-examples/python-client.md rename to docs/versioned_docs/version-2.4.0/client/client-examples/python-client.md diff --git a/docs-website/versioned_docs/version-2.4.0/client/client-examples/scripted-admin.md b/docs/versioned_docs/version-2.4.0/client/client-examples/scripted-admin.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/client/client-examples/scripted-admin.md rename to docs/versioned_docs/version-2.4.0/client/client-examples/scripted-admin.md diff --git a/docs-website/versioned_docs/version-2.4.0/configuration.md b/docs/versioned_docs/version-2.4.0/configuration.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/configuration.md rename to docs/versioned_docs/version-2.4.0/configuration.md diff --git a/docs-website/versioned_docs/version-2.4.0/contributing/_category_.json b/docs/versioned_docs/version-2.4.0/contributing/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/contributing/_category_.json rename to docs/versioned_docs/version-2.4.0/contributing/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/contributing/code-style-guidelines.md b/docs/versioned_docs/version-2.4.0/contributing/code-style-guidelines.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/contributing/code-style-guidelines.md rename to docs/versioned_docs/version-2.4.0/contributing/code-style-guidelines.md diff --git a/docs-website/versioned_docs/version-2.4.0/contributing/contributors-guidelines.md b/docs/versioned_docs/version-2.4.0/contributing/contributors-guidelines.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/contributing/contributors-guidelines.md rename to docs/versioned_docs/version-2.4.0/contributing/contributors-guidelines.md diff --git a/docs-website/versioned_docs/version-2.4.0/deployment.md b/docs/versioned_docs/version-2.4.0/deployment.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/deployment.md rename to docs/versioned_docs/version-2.4.0/deployment.md diff --git a/docs-website/versioned_docs/version-2.4.0/getting-started.md b/docs/versioned_docs/version-2.4.0/getting-started.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/getting-started.md rename to docs/versioned_docs/version-2.4.0/getting-started.md diff --git a/docs-website/versioned_docs/version-2.4.0/installation.md b/docs/versioned_docs/version-2.4.0/installation.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/installation.md rename to docs/versioned_docs/version-2.4.0/installation.md diff --git a/docs-website/versioned_docs/version-2.4.0/intro.md b/docs/versioned_docs/version-2.4.0/intro.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/intro.md rename to docs/versioned_docs/version-2.4.0/intro.md diff --git a/docs-website/versioned_docs/version-2.4.0/plugins/_category_.json b/docs/versioned_docs/version-2.4.0/plugins/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/plugins/_category_.json rename to docs/versioned_docs/version-2.4.0/plugins/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/plugins/chronokvs.md b/docs/versioned_docs/version-2.4.0/plugins/chronokvs.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/plugins/chronokvs.md rename to docs/versioned_docs/version-2.4.0/plugins/chronokvs.md diff --git a/docs-website/versioned_docs/version-2.4.0/plugins/overview.md b/docs/versioned_docs/version-2.4.0/plugins/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/plugins/overview.md rename to docs/versioned_docs/version-2.4.0/plugins/overview.md diff --git a/docs-website/versioned_docs/version-2.4.0/tutorial-extras/img/docsVersionDropdown.png b/docs/versioned_docs/version-2.4.0/tutorial-extras/img/docsVersionDropdown.png similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorial-extras/img/docsVersionDropdown.png rename to docs/versioned_docs/version-2.4.0/tutorial-extras/img/docsVersionDropdown.png diff --git a/docs-website/versioned_docs/version-2.4.0/tutorial-extras/img/localeDropdown.png b/docs/versioned_docs/version-2.4.0/tutorial-extras/img/localeDropdown.png similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorial-extras/img/localeDropdown.png rename to docs/versioned_docs/version-2.4.0/tutorial-extras/img/localeDropdown.png diff --git a/docs-website/versioned_docs/version-2.4.0/tutorials/_category_.json b/docs/versioned_docs/version-2.4.0/tutorials/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorials/_category_.json rename to docs/versioned_docs/version-2.4.0/tutorials/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/tutorials/docker/_category_.json b/docs/versioned_docs/version-2.4.0/tutorials/docker/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorials/docker/_category_.json rename to docs/versioned_docs/version-2.4.0/tutorials/docker/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/tutorials/docker/docker-multi-node.md b/docs/versioned_docs/version-2.4.0/tutorials/docker/docker-multi-node.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorials/docker/docker-multi-node.md rename to docs/versioned_docs/version-2.4.0/tutorials/docker/docker-multi-node.md diff --git a/docs-website/versioned_docs/version-2.4.0/tutorials/docker/docker-single-node.md b/docs/versioned_docs/version-2.4.0/tutorials/docker/docker-single-node.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorials/docker/docker-single-node.md rename to docs/versioned_docs/version-2.4.0/tutorials/docker/docker-single-node.md diff --git a/docs-website/versioned_docs/version-2.4.0/tutorials/native-linux/_category_.json b/docs/versioned_docs/version-2.4.0/tutorials/native-linux/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorials/native-linux/_category_.json rename to docs/versioned_docs/version-2.4.0/tutorials/native-linux/_category_.json diff --git a/docs-website/versioned_docs/version-2.4.0/tutorials/native-linux/first-steps.md b/docs/versioned_docs/version-2.4.0/tutorials/native-linux/first-steps.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorials/native-linux/first-steps.md rename to docs/versioned_docs/version-2.4.0/tutorials/native-linux/first-steps.md diff --git a/docs-website/versioned_docs/version-2.4.0/tutorials/native-linux/performance-test.md b/docs/versioned_docs/version-2.4.0/tutorials/native-linux/performance-test.md similarity index 100% rename from docs-website/versioned_docs/version-2.4.0/tutorials/native-linux/performance-test.md rename to docs/versioned_docs/version-2.4.0/tutorials/native-linux/performance-test.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/_category_.json b/docs/versioned_docs/version-2.5.0/client/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/_category_.json rename to docs/versioned_docs/version-2.5.0/client/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/client/cli/_category_.json b/docs/versioned_docs/version-2.5.0/client/cli/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cli/_category_.json rename to docs/versioned_docs/version-2.5.0/client/cli/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/client/cli/api.md b/docs/versioned_docs/version-2.5.0/client/cli/api.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cli/api.md rename to docs/versioned_docs/version-2.5.0/client/cli/api.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/cli/examples.md b/docs/versioned_docs/version-2.5.0/client/cli/examples.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cli/examples.md rename to docs/versioned_docs/version-2.5.0/client/cli/examples.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/cli/overview.md b/docs/versioned_docs/version-2.5.0/client/cli/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cli/overview.md rename to docs/versioned_docs/version-2.5.0/client/cli/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/cpp/_category_.json b/docs/versioned_docs/version-2.5.0/client/cpp/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cpp/_category_.json rename to docs/versioned_docs/version-2.5.0/client/cpp/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/client/cpp/api.md b/docs/versioned_docs/version-2.5.0/client/cpp/api.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cpp/api.md rename to docs/versioned_docs/version-2.5.0/client/cpp/api.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/cpp/error-codes.md b/docs/versioned_docs/version-2.5.0/client/cpp/error-codes.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cpp/error-codes.md rename to docs/versioned_docs/version-2.5.0/client/cpp/error-codes.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/cpp/examples.md b/docs/versioned_docs/version-2.5.0/client/cpp/examples.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cpp/examples.md rename to docs/versioned_docs/version-2.5.0/client/cpp/examples.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/cpp/overview.md b/docs/versioned_docs/version-2.5.0/client/cpp/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/cpp/overview.md rename to docs/versioned_docs/version-2.5.0/client/cpp/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/overview.md b/docs/versioned_docs/version-2.5.0/client/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/overview.md rename to docs/versioned_docs/version-2.5.0/client/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/python/_category_.json b/docs/versioned_docs/version-2.5.0/client/python/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/python/_category_.json rename to docs/versioned_docs/version-2.5.0/client/python/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/client/python/api.md b/docs/versioned_docs/version-2.5.0/client/python/api.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/python/api.md rename to docs/versioned_docs/version-2.5.0/client/python/api.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/python/error-codes.md b/docs/versioned_docs/version-2.5.0/client/python/error-codes.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/python/error-codes.md rename to docs/versioned_docs/version-2.5.0/client/python/error-codes.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/python/examples.md b/docs/versioned_docs/version-2.5.0/client/python/examples.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/python/examples.md rename to docs/versioned_docs/version-2.5.0/client/python/examples.md diff --git a/docs-website/versioned_docs/version-2.5.0/client/python/overview.md b/docs/versioned_docs/version-2.5.0/client/python/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/client/python/overview.md rename to docs/versioned_docs/version-2.5.0/client/python/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/_category_.json b/docs/versioned_docs/version-2.5.0/contributing/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/_category_.json rename to docs/versioned_docs/version-2.5.0/contributing/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/development/_category_.json b/docs/versioned_docs/version-2.5.0/contributing/development/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/development/_category_.json rename to docs/versioned_docs/version-2.5.0/contributing/development/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/development/building-for-development.md b/docs/versioned_docs/version-2.5.0/contributing/development/building-for-development.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/development/building-for-development.md rename to docs/versioned_docs/version-2.5.0/contributing/development/building-for-development.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/development/environment-setup.md b/docs/versioned_docs/version-2.5.0/contributing/development/environment-setup.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/development/environment-setup.md rename to docs/versioned_docs/version-2.5.0/contributing/development/environment-setup.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/development/overview.md b/docs/versioned_docs/version-2.5.0/contributing/development/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/development/overview.md rename to docs/versioned_docs/version-2.5.0/contributing/development/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/development/running-tests.md b/docs/versioned_docs/version-2.5.0/contributing/development/running-tests.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/development/running-tests.md rename to docs/versioned_docs/version-2.5.0/contributing/development/running-tests.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/guidelines/_category_.json b/docs/versioned_docs/version-2.5.0/contributing/guidelines/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/guidelines/_category_.json rename to docs/versioned_docs/version-2.5.0/contributing/guidelines/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/guidelines/ci-cd.md b/docs/versioned_docs/version-2.5.0/contributing/guidelines/ci-cd.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/guidelines/ci-cd.md rename to docs/versioned_docs/version-2.5.0/contributing/guidelines/ci-cd.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/guidelines/code-of-conduct.md b/docs/versioned_docs/version-2.5.0/contributing/guidelines/code-of-conduct.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/guidelines/code-of-conduct.md rename to docs/versioned_docs/version-2.5.0/contributing/guidelines/code-of-conduct.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/guidelines/code-style.md b/docs/versioned_docs/version-2.5.0/contributing/guidelines/code-style.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/guidelines/code-style.md rename to docs/versioned_docs/version-2.5.0/contributing/guidelines/code-style.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/guidelines/git-workflow.md b/docs/versioned_docs/version-2.5.0/contributing/guidelines/git-workflow.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/guidelines/git-workflow.md rename to docs/versioned_docs/version-2.5.0/contributing/guidelines/git-workflow.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/guidelines/license.md b/docs/versioned_docs/version-2.5.0/contributing/guidelines/license.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/guidelines/license.md rename to docs/versioned_docs/version-2.5.0/contributing/guidelines/license.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/guidelines/overview.md b/docs/versioned_docs/version-2.5.0/contributing/guidelines/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/guidelines/overview.md rename to docs/versioned_docs/version-2.5.0/contributing/guidelines/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/guidelines/testing-guidelines.md b/docs/versioned_docs/version-2.5.0/contributing/guidelines/testing-guidelines.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/guidelines/testing-guidelines.md rename to docs/versioned_docs/version-2.5.0/contributing/guidelines/testing-guidelines.md diff --git a/docs-website/versioned_docs/version-2.5.0/contributing/overview.md b/docs/versioned_docs/version-2.5.0/contributing/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/contributing/overview.md rename to docs/versioned_docs/version-2.5.0/contributing/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/getting-started/_category_.json b/docs/versioned_docs/version-2.5.0/getting-started/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/getting-started/_category_.json rename to docs/versioned_docs/version-2.5.0/getting-started/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/getting-started/core-concepts.md b/docs/versioned_docs/version-2.5.0/getting-started/core-concepts.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/getting-started/core-concepts.md rename to docs/versioned_docs/version-2.5.0/getting-started/core-concepts.md diff --git a/docs-website/versioned_docs/version-2.5.0/getting-started/overview.md b/docs/versioned_docs/version-2.5.0/getting-started/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/getting-started/overview.md rename to docs/versioned_docs/version-2.5.0/getting-started/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/getting-started/quick-start.md b/docs/versioned_docs/version-2.5.0/getting-started/quick-start.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/getting-started/quick-start.md rename to docs/versioned_docs/version-2.5.0/getting-started/quick-start.md diff --git a/docs-website/versioned_docs/version-2.5.0/plugins/_category_.json b/docs/versioned_docs/version-2.5.0/plugins/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/plugins/_category_.json rename to docs/versioned_docs/version-2.5.0/plugins/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/plugins/chronokvs.md b/docs/versioned_docs/version-2.5.0/plugins/chronokvs.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/plugins/chronokvs.md rename to docs/versioned_docs/version-2.5.0/plugins/chronokvs.md diff --git a/docs-website/versioned_docs/version-2.5.0/plugins/chronostream.md b/docs/versioned_docs/version-2.5.0/plugins/chronostream.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/plugins/chronostream.md rename to docs/versioned_docs/version-2.5.0/plugins/chronostream.md diff --git a/docs-website/versioned_docs/version-2.5.0/plugins/chronoviz.md b/docs/versioned_docs/version-2.5.0/plugins/chronoviz.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/plugins/chronoviz.md rename to docs/versioned_docs/version-2.5.0/plugins/chronoviz.md diff --git a/docs-website/versioned_docs/version-2.5.0/plugins/overview.md b/docs/versioned_docs/version-2.5.0/plugins/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/plugins/overview.md rename to docs/versioned_docs/version-2.5.0/plugins/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/_category_.json b/docs/versioned_docs/version-2.5.0/tutorials/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/_category_.json rename to docs/versioned_docs/version-2.5.0/tutorials/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/docker-multi-node/_category_.json b/docs/versioned_docs/version-2.5.0/tutorials/docker-multi-node/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/docker-multi-node/_category_.json rename to docs/versioned_docs/version-2.5.0/tutorials/docker-multi-node/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/docker-multi-node/client-performance-test.md b/docs/versioned_docs/version-2.5.0/tutorials/docker-multi-node/client-performance-test.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/docker-multi-node/client-performance-test.md rename to docs/versioned_docs/version-2.5.0/tutorials/docker-multi-node/client-performance-test.md diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/docker-multi-node/running-chronolog.md b/docs/versioned_docs/version-2.5.0/tutorials/docker-multi-node/running-chronolog.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/docker-multi-node/running-chronolog.md rename to docs/versioned_docs/version-2.5.0/tutorials/docker-multi-node/running-chronolog.md diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/docker-single-node/_category_.json b/docs/versioned_docs/version-2.5.0/tutorials/docker-single-node/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/docker-single-node/_category_.json rename to docs/versioned_docs/version-2.5.0/tutorials/docker-single-node/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/docker-single-node/client-performance-test.md b/docs/versioned_docs/version-2.5.0/tutorials/docker-single-node/client-performance-test.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/docker-single-node/client-performance-test.md rename to docs/versioned_docs/version-2.5.0/tutorials/docker-single-node/client-performance-test.md diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/docker-single-node/running-chronolog.md b/docs/versioned_docs/version-2.5.0/tutorials/docker-single-node/running-chronolog.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/docker-single-node/running-chronolog.md rename to docs/versioned_docs/version-2.5.0/tutorials/docker-single-node/running-chronolog.md diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/native-linux/_category_.json b/docs/versioned_docs/version-2.5.0/tutorials/native-linux/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/native-linux/_category_.json rename to docs/versioned_docs/version-2.5.0/tutorials/native-linux/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/native-linux/first-steps.md b/docs/versioned_docs/version-2.5.0/tutorials/native-linux/first-steps.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/native-linux/first-steps.md rename to docs/versioned_docs/version-2.5.0/tutorials/native-linux/first-steps.md diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/native-linux/performance-test.md b/docs/versioned_docs/version-2.5.0/tutorials/native-linux/performance-test.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/native-linux/performance-test.md rename to docs/versioned_docs/version-2.5.0/tutorials/native-linux/performance-test.md diff --git a/docs-website/versioned_docs/version-2.5.0/tutorials/overview.md b/docs/versioned_docs/version-2.5.0/tutorials/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/tutorials/overview.md rename to docs/versioned_docs/version-2.5.0/tutorials/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/_category_.json b/docs/versioned_docs/version-2.5.0/user-guide/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/_category_.json rename to docs/versioned_docs/version-2.5.0/user-guide/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/architecture/_category_.json b/docs/versioned_docs/version-2.5.0/user-guide/architecture/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/architecture/_category_.json rename to docs/versioned_docs/version-2.5.0/user-guide/architecture/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/architecture/chronographer.md b/docs/versioned_docs/version-2.5.0/user-guide/architecture/chronographer.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/architecture/chronographer.md rename to docs/versioned_docs/version-2.5.0/user-guide/architecture/chronographer.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/architecture/chronokeeper.md b/docs/versioned_docs/version-2.5.0/user-guide/architecture/chronokeeper.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/architecture/chronokeeper.md rename to docs/versioned_docs/version-2.5.0/user-guide/architecture/chronokeeper.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/architecture/chronoplayer.md b/docs/versioned_docs/version-2.5.0/user-guide/architecture/chronoplayer.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/architecture/chronoplayer.md rename to docs/versioned_docs/version-2.5.0/user-guide/architecture/chronoplayer.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/architecture/chronovisor.md b/docs/versioned_docs/version-2.5.0/user-guide/architecture/chronovisor.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/architecture/chronovisor.md rename to docs/versioned_docs/version-2.5.0/user-guide/architecture/chronovisor.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/architecture/system-overview.md b/docs/versioned_docs/version-2.5.0/user-guide/architecture/system-overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/architecture/system-overview.md rename to docs/versioned_docs/version-2.5.0/user-guide/architecture/system-overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/configuration/_category_.json b/docs/versioned_docs/version-2.5.0/user-guide/configuration/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/configuration/_category_.json rename to docs/versioned_docs/version-2.5.0/user-guide/configuration/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/configuration/client-configuration.md b/docs/versioned_docs/version-2.5.0/user-guide/configuration/client-configuration.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/configuration/client-configuration.md rename to docs/versioned_docs/version-2.5.0/user-guide/configuration/client-configuration.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/configuration/network-and-rpc.md b/docs/versioned_docs/version-2.5.0/user-guide/configuration/network-and-rpc.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/configuration/network-and-rpc.md rename to docs/versioned_docs/version-2.5.0/user-guide/configuration/network-and-rpc.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/configuration/overview.md b/docs/versioned_docs/version-2.5.0/user-guide/configuration/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/configuration/overview.md rename to docs/versioned_docs/version-2.5.0/user-guide/configuration/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/configuration/performance-tuning.md b/docs/versioned_docs/version-2.5.0/user-guide/configuration/performance-tuning.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/configuration/performance-tuning.md rename to docs/versioned_docs/version-2.5.0/user-guide/configuration/performance-tuning.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/configuration/server-configuration.md b/docs/versioned_docs/version-2.5.0/user-guide/configuration/server-configuration.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/configuration/server-configuration.md rename to docs/versioned_docs/version-2.5.0/user-guide/configuration/server-configuration.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/data-model/_category_.json b/docs/versioned_docs/version-2.5.0/user-guide/data-model/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/data-model/_category_.json rename to docs/versioned_docs/version-2.5.0/user-guide/data-model/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/data-model/concepts.md b/docs/versioned_docs/version-2.5.0/user-guide/data-model/concepts.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/data-model/concepts.md rename to docs/versioned_docs/version-2.5.0/user-guide/data-model/concepts.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/data-model/overview.md b/docs/versioned_docs/version-2.5.0/user-guide/data-model/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/data-model/overview.md rename to docs/versioned_docs/version-2.5.0/user-guide/data-model/overview.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/data-model/story-pipeline.md b/docs/versioned_docs/version-2.5.0/user-guide/data-model/story-pipeline.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/data-model/story-pipeline.md rename to docs/versioned_docs/version-2.5.0/user-guide/data-model/story-pipeline.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/deployment/_category_.json b/docs/versioned_docs/version-2.5.0/user-guide/deployment/_category_.json similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/deployment/_category_.json rename to docs/versioned_docs/version-2.5.0/user-guide/deployment/_category_.json diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/deployment/docker-compose.md b/docs/versioned_docs/version-2.5.0/user-guide/deployment/docker-compose.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/deployment/docker-compose.md rename to docs/versioned_docs/version-2.5.0/user-guide/deployment/docker-compose.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/deployment/multi-node.md b/docs/versioned_docs/version-2.5.0/user-guide/deployment/multi-node.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/deployment/multi-node.md rename to docs/versioned_docs/version-2.5.0/user-guide/deployment/multi-node.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/deployment/single-node.md b/docs/versioned_docs/version-2.5.0/user-guide/deployment/single-node.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/deployment/single-node.md rename to docs/versioned_docs/version-2.5.0/user-guide/deployment/single-node.md diff --git a/docs-website/versioned_docs/version-2.5.0/user-guide/overview.md b/docs/versioned_docs/version-2.5.0/user-guide/overview.md similarity index 100% rename from docs-website/versioned_docs/version-2.5.0/user-guide/overview.md rename to docs/versioned_docs/version-2.5.0/user-guide/overview.md diff --git a/docs-website/versioned_sidebars/version-2.4.0-sidebars.json b/docs/versioned_sidebars/version-2.4.0-sidebars.json similarity index 100% rename from docs-website/versioned_sidebars/version-2.4.0-sidebars.json rename to docs/versioned_sidebars/version-2.4.0-sidebars.json diff --git a/docs-website/versioned_sidebars/version-2.5.0-sidebars.json b/docs/versioned_sidebars/version-2.5.0-sidebars.json similarity index 100% rename from docs-website/versioned_sidebars/version-2.5.0-sidebars.json rename to docs/versioned_sidebars/version-2.5.0-sidebars.json diff --git a/docs-website/versions.json b/docs/versions.json similarity index 100% rename from docs-website/versions.json rename to docs/versions.json diff --git a/Plugins/CMakeLists.txt b/plugins/CMakeLists.txt similarity index 80% rename from Plugins/CMakeLists.txt rename to plugins/CMakeLists.txt index dba35fe07..669e316f7 100644 --- a/Plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 3.25) -add_subdirectory(chronokvs) +add_subdirectory(chrono-kvs) # TODO(#517): Re-enable ChronoStream plugin build/install once the plugin is cleaned up # and properly integrated/packaged. It is temporarily disabled to reduce noise and # maintenance burden in the build + install flow. -# add_subdirectory(chronostream) \ No newline at end of file +# add_subdirectory(chrono-stream) \ No newline at end of file diff --git a/Plugins/chronokvs/CMakeLists.txt b/plugins/chrono-kvs/CMakeLists.txt similarity index 100% rename from Plugins/chronokvs/CMakeLists.txt rename to plugins/chrono-kvs/CMakeLists.txt diff --git a/Plugins/chronokvs/examples/CMakeLists.txt b/plugins/chrono-kvs/examples/CMakeLists.txt similarity index 100% rename from Plugins/chronokvs/examples/CMakeLists.txt rename to plugins/chrono-kvs/examples/CMakeLists.txt diff --git a/Plugins/chronokvs/examples/chronokvs_reader_example.cpp b/plugins/chrono-kvs/examples/chronokvs_reader_example.cpp similarity index 100% rename from Plugins/chronokvs/examples/chronokvs_reader_example.cpp rename to plugins/chrono-kvs/examples/chronokvs_reader_example.cpp diff --git a/Plugins/chronokvs/examples/chronokvs_writer_example.cpp b/plugins/chrono-kvs/examples/chronokvs_writer_example.cpp similarity index 100% rename from Plugins/chronokvs/examples/chronokvs_writer_example.cpp rename to plugins/chrono-kvs/examples/chronokvs_writer_example.cpp diff --git a/Plugins/chronokvs/include/chronokvs.h b/plugins/chrono-kvs/include/chronokvs.h similarity index 100% rename from Plugins/chronokvs/include/chronokvs.h rename to plugins/chrono-kvs/include/chronokvs.h diff --git a/Plugins/chronokvs/include/chronokvs_logger.h b/plugins/chrono-kvs/include/chronokvs_logger.h similarity index 100% rename from Plugins/chronokvs/include/chronokvs_logger.h rename to plugins/chrono-kvs/include/chronokvs_logger.h diff --git a/Plugins/chronokvs/include/chronokvs_types.h b/plugins/chrono-kvs/include/chronokvs_types.h similarity index 50% rename from Plugins/chronokvs/include/chronokvs_types.h rename to plugins/chrono-kvs/include/chronokvs_types.h index 6743cea51..2390e63c0 100644 --- a/Plugins/chronokvs/include/chronokvs_types.h +++ b/plugins/chrono-kvs/include/chronokvs_types.h @@ -5,20 +5,22 @@ #include #include -namespace chronokvs { +namespace chronokvs +{ -struct EventData { - std::uint64_t timestamp; ///< The timestamp when the event was recorded - std::string value; ///< The stored value/content of the event +struct EventData +{ + std::uint64_t timestamp; ///< The timestamp when the event was recorded + std::string value; ///< The stored value/content of the event - EventData(std::uint64_t ts, std::string val) + EventData(std::uint64_t ts, std::string val) : timestamp(ts) - , value(std::move(val)) + , value(std::move(val)) {} EventData(const std::pair& pair) : timestamp(pair.first) - , value(pair.second) + , value(pair.second) {} }; diff --git a/Plugins/chronokvs/src/chronokvs.cpp b/plugins/chrono-kvs/src/chronokvs.cpp similarity index 100% rename from Plugins/chronokvs/src/chronokvs.cpp rename to plugins/chrono-kvs/src/chronokvs.cpp diff --git a/Plugins/chronokvs/src/chronokvs_client_adapter.cpp b/plugins/chrono-kvs/src/chronokvs_client_adapter.cpp similarity index 100% rename from Plugins/chronokvs/src/chronokvs_client_adapter.cpp rename to plugins/chrono-kvs/src/chronokvs_client_adapter.cpp diff --git a/Plugins/chronokvs/src/chronokvs_client_adapter.h b/plugins/chrono-kvs/src/chronokvs_client_adapter.h similarity index 100% rename from Plugins/chronokvs/src/chronokvs_client_adapter.h rename to plugins/chrono-kvs/src/chronokvs_client_adapter.h diff --git a/Plugins/chronokvs/src/chronokvs_mapper.cpp b/plugins/chrono-kvs/src/chronokvs_mapper.cpp similarity index 100% rename from Plugins/chronokvs/src/chronokvs_mapper.cpp rename to plugins/chrono-kvs/src/chronokvs_mapper.cpp diff --git a/Plugins/chronokvs/src/chronokvs_mapper.h b/plugins/chrono-kvs/src/chronokvs_mapper.h similarity index 100% rename from Plugins/chronokvs/src/chronokvs_mapper.h rename to plugins/chrono-kvs/src/chronokvs_mapper.h diff --git a/Plugins/chronostream/CMakeLists.txt b/plugins/chrono-stream/CMakeLists.txt similarity index 100% rename from Plugins/chronostream/CMakeLists.txt rename to plugins/chrono-stream/CMakeLists.txt diff --git a/Plugins/chronostream/ClientScripts/CMakeLists.txt b/plugins/chrono-stream/ClientScripts/CMakeLists.txt similarity index 91% rename from Plugins/chronostream/ClientScripts/CMakeLists.txt rename to plugins/chrono-stream/ClientScripts/CMakeLists.txt index ca38c8bcc..08970b555 100644 --- a/Plugins/chronostream/ClientScripts/CMakeLists.txt +++ b/plugins/chrono-stream/ClientScripts/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.25) find_package(Threads REQUIRED) -set(CHRONOLOG_GEN_INCLUDE_DIR "${CMAKE_BINARY_DIR}/Client/include") +set(CHRONOLOG_GEN_INCLUDE_DIR "${CMAKE_BINARY_DIR}/client/include") set(GRAFANA_STREAM_PUBLIC_INCLUDE ${CHRONOLOG_GEN_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/GrafanaStream/StreamingScripts @@ -14,7 +14,7 @@ add_executable(client_writer target_include_directories(client_writer PRIVATE ${GRAFANA_STREAM_PUBLIC_INCLUDE} - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_link_libraries(client_writer diff --git a/Plugins/chronostream/ClientScripts/client_reader_stream_influx.cpp b/plugins/chrono-stream/ClientScripts/client_reader_stream_influx.cpp similarity index 99% rename from Plugins/chronostream/ClientScripts/client_reader_stream_influx.cpp rename to plugins/chrono-stream/ClientScripts/client_reader_stream_influx.cpp index 68510e038..2bf0caec6 100644 --- a/Plugins/chronostream/ClientScripts/client_reader_stream_influx.cpp +++ b/plugins/chrono-stream/ClientScripts/client_reader_stream_influx.cpp @@ -147,8 +147,7 @@ log_replay_error(int rc, const std::string& chronicle, const std::string& story, if(rc == -12) // CL_ERR_QUERY_TIMED_OUT { std::cerr << "[client_reader_stream] Replay timed out for " << chronicle << "/" << story << " window=[" - << start_ns << "," << end_ns << "] (~" << dur_s << "s)" - << " Will be retried automatically\n"; + << start_ns << "," << end_ns << "] (~" << dur_s << "s)" << " Will be retried automatically\n"; } else { diff --git a/Plugins/chronostream/ClientScripts/client_writer.cpp b/plugins/chrono-stream/ClientScripts/client_writer.cpp similarity index 98% rename from Plugins/chronostream/ClientScripts/client_writer.cpp rename to plugins/chrono-stream/ClientScripts/client_writer.cpp index aeb326f15..0f38943d8 100644 --- a/Plugins/chronostream/ClientScripts/client_writer.cpp +++ b/plugins/chrono-stream/ClientScripts/client_writer.cpp @@ -216,8 +216,7 @@ int main(int argc, char** argv) Args args = parse_args(argc, argv); std::cout << "[writer] config=" << args.config << " chronicle=" << args.chronicle - << " duration=" << args.duration_sec << "s" - << " interval=" << args.interval_sec << "s"; + << " duration=" << args.duration_sec << "s" << " interval=" << args.interval_sec << "s"; // Load client config chronolog::ClientConfiguration cfg; diff --git a/Plugins/chronostream/GrafanaInfluxSetup/.env b/plugins/chrono-stream/GrafanaInfluxSetup/.env similarity index 100% rename from Plugins/chronostream/GrafanaInfluxSetup/.env rename to plugins/chrono-stream/GrafanaInfluxSetup/.env diff --git a/Plugins/chronostream/GrafanaInfluxSetup/dashboards/chronolog_telemetry.json b/plugins/chrono-stream/GrafanaInfluxSetup/dashboards/chronolog_telemetry.json similarity index 100% rename from Plugins/chronostream/GrafanaInfluxSetup/dashboards/chronolog_telemetry.json rename to plugins/chrono-stream/GrafanaInfluxSetup/dashboards/chronolog_telemetry.json diff --git a/Plugins/chronostream/GrafanaInfluxSetup/docker-compose.yml b/plugins/chrono-stream/GrafanaInfluxSetup/docker-compose.yml similarity index 100% rename from Plugins/chronostream/GrafanaInfluxSetup/docker-compose.yml rename to plugins/chrono-stream/GrafanaInfluxSetup/docker-compose.yml diff --git a/Plugins/chronostream/GrafanaInfluxSetup/provisioning/dashboards/chronolog.yml b/plugins/chrono-stream/GrafanaInfluxSetup/provisioning/dashboards/chronolog.yml similarity index 100% rename from Plugins/chronostream/GrafanaInfluxSetup/provisioning/dashboards/chronolog.yml rename to plugins/chrono-stream/GrafanaInfluxSetup/provisioning/dashboards/chronolog.yml diff --git a/Plugins/chronostream/GrafanaInfluxSetup/provisioning/datasources/datasource.yml b/plugins/chrono-stream/GrafanaInfluxSetup/provisioning/datasources/datasource.yml similarity index 100% rename from Plugins/chronostream/GrafanaInfluxSetup/provisioning/datasources/datasource.yml rename to plugins/chrono-stream/GrafanaInfluxSetup/provisioning/datasources/datasource.yml diff --git a/Plugins/chronostream/README.md b/plugins/chrono-stream/README.md similarity index 100% rename from Plugins/chronostream/README.md rename to plugins/chrono-stream/README.md diff --git a/Plugins/chronostream/StreamingScripts/CMakeLists.txt b/plugins/chrono-stream/StreamingScripts/CMakeLists.txt similarity index 83% rename from Plugins/chronostream/StreamingScripts/CMakeLists.txt rename to plugins/chrono-stream/StreamingScripts/CMakeLists.txt index ac3df927c..ab9f7a318 100644 --- a/Plugins/chronostream/StreamingScripts/CMakeLists.txt +++ b/plugins/chrono-stream/StreamingScripts/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(grafana_stream STATIC Transform.cpp ) -set(CHRONOLOG_GEN_INCLUDE_DIR "${CMAKE_BINARY_DIR}/Client/cpp/include") -set(CHRONOLOG_SRC_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/Client/cpp/include") +set(CHRONOLOG_GEN_INCLUDE_DIR "${CMAKE_BINARY_DIR}/client/cpp/include") +set(CHRONOLOG_SRC_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/client/cpp/include") target_include_directories(grafana_stream PUBLIC . diff --git a/Plugins/chronostream/StreamingScripts/InfluxDBSink.cpp b/plugins/chrono-stream/StreamingScripts/InfluxDBSink.cpp similarity index 100% rename from Plugins/chronostream/StreamingScripts/InfluxDBSink.cpp rename to plugins/chrono-stream/StreamingScripts/InfluxDBSink.cpp diff --git a/Plugins/chronostream/StreamingScripts/InfluxDBSink.h b/plugins/chrono-stream/StreamingScripts/InfluxDBSink.h similarity index 100% rename from Plugins/chronostream/StreamingScripts/InfluxDBSink.h rename to plugins/chrono-stream/StreamingScripts/InfluxDBSink.h diff --git a/Plugins/chronostream/StreamingScripts/StreamSink.h b/plugins/chrono-stream/StreamingScripts/StreamSink.h similarity index 100% rename from Plugins/chronostream/StreamingScripts/StreamSink.h rename to plugins/chrono-stream/StreamingScripts/StreamSink.h diff --git a/Plugins/chronostream/StreamingScripts/Transform.cpp b/plugins/chrono-stream/StreamingScripts/Transform.cpp similarity index 100% rename from Plugins/chronostream/StreamingScripts/Transform.cpp rename to plugins/chrono-stream/StreamingScripts/Transform.cpp diff --git a/Plugins/chronostream/StreamingScripts/Transform.h b/plugins/chrono-stream/StreamingScripts/Transform.h similarity index 100% rename from Plugins/chronostream/StreamingScripts/Transform.h rename to plugins/chrono-stream/StreamingScripts/Transform.h diff --git a/Plugins/chronostream/readmeImgs/filtered.png b/plugins/chrono-stream/readmeImgs/filtered.png similarity index 100% rename from Plugins/chronostream/readmeImgs/filtered.png rename to plugins/chrono-stream/readmeImgs/filtered.png diff --git a/Plugins/chronostream/readmeImgs/main.png b/plugins/chrono-stream/readmeImgs/main.png similarity index 100% rename from Plugins/chronostream/readmeImgs/main.png rename to plugins/chrono-stream/readmeImgs/main.png diff --git a/Plugins/chronoviz/README.md b/plugins/chrono-viz/README.md similarity index 100% rename from Plugins/chronoviz/README.md rename to plugins/chrono-viz/README.md diff --git a/Plugins/chronoviz/docker-compose.yml b/plugins/chrono-viz/docker-compose.yml similarity index 100% rename from Plugins/chronoviz/docker-compose.yml rename to plugins/chrono-viz/docker-compose.yml diff --git a/Plugins/chronoviz/grafana_backend/Dockerfile b/plugins/chrono-viz/grafana_backend/Dockerfile similarity index 100% rename from Plugins/chronoviz/grafana_backend/Dockerfile rename to plugins/chrono-viz/grafana_backend/Dockerfile diff --git a/Plugins/chronoviz/grafana_backend/README.md b/plugins/chrono-viz/grafana_backend/README.md similarity index 100% rename from Plugins/chronoviz/grafana_backend/README.md rename to plugins/chrono-viz/grafana_backend/README.md diff --git a/Plugins/chronoviz/grafana_backend/TEST_SUMMARY.md b/plugins/chrono-viz/grafana_backend/TEST_SUMMARY.md similarity index 100% rename from Plugins/chronoviz/grafana_backend/TEST_SUMMARY.md rename to plugins/chrono-viz/grafana_backend/TEST_SUMMARY.md diff --git a/Plugins/chronoviz/grafana_backend/chronolog_service.py b/plugins/chrono-viz/grafana_backend/chronolog_service.py similarity index 100% rename from Plugins/chronoviz/grafana_backend/chronolog_service.py rename to plugins/chrono-viz/grafana_backend/chronolog_service.py diff --git a/Plugins/chronoviz/grafana_backend/env.example b/plugins/chrono-viz/grafana_backend/env.example similarity index 100% rename from Plugins/chronoviz/grafana_backend/env.example rename to plugins/chrono-viz/grafana_backend/env.example diff --git a/Plugins/chronoviz/grafana_backend/pytest.ini b/plugins/chrono-viz/grafana_backend/pytest.ini similarity index 100% rename from Plugins/chronoviz/grafana_backend/pytest.ini rename to plugins/chrono-viz/grafana_backend/pytest.ini diff --git a/Plugins/chronoviz/grafana_backend/requirements-test.txt b/plugins/chrono-viz/grafana_backend/requirements-test.txt similarity index 100% rename from Plugins/chronoviz/grafana_backend/requirements-test.txt rename to plugins/chrono-viz/grafana_backend/requirements-test.txt diff --git a/Plugins/chronoviz/grafana_backend/requirements.txt b/plugins/chrono-viz/grafana_backend/requirements.txt similarity index 100% rename from Plugins/chronoviz/grafana_backend/requirements.txt rename to plugins/chrono-viz/grafana_backend/requirements.txt diff --git a/Plugins/chronoviz/grafana_backend/run_tests.sh b/plugins/chrono-viz/grafana_backend/run_tests.sh similarity index 100% rename from Plugins/chronoviz/grafana_backend/run_tests.sh rename to plugins/chrono-viz/grafana_backend/run_tests.sh diff --git a/Plugins/chronoviz/grafana_backend/test_chronolog_service.py b/plugins/chrono-viz/grafana_backend/test_chronolog_service.py similarity index 100% rename from Plugins/chronoviz/grafana_backend/test_chronolog_service.py rename to plugins/chrono-viz/grafana_backend/test_chronolog_service.py diff --git a/Plugins/chronoviz/grafana_plugin/.config/webpack/.grafana/webpack.config.ts b/plugins/chrono-viz/grafana_plugin/.config/webpack/.grafana/webpack.config.ts similarity index 100% rename from Plugins/chronoviz/grafana_plugin/.config/webpack/.grafana/webpack.config.ts rename to plugins/chrono-viz/grafana_plugin/.config/webpack/.grafana/webpack.config.ts diff --git a/Plugins/chronoviz/grafana_plugin/.config/webpack/webpack.config.ts b/plugins/chrono-viz/grafana_plugin/.config/webpack/webpack.config.ts similarity index 100% rename from Plugins/chronoviz/grafana_plugin/.config/webpack/webpack.config.ts rename to plugins/chrono-viz/grafana_plugin/.config/webpack/webpack.config.ts diff --git a/Plugins/chronoviz/grafana_plugin/.eslintrc b/plugins/chrono-viz/grafana_plugin/.eslintrc similarity index 100% rename from Plugins/chronoviz/grafana_plugin/.eslintrc rename to plugins/chrono-viz/grafana_plugin/.eslintrc diff --git a/Plugins/chronoviz/grafana_plugin/.prettierrc.js b/plugins/chrono-viz/grafana_plugin/.prettierrc.js similarity index 100% rename from Plugins/chronoviz/grafana_plugin/.prettierrc.js rename to plugins/chrono-viz/grafana_plugin/.prettierrc.js diff --git a/Plugins/chronoviz/grafana_plugin/README.md b/plugins/chrono-viz/grafana_plugin/README.md similarity index 100% rename from Plugins/chronoviz/grafana_plugin/README.md rename to plugins/chrono-viz/grafana_plugin/README.md diff --git a/Plugins/chronoviz/grafana_plugin/jest.config.js b/plugins/chrono-viz/grafana_plugin/jest.config.js similarity index 100% rename from Plugins/chronoviz/grafana_plugin/jest.config.js rename to plugins/chrono-viz/grafana_plugin/jest.config.js diff --git a/Plugins/chronoviz/grafana_plugin/package.json b/plugins/chrono-viz/grafana_plugin/package.json similarity index 100% rename from Plugins/chronoviz/grafana_plugin/package.json rename to plugins/chrono-viz/grafana_plugin/package.json diff --git a/Plugins/chronoviz/grafana_plugin/src/ConfigEditor.tsx b/plugins/chrono-viz/grafana_plugin/src/ConfigEditor.tsx similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/ConfigEditor.tsx rename to plugins/chrono-viz/grafana_plugin/src/ConfigEditor.tsx diff --git a/Plugins/chronoviz/grafana_plugin/src/QueryEditor.tsx b/plugins/chrono-viz/grafana_plugin/src/QueryEditor.tsx similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/QueryEditor.tsx rename to plugins/chrono-viz/grafana_plugin/src/QueryEditor.tsx diff --git a/Plugins/chronoviz/grafana_plugin/src/__mocks__/fileMock.js b/plugins/chrono-viz/grafana_plugin/src/__mocks__/fileMock.js similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/__mocks__/fileMock.js rename to plugins/chrono-viz/grafana_plugin/src/__mocks__/fileMock.js diff --git a/Plugins/chronoviz/grafana_plugin/src/datasource.ts b/plugins/chrono-viz/grafana_plugin/src/datasource.ts similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/datasource.ts rename to plugins/chrono-viz/grafana_plugin/src/datasource.ts diff --git a/Plugins/chronoviz/grafana_plugin/src/img/logo.svg b/plugins/chrono-viz/grafana_plugin/src/img/logo.svg similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/img/logo.svg rename to plugins/chrono-viz/grafana_plugin/src/img/logo.svg diff --git a/Plugins/chronoviz/grafana_plugin/src/module.ts b/plugins/chrono-viz/grafana_plugin/src/module.ts similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/module.ts rename to plugins/chrono-viz/grafana_plugin/src/module.ts diff --git a/Plugins/chronoviz/grafana_plugin/src/plugin.json b/plugins/chrono-viz/grafana_plugin/src/plugin.json similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/plugin.json rename to plugins/chrono-viz/grafana_plugin/src/plugin.json diff --git a/Plugins/chronoviz/grafana_plugin/src/setupTests.ts b/plugins/chrono-viz/grafana_plugin/src/setupTests.ts similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/setupTests.ts rename to plugins/chrono-viz/grafana_plugin/src/setupTests.ts diff --git a/Plugins/chronoviz/grafana_plugin/src/types.ts b/plugins/chrono-viz/grafana_plugin/src/types.ts similarity index 100% rename from Plugins/chronoviz/grafana_plugin/src/types.ts rename to plugins/chrono-viz/grafana_plugin/src/types.ts diff --git a/Plugins/chronoviz/grafana_plugin/tsconfig.json b/plugins/chrono-viz/grafana_plugin/tsconfig.json similarity index 100% rename from Plugins/chronoviz/grafana_plugin/tsconfig.json rename to plugins/chrono-viz/grafana_plugin/tsconfig.json diff --git a/Plugins/chronoviz/grafana_provisioning/datasources/chronolog.yml b/plugins/chrono-viz/grafana_provisioning/datasources/chronolog.yml similarity index 100% rename from Plugins/chronoviz/grafana_provisioning/datasources/chronolog.yml rename to plugins/chrono-viz/grafana_provisioning/datasources/chronolog.yml diff --git a/Plugins/chronoviz/scripts/build_grafana_plugin.sh b/plugins/chrono-viz/scripts/build_grafana_plugin.sh similarity index 100% rename from Plugins/chronoviz/scripts/build_grafana_plugin.sh rename to plugins/chrono-viz/scripts/build_grafana_plugin.sh diff --git a/Plugins/chronoviz/scripts/start_grafana_dev.sh b/plugins/chrono-viz/scripts/start_grafana_dev.sh similarity index 100% rename from Plugins/chronoviz/scripts/start_grafana_dev.sh rename to plugins/chrono-viz/scripts/start_grafana_dev.sh diff --git a/chrono_common/CMakeLists.txt b/src/chrono-common/CMakeLists.txt similarity index 90% rename from chrono_common/CMakeLists.txt rename to src/chrono-common/CMakeLists.txt index 9058cfa95..25b901e79 100644 --- a/chrono_common/CMakeLists.txt +++ b/src/chrono-common/CMakeLists.txt @@ -21,9 +21,9 @@ add_library(chrono_common STATIC target_include_directories(chrono_common PUBLIC $ - $ + $ PRIVATE - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(chrono_common @@ -46,5 +46,5 @@ set_target_properties(chrono_common PROPERTIES #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ -# Tests: moved to test/unit/chrono_common/ +# Tests: moved to tests/unit/chrono-common/ #------------------------------------------------------------------------------ diff --git a/chrono_common/include/AcquireStoryResponseMsg.h b/src/chrono-common/include/AcquireStoryResponseMsg.h similarity index 100% rename from chrono_common/include/AcquireStoryResponseMsg.h rename to src/chrono-common/include/AcquireStoryResponseMsg.h diff --git a/chrono_common/include/ChunkExtractorCSV.h b/src/chrono-common/include/ChunkExtractorCSV.h similarity index 100% rename from chrono_common/include/ChunkExtractorCSV.h rename to src/chrono-common/include/ChunkExtractorCSV.h diff --git a/chrono_common/include/ChunkExtractorRDMA.h b/src/chrono-common/include/ChunkExtractorRDMA.h similarity index 100% rename from chrono_common/include/ChunkExtractorRDMA.h rename to src/chrono-common/include/ChunkExtractorRDMA.h diff --git a/chrono_common/include/ChunkLoggingExtractor.h b/src/chrono-common/include/ChunkLoggingExtractor.h similarity index 100% rename from chrono_common/include/ChunkLoggingExtractor.h rename to src/chrono-common/include/ChunkLoggingExtractor.h diff --git a/chrono_common/include/ConfigurationManager.h b/src/chrono-common/include/ConfigurationManager.h similarity index 100% rename from chrono_common/include/ConfigurationManager.h rename to src/chrono-common/include/ConfigurationManager.h diff --git a/chrono_common/include/ConnectResponseMsg.h b/src/chrono-common/include/ConnectResponseMsg.h similarity index 100% rename from chrono_common/include/ConnectResponseMsg.h rename to src/chrono-common/include/ConnectResponseMsg.h diff --git a/chrono_common/include/GrapherIdCard.h b/src/chrono-common/include/GrapherIdCard.h similarity index 59% rename from chrono_common/include/GrapherIdCard.h rename to src/chrono-common/include/GrapherIdCard.h index 97d88dd9f..18c8a97ad 100644 --- a/chrono_common/include/GrapherIdCard.h +++ b/src/chrono-common/include/GrapherIdCard.h @@ -6,9 +6,9 @@ #include "ServiceId.h" -// this class wrapps ChronoGrapher Process identification -// that will be used by all the ChronoLog Processes -// to both identofy the process and create RPC client channels +// this class wrapps ChronoGrapher Process identification +// that will be used by all the ChronoLog Processes +// to both identofy the process and create RPC client channels // to send the data to the RecordingService it contains namespace chronolog @@ -17,10 +17,10 @@ namespace chronolog class GrapherIdCard { RecordingGroupId groupId; - ServiceId recordingServiceId; + ServiceId recordingServiceId; public: - GrapherIdCard(RecordingGroupId group_id = 0, ServiceId const& service_id = ServiceId{}) + GrapherIdCard(RecordingGroupId group_id = 0, ServiceId const& service_id = ServiceId{}) : groupId(group_id) , recordingServiceId(service_id) {} @@ -30,44 +30,44 @@ class GrapherIdCard , recordingServiceId(other.getRecordingServiceId()) {} - ~GrapherIdCard()=default; + ~GrapherIdCard() = default; RecordingGroupId getGroupId() const { return groupId; } ServiceId const& getRecordingServiceId() const { return recordingServiceId; } // serialization function used by thallium RPC providers - // to serialize/deserialize + // to serialize/deserialize template - void serialize( SerArchiveT & serT) + void serialize(SerArchiveT& serT) { serT & groupId; serT & recordingServiceId; } - }; - -inline std::string to_string( GrapherIdCard const & id_card) + +inline std::string to_string(GrapherIdCard const& id_card) { - std::string a_string; + std::string a_string; return std::string("GrapherIdCard{Group{") + std::to_string(id_card.getGroupId()) + "}" + - chronolog::to_string(id_card.getRecordingServiceId()) + "}"; + chronolog::to_string(id_card.getRecordingServiceId()) + "}"; } } //namespace chronolog inline bool operator==(chronolog::GrapherIdCard const& card1, chronolog::GrapherIdCard const& card2) { - return ((card1.getGroupId() == card2.getGroupId()) && (card1.getRecordingServiceId() == card2.getRecordingServiceId())); + return ((card1.getGroupId() == card2.getGroupId()) && + (card1.getRecordingServiceId() == card2.getRecordingServiceId())); } -inline std::ostream & operator<< (std::ostream & out , chronolog::GrapherIdCard const & id_card) +inline std::ostream& operator<<(std::ostream& out, chronolog::GrapherIdCard const& id_card) { std::string a_string; - out << "GrapherIdCard{Group{" << id_card.getGroupId() << "}" << id_card.getRecordingServiceId()<< "}"; + out << "GrapherIdCard{Group{" << id_card.getGroupId() << "}" << id_card.getRecordingServiceId() << "}"; return out; } -inline std::string& operator+= (std::string& a_string, chronolog::GrapherIdCard const& id_card) +inline std::string& operator+=(std::string& a_string, chronolog::GrapherIdCard const& id_card) { a_string += std::string("GrapherIdCard{Group{") + std::to_string(id_card.getGroupId()) + "}" + chronolog::to_string(id_card.getRecordingServiceId()) + "}"; diff --git a/chrono_common/include/GrapherRegistrationMsg.h b/src/chrono-common/include/GrapherRegistrationMsg.h similarity index 62% rename from chrono_common/include/GrapherRegistrationMsg.h rename to src/chrono-common/include/GrapherRegistrationMsg.h index 7c941b0cb..e73d9ce7d 100644 --- a/chrono_common/include/GrapherRegistrationMsg.h +++ b/src/chrono-common/include/GrapherRegistrationMsg.h @@ -25,36 +25,33 @@ class GrapherRegistrationMsg ~GrapherRegistrationMsg() = default; - GrapherIdCard const &getGrapherIdCard() const - { return grapherIdCard; } + GrapherIdCard const& getGrapherIdCard() const { return grapherIdCard; } - ServiceId const &getAdminServiceId() const - { return adminServiceId; } + ServiceId const& getAdminServiceId() const { return adminServiceId; } template - void serialize(SerArchiveT &serT) + void serialize(SerArchiveT& serT) { serT & grapherIdCard; serT & adminServiceId; } - }; -inline std::string to_string(GrapherRegistrationMsg const & msg) +inline std::string to_string(GrapherRegistrationMsg const& msg) { - return std::string("GrapherRegistrationMsg{") + to_string(msg.getGrapherIdCard()) - + std::string("}{admin:") + to_string(msg.getAdminServiceId()) + "}"; + return std::string("GrapherRegistrationMsg{") + to_string(msg.getGrapherIdCard()) + std::string("}{admin:") + + to_string(msg.getAdminServiceId()) + "}"; } -}//namespace +} // namespace chronolog -inline std::ostream &operator<<(std::ostream &out, chronolog::GrapherRegistrationMsg const &msg) +inline std::ostream& operator<<(std::ostream& out, chronolog::GrapherRegistrationMsg const& msg) { out << "GrapherRegistrationMsg{" << msg.getGrapherIdCard() << "}{admin:" << msg.getAdminServiceId() << "}"; return out; } -inline std::string & operator+= (std::string & a_string, chronolog::GrapherRegistrationMsg const &msg) +inline std::string& operator+=(std::string& a_string, chronolog::GrapherRegistrationMsg const& msg) { a_string += chronolog::to_string(msg); return a_string; diff --git a/chrono_common/include/GrapherStatsMsg.h b/src/chrono-common/include/GrapherStatsMsg.h similarity index 100% rename from chrono_common/include/GrapherStatsMsg.h rename to src/chrono-common/include/GrapherStatsMsg.h diff --git a/chrono_common/include/KeeperIdCard.h b/src/chrono-common/include/KeeperIdCard.h similarity index 100% rename from chrono_common/include/KeeperIdCard.h rename to src/chrono-common/include/KeeperIdCard.h diff --git a/chrono_common/include/KeeperRegistrationMsg.h b/src/chrono-common/include/KeeperRegistrationMsg.h similarity index 100% rename from chrono_common/include/KeeperRegistrationMsg.h rename to src/chrono-common/include/KeeperRegistrationMsg.h diff --git a/chrono_common/include/KeeperStatsMsg.h b/src/chrono-common/include/KeeperStatsMsg.h similarity index 100% rename from chrono_common/include/KeeperStatsMsg.h rename to src/chrono-common/include/KeeperStatsMsg.h diff --git a/chrono_common/include/LogEventHVL.h b/src/chrono-common/include/LogEventHVL.h similarity index 100% rename from chrono_common/include/LogEventHVL.h rename to src/chrono-common/include/LogEventHVL.h diff --git a/chrono_common/include/PlayerIdCard.h b/src/chrono-common/include/PlayerIdCard.h similarity index 60% rename from chrono_common/include/PlayerIdCard.h rename to src/chrono-common/include/PlayerIdCard.h index 1f27fbab9..96b1714d4 100644 --- a/chrono_common/include/PlayerIdCard.h +++ b/src/chrono-common/include/PlayerIdCard.h @@ -6,9 +6,9 @@ #include "ServiceId.h" -// this class wraps ChronoPlayer Process identification -// that will be used by all the ChronoLog Processes -// to both identofy the process and create RPC client channels +// this class wraps ChronoPlayer Process identification +// that will be used by all the ChronoLog Processes +// to both identofy the process and create RPC client channels // to send the data to the RecordingService it contains namespace chronolog @@ -17,11 +17,10 @@ namespace chronolog class PlayerIdCard { RecordingGroupId groupId; - ServiceId playbackServiceId; + ServiceId playbackServiceId; public: - - PlayerIdCard(RecordingGroupId group_id = 0, ServiceId const& service_id= ServiceId{}) + PlayerIdCard(RecordingGroupId group_id = 0, ServiceId const& service_id = ServiceId{}) : groupId(group_id) , playbackServiceId(service_id) {} @@ -32,54 +31,55 @@ class PlayerIdCard {} - PlayerIdCard & operator=(PlayerIdCard const& other) + PlayerIdCard& operator=(PlayerIdCard const& other) { groupId = other.getGroupId(); playbackServiceId = other.getPlaybackServiceId(); return *this; - } + } - ~PlayerIdCard()=default; + ~PlayerIdCard() = default; RecordingGroupId getGroupId() const { return groupId; } - ServiceId const & getPlaybackServiceId() const { return playbackServiceId; } + ServiceId const& getPlaybackServiceId() const { return playbackServiceId; } // serialization function used by thallium RPC providers - // to serialize/deserialize + // to serialize/deserialize template - void serialize( SerArchiveT & serT) + void serialize(SerArchiveT& serT) { serT & groupId; serT & playbackServiceId; } - }; inline std::string to_string(PlayerIdCard const& id_card) { std::string a_string; return std::string("PlayerIdCard{Group{") + std::to_string(id_card.getGroupId()) + "}" + - chronolog::to_string(id_card.getPlaybackServiceId())+"}"; + chronolog::to_string(id_card.getPlaybackServiceId()) + "}"; } } //namespace chronolog inline bool operator==(chronolog::PlayerIdCard const& card1, chronolog::PlayerIdCard const& card2) { - return ((card1.getGroupId() == card2.getGroupId()) && (card1.getPlaybackServiceId() == card2.getPlaybackServiceId())); + return ((card1.getGroupId() == card2.getGroupId()) && + (card1.getPlaybackServiceId() == card2.getPlaybackServiceId())); } -inline std::ostream & operator<< (std::ostream & out , chronolog::PlayerIdCard const & id_card) +inline std::ostream& operator<<(std::ostream& out, chronolog::PlayerIdCard const& id_card) { std::string a_string; out << "PlayerIdCard{Group{" << id_card.getGroupId() << "}" << id_card.getPlaybackServiceId() << "}"; return out; } -inline std::string& operator+= (std::string& a_string, chronolog::PlayerIdCard const& id_card) +inline std::string& operator+=(std::string& a_string, chronolog::PlayerIdCard const& id_card) { - a_string += std::string("PlayerIdCard{Group{") + std::to_string(id_card.getGroupId()) + "}" + chronolog::to_string(id_card.getPlaybackServiceId()) + "}"; + a_string += std::string("PlayerIdCard{Group{") + std::to_string(id_card.getGroupId()) + "}" + + chronolog::to_string(id_card.getPlaybackServiceId()) + "}"; return a_string; } diff --git a/chrono_common/include/PlayerRegistrationMsg.h b/src/chrono-common/include/PlayerRegistrationMsg.h similarity index 56% rename from chrono_common/include/PlayerRegistrationMsg.h rename to src/chrono-common/include/PlayerRegistrationMsg.h index c8d31d629..27b4c8673 100644 --- a/chrono_common/include/PlayerRegistrationMsg.h +++ b/src/chrono-common/include/PlayerRegistrationMsg.h @@ -16,8 +16,7 @@ class PlayerRegistrationMsg ServiceId adminServiceId; public: - PlayerRegistrationMsg(PlayerIdCard const& id_card = PlayerIdCard{}, - ServiceId const& service_id = ServiceId{}) + PlayerRegistrationMsg(PlayerIdCard const& id_card = PlayerIdCard{}, ServiceId const& service_id = ServiceId{}) : playerIdCard(id_card) , adminServiceId(service_id) @@ -25,36 +24,33 @@ class PlayerRegistrationMsg ~PlayerRegistrationMsg() = default; - PlayerIdCard const & getPlayerIdCard() const - { return playerIdCard; } + PlayerIdCard const& getPlayerIdCard() const { return playerIdCard; } - ServiceId const & getAdminServiceId() const - { return adminServiceId; } + ServiceId const& getAdminServiceId() const { return adminServiceId; } template - void serialize(SerArchiveT &serT) + void serialize(SerArchiveT& serT) { serT & playerIdCard; serT & adminServiceId; } - }; -inline std::string to_string( PlayerRegistrationMsg const& msg) +inline std::string to_string(PlayerRegistrationMsg const& msg) { - return std::string("PlayerRegistrationMsg{") + to_string(msg.getPlayerIdCard()) - + std::string("}{admin:") + to_string(msg.getAdminServiceId()) +"}"; + return std::string("PlayerRegistrationMsg{") + to_string(msg.getPlayerIdCard()) + std::string("}{admin:") + + to_string(msg.getAdminServiceId()) + "}"; } -}//namespace +} // namespace chronolog -inline std::ostream &operator<<(std::ostream & out, chronolog::PlayerRegistrationMsg const &msg) +inline std::ostream& operator<<(std::ostream& out, chronolog::PlayerRegistrationMsg const& msg) { out << "PlayerRegistrationMsg{" << msg.getPlayerIdCard() << "}{admin:" << msg.getAdminServiceId() << "}"; return out; } -inline std::string& operator+= (std::string& a_string, chronolog::PlayerRegistrationMsg const &msg) +inline std::string& operator+=(std::string& a_string, chronolog::PlayerRegistrationMsg const& msg) { a_string += chronolog::to_string(msg); return a_string; diff --git a/chrono_common/include/PlayerStatsMsg.h b/src/chrono-common/include/PlayerStatsMsg.h similarity index 100% rename from chrono_common/include/PlayerStatsMsg.h rename to src/chrono-common/include/PlayerStatsMsg.h diff --git a/chrono_common/include/RDMATransferAgent.h b/src/chrono-common/include/RDMATransferAgent.h similarity index 100% rename from chrono_common/include/RDMATransferAgent.h rename to src/chrono-common/include/RDMATransferAgent.h diff --git a/chrono_common/include/ServiceId.h b/src/chrono-common/include/ServiceId.h similarity index 100% rename from chrono_common/include/ServiceId.h rename to src/chrono-common/include/ServiceId.h diff --git a/chrono_common/include/StoryChunk.h b/src/chrono-common/include/StoryChunk.h similarity index 100% rename from chrono_common/include/StoryChunk.h rename to src/chrono-common/include/StoryChunk.h diff --git a/chrono_common/include/StoryChunkConsumerService.h b/src/chrono-common/include/StoryChunkConsumerService.h similarity index 100% rename from chrono_common/include/StoryChunkConsumerService.h rename to src/chrono-common/include/StoryChunkConsumerService.h diff --git a/chrono_common/include/StoryChunkExtractionModule.h b/src/chrono-common/include/StoryChunkExtractionModule.h similarity index 100% rename from chrono_common/include/StoryChunkExtractionModule.h rename to src/chrono-common/include/StoryChunkExtractionModule.h diff --git a/chrono_common/include/StoryChunkExtractionQueue.h b/src/chrono-common/include/StoryChunkExtractionQueue.h similarity index 100% rename from chrono_common/include/StoryChunkExtractionQueue.h rename to src/chrono-common/include/StoryChunkExtractionQueue.h diff --git a/chrono_common/include/StoryChunkExtractor.h b/src/chrono-common/include/StoryChunkExtractor.h similarity index 100% rename from chrono_common/include/StoryChunkExtractor.h rename to src/chrono-common/include/StoryChunkExtractor.h diff --git a/chrono_common/include/StoryChunkHVL.h b/src/chrono-common/include/StoryChunkHVL.h similarity index 100% rename from chrono_common/include/StoryChunkHVL.h rename to src/chrono-common/include/StoryChunkHVL.h diff --git a/src/chrono-common/include/StoryChunkIngestionHandle.h b/src/chrono-common/include/StoryChunkIngestionHandle.h new file mode 100644 index 000000000..00fb5b332 --- /dev/null +++ b/src/chrono-common/include/StoryChunkIngestionHandle.h @@ -0,0 +1,70 @@ +#ifndef STORY_CHUNK_INGESTION_HANDLE_H +#define STORY_CHUNK_INGESTION_HANDLE_H + +#include +#include + +#include "StoryChunk.h" + +// +// IngestionQueue is a funnel into the KeeperDataStore +// std::deque guarantees O(1) time for addidng elements and resizing +// (vector of vectors implementation) + +namespace chronolog +{ + +typedef std::deque StoryChunkDeque; + +class StoryChunkIngestionHandle +{ + +public: + StoryChunkIngestionHandle(std::mutex& a_mutex, StoryChunkDeque* active, StoryChunkDeque* passive) + : ingestionMutex(a_mutex) + , activeDeque(active) + , passiveDeque(passive) + {} + + ~StoryChunkIngestionHandle() = default; + + StoryChunkDeque& getActiveDeque() const { return *activeDeque; } + + StoryChunkDeque& getPassiveDeque() const { return *passiveDeque; } + + void ingestChunk(StoryChunk* chunk) + { // assume multiple service threads pushing chunks onto ingestionQueue + std::lock_guard lock(ingestionMutex); + activeDeque->push_back(chunk); + } + + void swapActiveDeque() + { + if(!passiveDeque->empty() || activeDeque->empty()) + { + return; + } + + //INNA: check if atomic compare_and_swap will work here + + std::lock_guard lock_guard(ingestionMutex); + if(!passiveDeque->empty() || activeDeque->empty()) + { + return; + } + + StoryChunkDeque* full_deque = activeDeque; + activeDeque = passiveDeque; + passiveDeque = full_deque; + } + + +private: + std::mutex& ingestionMutex; + StoryChunkDeque* activeDeque; + StoryChunkDeque* passiveDeque; +}; + +} // namespace chronolog + +#endif diff --git a/chrono_common/include/StoryChunkIngestionQueue.h b/src/chrono-common/include/StoryChunkIngestionQueue.h similarity index 62% rename from chrono_common/include/StoryChunkIngestionQueue.h rename to src/chrono-common/include/StoryChunkIngestionQueue.h index 03dbb12c6..fa1c5d92c 100644 --- a/chrono_common/include/StoryChunkIngestionQueue.h +++ b/src/chrono-common/include/StoryChunkIngestionQueue.h @@ -24,28 +24,30 @@ namespace chronolog class StoryChunkIngestionQueue { public: - StoryChunkIngestionQueue() - {} + StoryChunkIngestionQueue() {} - ~StoryChunkIngestionQueue() - { shutDown(); } + ~StoryChunkIngestionQueue() { shutDown(); } - void addStoryIngestionHandle(StoryId const &story_id, StoryChunkIngestionHandle*ingestion_handle) + void addStoryIngestionHandle(StoryId const& story_id, StoryChunkIngestionHandle* ingestion_handle) { - std::lock_guard lock(ingestionQueueMutex); - storyIngestionHandles.emplace(std::pair (story_id, ingestion_handle)); - LOG_DEBUG("[IngestionQueue] Added handle for StoryID={}: HandleAddress={}, StoryIngestionHandles={}, HandleMapSize={}" - , story_id, static_cast(ingestion_handle), reinterpret_cast(&storyIngestionHandles) - , storyIngestionHandles.size()); + std::lock_guard lock(ingestionQueueMutex); + storyIngestionHandles.emplace(std::pair(story_id, ingestion_handle)); + LOG_DEBUG("[IngestionQueue] Added handle for StoryID={}: HandleAddress={}, StoryIngestionHandles={}, " + "HandleMapSize={}", + story_id, + static_cast(ingestion_handle), + reinterpret_cast(&storyIngestionHandles), + storyIngestionHandles.size()); } - void removeStoryIngestionHandle(StoryId const &story_id) + void removeStoryIngestionHandle(StoryId const& story_id) { - std::lock_guard lock(ingestionQueueMutex); + std::lock_guard lock(ingestionQueueMutex); if(storyIngestionHandles.erase(story_id)) { - LOG_DEBUG("[IngestionQueue] Removed handle for StoryID={}. Current handle MapSize={}", story_id - , storyIngestionHandles.size()); + LOG_DEBUG("[IngestionQueue] Removed handle for StoryID={}. Current handle MapSize={}", + story_id, + storyIngestionHandles.size()); } else { @@ -55,13 +57,17 @@ class StoryChunkIngestionQueue void ingestStoryChunk(StoryChunk* chunk) { - LOG_DEBUG("[IngestionQueue] has {} StoryHandles; Received chunk for StoryID={} startTime {} eventCount{}", storyIngestionHandles.size(), - chunk->getStoryId(), chunk->getStartTime(), chunk->getEventCount()); + LOG_DEBUG("[IngestionQueue] has {} StoryHandles; Received chunk for StoryID={} startTime {} eventCount{}", + storyIngestionHandles.size(), + chunk->getStoryId(), + chunk->getStartTime(), + chunk->getEventCount()); auto ingestionHandle_iter = storyIngestionHandles.find(chunk->getStoryId()); if(ingestionHandle_iter == storyIngestionHandles.end()) { - LOG_WARNING("[IngestionQueue] Orphan chunk for story {}. Storing for later processing.", chunk->getStoryId()); - std::lock_guard lock(ingestionQueueMutex); + LOG_WARNING("[IngestionQueue] Orphan chunk for story {}. Storing for later processing.", + chunk->getStoryId()); + std::lock_guard lock(ingestionQueueMutex); orphanQueue.push_back(chunk); } else @@ -79,13 +85,13 @@ class StoryChunkIngestionQueue return; } - if (storyIngestionHandles.empty()) + if(storyIngestionHandles.empty()) { LOG_DEBUG("[IngestionQueue] has 0 storyIngestionHandles to place {} orphaned chunks", orphanQueue.size()); return; } - - std::lock_guard lock(ingestionQueueMutex); + + std::lock_guard lock(ingestionQueueMutex); for(StoryChunkDeque::iterator iter = orphanQueue.begin(); iter != orphanQueue.end();) { auto ingestionHandle_iter = storyIngestionHandles.find((*iter)->getStoryId()); @@ -102,39 +108,37 @@ class StoryChunkIngestionQueue ++iter; } } - + LOG_WARNING("[IngestionQueue] has {} orphaned chunks", orphanQueue.size()); } - bool is_empty() const - { - return (orphanQueue.empty() && storyIngestionHandles.empty()); - } + bool is_empty() const { return (orphanQueue.empty() && storyIngestionHandles.empty()); } void shutDown() { - LOG_INFO("[IngestionQueue] Initiating shutdown. HandleMapSize={}, OrphanQueueSize={}" - , storyIngestionHandles.size(), orphanQueue.size()); + LOG_INFO("[IngestionQueue] Initiating shutdown. HandleMapSize={}, OrphanQueueSize={}", + storyIngestionHandles.size(), + orphanQueue.size()); // last attempt to drain orphanQueue into known ingestionHandles drainOrphanChunks(); // disengage all handles - std::lock_guard lock(ingestionQueueMutex); + std::lock_guard lock(ingestionQueueMutex); storyIngestionHandles.clear(); LOG_INFO("[IngestionQueue] Shutdown completed. All handles disengaged."); } private: - StoryChunkIngestionQueue(StoryChunkIngestionQueue const &) = delete; + StoryChunkIngestionQueue(StoryChunkIngestionQueue const&) = delete; - StoryChunkIngestionQueue &operator=(StoryChunkIngestionQueue const &) = delete; + StoryChunkIngestionQueue& operator=(StoryChunkIngestionQueue const&) = delete; std::mutex ingestionQueueMutex; - std::unordered_map storyIngestionHandles; + std::unordered_map storyIngestionHandles; // chunks for unknown stories or late arriving chunks for closed stories will end up // in orphanQueue that we'll periodically try to drain into the DataStore - std::deque orphanQueue; + std::deque orphanQueue; }; -} +} // namespace chronolog #endif diff --git a/chrono_common/include/StoryChunkWriter.h b/src/chrono-common/include/StoryChunkWriter.h similarity index 57% rename from chrono_common/include/StoryChunkWriter.h rename to src/chrono-common/include/StoryChunkWriter.h index 93d3c1e19..f002d3577 100644 --- a/chrono_common/include/StoryChunkWriter.h +++ b/src/chrono-common/include/StoryChunkWriter.h @@ -15,20 +15,19 @@ namespace chronolog class StoryChunkWriter { public: - StoryChunkWriter(std::string const &root_dir, std::string const &group_name, std::string const &dset_name) - : rootDirectory(root_dir), groupName(group_name), dsetName(dset_name), numDims(1) - {}; + StoryChunkWriter(std::string const& root_dir, std::string const& group_name, std::string const& dset_name) + : rootDirectory(root_dir) + , groupName(group_name) + , dsetName(dset_name) + , numDims(1){}; - ~StoryChunkWriter() - { - LOG_INFO("[StoryChunkWriter] Destructor called. Cleaning up..."); - } + ~StoryChunkWriter() { LOG_INFO("[StoryChunkWriter] Destructor called. Cleaning up..."); } - hsize_t writeStoryChunk(StoryChunkHVL &story_chunk); + hsize_t writeStoryChunk(StoryChunkHVL& story_chunk); - hsize_t writeStoryChunk(StoryChunk &story_chunk); + hsize_t writeStoryChunk(StoryChunk& story_chunk); - hsize_t writeEvents(std::unique_ptr &file, std::vector &data); + hsize_t writeEvents(std::unique_ptr& file, std::vector& data); static H5::CompType createEventCompoundType() { @@ -37,12 +36,14 @@ class StoryChunkWriter data_type.insertMember("eventTime", HOFFSET(LogEventHVL, eventTime), H5::PredType::NATIVE_UINT64); data_type.insertMember("clientId", HOFFSET(LogEventHVL, clientId), H5::PredType::NATIVE_UINT32); data_type.insertMember("eventIndex", HOFFSET(LogEventHVL, eventIndex), H5::PredType::NATIVE_UINT32); - data_type.insertMember("logRecord", HOFFSET(LogEventHVL, logRecord), H5::VarLenType(H5::PredType::NATIVE_UINT8)); + data_type.insertMember("logRecord", + HOFFSET(LogEventHVL, logRecord), + H5::VarLenType(H5::PredType::NATIVE_UINT8)); return data_type; } // base_file_name should be in the format of chronicleName.storyName.startTime.vlen.h5, not including the path - static std::string getStoryChunkFileName(std::string const &root_dir, std::string const &base_file_name); + static std::string getStoryChunkFileName(std::string const& root_dir, std::string const& base_file_name); private: std::string rootDirectory; @@ -50,6 +51,6 @@ class StoryChunkWriter std::string dsetName; int numDims; }; -} // chronolog +} // namespace chronolog #endif //CHRONOLOG_STORY_CHUNK_WRITER_H diff --git a/chrono_common/include/StoryPipeline.h b/src/chrono-common/include/StoryPipeline.h similarity index 100% rename from chrono_common/include/StoryPipeline.h rename to src/chrono-common/include/StoryPipeline.h diff --git a/chrono_common/include/TimerWrapper.h b/src/chrono-common/include/TimerWrapper.h similarity index 100% rename from chrono_common/include/TimerWrapper.h rename to src/chrono-common/include/TimerWrapper.h diff --git a/src/chrono-common/include/chronolog_errcode.h b/src/chrono-common/include/chronolog_errcode.h new file mode 100644 index 000000000..ab2ba9d9a --- /dev/null +++ b/src/chrono-common/include/chronolog_errcode.h @@ -0,0 +1,84 @@ +#ifndef CHRONOLOG_SERVER_ERRCODE_H +#define CHRONOLOG_SERVER_ERRCODE_H + +#include + +namespace chronolog +{ + +// A simple enum for server-only errors: +enum ServerErrorCode +{ + CL_ERR_STORY_EXISTS = -101, // Specified Story exists, cannot be created/renamed to + CL_ERR_ARCHIVE_EXISTS = -102, // Specified Archive exists, cannot be created/renamed to + CL_ERR_CHRONICLE_PROPERTY_FULL = -103, // Property list of Chronicle is full, cannot add new property + CL_ERR_STORY_PROPERTY_FULL = -104, // Property list of Story is full, cannot add new property + CL_ERR_CHRONICLE_METADATA_FULL = -105, // Metadata list of Chronicle is full, cannot add new property + CL_ERR_STORY_METADATA_FULL = -106, // Metadata list of Story is full, cannot add new property + CL_ERR_INVALID_CONF = -107, // Invalid configuration, cannot be created + CL_ERR_STORY_CHUNK_EXISTS = -108, // Specified Story chunk exists, cannot be created + CL_ERR_CHRONICLE_DIR_NOT_EXIST = -109, // Chronicle directory does not exist + CL_ERR_STORY_FILE_NOT_EXIST = -110, // Story file does not exist + CL_ERR_STORY_CHUNK_DSET_NOT_EXIST = -111, // Story chunk dataset does not exist + CL_ERR_STORY_CHUNK_EXTRACTION = -112 // Error in extracting Story chunk in ChronoKeeper +}; + +// Convert enum value to its name (for logging) +inline const char* to_string(ServerErrorCode e) +{ + switch(e) + { + case CL_ERR_STORY_EXISTS: + return "CL_ERR_STORY_EXISTS"; + case CL_ERR_ARCHIVE_EXISTS: + return "CL_ERR_ARCHIVE_EXISTS"; + case CL_ERR_CHRONICLE_PROPERTY_FULL: + return "CL_ERR_CHRONICLE_PROPERTY_FULL"; + case CL_ERR_STORY_PROPERTY_FULL: + return "CL_ERR_STORY_PROPERTY_FULL"; + case CL_ERR_CHRONICLE_METADATA_FULL: + return "CL_ERR_CHRONICLE_METADATA_FULL"; + case CL_ERR_STORY_METADATA_FULL: + return "CL_ERR_STORY_METADATA_FULL"; + case CL_ERR_INVALID_CONF: + return "CL_ERR_INVALID_CONF"; + case CL_ERR_STORY_CHUNK_EXISTS: + return "CL_ERR_STORY_CHUNK_EXISTS"; + case CL_ERR_CHRONICLE_DIR_NOT_EXIST: + return "CL_ERR_CHRONICLE_DIR_NOT_EXIST"; + case CL_ERR_STORY_FILE_NOT_EXIST: + return "CL_ERR_STORY_FILE_NOT_EXIST"; + case CL_ERR_STORY_CHUNK_DSET_NOT_EXIST: + return "CL_ERR_STORY_CHUNK_DSET_NOT_EXIST"; + case CL_ERR_STORY_CHUNK_EXTRACTION: + return "CL_ERR_STORY_CHUNK_EXTRACTION"; + default: + return "UnknownServerErrorCode"; + } +} + +inline const char* to_string_server(int code) +{ + switch(static_cast(code)) + { + case CL_ERR_STORY_EXISTS: + case CL_ERR_ARCHIVE_EXISTS: + case CL_ERR_CHRONICLE_PROPERTY_FULL: + case CL_ERR_STORY_PROPERTY_FULL: + case CL_ERR_CHRONICLE_METADATA_FULL: + case CL_ERR_STORY_METADATA_FULL: + case CL_ERR_INVALID_CONF: + case CL_ERR_STORY_CHUNK_EXISTS: + case CL_ERR_CHRONICLE_DIR_NOT_EXIST: + case CL_ERR_STORY_FILE_NOT_EXIST: + case CL_ERR_STORY_CHUNK_DSET_NOT_EXIST: + case CL_ERR_STORY_CHUNK_EXTRACTION: + return to_string(static_cast(code)); + default: + return "UnknownServerErrorCode"; + } +} + +} // namespace chronolog + +#endif // CHRONOLOG_SERVER_ERRCODE_H \ No newline at end of file diff --git a/chrono_common/include/chronolog_types.h b/src/chrono-common/include/chronolog_types.h similarity index 100% rename from chrono_common/include/chronolog_types.h rename to src/chrono-common/include/chronolog_types.h diff --git a/chrono_common/include/city.h b/src/chrono-common/include/city.h similarity index 84% rename from chrono_common/include/city.h rename to src/chrono-common/include/city.h index 4392886f6..06eb3346d 100644 --- a/chrono_common/include/city.h +++ b/src/chrono-common/include/city.h @@ -62,54 +62,52 @@ #ifndef CITY_HASH_H_ #define CITY_HASH_H_ -#include // for size_t. +#include // for size_t. #include #include typedef uint8_t uint8; typedef uint32_t uint32; typedef uint64_t uint64; -typedef std::pair uint128; +typedef std::pair uint128; -inline uint64 Uint128Low64(const uint128 &x) -{ return x.first; } +inline uint64 Uint128Low64(const uint128& x) { return x.first; } -inline uint64 Uint128High64(const uint128 &x) -{ return x.second; } +inline uint64 Uint128High64(const uint128& x) { return x.second; } // Hash function for a byte array. -uint64 CityHash64(const char*buf, size_t len); +uint64 CityHash64(const char* buf, size_t len); // Hash function for a byte array. For convenience, a 64-bit seed is also // hashed into the result. -uint64 CityHash64WithSeed(const char*buf, size_t len, uint64 seed); +uint64 CityHash64WithSeed(const char* buf, size_t len, uint64 seed); // Hash function for a byte array. For convenience, two seeds are also // hashed into the result. -uint64 CityHash64WithSeeds(const char*buf, size_t len, uint64 seed0, uint64 seed1); +uint64 CityHash64WithSeeds(const char* buf, size_t len, uint64 seed0, uint64 seed1); // Hash function for a byte array. -uint128 CityHash128(const char*s, size_t len); +uint128 CityHash128(const char* s, size_t len); // Hash function for a byte array. For convenience, a 128-bit seed is also // hashed into the result. -uint128 CityHash128WithSeed(const char*s, size_t len, uint128 seed); +uint128 CityHash128WithSeed(const char* s, size_t len, uint128 seed); // Hash function for a byte array. Most useful in 32-bit binaries. -uint32 CityHash32(const char*buf, size_t len); +uint32 CityHash32(const char* buf, size_t len); // Hash 128 input bits down to 64 bits of output. // This is intended to be a reasonably good hash function. -inline uint64 Hash128to64(const uint128 &x) +inline uint64 Hash128to64(const uint128& x) { // Murmur-inspired hashing. const uint64 kMul = 0x9ddfea08eb382d69ULL; - uint64 a = (Uint128Low64(x)^Uint128High64(x)) * kMul; + uint64 a = (Uint128Low64(x) ^ Uint128High64(x)) * kMul; a ^= (a >> 47); - uint64 b = (Uint128High64(x)^a) * kMul; + uint64 b = (Uint128High64(x) ^ a) * kMul; b ^= (b >> 47); b *= kMul; return b; } -#endif // CITY_HASH_H_ \ No newline at end of file +#endif // CITY_HASH_H_ \ No newline at end of file diff --git a/chrono_common/include/common.h b/src/chrono-common/include/common.h similarity index 100% rename from chrono_common/include/common.h rename to src/chrono-common/include/common.h diff --git a/chrono_common/include/config.h b/src/chrono-common/include/config.h similarity index 97% rename from chrono_common/include/config.h rename to src/chrono-common/include/config.h index 7b6bd29d3..70bc19270 100644 --- a/chrono_common/include/config.h +++ b/src/chrono-common/include/config.h @@ -65,13 +65,13 @@ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif +#if defined __BIG_ENDIAN__ +#define WORDS_BIGENDIAN 1 +#endif #else -# ifndef WORDS_BIGENDIAN +#ifndef WORDS_BIGENDIAN /* # undef WORDS_BIGENDIAN */ -# endif +#endif #endif /* Define for Solaris 2.5.1 so the uint32_t typedef from , diff --git a/chrono_common/include/enum.h b/src/chrono-common/include/enum.h similarity index 72% rename from chrono_common/include/enum.h rename to src/chrono-common/include/enum.h index 8df60246c..a9a0df1b0 100644 --- a/chrono_common/include/enum.h +++ b/src/chrono-common/include/enum.h @@ -7,10 +7,12 @@ typedef enum ChronoLogRPCImplementation { - CHRONOLOG_THALLIUM_SOCKETS = 0, CHRONOLOG_THALLIUM_TCP = 1, CHRONOLOG_THALLIUM_ROCE = 2 + CHRONOLOG_THALLIUM_SOCKETS = 0, + CHRONOLOG_THALLIUM_TCP = 1, + CHRONOLOG_THALLIUM_ROCE = 2 } ChronoLogRPCImplementation; -inline const char*getRPCImplString(ChronoLogRPCImplementation impl) +inline const char* getRPCImplString(ChronoLogRPCImplementation impl) { switch(impl) { @@ -27,10 +29,13 @@ inline const char*getRPCImplString(ChronoLogRPCImplementation impl) typedef enum ChronoLogServiceRole { - CHRONOLOG_UNKNOWN = 0, CHRONOLOG_VISOR = 1, CHRONOLOG_CLIENT = 2, CHRONOLOG_KEEPER = 3 + CHRONOLOG_UNKNOWN = 0, + CHRONOLOG_VISOR = 1, + CHRONOLOG_CLIENT = 2, + CHRONOLOG_KEEPER = 3 } ChronoLogServiceRole; -inline const char*getServiceRoleString(ChronoLogServiceRole role) +inline const char* getServiceRoleString(ChronoLogServiceRole role) { switch(role) { @@ -49,10 +54,12 @@ inline const char*getServiceRoleString(ChronoLogServiceRole role) enum ClocksourceType { - C_STYLE = 0, CPP_STYLE = 1, TSC = 2 + C_STYLE = 0, + CPP_STYLE = 1, + TSC = 2 }; -inline const char*getClocksourceTypeString(ClocksourceType type) +inline const char* getClocksourceTypeString(ClocksourceType type) { switch(type) { diff --git a/chrono_common/src/ChunkExtractorCSV.cpp b/src/chrono-common/src/ChunkExtractorCSV.cpp similarity index 100% rename from chrono_common/src/ChunkExtractorCSV.cpp rename to src/chrono-common/src/ChunkExtractorCSV.cpp diff --git a/chrono_common/src/ChunkExtractorRDMA.cpp b/src/chrono-common/src/ChunkExtractorRDMA.cpp similarity index 100% rename from chrono_common/src/ChunkExtractorRDMA.cpp rename to src/chrono-common/src/ChunkExtractorRDMA.cpp diff --git a/chrono_common/src/ConfigurationManager.cpp b/src/chrono-common/src/ConfigurationManager.cpp similarity index 100% rename from chrono_common/src/ConfigurationManager.cpp rename to src/chrono-common/src/ConfigurationManager.cpp diff --git a/chrono_common/src/RDMATransferAgent.cpp b/src/chrono-common/src/RDMATransferAgent.cpp similarity index 100% rename from chrono_common/src/RDMATransferAgent.cpp rename to src/chrono-common/src/RDMATransferAgent.cpp diff --git a/chrono_common/src/StoryChunk.cpp b/src/chrono-common/src/StoryChunk.cpp similarity index 100% rename from chrono_common/src/StoryChunk.cpp rename to src/chrono-common/src/StoryChunk.cpp diff --git a/chrono_common/src/StoryChunkExtractor.cpp b/src/chrono-common/src/StoryChunkExtractor.cpp similarity index 100% rename from chrono_common/src/StoryChunkExtractor.cpp rename to src/chrono-common/src/StoryChunkExtractor.cpp diff --git a/chrono_common/src/StoryChunkWriter.cpp b/src/chrono-common/src/StoryChunkWriter.cpp similarity index 100% rename from chrono_common/src/StoryChunkWriter.cpp rename to src/chrono-common/src/StoryChunkWriter.cpp diff --git a/chrono_common/src/StoryPipeline.cpp b/src/chrono-common/src/StoryPipeline.cpp similarity index 100% rename from chrono_common/src/StoryPipeline.cpp rename to src/chrono-common/src/StoryPipeline.cpp diff --git a/chrono_common/src/city.cpp b/src/chrono-common/src/city.cpp similarity index 64% rename from chrono_common/src/city.cpp rename to src/chrono-common/src/city.cpp index 265f1f1df..b51838250 100644 --- a/chrono_common/src/city.cpp +++ b/src/chrono-common/src/city.cpp @@ -31,18 +31,18 @@ #include "city.h" #include -#include // for memcpy and memset +#include // for memcpy and memset using namespace std; -static uint64 UNALIGNED_LOAD64(const char*p) +static uint64 UNALIGNED_LOAD64(const char* p) { uint64 result; memcpy(&result, p, sizeof(result)); return result; } -static uint32 UNALIGNED_LOAD32(const char*p) +static uint32 UNALIGNED_LOAD32(const char* p) { uint32 result; memcpy(&result, p, sizeof(result)); @@ -111,15 +111,9 @@ static uint32 UNALIGNED_LOAD32(const char*p) #endif #endif -static uint64 Fetch64(const char*p) -{ - return uint64_in_expected_order(UNALIGNED_LOAD64(p)); -} +static uint64 Fetch64(const char* p) { return uint64_in_expected_order(UNALIGNED_LOAD64(p)); } -static uint32 Fetch32(const char*p) -{ - return uint32_in_expected_order(UNALIGNED_LOAD32(p)); -} +static uint32 Fetch32(const char* p) { return uint32_in_expected_order(UNALIGNED_LOAD32(p)); } // Some primes between 2^63 and 2^64 for various uses. static const uint64 k0 = 0xc3a5c85c97cb3127ULL; @@ -144,11 +138,15 @@ static uint32 fmix(uint32 h) static uint32 Rotate32(uint32 val, int shift) { // Avoid shifting by 32: doing so yields an undefined result. - return shift == 0 ? val : ((val >> shift)|(val << (32 - shift))); + return shift == 0 ? val : ((val >> shift) | (val << (32 - shift))); } #undef PERMUTE3 -#define PERMUTE3(a, b, c) do { std::swap(a, b); std::swap(a, c); } while (0) +#define PERMUTE3(a, b, c) \ + do { \ + std::swap(a, b); \ + std::swap(a, c); \ + } while(0) static uint32 Mur(uint32 a, uint32 h) { @@ -161,7 +159,7 @@ static uint32 Mur(uint32 a, uint32 h) return h * 5 + 0xe6546b64; } -static uint32 Hash32Len13to24(const char*s, size_t len) +static uint32 Hash32Len13to24(const char* s, size_t len) { uint32 a = Fetch32(s - 4 + (len >> 1)); uint32 b = Fetch32(s + 4); @@ -174,7 +172,7 @@ static uint32 Hash32Len13to24(const char*s, size_t len) return fmix(Mur(f, Mur(e, Mur(d, Mur(c, Mur(b, Mur(a, h))))))); } -static uint32 Hash32Len0to4(const char*s, size_t len) +static uint32 Hash32Len0to4(const char* s, size_t len) { uint32 b = 0; uint32 c = 9; @@ -187,16 +185,16 @@ static uint32 Hash32Len0to4(const char*s, size_t len) return fmix(Mur(b, Mur(len, c))); } -static uint32 Hash32Len5to12(const char*s, size_t len) +static uint32 Hash32Len5to12(const char* s, size_t len) { uint32 a = len, b = len * 5, c = 9, d = b; a += Fetch32(s); b += Fetch32(s + len - 4); - c += Fetch32(s + ((len >> 1)&4)); + c += Fetch32(s + ((len >> 1) & 4)); return fmix(Mur(c, Mur(b, Mur(a, d)))); } -uint32 CityHash32(const char*s, size_t len) +uint32 CityHash32(const char* s, size_t len) { if(len <= 24) { @@ -226,8 +224,7 @@ uint32 CityHash32(const char*s, size_t len) f = Rotate32(f, 19); f = f * 5 + 0xe6546b64; size_t iters = (len - 1) / 20; - do - { + do { uint32 a0 = Rotate32(Fetch32(s) * c1, 17) * c2; uint32 a1 = Fetch32(s + 4); uint32 a2 = Rotate32(Fetch32(s + 8) * c1, 17) * c2; @@ -271,31 +268,25 @@ uint32 CityHash32(const char*s, size_t len) static uint64 Rotate(uint64 val, int shift) { // Avoid shifting by 64: doing so yields an undefined result. - return shift == 0 ? val : ((val >> shift)|(val << (64 - shift))); + return shift == 0 ? val : ((val >> shift) | (val << (64 - shift))); } -static uint64 ShiftMix(uint64 val) -{ - return val^(val >> 47); -} +static uint64 ShiftMix(uint64 val) { return val ^ (val >> 47); } -static uint64 HashLen16(uint64 u, uint64 v) -{ - return Hash128to64(uint128(u, v)); -} +static uint64 HashLen16(uint64 u, uint64 v) { return Hash128to64(uint128(u, v)); } static uint64 HashLen16(uint64 u, uint64 v, uint64 mul) { // Murmur-inspired hashing. - uint64 a = (u^v) * mul; + uint64 a = (u ^ v) * mul; a ^= (a >> 47); - uint64 b = (v^a) * mul; + uint64 b = (v ^ a) * mul; b ^= (b >> 47); b *= mul; return b; } -static uint64 HashLen0to16(const char*s, size_t len) +static uint64 HashLen0to16(const char* s, size_t len) { if(len >= 8) { @@ -319,14 +310,14 @@ static uint64 HashLen0to16(const char*s, size_t len) uint8 c = s[len - 1]; uint32 y = static_cast(a) + (static_cast(b) << 8); uint32 z = len + (static_cast(c) << 2); - return ShiftMix(y * k2^z * k0) * k2; + return ShiftMix(y * k2 ^ z * k0) * k2; } return k2; } // This probably works well for 16-byte strings as well, but it may be overkill // in that case. -static uint64 HashLen17to32(const char*s, size_t len) +static uint64 HashLen17to32(const char* s, size_t len) { uint64 mul = k2 + len * 2; uint64 a = Fetch64(s) * k1; @@ -338,7 +329,7 @@ static uint64 HashLen17to32(const char*s, size_t len) // Return a 16-byte hash for 48 bytes. Quick and dirty. // Callers do best to use "random-looking" values for a and b. -static pair WeakHashLen32WithSeeds(uint64 w, uint64 x, uint64 y, uint64 z, uint64 a, uint64 b) +static pair WeakHashLen32WithSeeds(uint64 w, uint64 x, uint64 y, uint64 z, uint64 a, uint64 b) { a += w; b = Rotate(b + a + z, 21); @@ -350,13 +341,13 @@ static pair WeakHashLen32WithSeeds(uint64 w, uint64 x, uint64 y } // Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty. -static pair WeakHashLen32WithSeeds(const char*s, uint64 a, uint64 b) +static pair WeakHashLen32WithSeeds(const char* s, uint64 a, uint64 b) { return WeakHashLen32WithSeeds(Fetch64(s), Fetch64(s + 8), Fetch64(s + 16), Fetch64(s + 24), a, b); } // Return an 8-byte hash for 33 to 64 bytes. -static uint64 HashLen33to64(const char*s, size_t len) +static uint64 HashLen33to64(const char* s, size_t len) { uint64 mul = k2 + len * 2; uint64 a = Fetch64(s) * k2; @@ -368,7 +359,7 @@ static uint64 HashLen33to64(const char*s, size_t len) uint64 g = Fetch64(s + len - 8); uint64 h = Fetch64(s + len - 16) * mul; uint64 u = Rotate(a + g, 43) + (Rotate(b, 30) + c) * 9; - uint64 v = ((a + g)^d) + f + 1; + uint64 v = ((a + g) ^ d) + f + 1; uint64 w = bswap_64((u + v) * mul) + h; uint64 x = Rotate(e + f, 42) + c; uint64 y = (bswap_64((v + w) * mul) + g) * mul; @@ -378,7 +369,7 @@ static uint64 HashLen33to64(const char*s, size_t len) return b + x; } -uint64 CityHash64(const char*s, size_t len) +uint64 CityHash64(const char* s, size_t len) { if(len <= 32) { @@ -401,14 +392,13 @@ uint64 CityHash64(const char*s, size_t len) uint64 x = Fetch64(s + len - 40); uint64 y = Fetch64(s + len - 16) + Fetch64(s + len - 56); uint64 z = HashLen16(Fetch64(s + len - 48) + len, Fetch64(s + len - 24)); - pair v = WeakHashLen32WithSeeds(s + len - 64, len, z); - pair w = WeakHashLen32WithSeeds(s + len - 32, y + k1, x); + pair v = WeakHashLen32WithSeeds(s + len - 64, len, z); + pair w = WeakHashLen32WithSeeds(s + len - 32, y + k1, x); x = x * k1 + Fetch64(s); // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks. - len = (len - 1)&~static_cast(63); - do - { + len = (len - 1) & ~static_cast(63); + do { x = Rotate(x + y + v.first + Fetch64(s + 8), 37) * k1; y = Rotate(y + v.second + Fetch64(s + 48), 42) * k1; x ^= w.second; @@ -423,19 +413,16 @@ uint64 CityHash64(const char*s, size_t len) return HashLen16(HashLen16(v.first, w.first) + ShiftMix(y) * k1 + z, HashLen16(v.second, w.second) + x); } -uint64 CityHash64WithSeed(const char*s, size_t len, uint64 seed) -{ - return CityHash64WithSeeds(s, len, k2, seed); -} +uint64 CityHash64WithSeed(const char* s, size_t len, uint64 seed) { return CityHash64WithSeeds(s, len, k2, seed); } -uint64 CityHash64WithSeeds(const char*s, size_t len, uint64 seed0, uint64 seed1) +uint64 CityHash64WithSeeds(const char* s, size_t len, uint64 seed0, uint64 seed1) { return HashLen16(CityHash64(s, len) - seed0, seed1); } // A subroutine for CityHash128(). Returns a decent 128-bit hash for strings // of any length representable in signed long. Based on City and Murmur. -static uint128 CityMurmur(const char*s, size_t len, uint128 seed) +static uint128 CityMurmur(const char* s, size_t len, uint128 seed) { uint64 a = Uint128Low64(seed); uint64 b = Uint128High64(seed); @@ -443,18 +430,17 @@ static uint128 CityMurmur(const char*s, size_t len, uint128 seed) uint64 d = 0; signed long l = len - 16; if(l <= 0) - { // len <= 16 + { // len <= 16 a = ShiftMix(a * k1) * k1; c = b * k1 + HashLen0to16(s, len); d = ShiftMix(a + (len >= 8 ? Fetch64(s) : c)); } else - { // len > 16 + { // len > 16 c = HashLen16(Fetch64(s + len - 8) + k1, a); d = HashLen16(b + len, c + Fetch64(s + len - 16)); a += d; - do - { + do { a ^= ShiftMix(Fetch64(s) * k1) * k1; a *= k1; b ^= a; @@ -467,10 +453,10 @@ static uint128 CityMurmur(const char*s, size_t len, uint128 seed) } a = HashLen16(a, c); b = HashLen16(d, b); - return uint128(a^b, HashLen16(b, a)); + return uint128(a ^ b, HashLen16(b, a)); } -uint128 CityHash128WithSeed(const char*s, size_t len, uint128 seed) +uint128 CityHash128WithSeed(const char* s, size_t len, uint128 seed) { if(len < 128) { @@ -479,18 +465,17 @@ uint128 CityHash128WithSeed(const char*s, size_t len, uint128 seed) // We expect len >= 128 to be the common case. Keep 56 bytes of state: // v, w, x, y, and z. - pair v, w; + pair v, w; uint64 x = Uint128Low64(seed); uint64 y = Uint128High64(seed); uint64 z = len * k1; - v.first = Rotate(y^k1, 49) * k1 + Fetch64(s); + v.first = Rotate(y ^ k1, 49) * k1 + Fetch64(s); v.second = Rotate(v.first, 42) * k1 + Fetch64(s + 8); w.first = Rotate(y + z, 35) * k1 + x; w.second = Rotate(x + Fetch64(s + 88), 53) * k1; // This is the same inner loop as CityHash64(), manually unrolled. - do - { + do { x = Rotate(x + y + v.first + Fetch64(s + 8), 37) * k1; y = Rotate(y + v.second + Fetch64(s + 48), 42) * k1; x ^= w.second; @@ -536,7 +521,7 @@ uint128 CityHash128WithSeed(const char*s, size_t len, uint128 seed) return uint128(HashLen16(x + v.second, w.second) + y, HashLen16(x + w.second, y + v.second)); } -uint128 CityHash128(const char*s, size_t len) +uint128 CityHash128(const char* s, size_t len) { return len >= 16 ? CityHash128WithSeed(s + 16, len - 16, uint128(Fetch64(s), Fetch64(s + 8) + k0)) : CityHash128WithSeed(s, len, uint128(k0, k1)); @@ -547,130 +532,150 @@ uint128 CityHash128(const char*s, size_t len) #include // Requires len >= 240. -static void CityHashCrc256Long(const char *s, size_t len, - uint32 seed, uint64 *result) { - uint64 a = Fetch64(s + 56) + k0; - uint64 b = Fetch64(s + 96) + k0; - uint64 c = result[0] = HashLen16(b, len); - uint64 d = result[1] = Fetch64(s + 120) * k0 + len; - uint64 e = Fetch64(s + 184) + seed; - uint64 f = 0; - uint64 g = 0; - uint64 h = c + d; - uint64 x = seed; - uint64 y = 0; - uint64 z = 0; - - // 240 bytes of input per iter. - size_t iters = len / 240; - len -= iters * 240; - do { +static void CityHashCrc256Long(const char* s, size_t len, uint32 seed, uint64* result) +{ + uint64 a = Fetch64(s + 56) + k0; + uint64 b = Fetch64(s + 96) + k0; + uint64 c = result[0] = HashLen16(b, len); + uint64 d = result[1] = Fetch64(s + 120) * k0 + len; + uint64 e = Fetch64(s + 184) + seed; + uint64 f = 0; + uint64 g = 0; + uint64 h = c + d; + uint64 x = seed; + uint64 y = 0; + uint64 z = 0; + + // 240 bytes of input per iter. + size_t iters = len / 240; + len -= iters * 240; + do { #undef CHUNK -#define CHUNK(r) \ - PERMUTE3(x, z, y); \ - b += Fetch64(s); \ - c += Fetch64(s + 8); \ - d += Fetch64(s + 16); \ - e += Fetch64(s + 24); \ - f += Fetch64(s + 32); \ - a += b; \ - h += f; \ - b += c; \ - f += d; \ - g += e; \ - e += z; \ - g += x; \ - z = _mm_crc32_u64(z, b + g); \ - y = _mm_crc32_u64(y, e + h); \ - x = _mm_crc32_u64(x, f + a); \ - e = Rotate(e, r); \ - c += e; \ +#define CHUNK(r) \ + PERMUTE3(x, z, y); \ + b += Fetch64(s); \ + c += Fetch64(s + 8); \ + d += Fetch64(s + 16); \ + e += Fetch64(s + 24); \ + f += Fetch64(s + 32); \ + a += b; \ + h += f; \ + b += c; \ + f += d; \ + g += e; \ + e += z; \ + g += x; \ + z = _mm_crc32_u64(z, b + g); \ + y = _mm_crc32_u64(y, e + h); \ + x = _mm_crc32_u64(x, f + a); \ + e = Rotate(e, r); \ + c += e; \ s += 40 - CHUNK(0); PERMUTE3(a, h, c); - CHUNK(33); PERMUTE3(a, h, f); - CHUNK(0); PERMUTE3(b, h, f); - CHUNK(42); PERMUTE3(b, h, d); - CHUNK(0); PERMUTE3(b, h, e); - CHUNK(33); PERMUTE3(a, h, e); - } while (--iters > 0); - - while (len >= 40) { - CHUNK(29); - e ^= Rotate(a, 20); - h += Rotate(b, 30); - g ^= Rotate(c, 40); - f += Rotate(d, 34); - PERMUTE3(c, h, g); - len -= 40; - } - if (len > 0) { - s = s + len - 40; - CHUNK(33); - e ^= Rotate(a, 43); - h += Rotate(b, 42); - g ^= Rotate(c, 41); - f += Rotate(d, 40); - } - result[0] ^= h; - result[1] ^= g; - g += h; - a = HashLen16(a, g + z); - x += y << 32; - b += x; - c = HashLen16(c, z) + h; - d = HashLen16(d, e + result[0]); - g += e; - h += HashLen16(x, f); - e = HashLen16(a, d) + g; - z = HashLen16(b, c) + a; - y = HashLen16(g, h) + c; - result[0] = e + z + y + x; - a = ShiftMix((a + y) * k0) * k0 + b; - result[1] += a + result[0]; - a = ShiftMix(a * k0) * k0 + c; - result[2] = a + result[1]; - a = ShiftMix((a + e) * k0) * k0; - result[3] = a + result[2]; + CHUNK(0); + PERMUTE3(a, h, c); + CHUNK(33); + PERMUTE3(a, h, f); + CHUNK(0); + PERMUTE3(b, h, f); + CHUNK(42); + PERMUTE3(b, h, d); + CHUNK(0); + PERMUTE3(b, h, e); + CHUNK(33); + PERMUTE3(a, h, e); + } while(--iters > 0); + + while(len >= 40) + { + CHUNK(29); + e ^= Rotate(a, 20); + h += Rotate(b, 30); + g ^= Rotate(c, 40); + f += Rotate(d, 34); + PERMUTE3(c, h, g); + len -= 40; + } + if(len > 0) + { + s = s + len - 40; + CHUNK(33); + e ^= Rotate(a, 43); + h += Rotate(b, 42); + g ^= Rotate(c, 41); + f += Rotate(d, 40); + } + result[0] ^= h; + result[1] ^= g; + g += h; + a = HashLen16(a, g + z); + x += y << 32; + b += x; + c = HashLen16(c, z) + h; + d = HashLen16(d, e + result[0]); + g += e; + h += HashLen16(x, f); + e = HashLen16(a, d) + g; + z = HashLen16(b, c) + a; + y = HashLen16(g, h) + c; + result[0] = e + z + y + x; + a = ShiftMix((a + y) * k0) * k0 + b; + result[1] += a + result[0]; + a = ShiftMix(a * k0) * k0 + c; + result[2] = a + result[1]; + a = ShiftMix((a + e) * k0) * k0; + result[3] = a + result[2]; } // Requires len < 240. -static void CityHashCrc256Short(const char *s, size_t len, uint64 *result) { - char buf[240]; - memcpy(buf, s, len); - memset(buf + len, 0, 240 - len); - CityHashCrc256Long(buf, 240, ~static_cast(len), result); +static void CityHashCrc256Short(const char* s, size_t len, uint64* result) +{ + char buf[240]; + memcpy(buf, s, len); + memset(buf + len, 0, 240 - len); + CityHashCrc256Long(buf, 240, ~static_cast(len), result); } -void CityHashCrc256(const char *s, size_t len, uint64 *result) { - if (LIKELY(len >= 240)) { - CityHashCrc256Long(s, len, 0, result); - } else { - CityHashCrc256Short(s, len, result); - } +void CityHashCrc256(const char* s, size_t len, uint64* result) +{ + if(LIKELY(len >= 240)) + { + CityHashCrc256Long(s, len, 0, result); + } + else + { + CityHashCrc256Short(s, len, result); + } } -uint128 CityHashCrc128WithSeed(const char *s, size_t len, uint128 seed) { - if (len <= 900) { - return CityHash128WithSeed(s, len, seed); - } else { - uint64 result[4]; - CityHashCrc256(s, len, result); - uint64 u = Uint128High64(seed) + result[0]; - uint64 v = Uint128Low64(seed) + result[1]; - return uint128(HashLen16(u, v + result[2]), - HashLen16(Rotate(v, 32), u * k0 + result[3])); - } +uint128 CityHashCrc128WithSeed(const char* s, size_t len, uint128 seed) +{ + if(len <= 900) + { + return CityHash128WithSeed(s, len, seed); + } + else + { + uint64 result[4]; + CityHashCrc256(s, len, result); + uint64 u = Uint128High64(seed) + result[0]; + uint64 v = Uint128Low64(seed) + result[1]; + return uint128(HashLen16(u, v + result[2]), HashLen16(Rotate(v, 32), u * k0 + result[3])); + } } -uint128 CityHashCrc128(const char *s, size_t len) { - if (len <= 900) { - return CityHash128(s, len); - } else { - uint64 result[4]; - CityHashCrc256(s, len, result); - return uint128(result[2], result[3]); - } +uint128 CityHashCrc128(const char* s, size_t len) +{ + if(len <= 900) + { + return CityHash128(s, len); + } + else + { + uint64 result[4]; + CityHashCrc256(s, len, result); + return uint128(result[2], result[3]); + } } #endif \ No newline at end of file diff --git a/ChronoGrapher/CMakeLists.txt b/src/chrono-grapher/CMakeLists.txt similarity index 91% rename from ChronoGrapher/CMakeLists.txt rename to src/chrono-grapher/CMakeLists.txt index 8bd2b6f34..b725b7916 100644 --- a/ChronoGrapher/CMakeLists.txt +++ b/src/chrono-grapher/CMakeLists.txt @@ -10,14 +10,14 @@ add_executable(chrono_grapher) target_include_directories(chrono_grapher PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_sources(chrono_grapher PRIVATE src/ChronoGrapher.cpp src/GrapherDataStore.cpp src/HDF5FileChunkExtractor.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_link_libraries(chrono_grapher diff --git a/ChronoGrapher/include/CSVFileChunkExtractor.h b/src/chrono-grapher/include/CSVFileChunkExtractor.h similarity index 100% rename from ChronoGrapher/include/CSVFileChunkExtractor.h rename to src/chrono-grapher/include/CSVFileChunkExtractor.h diff --git a/ChronoGrapher/include/ChunkIngestionQueue.h b/src/chrono-grapher/include/ChunkIngestionQueue.h similarity index 62% rename from ChronoGrapher/include/ChunkIngestionQueue.h rename to src/chrono-grapher/include/ChunkIngestionQueue.h index fe4fa791a..c98669460 100644 --- a/ChronoGrapher/include/ChunkIngestionQueue.h +++ b/src/chrono-grapher/include/ChunkIngestionQueue.h @@ -22,28 +22,30 @@ namespace chronolog class ChunkIngestionQueue { public: - ChunkIngestionQueue() - {} + ChunkIngestionQueue() {} - ~ChunkIngestionQueue() - { shutDown(); } + ~ChunkIngestionQueue() { shutDown(); } - void addStoryIngestionHandle(StoryId const &story_id, StoryChunkIngestionHandle*ingestion_handle) + void addStoryIngestionHandle(StoryId const& story_id, StoryChunkIngestionHandle* ingestion_handle) { - std::lock_guard lock(ingestionQueueMutex); - storyIngestionHandles.emplace(std::pair (story_id, ingestion_handle)); - LOG_DEBUG("[IngestionQueue] Added handle for StoryID={}: HandleAddress={}, StoryIngestionHandles={}, HandleMapSize={}" - , story_id, static_cast(ingestion_handle), reinterpret_cast(&storyIngestionHandles) - , storyIngestionHandles.size()); + std::lock_guard lock(ingestionQueueMutex); + storyIngestionHandles.emplace(std::pair(story_id, ingestion_handle)); + LOG_DEBUG("[IngestionQueue] Added handle for StoryID={}: HandleAddress={}, StoryIngestionHandles={}, " + "HandleMapSize={}", + story_id, + static_cast(ingestion_handle), + reinterpret_cast(&storyIngestionHandles), + storyIngestionHandles.size()); } - void removeStoryIngestionHandle(StoryId const &story_id) + void removeStoryIngestionHandle(StoryId const& story_id) { - std::lock_guard lock(ingestionQueueMutex); + std::lock_guard lock(ingestionQueueMutex); if(storyIngestionHandles.erase(story_id)) { - LOG_DEBUG("[IngestionQueue] Removed handle for StoryID={}. Current handle MapSize={}", story_id - , storyIngestionHandles.size()); + LOG_DEBUG("[IngestionQueue] Removed handle for StoryID={}. Current handle MapSize={}", + story_id, + storyIngestionHandles.size()); } else { @@ -53,13 +55,17 @@ class ChunkIngestionQueue void ingestStoryChunk(StoryChunk* chunk) { - LOG_DEBUG("[IngestionQueue] has {} StoryHandles; Received chunk for StoryID={} startTime {} eventCount{}", storyIngestionHandles.size(), - chunk->getStoryId(), chunk->getStartTime(), chunk->getEventCount()); + LOG_DEBUG("[IngestionQueue] has {} StoryHandles; Received chunk for StoryID={} startTime {} eventCount{}", + storyIngestionHandles.size(), + chunk->getStoryId(), + chunk->getStartTime(), + chunk->getEventCount()); auto ingestionHandle_iter = storyIngestionHandles.find(chunk->getStoryId()); if(ingestionHandle_iter == storyIngestionHandles.end()) { - LOG_WARNING("[IngestionQueue] Orphan chunk for story {}. Storing for later processing.", chunk->getStoryId()); - std::lock_guard lock(ingestionQueueMutex); + LOG_WARNING("[IngestionQueue] Orphan chunk for story {}. Storing for later processing.", + chunk->getStoryId()); + std::lock_guard lock(ingestionQueueMutex); orphanQueue.push_back(chunk); } else @@ -77,13 +83,13 @@ class ChunkIngestionQueue return; } - if (storyIngestionHandles.empty()) + if(storyIngestionHandles.empty()) { LOG_DEBUG("[IngestionQueue] has 0 storyIngestionHandles to place {} orphaned chunks", orphanQueue.size()); return; } - - std::lock_guard lock(ingestionQueueMutex); + + std::lock_guard lock(ingestionQueueMutex); for(StoryChunkDeque::iterator iter = orphanQueue.begin(); iter != orphanQueue.end();) { auto ingestionHandle_iter = storyIngestionHandles.find((*iter)->getStoryId()); @@ -100,40 +106,37 @@ class ChunkIngestionQueue ++iter; } } - + LOG_WARNING("[IngestionQueue] has {} orphaned chunks", orphanQueue.size()); } - bool is_empty() const - { - return (orphanQueue.empty() && storyIngestionHandles.empty()); - } + bool is_empty() const { return (orphanQueue.empty() && storyIngestionHandles.empty()); } void shutDown() { - LOG_INFO("[IngestionQueue] Initiating shutdown. HandleMapSize={}, OrphanQueueSize={}" - , storyIngestionHandles.size(), orphanQueue.size()); + LOG_INFO("[IngestionQueue] Initiating shutdown. HandleMapSize={}, OrphanQueueSize={}", + storyIngestionHandles.size(), + orphanQueue.size()); // last attempt to drain orphanQueue into known ingestionHandles drainOrphanChunks(); // disengage all handles - std::lock_guard lock(ingestionQueueMutex); + std::lock_guard lock(ingestionQueueMutex); storyIngestionHandles.clear(); LOG_INFO("[IngestionQueue] Shutdown completed. All handles disengaged."); } private: - ChunkIngestionQueue(ChunkIngestionQueue const &) = delete; + ChunkIngestionQueue(ChunkIngestionQueue const&) = delete; - ChunkIngestionQueue &operator=(ChunkIngestionQueue const &) = delete; + ChunkIngestionQueue& operator=(ChunkIngestionQueue const&) = delete; std::mutex ingestionQueueMutex; - std::unordered_map storyIngestionHandles; + std::unordered_map storyIngestionHandles; // chunks for unknown stories or late arriving chunks for closed stories will end up // in orphanQueue that we'll periodically try to drain into the DataStore - std::deque orphanQueue; + std::deque orphanQueue; }; -} +} // namespace chronolog #endif - diff --git a/ChronoGrapher/include/DataStoreAdminService.h b/src/chrono-grapher/include/DataStoreAdminService.h similarity index 59% rename from ChronoGrapher/include/DataStoreAdminService.h rename to src/chrono-grapher/include/DataStoreAdminService.h index cfe8f1661..9f358e410 100644 --- a/ChronoGrapher/include/DataStoreAdminService.h +++ b/src/chrono-grapher/include/DataStoreAdminService.h @@ -15,12 +15,13 @@ namespace tl = thallium; namespace chronolog { -class DataStoreAdminService: public tl::provider +class DataStoreAdminService: public tl::provider { public: // Service should be created on the heap not the stack thus the constructor is private... - static DataStoreAdminService* - CreateDataStoreAdminService(tl::engine &tl_engine, uint16_t service_provider_id, GrapherDataStore &dataStoreInstance) + static DataStoreAdminService* CreateDataStoreAdminService(tl::engine& tl_engine, + uint16_t service_provider_id, + GrapherDataStore& dataStoreInstance) { return new DataStoreAdminService(tl_engine, service_provider_id, dataStoreInstance); } @@ -32,28 +33,27 @@ class DataStoreAdminService: public tl::provider get_engine().pop_finalize_callback(this); } - void collection_service_available(tl::request const &request) - { - request.respond(1); - } + void collection_service_available(tl::request const& request) { request.respond(1); } - void shutdown_data_collection(tl::request const &request) + void shutdown_data_collection(tl::request const& request) { int status = 1; theDataStore.shutdownDataCollection(); request.respond(status); } - void - StartStoryRecording(tl::request const &request, std::string const &chronicle_name, std::string const &story_name - , StoryId const &story_id, uint64_t start_time) + void StartStoryRecording(tl::request const& request, + std::string const& chronicle_name, + std::string const& story_name, + StoryId const& story_id, + uint64_t start_time) { LOG_INFO("[DataStoreAdminService] Starting Story Recording: StoryName={}, StoryID={}", story_name, story_id); int return_code = theDataStore.startStoryRecording(chronicle_name, story_name, story_id, start_time); request.respond(return_code); } - void StopStoryRecording(tl::request const &request, StoryId const &story_id) + void StopStoryRecording(tl::request const& request, StoryId const& story_id) { LOG_INFO("[DataStoreAdminService] Stopping Story Recording: StoryID={}", story_id); int return_code = theDataStore.stopStoryRecording(story_id); @@ -61,29 +61,29 @@ class DataStoreAdminService: public tl::provider } private: - DataStoreAdminService(tl::engine &tl_engine, uint16_t service_provider_id, GrapherDataStore &data_store_instance) - : tl::provider (tl_engine, service_provider_id), theDataStore(data_store_instance) + DataStoreAdminService(tl::engine& tl_engine, uint16_t service_provider_id, GrapherDataStore& data_store_instance) + : tl::provider(tl_engine, service_provider_id) + , theDataStore(data_store_instance) { define("collection_service_available", &DataStoreAdminService::collection_service_available); define("shutdown_data_collection", &DataStoreAdminService::shutdown_data_collection); define("start_story_recording", &DataStoreAdminService::StartStoryRecording); define("stop_story_recording", &DataStoreAdminService::StopStoryRecording); //set up callback for the case when the engine is being finalized while this provider is still alive - get_engine().push_finalize_callback(this, [p = this]() - { delete p; }); + get_engine().push_finalize_callback(this, [p = this]() { delete p; }); std::stringstream ss; ss << get_engine().self(); LOG_INFO("[DataStoreAdminService] Constructed at {}. ProviderID={}", ss.str(), service_provider_id); } - DataStoreAdminService(DataStoreAdminService const &) = delete; + DataStoreAdminService(DataStoreAdminService const&) = delete; - DataStoreAdminService &operator=(DataStoreAdminService const &) = delete; + DataStoreAdminService& operator=(DataStoreAdminService const&) = delete; - GrapherDataStore &theDataStore; + GrapherDataStore& theDataStore; }; -}// namespace chronolog +} // namespace chronolog #endif diff --git a/ChronoGrapher/include/GrapherDataStore.h b/src/chrono-grapher/include/GrapherDataStore.h similarity index 100% rename from ChronoGrapher/include/GrapherDataStore.h rename to src/chrono-grapher/include/GrapherDataStore.h diff --git a/ChronoGrapher/include/GrapherRecordingService.h b/src/chrono-grapher/include/GrapherRecordingService.h similarity index 100% rename from ChronoGrapher/include/GrapherRecordingService.h rename to src/chrono-grapher/include/GrapherRecordingService.h diff --git a/ChronoGrapher/include/GrapherRegClient.h b/src/chrono-grapher/include/GrapherRegClient.h similarity index 100% rename from ChronoGrapher/include/GrapherRegClient.h rename to src/chrono-grapher/include/GrapherRegClient.h diff --git a/ChronoGrapher/include/HDF5FileChunkExtractor.h b/src/chrono-grapher/include/HDF5FileChunkExtractor.h similarity index 100% rename from ChronoGrapher/include/HDF5FileChunkExtractor.h rename to src/chrono-grapher/include/HDF5FileChunkExtractor.h diff --git a/ChronoGrapher/src/CSVFileChunkExtractor.cpp b/src/chrono-grapher/src/CSVFileChunkExtractor.cpp similarity index 100% rename from ChronoGrapher/src/CSVFileChunkExtractor.cpp rename to src/chrono-grapher/src/CSVFileChunkExtractor.cpp diff --git a/ChronoGrapher/src/ChronoGrapher.cpp b/src/chrono-grapher/src/ChronoGrapher.cpp similarity index 100% rename from ChronoGrapher/src/ChronoGrapher.cpp rename to src/chrono-grapher/src/ChronoGrapher.cpp diff --git a/ChronoGrapher/src/GrapherDataStore.cpp b/src/chrono-grapher/src/GrapherDataStore.cpp similarity index 100% rename from ChronoGrapher/src/GrapherDataStore.cpp rename to src/chrono-grapher/src/GrapherDataStore.cpp diff --git a/ChronoGrapher/src/HDF5FileChunkExtractor.cpp b/src/chrono-grapher/src/HDF5FileChunkExtractor.cpp similarity index 100% rename from ChronoGrapher/src/HDF5FileChunkExtractor.cpp rename to src/chrono-grapher/src/HDF5FileChunkExtractor.cpp diff --git a/ChronoKeeper/CMakeLists.txt b/src/chrono-keeper/CMakeLists.txt similarity index 90% rename from ChronoKeeper/CMakeLists.txt rename to src/chrono-keeper/CMakeLists.txt index 93a509d6e..b38737d7e 100644 --- a/ChronoKeeper/CMakeLists.txt +++ b/src/chrono-keeper/CMakeLists.txt @@ -9,14 +9,14 @@ add_executable(chrono_keeper) target_include_directories(chrono_keeper PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_sources(chrono_keeper PRIVATE src/ChronoKeeperInstance.cpp src/KeeperStoryPipeline.cpp src/KeeperDataStore.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_link_libraries(chrono_keeper diff --git a/ChronoKeeper/include/CSVFileChunkExtractor.h b/src/chrono-keeper/include/CSVFileChunkExtractor.h similarity index 100% rename from ChronoKeeper/include/CSVFileChunkExtractor.h rename to src/chrono-keeper/include/CSVFileChunkExtractor.h diff --git a/ChronoKeeper/include/DataStoreAdminService.h b/src/chrono-keeper/include/DataStoreAdminService.h similarity index 100% rename from ChronoKeeper/include/DataStoreAdminService.h rename to src/chrono-keeper/include/DataStoreAdminService.h diff --git a/ChronoKeeper/include/IngestionQueue.h b/src/chrono-keeper/include/IngestionQueue.h similarity index 100% rename from ChronoKeeper/include/IngestionQueue.h rename to src/chrono-keeper/include/IngestionQueue.h diff --git a/ChronoKeeper/include/KeeperDataStore.h b/src/chrono-keeper/include/KeeperDataStore.h similarity index 100% rename from ChronoKeeper/include/KeeperDataStore.h rename to src/chrono-keeper/include/KeeperDataStore.h diff --git a/ChronoKeeper/include/KeeperRecordingService.h b/src/chrono-keeper/include/KeeperRecordingService.h similarity index 100% rename from ChronoKeeper/include/KeeperRecordingService.h rename to src/chrono-keeper/include/KeeperRecordingService.h diff --git a/ChronoKeeper/include/KeeperRegClient.h b/src/chrono-keeper/include/KeeperRegClient.h similarity index 100% rename from ChronoKeeper/include/KeeperRegClient.h rename to src/chrono-keeper/include/KeeperRegClient.h diff --git a/ChronoKeeper/include/KeeperStoryPipeline.h b/src/chrono-keeper/include/KeeperStoryPipeline.h similarity index 100% rename from ChronoKeeper/include/KeeperStoryPipeline.h rename to src/chrono-keeper/include/KeeperStoryPipeline.h diff --git a/ChronoKeeper/include/StoryChunkExtractionQueue.h b/src/chrono-keeper/include/StoryChunkExtractionQueue.h similarity index 100% rename from ChronoKeeper/include/StoryChunkExtractionQueue.h rename to src/chrono-keeper/include/StoryChunkExtractionQueue.h diff --git a/ChronoKeeper/include/StoryChunkExtractorRDMA.h b/src/chrono-keeper/include/StoryChunkExtractorRDMA.h similarity index 100% rename from ChronoKeeper/include/StoryChunkExtractorRDMA.h rename to src/chrono-keeper/include/StoryChunkExtractorRDMA.h diff --git a/src/chrono-keeper/include/StoryIngestionHandle.h b/src/chrono-keeper/include/StoryIngestionHandle.h new file mode 100644 index 000000000..ad9a4c8ae --- /dev/null +++ b/src/chrono-keeper/include/StoryIngestionHandle.h @@ -0,0 +1,70 @@ +#ifndef STORY_INGESTION_HANDLE_H +#define STORY_INGESTION_HANDLE_H + +#include +#include + +#include + +// +// IngestionQueue is a funnel into the KeeperDataStore +// std::deque guarantees O(1) time for addidng elements and resizing +// (vector of vectors implementation) + +namespace chronolog +{ + +typedef std::deque EventDeque; + +class StoryIngestionHandle +{ + +public: + StoryIngestionHandle(std::mutex& a_mutex, EventDeque* active, EventDeque* passive) + : ingestionMutex(a_mutex) + , activeDeque(active) + , passiveDeque(passive) + {} + + ~StoryIngestionHandle() = default; + + EventDeque& getActiveDeque() const { return *activeDeque; } + + EventDeque& getPassiveDeque() const { return *passiveDeque; } + + void ingestEvent(LogEvent const& logEvent) + { // assume multiple service threads pushing events on ingestionQueue + std::lock_guard lock(ingestionMutex); + activeDeque->push_back(logEvent); + } + + void swapActiveDeque() //EventDeque * empty_deque, EventDeque * full_deque) + { + if(!passiveDeque->empty() || activeDeque->empty()) + { + return; + } + + //INNA: check if atomic compare_and_swap will work here + + std::lock_guard lock_guard(ingestionMutex); + if(!passiveDeque->empty() || activeDeque->empty()) + { + return; + } + + EventDeque* full_deque = activeDeque; + activeDeque = passiveDeque; + passiveDeque = full_deque; + } + + +private: + std::mutex& ingestionMutex; + EventDeque* activeDeque; + EventDeque* passiveDeque; +}; + +} // namespace chronolog + +#endif diff --git a/ChronoKeeper/src/CSVFileChunkExtractor.cpp b/src/chrono-keeper/src/CSVFileChunkExtractor.cpp similarity index 100% rename from ChronoKeeper/src/CSVFileChunkExtractor.cpp rename to src/chrono-keeper/src/CSVFileChunkExtractor.cpp diff --git a/ChronoKeeper/src/ChronoKeeperInstance.cpp b/src/chrono-keeper/src/ChronoKeeperInstance.cpp similarity index 100% rename from ChronoKeeper/src/ChronoKeeperInstance.cpp rename to src/chrono-keeper/src/ChronoKeeperInstance.cpp diff --git a/ChronoKeeper/src/KeeperDataStore.cpp b/src/chrono-keeper/src/KeeperDataStore.cpp similarity index 100% rename from ChronoKeeper/src/KeeperDataStore.cpp rename to src/chrono-keeper/src/KeeperDataStore.cpp diff --git a/ChronoKeeper/src/KeeperRegClient.cpp b/src/chrono-keeper/src/KeeperRegClient.cpp similarity index 100% rename from ChronoKeeper/src/KeeperRegClient.cpp rename to src/chrono-keeper/src/KeeperRegClient.cpp diff --git a/ChronoKeeper/src/KeeperStoryPipeline.cpp b/src/chrono-keeper/src/KeeperStoryPipeline.cpp similarity index 100% rename from ChronoKeeper/src/KeeperStoryPipeline.cpp rename to src/chrono-keeper/src/KeeperStoryPipeline.cpp diff --git a/ChronoKeeper/src/StoryChunkExtractor.cpp b/src/chrono-keeper/src/StoryChunkExtractor.cpp similarity index 100% rename from ChronoKeeper/src/StoryChunkExtractor.cpp rename to src/chrono-keeper/src/StoryChunkExtractor.cpp diff --git a/ChronoKeeper/src/StoryChunkExtractorRDMA.cpp b/src/chrono-keeper/src/StoryChunkExtractorRDMA.cpp similarity index 100% rename from ChronoKeeper/src/StoryChunkExtractorRDMA.cpp rename to src/chrono-keeper/src/StoryChunkExtractorRDMA.cpp diff --git a/ChronoPlayer/CMakeLists.txt b/src/chrono-player/CMakeLists.txt similarity index 89% rename from ChronoPlayer/CMakeLists.txt rename to src/chrono-player/CMakeLists.txt index 8f1d20e9a..9a4f34a71 100644 --- a/ChronoPlayer/CMakeLists.txt +++ b/src/chrono-player/CMakeLists.txt @@ -10,7 +10,7 @@ add_executable(chrono_player) target_include_directories(chrono_player PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_sources(chrono_player PRIVATE @@ -20,7 +20,7 @@ target_sources(chrono_player PRIVATE src/HDF5ArchiveReadingAgent.cpp src/PlaybackService.cpp src/StoryChunkTransferAgent.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_link_libraries(chrono_player @@ -38,7 +38,7 @@ set_target_properties(chrono_player PROPERTIES ) #------------------------------------------------------------------------------ -# Test executables: built from test/unit/ChronoPlayer/ +# Test executables: built from tests/unit/chrono-player/ #------------------------------------------------------------------------------ #------------------------------------------------------------------------------ diff --git a/ChronoPlayer/include/ArchiveReadingAgent.h b/src/chrono-player/include/ArchiveReadingAgent.h similarity index 100% rename from ChronoPlayer/include/ArchiveReadingAgent.h rename to src/chrono-player/include/ArchiveReadingAgent.h diff --git a/ChronoPlayer/include/ArchiveReadingRequestQueue.h b/src/chrono-player/include/ArchiveReadingRequestQueue.h similarity index 100% rename from ChronoPlayer/include/ArchiveReadingRequestQueue.h rename to src/chrono-player/include/ArchiveReadingRequestQueue.h diff --git a/ChronoPlayer/include/HDF5ArchiveReadingAgent.h b/src/chrono-player/include/HDF5ArchiveReadingAgent.h similarity index 100% rename from ChronoPlayer/include/HDF5ArchiveReadingAgent.h rename to src/chrono-player/include/HDF5ArchiveReadingAgent.h diff --git a/ChronoPlayer/include/PlaybackService.h b/src/chrono-player/include/PlaybackService.h similarity index 100% rename from ChronoPlayer/include/PlaybackService.h rename to src/chrono-player/include/PlaybackService.h diff --git a/ChronoPlayer/include/PlayerDataStore.h b/src/chrono-player/include/PlayerDataStore.h similarity index 100% rename from ChronoPlayer/include/PlayerDataStore.h rename to src/chrono-player/include/PlayerDataStore.h diff --git a/ChronoPlayer/include/PlayerRegClient.h b/src/chrono-player/include/PlayerRegClient.h similarity index 100% rename from ChronoPlayer/include/PlayerRegClient.h rename to src/chrono-player/include/PlayerRegClient.h diff --git a/ChronoPlayer/include/PlayerStoreAdminService.h b/src/chrono-player/include/PlayerStoreAdminService.h similarity index 100% rename from ChronoPlayer/include/PlayerStoreAdminService.h rename to src/chrono-player/include/PlayerStoreAdminService.h diff --git a/ChronoPlayer/include/StoryChunkTransferAgent.h b/src/chrono-player/include/StoryChunkTransferAgent.h similarity index 100% rename from ChronoPlayer/include/StoryChunkTransferAgent.h rename to src/chrono-player/include/StoryChunkTransferAgent.h diff --git a/ChronoPlayer/src/ArchiveReadingAgent.cpp b/src/chrono-player/src/ArchiveReadingAgent.cpp similarity index 71% rename from ChronoPlayer/src/ArchiveReadingAgent.cpp rename to src/chrono-player/src/ArchiveReadingAgent.cpp index 3e6c9c9b1..001a2eba2 100644 --- a/ChronoPlayer/src/ArchiveReadingAgent.cpp +++ b/src/chrono-player/src/ArchiveReadingAgent.cpp @@ -19,38 +19,45 @@ namespace tl = thallium; void chronolog::ArchiveReadingAgent::archiveReadingTask() { - LOG_DEBUG("[ReadingAgent] executing archiveReadingTask ReadingAgent state={}, ThreadID={}" - , agentState, tl::thread::self_id()); - - while( !is_shutting_down() ) + LOG_DEBUG("[ReadingAgent] executing archiveReadingTask ReadingAgent state={}, ThreadID={}", + agentState, + tl::thread::self_id()); + + while(!is_shutting_down()) { if(theReadingRequestQueue.empty()) { sleep(1); continue; } - + // 1. take a reading request off the reading queue // 2. read in the requested data from the archive store // 3. continue adding every StoryChunk read onto the StoryChunkIngestionQueue for merging with the current realtime stream of chunks from Keepers/Graphers // or bypass the merging and add the StoryChunk directly onto the ExtractionQueue to be sent to the client - + chl::ArchiveReadingRequest readingRequest; - theReadingRequestQueue.popReadingRequest(readingRequest); + theReadingRequestQueue.popReadingRequest(readingRequest); std::list listOfChunks; - theReadingAgent.readArchivedStory(readingRequest.chronicleName, readingRequest.storyName, readingRequest.startTime, readingRequest.endTime, listOfChunks); - - LOG_DEBUG("[ReadingAgent] Read {} StoryChunks for Chronicle={}, Story={}, TimeRange=[{}, {})" - , listOfChunks.size(), readingRequest.chronicleName, readingRequest.storyName - , readingRequest.startTime, readingRequest.endTime); + theReadingAgent.readArchivedStory(readingRequest.chronicleName, + readingRequest.storyName, + readingRequest.startTime, + readingRequest.endTime, + listOfChunks); + + LOG_DEBUG("[ReadingAgent] Read {} StoryChunks for Chronicle={}, Story={}, TimeRange=[{}, {})", + listOfChunks.size(), + readingRequest.chronicleName, + readingRequest.storyName, + readingRequest.startTime, + readingRequest.endTime); while(!listOfChunks.empty()) { readingRequest.storyChunkQueue->stashStoryChunk(listOfChunks.front()); listOfChunks.pop_front(); } } - } //////////////////////// @@ -66,26 +73,28 @@ void chronolog::ArchiveReadingAgent::startArchiveReading(int stream_count) theReadingAgent.initialize(); - LOG_INFO("[ReadingAgent] Starting reading streams. StreamCount={}, ThreadID={}", stream_count - , tl::thread::self_id()); + LOG_INFO("[ReadingAgent] Starting reading streams. StreamCount={}, ThreadID={}", + stream_count, + tl::thread::self_id()); agentState = RUNNING; for(int i = 0; i < stream_count; ++i) { - tl::managed es = tl::xstream::create(); + tl::managed es = tl::xstream::create(); archiveReadingStreams.push_back(std::move(es)); } for(int i = 0; i < 2 * stream_count; ++i) { - tl::managed th = archiveReadingStreams[i % (archiveReadingStreams.size())]->make_thread([p = this]() - { p->archiveReadingTask(); }); + tl::managed th = archiveReadingStreams[i % (archiveReadingStreams.size())]->make_thread( + [p = this]() { p->archiveReadingTask(); }); archiveReadingThreads.push_back(std::move(th)); } - LOG_INFO("[ReadingAgent] reading streams started successfully. Stream count={}, ThreadID={}", stream_count - , tl::thread::self_id()); + LOG_INFO("[ReadingAgent] reading streams started successfully. Stream count={}, ThreadID={}", + stream_count, + tl::thread::self_id()); } ////////////////////////////// @@ -108,16 +117,10 @@ void chronolog::ArchiveReadingAgent::shutdownArchiveReading() // Join threads & execution streams while holding stateMutex // and just wait until all the events are collected and // all the storyPipelines decay and retire - for(auto &th: archiveReadingThreads) - { - th->join(); - } + for(auto& th: archiveReadingThreads) { th->join(); } LOG_INFO("[ReadingAgent] All archive reading threads have been joined."); - for(auto &es: archiveReadingStreams) - { - es->join(); - } + for(auto& es: archiveReadingStreams) { es->join(); } theReadingAgent.shutdown(); @@ -127,7 +130,4 @@ void chronolog::ArchiveReadingAgent::shutdownArchiveReading() /////////////////////// // -chronolog::ArchiveReadingAgent::~ArchiveReadingAgent() -{ - shutdownArchiveReading(); -} +chronolog::ArchiveReadingAgent::~ArchiveReadingAgent() { shutdownArchiveReading(); } diff --git a/ChronoPlayer/src/ChronoPlayer.cpp b/src/chrono-player/src/ChronoPlayer.cpp similarity index 100% rename from ChronoPlayer/src/ChronoPlayer.cpp rename to src/chrono-player/src/ChronoPlayer.cpp diff --git a/ChronoPlayer/src/HDF5ArchiveReadingAgent.cpp b/src/chrono-player/src/HDF5ArchiveReadingAgent.cpp similarity index 100% rename from ChronoPlayer/src/HDF5ArchiveReadingAgent.cpp rename to src/chrono-player/src/HDF5ArchiveReadingAgent.cpp diff --git a/ChronoPlayer/src/PlaybackService.cpp b/src/chrono-player/src/PlaybackService.cpp similarity index 100% rename from ChronoPlayer/src/PlaybackService.cpp rename to src/chrono-player/src/PlaybackService.cpp diff --git a/ChronoPlayer/src/PlayerDataStore.cpp b/src/chrono-player/src/PlayerDataStore.cpp similarity index 100% rename from ChronoPlayer/src/PlayerDataStore.cpp rename to src/chrono-player/src/PlayerDataStore.cpp diff --git a/ChronoPlayer/src/StoryChunkTransferAgent.cpp b/src/chrono-player/src/StoryChunkTransferAgent.cpp similarity index 100% rename from ChronoPlayer/src/StoryChunkTransferAgent.cpp rename to src/chrono-player/src/StoryChunkTransferAgent.cpp diff --git a/ChronoVisor/CMakeLists.txt b/src/chrono-visor/CMakeLists.txt similarity index 88% rename from ChronoVisor/CMakeLists.txt rename to src/chrono-visor/CMakeLists.txt index c61a6ff71..948d9851b 100644 --- a/ChronoVisor/CMakeLists.txt +++ b/src/chrono-visor/CMakeLists.txt @@ -11,7 +11,7 @@ add_executable(chronovisor_server) target_include_directories(chronovisor_server PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_sources(chronovisor_server PRIVATE @@ -21,7 +21,7 @@ target_sources(chronovisor_server PRIVATE src/ClientRegistryRecord.cpp src/ChronicleMetaDirectory.cpp src/KeeperRegistry.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_link_libraries(chronovisor_server @@ -43,7 +43,7 @@ set_target_properties(chronovisor_server PROPERTIES chronolog_install_target(chronovisor_server) install( - FILES ${CMAKE_SOURCE_DIR}/default_conf.json.in + FILES ${CMAKE_SOURCE_DIR}/conf/default_conf.json.in DESTINATION ${CHRONOLOG_INSTALL_CONF_DIR} RENAME default-chrono-conf.json ) diff --git a/ChronoVisor/include/Archive.h b/src/chrono-visor/include/Archive.h similarity index 98% rename from ChronoVisor/include/Archive.h rename to src/chrono-visor/include/Archive.h index 512ab2c66..1238fee66 100644 --- a/ChronoVisor/include/Archive.h +++ b/src/chrono-visor/include/Archive.h @@ -15,7 +15,7 @@ class Archive { public: - Archive() {}; + Archive(){}; const std::string& getName() const { return name_; } diff --git a/ChronoVisor/include/Chronicle.h b/src/chrono-visor/include/Chronicle.h similarity index 100% rename from ChronoVisor/include/Chronicle.h rename to src/chrono-visor/include/Chronicle.h diff --git a/ChronoVisor/include/ChronicleMetaDirectory.h b/src/chrono-visor/include/ChronicleMetaDirectory.h similarity index 100% rename from ChronoVisor/include/ChronicleMetaDirectory.h rename to src/chrono-visor/include/ChronicleMetaDirectory.h diff --git a/ChronoVisor/include/ClientInfo.h b/src/chrono-visor/include/ClientInfo.h similarity index 100% rename from ChronoVisor/include/ClientInfo.h rename to src/chrono-visor/include/ClientInfo.h diff --git a/ChronoVisor/include/ClientPortalService.h b/src/chrono-visor/include/ClientPortalService.h similarity index 100% rename from ChronoVisor/include/ClientPortalService.h rename to src/chrono-visor/include/ClientPortalService.h diff --git a/ChronoVisor/include/ClientRegistryInfo.h b/src/chrono-visor/include/ClientRegistryInfo.h similarity index 100% rename from ChronoVisor/include/ClientRegistryInfo.h rename to src/chrono-visor/include/ClientRegistryInfo.h diff --git a/ChronoVisor/include/ClientRegistryManager.h b/src/chrono-visor/include/ClientRegistryManager.h similarity index 100% rename from ChronoVisor/include/ClientRegistryManager.h rename to src/chrono-visor/include/ClientRegistryManager.h diff --git a/ChronoVisor/include/DataStoreAdminClient.h b/src/chrono-visor/include/DataStoreAdminClient.h similarity index 100% rename from ChronoVisor/include/DataStoreAdminClient.h rename to src/chrono-visor/include/DataStoreAdminClient.h diff --git a/src/chrono-visor/include/Event.h b/src/chrono-visor/include/Event.h new file mode 100644 index 000000000..c1e5479a1 --- /dev/null +++ b/src/chrono-visor/include/Event.h @@ -0,0 +1,41 @@ +// +// Created by kfeng on 3/7/22. +// + +#ifndef CHRONOLOG_EVENT_H +#define CHRONOLOG_EVENT_H + +#include +#include + + +class Event +{ +public: + Event() + : data_(nullptr){}; + + const uint64_t& getSid() const { return sid_; } + + const uint64_t& getTimestamp() const { return timestamp_; } + + void* getData() const { return data_; } + + size_t getSize() const { return size_; } + + void setSid(const uint64_t& sid) { sid_ = sid; } + + void setTimestamp(const uint64_t& timestamp) { timestamp_ = timestamp; } + + void setData(void* data) { Event::data_ = data; } + + void setSize(size_t size) { size_ = size; } + +private: + uint64_t sid_{}; + uint64_t timestamp_{}; + void* data_; + size_t size_{}; +}; + +#endif //CHRONOLOG_EVENT_H diff --git a/ChronoVisor/include/KeeperRegistry.h b/src/chrono-visor/include/KeeperRegistry.h similarity index 100% rename from ChronoVisor/include/KeeperRegistry.h rename to src/chrono-visor/include/KeeperRegistry.h diff --git a/ChronoVisor/include/KeeperRegistryService.h b/src/chrono-visor/include/KeeperRegistryService.h similarity index 100% rename from ChronoVisor/include/KeeperRegistryService.h rename to src/chrono-visor/include/KeeperRegistryService.h diff --git a/ChronoVisor/include/Story.h b/src/chrono-visor/include/Story.h similarity index 100% rename from ChronoVisor/include/Story.h rename to src/chrono-visor/include/Story.h diff --git a/ChronoVisor/include/VisorClientPortal.h b/src/chrono-visor/include/VisorClientPortal.h similarity index 100% rename from ChronoVisor/include/VisorClientPortal.h rename to src/chrono-visor/include/VisorClientPortal.h diff --git a/ChronoVisor/src/ChronicleMetaDirectory.cpp b/src/chrono-visor/src/ChronicleMetaDirectory.cpp similarity index 100% rename from ChronoVisor/src/ChronicleMetaDirectory.cpp rename to src/chrono-visor/src/ChronicleMetaDirectory.cpp diff --git a/ChronoVisor/src/ClientInfo.cpp b/src/chrono-visor/src/ClientInfo.cpp similarity index 100% rename from ChronoVisor/src/ClientInfo.cpp rename to src/chrono-visor/src/ClientInfo.cpp diff --git a/ChronoVisor/src/ClientRegistryManager.cpp b/src/chrono-visor/src/ClientRegistryManager.cpp similarity index 100% rename from ChronoVisor/src/ClientRegistryManager.cpp rename to src/chrono-visor/src/ClientRegistryManager.cpp diff --git a/ChronoVisor/src/ClientRegistryRecord.cpp b/src/chrono-visor/src/ClientRegistryRecord.cpp similarity index 100% rename from ChronoVisor/src/ClientRegistryRecord.cpp rename to src/chrono-visor/src/ClientRegistryRecord.cpp diff --git a/ChronoVisor/src/KeeperRegistry.cpp b/src/chrono-visor/src/KeeperRegistry.cpp similarity index 100% rename from ChronoVisor/src/KeeperRegistry.cpp rename to src/chrono-visor/src/KeeperRegistry.cpp diff --git a/ChronoVisor/src/VisorClientPortal.cpp b/src/chrono-visor/src/VisorClientPortal.cpp similarity index 100% rename from ChronoVisor/src/VisorClientPortal.cpp rename to src/chrono-visor/src/VisorClientPortal.cpp diff --git a/ChronoVisor/src/chronovisor_instance.cpp b/src/chrono-visor/src/chronovisor_instance.cpp similarity index 100% rename from ChronoVisor/src/chronovisor_instance.cpp rename to src/chrono-visor/src/chronovisor_instance.cpp diff --git a/test/overhead/kmod/kmod_rdtsc_rdtscp.c b/test/overhead/kmod/kmod_rdtsc_rdtscp.c deleted file mode 100644 index a237d13ad..000000000 --- a/test/overhead/kmod/kmod_rdtsc_rdtscp.c +++ /dev/null @@ -1,304 +0,0 @@ -// -// Created by kfeng on 12/24/21. -// - -#include -#include -#include -#include -#include -#include -#include - -MODULE_LICENSE("Dual BSD/GPL"); - -#define SIZE_OF_STAT 100000 -#define BOUND_OF_LOOP 1000 -#define UINT64_MAX (18446744073709551615ULL) - -void inline -Filltimes(uint64_t -**times) { -unsigned long flags; -int i, j; -uint64_t start, end; -unsigned cycles_low, cycles_high, cycles_low1, cycles_high1; -volatile int variable = 0; - -asm volatile ("CPUID\n\t" - "RDTSC\n\t" - "mov %%edx, %0\n\t" - "mov %%eax, %1\n\t": "=r" (cycles_high), "=r" (cycles_low)::"%rax", "%rbx", "%rcx", "%rdx"); -asm volatile ("RDTSCP\n\t" - "mov %%edx, %0\n\t" - "mov %%eax, %1\n\t" - "CPUID\n\t": "=r" (cycles_high1), "=r" (cycles_low1)::"%rax", "%rbx", "%rcx", "%rdx"); -asm volatile ("CPUID\n\t" - "RDTSC\n\t" - "mov %%edx, %0\n\t" - "mov %%eax, %1\n\t": "=r" (cycles_high), "=r" (cycles_low)::"%rax", "%rbx", "%rcx", "%rdx"); -asm volatile ("RDTSCP\n\t" - "mov %%edx, %0\n\t" - "mov %%eax, %1\n\t" - "CPUID\n\t": "=r" (cycles_high1), "=r" (cycles_low1)::"%rax", "%rbx", "%rcx", "%rdx"); - -for ( -j = 0; -j < BOUND_OF_LOOP; j++) { -for ( -i = 0; -i < SIZE_OF_STAT; i++) { - -variable = 0; - -preempt_disable(); - -raw_local_irq_save(flags); - -asm volatile ("RDTSCP\n\t" /* read the clock */ - "LFENCE\n\t" /* serialize */ - "mov %%edx, %0\n\t" - "mov %%eax, %1\n\t": "=r" (cycles_high), "=r" (cycles_low)::"%rax", "%rbx", "%rcx", "%rdx"); -/*call the function to measure here*/ -asm volatile ("RDTSCP\n\t" /* read the clock */ - "LFENCE\n\t" /* serialize */ - "mov %%edx, %0\n\t" - "mov %%eax, %1\n\t": "=r" (cycles_high1), "=r" (cycles_low1)::"%rax", "%rbx", "%rcx", "%rdx"); - -raw_local_irq_restore(flags); - -preempt_enable(); - -start = (((uint64_t) -cycles_high << 32) | cycles_low); - -end = (((uint64_t) -cycles_high1 << 32) | cycles_low1); - -if ((end - start) < 0) { -printk(KERN_ERR -"\n\n>>>>>>>>>>>>>>CRITICAL ERROR IN TAKING THE TIME!!!!!!\n" -"loop( % d) stat( % d) start = %llu, end = %llu, variable = %u\n", -j, i, start, end, variable); -times[j][i] = 0; -} else { -times[j][i] = end - -start; -}}} -return; -} - -uint64_t var_calc(uint64_t*inputs, int size) -{ - int i; - uint64_t acc = 0, previous = 0, temp_var = 0; - for(i = 0; i < size; i++) - { - if(acc < previous) goto overflow; - previous = acc; - acc += inputs[i]; - } - acc = acc * acc; - if(acc < previous) goto overflow; - previous = 0; - for(i = 0; i < size; i++) - { - if(temp_var < previous) goto overflow; - previous = temp_var; - temp_var += (inputs[i] * inputs[i]); - } - temp_var = temp_var * size; - if(temp_var < previous) goto overflow; - temp_var = (temp_var - acc) / (((uint64_t)(size)) * ((uint64_t)(size))); - return (temp_var); - overflow: - printk(KERN_ERR - "\n\n>>>>>>>>>>>>>>CRITICAL OVERFLOW ERROR IN var_calc!!!!!!\n\n"); - return -EINVAL; -} - -uint64_t mean_calc(uint64_t*inputs, int size) -{ - int i; - uint64_t acc = 0, previous = 0, temp_var = 0; - for(i = 0; i < size; i++) - { - if(acc < previous) goto overflow; - previous = acc; - acc += inputs[i]; - } - temp_var = acc / size; - return (temp_var); - overflow: - printk(KERN_ERR - "\n\n>>>>>>>>>>>>>>CRITICAL OVERFLOW ERROR IN mean_calc!!!!!!\n\n"); - return -EINVAL; -} - -uint64_t dev_sq_calc(uint64_t*inputs, int size) -{ - int i; - uint64_t diff_sq_acc = 0, previous = 0; - for(i = 0; i < size; i++) - { - if(diff_sq_acc < previous) goto overflow; - previous = diff_sq_acc; - diff_sq_acc += (inputs[i] * inputs[i]); /* assume inputs is an array of absolute diff, not raw values */ - } - diff_sq_acc = diff_sq_acc / size; - return (diff_sq_acc); - overflow: - printk(KERN_ERR - "\n\n>>>>>>>>>>>>>>CRITICAL OVERFLOW ERROR IN stdev_calc!!!!!!\n\n"); - return -EINVAL; -} - -static int __init - -kernel_clock_test_start(void) -{ - int i = 0, j = 0, spurious = 0, k = 0; - uint64_t * *times; - uint64_t * variances; - uint64_t * min_values; - uint64_t max_dev = 0, min_time = 0, max_time = 0, prev_min = 0, tot_var = 0, max_dev_all = 0, var_of_vars = 0, var_of_mins = 0; - uint64_t overall_min = 0, overall_max = 0, overall_mean = 0, local_mean_acc = 0; - uint64_t overall_dev_sq = 0, local_dev_sq = 0; - - printk(KERN_INFO - "Loading kernel_clock_test module...\n"); - times = kmalloc(BOUND_OF_LOOP * sizeof(uint64_t * ), GFP_KERNEL); - if(!times) - { - printk(KERN_ERR - "unable to allocate memory for times\n"); - return 0; - } - - for(j = 0; j < BOUND_OF_LOOP; j++) - { - times[j] = kmalloc(SIZE_OF_STAT * sizeof(uint64_t), GFP_KERNEL); - if(!times[j]) - { - printk(KERN_ERR - "unable to allocate memory for times[%d]\n", j); - for(k = 0; k < j; k++) - kfree(times[k]); - return 0; - } - } - - variances = kmalloc(BOUND_OF_LOOP * sizeof(uint64_t), GFP_KERNEL); - if(!variances) - { - printk(KERN_ERR - "unable to allocate memory for variances\n"); - return 0; - } - - min_values = kmalloc(BOUND_OF_LOOP * sizeof(uint64_t), GFP_KERNEL); - if(!min_values) - { - printk(KERN_ERR - "unable to allocate memory for min_values\n"); - return 0; - } - - Filltimes(times); - - for(j = 0; j < BOUND_OF_LOOP; j++) - { - - max_dev = 0; - min_time = 0; - max_time = 0; - - for(i = 0; i < SIZE_OF_STAT; i++) - { - if((min_time == 0) || (min_time > times[j][i])) - min_time = times[j][i]; - if(max_time < times[j][i]) - max_time = times[j][i]; - if((overall_min == 0) || (overall_min > times[j][i])) - overall_min = times[j][i]; - if(overall_max < times[j][i]) - overall_max = times[j][i]; - } - - max_dev = max_time - min_time; - min_values[j] = min_time; - - if((prev_min != 0) && (prev_min > min_time)) - spurious++; - if(max_dev > max_dev_all) - max_dev_all = max_dev; - - variances[j] = var_calc(times[j], SIZE_OF_STAT); - tot_var += variances[j]; - - printk(KERN_ERR - "loop_size:%d >>>> variance(cycles): %llu; max_deviation: %llu; min time: %llu", j, variances[j], max_dev, min_time); - prev_min = min_time; - } - - var_of_vars = var_calc(variances, BOUND_OF_LOOP); - var_of_mins = var_calc(min_values, BOUND_OF_LOOP); - - printk(KERN_ERR - "\n total number of spurious min values = %d", spurious); - printk(KERN_ERR - "\n total variance = %llu", (tot_var / BOUND_OF_LOOP)); - printk(KERN_ERR - "\n absolute max deviation = %llu", max_dev_all); - printk(KERN_ERR - "\n variance of variances = %llu", var_of_vars); - printk(KERN_ERR - "\n variance of minimum values = %llu", var_of_mins); - - for(j = 0; j < BOUND_OF_LOOP; j++) - { - local_mean_acc += mean_calc(times[j], SIZE_OF_STAT); - } - overall_mean = local_mean_acc / BOUND_OF_LOOP; - for(j = 0; j < BOUND_OF_LOOP; j++) - { - for(i = 0; i < SIZE_OF_STAT; i++) - { - times[j][i] = abs(times[j][i] - overall_mean); - } - local_dev_sq = dev_sq_calc(times[j], SIZE_OF_STAT); - overall_dev_sq += local_dev_sq; - printk(KERN_ERR - "loop_size:%d >>>> dev square(cycles): %llu", j, local_dev_sq); - } - overall_dev_sq = overall_dev_sq / BOUND_OF_LOOP; - - printk(KERN_ERR - "\n overall minimum = %llu", overall_min); - printk(KERN_ERR - "\n overall maximum = %llu", overall_max); - printk(KERN_ERR - "\n overall mean = %llu", overall_mean); - printk(KERN_ERR - "\n overall stdev = %llu", overall_dev_sq); - - for(j = 0; j < BOUND_OF_LOOP; j++) - { - kfree(times[j]); - } - kfree(times); - kfree(variances); - kfree(min_values); - return 0; -} - -static void __exit - -kernel_clock_test_end(void) -{ - printk(KERN_INFO - "Goodbye Mr.\n"); -} - -module_init(kernel_clock_test_start); -module_exit(kernel_clock_test_end); \ No newline at end of file diff --git a/test/CMakeLists.txt b/tests/CMakeLists.txt similarity index 100% rename from test/CMakeLists.txt rename to tests/CMakeLists.txt diff --git a/test/README.md b/tests/README.md similarity index 100% rename from test/README.md rename to tests/README.md diff --git a/test/communication/CMakeLists.txt b/tests/communication/CMakeLists.txt similarity index 81% rename from test/communication/CMakeLists.txt rename to tests/communication/CMakeLists.txt index d713696e4..a0cad53e9 100644 --- a/test/communication/CMakeLists.txt +++ b/tests/communication/CMakeLists.txt @@ -20,12 +20,12 @@ endif() # Thallium Server Test add_executable(thallium_server thallium_server_test.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_include_directories(thallium_server PRIVATE - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(thallium_server @@ -39,12 +39,12 @@ add_test(NAME Communication_Thallium_ServerRepeaterRpc COMMAND thallium_server) # Thallium Client Test add_executable(thallium_client thallium_client_test.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_include_directories(thallium_client PRIVATE - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(thallium_client @@ -58,12 +58,12 @@ set_tests_properties(Communication_Thallium_ClientSendRecvOrRdma PROPERTIES MANU # Thallium Client MPI Test add_executable(thallium_client_mpi thallium_client_mpi_test.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_include_directories(thallium_client_mpi SYSTEM PRIVATE - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ${MPI_INCLUDE_PATH} ) diff --git a/test/communication/thallium_client_mpi_test.cpp b/tests/communication/thallium_client_mpi_test.cpp similarity index 100% rename from test/communication/thallium_client_mpi_test.cpp rename to tests/communication/thallium_client_mpi_test.cpp diff --git a/test/communication/thallium_client_test.cpp b/tests/communication/thallium_client_test.cpp similarity index 100% rename from test/communication/thallium_client_test.cpp rename to tests/communication/thallium_client_test.cpp diff --git a/test/communication/thallium_protocol_test.sh b/tests/communication/thallium_protocol_test.sh similarity index 100% rename from test/communication/thallium_protocol_test.sh rename to tests/communication/thallium_protocol_test.sh diff --git a/test/communication/thallium_server_test.cpp b/tests/communication/thallium_server_test.cpp similarity index 100% rename from test/communication/thallium_server_test.cpp rename to tests/communication/thallium_server_test.cpp diff --git a/test/integration/CMakeLists.txt b/tests/integration/CMakeLists.txt similarity index 100% rename from test/integration/CMakeLists.txt rename to tests/integration/CMakeLists.txt diff --git a/test/integration/chronokvs/CMakeLists.txt b/tests/integration/chronokvs/CMakeLists.txt similarity index 96% rename from test/integration/chronokvs/CMakeLists.txt rename to tests/integration/chronokvs/CMakeLists.txt index b541b22d8..922286bda 100644 --- a/test/integration/chronokvs/CMakeLists.txt +++ b/tests/integration/chronokvs/CMakeLists.txt @@ -10,7 +10,7 @@ add_executable(chronokvs_integration_test ) target_include_directories(chronokvs_integration_test PRIVATE - ${CMAKE_SOURCE_DIR}/Plugins/chronokvs/include + ${CMAKE_SOURCE_DIR}/plugins/chrono-kvs/include ) target_link_libraries(chronokvs_integration_test diff --git a/test/integration/chronokvs/chronokvs_integration_test.cpp b/tests/integration/chronokvs/chronokvs_integration_test.cpp similarity index 100% rename from test/integration/chronokvs/chronokvs_integration_test.cpp rename to tests/integration/chronokvs/chronokvs_integration_test.cpp diff --git a/test/integration/client/CMakeLists.txt b/tests/integration/client/CMakeLists.txt similarity index 90% rename from test/integration/client/CMakeLists.txt rename to tests/integration/client/CMakeLists.txt index a147c0d0a..2fb1bbdcf 100644 --- a/test/integration/client/CMakeLists.txt +++ b/tests/integration/client/CMakeLists.txt @@ -23,9 +23,9 @@ foreach(client ${client_standard_targets}) ) target_include_directories(${client} PRIVATE - ${CMAKE_BINARY_DIR}/Client/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_BINARY_DIR}/client/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(${client} @@ -49,9 +49,9 @@ add_executable(client_multi_argobots_test ) target_include_directories(client_multi_argobots_test PRIVATE - ${CMAKE_BINARY_DIR}/Client/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_BINARY_DIR}/client/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ${ABT_INCLUDE_DIRS} ) @@ -81,9 +81,9 @@ add_executable(client_multi_openmp_test ) target_include_directories(client_multi_openmp_test PRIVATE - ${CMAKE_BINARY_DIR}/Client/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_BINARY_DIR}/client/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(client_multi_openmp_test @@ -105,9 +105,9 @@ add_executable(client_hybrid_argobots_test ) target_include_directories(client_hybrid_argobots_test PRIVATE - ${CMAKE_BINARY_DIR}/Client/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_BINARY_DIR}/client/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ${MPI_CXX_INCLUDE_DIRS} ${ABT_INCLUDE_DIRS} ) diff --git a/test/integration/client/client_connect_rpc_test.cpp b/tests/integration/client/client_connect_rpc_test.cpp similarity index 100% rename from test/integration/client/client_connect_rpc_test.cpp rename to tests/integration/client/client_connect_rpc_test.cpp diff --git a/test/integration/client/client_hybrid_argobots_test.cpp b/tests/integration/client/client_hybrid_argobots_test.cpp similarity index 100% rename from test/integration/client/client_hybrid_argobots_test.cpp rename to tests/integration/client/client_hybrid_argobots_test.cpp diff --git a/test/integration/client/client_metadata_rpc_test.cpp b/tests/integration/client/client_metadata_rpc_test.cpp similarity index 100% rename from test/integration/client/client_metadata_rpc_test.cpp rename to tests/integration/client/client_metadata_rpc_test.cpp diff --git a/test/integration/client/client_multi_argobots_test.cpp b/tests/integration/client/client_multi_argobots_test.cpp similarity index 100% rename from test/integration/client/client_multi_argobots_test.cpp rename to tests/integration/client/client_multi_argobots_test.cpp diff --git a/test/integration/client/client_multi_openmp_test.cpp b/tests/integration/client/client_multi_openmp_test.cpp similarity index 100% rename from test/integration/client/client_multi_openmp_test.cpp rename to tests/integration/client/client_multi_openmp_test.cpp diff --git a/test/integration/client/client_multi_pthread_test.cpp b/tests/integration/client/client_multi_pthread_test.cpp similarity index 100% rename from test/integration/client/client_multi_pthread_test.cpp rename to tests/integration/client/client_multi_pthread_test.cpp diff --git a/test/integration/client/client_multi_storytellers_test.cpp b/tests/integration/client/client_multi_storytellers_test.cpp similarity index 100% rename from test/integration/client/client_multi_storytellers_test.cpp rename to tests/integration/client/client_multi_storytellers_test.cpp diff --git a/test/integration/client/client_story_reader_test.cpp b/tests/integration/client/client_story_reader_test.cpp similarity index 100% rename from test/integration/client/client_story_reader_test.cpp rename to tests/integration/client/client_story_reader_test.cpp diff --git a/test/integration/client/client_thread_interdependency_test.cpp b/tests/integration/client/client_thread_interdependency_test.cpp similarity index 100% rename from test/integration/client/client_thread_interdependency_test.cpp rename to tests/integration/client/client_thread_interdependency_test.cpp diff --git a/test/integration/keeper-grapher/CMakeLists.txt b/tests/integration/keeper-grapher/CMakeLists.txt similarity index 79% rename from test/integration/keeper-grapher/CMakeLists.txt rename to tests/integration/keeper-grapher/CMakeLists.txt index 868a93372..73e467c4d 100644 --- a/test/integration/keeper-grapher/CMakeLists.txt +++ b/tests/integration/keeper-grapher/CMakeLists.txt @@ -11,12 +11,12 @@ add_executable(extract_test) target_sources(extract_test PRIVATE keeper_grapher_extract_test.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_include_directories(extract_test PRIVATE - ${CMAKE_SOURCE_DIR}/Client/cpp/include - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_link_libraries(extract_test @@ -32,12 +32,12 @@ add_executable(ingest_test) target_sources(ingest_test PRIVATE keeper_grapher_ingest_test.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_include_directories(ingest_test PRIVATE - ${CMAKE_SOURCE_DIR}/Client/cpp/include - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_link_libraries(ingest_test @@ -58,7 +58,7 @@ add_dependencies(story_chunk_drain_test ) configure_file( - ${CMAKE_SOURCE_DIR}/default_conf.json.in + ${CMAKE_SOURCE_DIR}/conf/default_conf.json.in ${CMAKE_CURRENT_BINARY_DIR}/default_conf.json COPYONLY ) diff --git a/test/integration/keeper-grapher/keeper_grapher_extract_test.cpp b/tests/integration/keeper-grapher/keeper_grapher_extract_test.cpp similarity index 100% rename from test/integration/keeper-grapher/keeper_grapher_extract_test.cpp rename to tests/integration/keeper-grapher/keeper_grapher_extract_test.cpp diff --git a/test/integration/keeper-grapher/keeper_grapher_ingest_test.cpp b/tests/integration/keeper-grapher/keeper_grapher_ingest_test.cpp similarity index 100% rename from test/integration/keeper-grapher/keeper_grapher_ingest_test.cpp rename to tests/integration/keeper-grapher/keeper_grapher_ingest_test.cpp diff --git a/test/integration/package-discovery/CMakeLists.txt b/tests/integration/package-discovery/CMakeLists.txt similarity index 98% rename from test/integration/package-discovery/CMakeLists.txt rename to tests/integration/package-discovery/CMakeLists.txt index 7f8273e59..16821182d 100644 --- a/test/integration/package-discovery/CMakeLists.txt +++ b/tests/integration/package-discovery/CMakeLists.txt @@ -29,7 +29,7 @@ add_executable(test_cmake_discovery ) target_link_libraries(test_cmake_discovery PRIVATE chronolog_client) target_include_directories(test_cmake_discovery PRIVATE - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) set_target_properties(test_cmake_discovery PROPERTIES OUTPUT_NAME chronolog-test-discovery-cmake) @@ -46,7 +46,7 @@ add_executable(test_pkgconfig_discovery package_discovery_pkgconfig_test.cpp ) target_include_directories(test_pkgconfig_discovery PRIVATE - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(test_pkgconfig_discovery PRIVATE chronolog_client) set_target_properties(test_pkgconfig_discovery PROPERTIES OUTPUT_NAME chronolog-test-discovery-pkgconfig) diff --git a/test/integration/package-discovery/RunPackageDiscoveryCMake.cmake b/tests/integration/package-discovery/RunPackageDiscoveryCMake.cmake similarity index 100% rename from test/integration/package-discovery/RunPackageDiscoveryCMake.cmake rename to tests/integration/package-discovery/RunPackageDiscoveryCMake.cmake diff --git a/test/integration/package-discovery/RunPackageDiscoveryPkgConfig.cmake b/tests/integration/package-discovery/RunPackageDiscoveryPkgConfig.cmake similarity index 100% rename from test/integration/package-discovery/RunPackageDiscoveryPkgConfig.cmake rename to tests/integration/package-discovery/RunPackageDiscoveryPkgConfig.cmake diff --git a/test/integration/package-discovery/package_discovery_cmake_test.cpp b/tests/integration/package-discovery/package_discovery_cmake_test.cpp similarity index 100% rename from test/integration/package-discovery/package_discovery_cmake_test.cpp rename to tests/integration/package-discovery/package_discovery_cmake_test.cpp diff --git a/test/integration/package-discovery/package_discovery_pkgconfig_test.cpp b/tests/integration/package-discovery/package_discovery_pkgconfig_test.cpp similarity index 100% rename from test/integration/package-discovery/package_discovery_pkgconfig_test.cpp rename to tests/integration/package-discovery/package_discovery_pkgconfig_test.cpp diff --git a/test/overhead/CMakeLists.txt b/tests/overhead/CMakeLists.txt similarity index 100% rename from test/overhead/CMakeLists.txt rename to tests/overhead/CMakeLists.txt diff --git a/test/overhead/clock/CMakeLists.txt b/tests/overhead/clock/CMakeLists.txt similarity index 100% rename from test/overhead/clock/CMakeLists.txt rename to tests/overhead/clock/CMakeLists.txt diff --git a/test/overhead/clock/clock_cset_shield_test.sh b/tests/overhead/clock/clock_cset_shield_test.sh similarity index 100% rename from test/overhead/clock/clock_cset_shield_test.sh rename to tests/overhead/clock/clock_cset_shield_test.sh diff --git a/test/overhead/clock/clock_high_resolution_test.cpp b/tests/overhead/clock/clock_high_resolution_test.cpp similarity index 100% rename from test/overhead/clock/clock_high_resolution_test.cpp rename to tests/overhead/clock/clock_high_resolution_test.cpp diff --git a/test/overhead/clock/clock_timestamp_collection_test.cpp b/tests/overhead/clock/clock_timestamp_collection_test.cpp similarity index 100% rename from test/overhead/clock/clock_timestamp_collection_test.cpp rename to tests/overhead/clock/clock_timestamp_collection_test.cpp diff --git a/test/overhead/clock/clock_timestamp_collision_test.cpp b/tests/overhead/clock/clock_timestamp_collision_test.cpp similarity index 100% rename from test/overhead/clock/clock_timestamp_collision_test.cpp rename to tests/overhead/clock/clock_timestamp_collision_test.cpp diff --git a/test/overhead/clock/common.h b/tests/overhead/clock/common.h similarity index 67% rename from test/overhead/clock/common.h rename to tests/overhead/clock/common.h index 4fd9f3e84..36e8c8f6b 100644 --- a/test/overhead/clock/common.h +++ b/tests/overhead/clock/common.h @@ -13,22 +13,22 @@ //#define NO_LFENCE //#define NO_MFENCE -#ifdef NO_LFENCE -#define lfence() +#ifdef NO_LFENCE +#define lfence() #else #include -#define lfence() _mm_lfence() +#define lfence() _mm_lfence() #endif -#ifdef NO_MFENCE -#define mfence() +#ifdef NO_MFENCE +#define mfence() #else #include -#define mfence() _mm_mfence() +#define mfence() _mm_mfence() #endif #define TEST_REPS (10000 * 1000) @@ -49,7 +49,8 @@ double cpu_base_frequency() } } double freq = 3.8; // base clock of Ryzen 7 5700G is 3.8GHz - std::cout << "[Common] Fail to get CPU freq from /proc/cpuinfo, returning hard-coded freq " << freq << " GHz" << std::endl; + std::cout << "[Common] Fail to get CPU freq from /proc/cpuinfo, returning hard-coded freq " << freq << " GHz" + << std::endl; return freq; } @@ -72,7 +73,7 @@ static long diff_in_ns(struct timespec t1, struct timespec t2) } template -void printVectorStats(std::vector v) +void printVectorStats(std::vector v) { T min = *std::min_element(v.begin(), v.end()); T max = *std::max_element(v.begin(), v.end()); @@ -82,16 +83,16 @@ void printVectorStats(std::vector v) double sum = std::accumulate(v.begin(), v.end(), 0.0); double mean = sum / v.size(); - std::vector diff(v.size()); - std::transform(v.begin(), v.end(), diff.begin(), [mean](double x) - { return x - mean; }); + std::vector diff(v.size()); + std::transform(v.begin(), v.end(), diff.begin(), [mean](double x) { return x - mean; }); double sq_sum = std::inner_product(diff.begin(), diff.end(), diff.begin(), 0.0); double stdev = std::sqrt(sq_sum / v.size()); - std::cout << "[Common] Min/Max/Mean/Median/Stddev (ns)\n" << min << "\t" << max << "\t" << mean << "\t" << median << "\t" << stdev << std::endl; + std::cout << "[Common] Min/Max/Mean/Median/Stddev (ns)\n" + << min << "\t" << max << "\t" << mean << "\t" << median << "\t" << stdev << std::endl; } template -void writeVectorStatsToFile(std::vector v) +void writeVectorStatsToFile(std::vector v) { sort(v.begin(), v.end()); std::ofstream fout("data.csv"); @@ -106,15 +107,17 @@ void writeVectorStatsToFile(std::vector v) // T q4 = v.at(TEST_REPS * 0.999); T whishi = v.at(TEST_REPS * 0.9999 - 1); T max = v.at(TEST_REPS - 2); - fout << min << "\t" << whislo << "\t" << q1 << "\t" + fout << min << "\t" << whislo << "\t" << q1 + << "\t" // << q2 << "\t" - << med << "\t" << q3 << "\t" + << med << "\t" << q3 + << "\t" // << q4 << "\t" << whishi << "\t" << max << std::endl; } template -void writeListToFile(T*clock_list, int len, std::string &fname) +void writeListToFile(T* clock_list, int len, std::string& fname) { std::ofstream outFile(fname, std::ios::trunc); if(!outFile.is_open()) @@ -123,16 +126,13 @@ void writeListToFile(T*clock_list, int len, std::string &fname) exit(1); } - for(int i = 0; i < len; i++) - { - outFile << *(clock_list + i) << std::endl; - } + for(int i = 0; i < len; i++) { outFile << *(clock_list + i) << std::endl; } outFile.close(); } template -void writeVecToFile(std::vector &clock_list, int len, std::string &fname) +void writeVecToFile(std::vector& clock_list, int len, std::string& fname) { std::ofstream outFile(fname, std::ios::trunc); if(!outFile.is_open()) @@ -141,10 +141,7 @@ void writeVecToFile(std::vector &clock_list, int len, std::string &fname) exit(1); } - for(int i = 0; i < len; i++) - { - outFile << clock_list[i] << std::endl; - } + for(int i = 0; i < len; i++) { outFile << clock_list[i] << std::endl; } outFile.close(); } @@ -163,9 +160,9 @@ inline void emulate_event_interval(int sleep_time) } } -unsigned long long*collect_w_rdtsc(int test_reps, int sleep_time = 0) +unsigned long long* collect_w_rdtsc(int test_reps, int sleep_time = 0) { - unsigned long long*clock_list = (unsigned long long*)malloc((test_reps + 1) * sizeof(unsigned long long)); + unsigned long long* clock_list = (unsigned long long*)malloc((test_reps + 1) * sizeof(unsigned long long)); for(int i = 0; i < test_reps + 1; i++) { mfence(); @@ -177,9 +174,9 @@ unsigned long long*collect_w_rdtsc(int test_reps, int sleep_time = 0) return clock_list; } -unsigned long long*collect_w_rdtscp(int test_reps, unsigned int proc_id, int sleep_time = 0) +unsigned long long* collect_w_rdtscp(int test_reps, unsigned int proc_id, int sleep_time = 0) { - unsigned long long*clock_list = (unsigned long long*)malloc((test_reps + 1) * sizeof(unsigned long long)); + unsigned long long* clock_list = (unsigned long long*)malloc((test_reps + 1) * sizeof(unsigned long long)); for(int i = 0; i < test_reps + 1; i++) { clock_list[i] = __builtin_ia32_rdtscp(&proc_id); @@ -190,9 +187,9 @@ unsigned long long*collect_w_rdtscp(int test_reps, unsigned int proc_id, int sle return clock_list; } -struct timespec*collect_w_clock_gettime_tai(int test_reps, int sleep_time = 0) +struct timespec* collect_w_clock_gettime_tai(int test_reps, int sleep_time = 0) { - struct timespec*clock_list = (struct timespec*)malloc((test_reps + 1) * sizeof(struct timespec)); + struct timespec* clock_list = (struct timespec*)malloc((test_reps + 1) * sizeof(struct timespec)); for(int i = 0; i < test_reps + 1; i++) { mfence(); @@ -204,9 +201,9 @@ struct timespec*collect_w_clock_gettime_tai(int test_reps, int sleep_time = 0) return clock_list; } -struct timespec*collect_w_clock_gettime_mono(int test_reps, int sleep_time = 0) +struct timespec* collect_w_clock_gettime_mono(int test_reps, int sleep_time = 0) { - struct timespec*clock_list = (struct timespec*)malloc((test_reps + 1) * sizeof(struct timespec)); + struct timespec* clock_list = (struct timespec*)malloc((test_reps + 1) * sizeof(struct timespec)); for(int i = 0; i < test_reps + 1; i++) { mfence(); @@ -218,9 +215,9 @@ struct timespec*collect_w_clock_gettime_mono(int test_reps, int sleep_time = 0) return clock_list; } -struct timespec*collect_w_clock_gettime_mono_raw(int test_reps, int sleep_time = 0) +struct timespec* collect_w_clock_gettime_mono_raw(int test_reps, int sleep_time = 0) { - struct timespec*clock_list = (struct timespec*)malloc((test_reps + 1) * sizeof(struct timespec)); + struct timespec* clock_list = (struct timespec*)malloc((test_reps + 1) * sizeof(struct timespec)); for(int i = 0; i < test_reps + 1; i++) { mfence(); @@ -232,9 +229,9 @@ struct timespec*collect_w_clock_gettime_mono_raw(int test_reps, int sleep_time = return clock_list; } -my_clock::time_point*collect_w_std_high_res_clock_alap(int test_reps, int sleep_time = 0) +my_clock::time_point* collect_w_std_high_res_clock_alap(int test_reps, int sleep_time = 0) { - my_clock::time_point*clock_list = (my_clock::time_point*)malloc((test_reps + 1) * sizeof(my_clock::time_point)); + my_clock::time_point* clock_list = (my_clock::time_point*)malloc((test_reps + 1) * sizeof(my_clock::time_point)); for(int i = 0; i < test_reps; i++) { mfence(); @@ -246,9 +243,9 @@ my_clock::time_point*collect_w_std_high_res_clock_alap(int test_reps, int sleep_ return clock_list; } -unsigned long long*collect_w_std_high_res_clock_imme(int test_reps, int sleep_time = 0) +unsigned long long* collect_w_std_high_res_clock_imme(int test_reps, int sleep_time = 0) { - unsigned long long*clock_list = (unsigned long long*)malloc((test_reps + 1) * sizeof(unsigned long long)); + unsigned long long* clock_list = (unsigned long long*)malloc((test_reps + 1) * sizeof(unsigned long long)); for(int i = 0; i < test_reps; i++) { mfence(); @@ -260,14 +257,13 @@ unsigned long long*collect_w_std_high_res_clock_imme(int test_reps, int sleep_ti return clock_list; } -void convert_ull_to_double_vec(unsigned long long*clock_list, int len, std::vector &duration_list) +void convert_ull_to_double_vec(unsigned long long* clock_list, int len, std::vector& duration_list) { duration_list.reserve(len); - for(int i = 0; i < len; i++) - duration_list.push_back((clock_list[i + 1] - clock_list[i]) * CPU_GHZ_INV); + for(int i = 0; i < len; i++) duration_list.push_back((clock_list[i + 1] - clock_list[i]) * CPU_GHZ_INV); } -void convert_timespec_to_ull_vec(struct timespec*clock_list, int len, std::vector &duration_list) +void convert_timespec_to_ull_vec(struct timespec* clock_list, int len, std::vector& duration_list) { duration_list.reserve(len); for(int i = 0; i < len; i++) @@ -278,9 +274,9 @@ void convert_timespec_to_ull_vec(struct timespec*clock_list, int len, std::vecto } } -void convert_time_point_to_double_vec(my_clock::time_point*clock_list, int len, std::vector &duration_list) +void convert_time_point_to_double_vec(my_clock::time_point* clock_list, int len, std::vector& duration_list) { - std::vector > duration_list_nanosecond; + std::vector> duration_list_nanosecond; duration_list_nanosecond.reserve(len); duration_list.reserve(len); for(int i = 0; i < len; i++) @@ -298,7 +294,7 @@ void convert_time_point_to_double_vec(my_clock::time_point*clock_list, int len, } template -void printStatLine(std::ofstream &fout, std::vector &duration_list) +void printStatLine(std::ofstream& fout, std::vector& duration_list) { int len = duration_list.size(); fout << duration_list.at(0) << "\t" << duration_list.at(len * 0.001) << "\t" << duration_list.at(len * 0.01) << "\t" diff --git a/test/overhead/kmod/Makefile b/tests/overhead/kmod/Makefile similarity index 100% rename from test/overhead/kmod/Makefile rename to tests/overhead/kmod/Makefile diff --git a/tests/overhead/kmod/kmod_rdtsc_rdtscp.c b/tests/overhead/kmod/kmod_rdtsc_rdtscp.c new file mode 100644 index 000000000..2e463bcb1 --- /dev/null +++ b/tests/overhead/kmod/kmod_rdtsc_rdtscp.c @@ -0,0 +1,293 @@ +// +// Created by kfeng on 12/24/21. +// + +#include +#include +#include +#include +#include +#include +#include + +MODULE_LICENSE("Dual BSD/GPL"); + +#define SIZE_OF_STAT 100000 +#define BOUND_OF_LOOP 1000 +#define UINT64_MAX (18446744073709551615ULL) + +void inline Filltimes(uint64_t** times) +{ + unsigned long flags; + int i, j; + uint64_t start, end; + unsigned cycles_low, cycles_high, cycles_low1, cycles_high1; + volatile int variable = 0; + + asm volatile("CPUID\n\t" + "RDTSC\n\t" + "mov %%edx, %0\n\t" + "mov %%eax, %1\n\t" + : "=r"(cycles_high), "=r"(cycles_low)::"%rax", "%rbx", "%rcx", "%rdx"); + asm volatile("RDTSCP\n\t" + "mov %%edx, %0\n\t" + "mov %%eax, %1\n\t" + "CPUID\n\t" + : "=r"(cycles_high1), "=r"(cycles_low1)::"%rax", "%rbx", "%rcx", "%rdx"); + asm volatile("CPUID\n\t" + "RDTSC\n\t" + "mov %%edx, %0\n\t" + "mov %%eax, %1\n\t" + : "=r"(cycles_high), "=r"(cycles_low)::"%rax", "%rbx", "%rcx", "%rdx"); + asm volatile("RDTSCP\n\t" + "mov %%edx, %0\n\t" + "mov %%eax, %1\n\t" + "CPUID\n\t" + : "=r"(cycles_high1), "=r"(cycles_low1)::"%rax", "%rbx", "%rcx", "%rdx"); + + for(j = 0; j < BOUND_OF_LOOP; j++) + { + for(i = 0; i < SIZE_OF_STAT; i++) + { + + variable = 0; + + preempt_disable(); + + raw_local_irq_save(flags); + + asm volatile("RDTSCP\n\t" /* read the clock */ + "LFENCE\n\t" /* serialize */ + "mov %%edx, %0\n\t" + "mov %%eax, %1\n\t" + : "=r"(cycles_high), "=r"(cycles_low)::"%rax", "%rbx", "%rcx", "%rdx"); + /*call the function to measure here*/ + asm volatile("RDTSCP\n\t" /* read the clock */ + "LFENCE\n\t" /* serialize */ + "mov %%edx, %0\n\t" + "mov %%eax, %1\n\t" + : "=r"(cycles_high1), "=r"(cycles_low1)::"%rax", "%rbx", "%rcx", "%rdx"); + + raw_local_irq_restore(flags); + + preempt_enable(); + + start = (((uint64_t)cycles_high << 32) | cycles_low); + + end = (((uint64_t)cycles_high1 << 32) | cycles_low1); + + if((end - start) < 0) + { + printk(KERN_ERR "\n\n>>>>>>>>>>>>>>CRITICAL ERROR IN TAKING THE TIME!!!!!!\n" + "loop( % d) stat( % d) start = %llu, end = %llu, variable = %u\n", + j, + i, + start, + end, + variable); + times[j][i] = 0; + } + else + { + times[j][i] = end - start; + } + } + } + return; +} + +uint64_t var_calc(uint64_t* inputs, int size) +{ + int i; + uint64_t acc = 0, previous = 0, temp_var = 0; + for(i = 0; i < size; i++) + { + if(acc < previous) + goto overflow; + previous = acc; + acc += inputs[i]; + } + acc = acc * acc; + if(acc < previous) + goto overflow; + previous = 0; + for(i = 0; i < size; i++) + { + if(temp_var < previous) + goto overflow; + previous = temp_var; + temp_var += (inputs[i] * inputs[i]); + } + temp_var = temp_var * size; + if(temp_var < previous) + goto overflow; + temp_var = (temp_var - acc) / (((uint64_t)(size)) * ((uint64_t)(size))); + return (temp_var); +overflow: + printk(KERN_ERR "\n\n>>>>>>>>>>>>>>CRITICAL OVERFLOW ERROR IN var_calc!!!!!!\n\n"); + return -EINVAL; +} + +uint64_t mean_calc(uint64_t* inputs, int size) +{ + int i; + uint64_t acc = 0, previous = 0, temp_var = 0; + for(i = 0; i < size; i++) + { + if(acc < previous) + goto overflow; + previous = acc; + acc += inputs[i]; + } + temp_var = acc / size; + return (temp_var); +overflow: + printk(KERN_ERR "\n\n>>>>>>>>>>>>>>CRITICAL OVERFLOW ERROR IN mean_calc!!!!!!\n\n"); + return -EINVAL; +} + +uint64_t dev_sq_calc(uint64_t* inputs, int size) +{ + int i; + uint64_t diff_sq_acc = 0, previous = 0; + for(i = 0; i < size; i++) + { + if(diff_sq_acc < previous) + goto overflow; + previous = diff_sq_acc; + diff_sq_acc += (inputs[i] * inputs[i]); /* assume inputs is an array of absolute diff, not raw values */ + } + diff_sq_acc = diff_sq_acc / size; + return (diff_sq_acc); +overflow: + printk(KERN_ERR "\n\n>>>>>>>>>>>>>>CRITICAL OVERFLOW ERROR IN stdev_calc!!!!!!\n\n"); + return -EINVAL; +} + +static int __init + +kernel_clock_test_start(void) +{ + int i = 0, j = 0, spurious = 0, k = 0; + uint64_t** times; + uint64_t* variances; + uint64_t* min_values; + uint64_t max_dev = 0, min_time = 0, max_time = 0, prev_min = 0, tot_var = 0, max_dev_all = 0, var_of_vars = 0, + var_of_mins = 0; + uint64_t overall_min = 0, overall_max = 0, overall_mean = 0, local_mean_acc = 0; + uint64_t overall_dev_sq = 0, local_dev_sq = 0; + + printk(KERN_INFO "Loading kernel_clock_test module...\n"); + times = kmalloc(BOUND_OF_LOOP * sizeof(uint64_t*), GFP_KERNEL); + if(!times) + { + printk(KERN_ERR "unable to allocate memory for times\n"); + return 0; + } + + for(j = 0; j < BOUND_OF_LOOP; j++) + { + times[j] = kmalloc(SIZE_OF_STAT * sizeof(uint64_t), GFP_KERNEL); + if(!times[j]) + { + printk(KERN_ERR "unable to allocate memory for times[%d]\n", j); + for(k = 0; k < j; k++) kfree(times[k]); + return 0; + } + } + + variances = kmalloc(BOUND_OF_LOOP * sizeof(uint64_t), GFP_KERNEL); + if(!variances) + { + printk(KERN_ERR "unable to allocate memory for variances\n"); + return 0; + } + + min_values = kmalloc(BOUND_OF_LOOP * sizeof(uint64_t), GFP_KERNEL); + if(!min_values) + { + printk(KERN_ERR "unable to allocate memory for min_values\n"); + return 0; + } + + Filltimes(times); + + for(j = 0; j < BOUND_OF_LOOP; j++) + { + + max_dev = 0; + min_time = 0; + max_time = 0; + + for(i = 0; i < SIZE_OF_STAT; i++) + { + if((min_time == 0) || (min_time > times[j][i])) + min_time = times[j][i]; + if(max_time < times[j][i]) + max_time = times[j][i]; + if((overall_min == 0) || (overall_min > times[j][i])) + overall_min = times[j][i]; + if(overall_max < times[j][i]) + overall_max = times[j][i]; + } + + max_dev = max_time - min_time; + min_values[j] = min_time; + + if((prev_min != 0) && (prev_min > min_time)) + spurious++; + if(max_dev > max_dev_all) + max_dev_all = max_dev; + + variances[j] = var_calc(times[j], SIZE_OF_STAT); + tot_var += variances[j]; + + printk(KERN_ERR "loop_size:%d >>>> variance(cycles): %llu; max_deviation: %llu; min time: %llu", + j, + variances[j], + max_dev, + min_time); + prev_min = min_time; + } + + var_of_vars = var_calc(variances, BOUND_OF_LOOP); + var_of_mins = var_calc(min_values, BOUND_OF_LOOP); + + printk(KERN_ERR "\n total number of spurious min values = %d", spurious); + printk(KERN_ERR "\n total variance = %llu", (tot_var / BOUND_OF_LOOP)); + printk(KERN_ERR "\n absolute max deviation = %llu", max_dev_all); + printk(KERN_ERR "\n variance of variances = %llu", var_of_vars); + printk(KERN_ERR "\n variance of minimum values = %llu", var_of_mins); + + for(j = 0; j < BOUND_OF_LOOP; j++) { local_mean_acc += mean_calc(times[j], SIZE_OF_STAT); } + overall_mean = local_mean_acc / BOUND_OF_LOOP; + for(j = 0; j < BOUND_OF_LOOP; j++) + { + for(i = 0; i < SIZE_OF_STAT; i++) { times[j][i] = abs(times[j][i] - overall_mean); } + local_dev_sq = dev_sq_calc(times[j], SIZE_OF_STAT); + overall_dev_sq += local_dev_sq; + printk(KERN_ERR "loop_size:%d >>>> dev square(cycles): %llu", j, local_dev_sq); + } + overall_dev_sq = overall_dev_sq / BOUND_OF_LOOP; + + printk(KERN_ERR "\n overall minimum = %llu", overall_min); + printk(KERN_ERR "\n overall maximum = %llu", overall_max); + printk(KERN_ERR "\n overall mean = %llu", overall_mean); + printk(KERN_ERR "\n overall stdev = %llu", overall_dev_sq); + + for(j = 0; j < BOUND_OF_LOOP; j++) { kfree(times[j]); } + kfree(times); + kfree(variances); + kfree(min_values); + return 0; +} + +static void __exit + +kernel_clock_test_end(void) +{ + printk(KERN_INFO "Goodbye Mr.\n"); +} + +module_init(kernel_clock_test_start); +module_exit(kernel_clock_test_end); \ No newline at end of file diff --git a/test/overhead/lock/CMakeLists.txt b/tests/overhead/lock/CMakeLists.txt similarity index 100% rename from test/overhead/lock/CMakeLists.txt rename to tests/overhead/lock/CMakeLists.txt diff --git a/test/overhead/lock/lock_overhead_test.cpp b/tests/overhead/lock/lock_overhead_test.cpp similarity index 71% rename from test/overhead/lock/lock_overhead_test.cpp rename to tests/overhead/lock/lock_overhead_test.cpp index 1bb657089..b54826931 100644 --- a/test/overhead/lock/lock_overhead_test.cpp +++ b/tests/overhead/lock/lock_overhead_test.cpp @@ -11,27 +11,31 @@ #include #include -#ifdef NO_LFENCE -#define lfence() +#ifdef NO_LFENCE +#define lfence() #else #include -#define lfence() _mm_lfence() +#define lfence() _mm_lfence() #endif -#ifdef NO_MFENCE -#define mfence() +#ifdef NO_MFENCE +#define mfence() #else #include -#define mfence() _mm_mfence() +#define mfence() _mm_mfence() #endif enum test_mode { - NO_SYNC = 0, MUTEX = 1, ATOMIC = 2, TSC = 3, CLOCK_GETTIME = 4 + NO_SYNC = 0, + MUTEX = 1, + ATOMIC = 2, + TSC = 3, + CLOCK_GETTIME = 4 }; #define TEST_DURATION 10 @@ -45,7 +49,7 @@ atomic_uint64_t atomic_event_counter(0); mutex counter_mutex; mutex print_mutex; __volatile__ bool stop = false; -vector access_time_list; +vector access_time_list; mutex access_time_list_mutex; uint64_t read_tsc() @@ -67,7 +71,7 @@ void thread_func() { if(test_mode == MUTEX) { - lock_guard guard(counter_mutex); + lock_guard guard(counter_mutex); event_counter++; } else if(test_mode == ATOMIC) @@ -86,41 +90,37 @@ void thread_func() } this_thread::sleep_for(chrono::milliseconds(100)); - lock_guard print_guard(print_mutex); + lock_guard print_guard(print_mutex); double access_time = TEST_DURATION * 1000000000.0 / access_count; - lock_guard time_guard(access_time_list_mutex); + lock_guard time_guard(access_time_list_mutex); access_time_list.emplace_back(access_time); } -int main(int argc, char**argv) +int main(int argc, char** argv) { if(argc < 3) { - cout << "Usage: ./sync_overhead_test mode #threads" << endl << "mode = 0: no sync" << "mode = 1: use std::mutex" - << endl << "mode = 2: use std::atomic" << endl << "mode = 3: use TSC" << endl + cout << "Usage: ./sync_overhead_test mode #threads" << endl + << "mode = 0: no sync" << "mode = 1: use std::mutex" << endl + << "mode = 2: use std::atomic" << endl + << "mode = 3: use TSC" << endl << "mode = 4: use clock_gettime" << endl; exit(-1); } test_mode = atoi(argv[1]); int num_thrds = atoi(argv[2]); - thread*thrds = new thread[num_thrds]; - for(int i = 0; i < num_thrds; i++) - { - thrds[i] = thread(thread_func); - } + thread* thrds = new thread[num_thrds]; + for(int i = 0; i < num_thrds; i++) { thrds[i] = thread(thread_func); } this_thread::sleep_for(std::chrono::seconds(TEST_DURATION)); stop = true; - for(int i = 0; i < num_thrds; i++) - { - thrds[i].join(); - } + for(int i = 0; i < num_thrds; i++) { thrds[i].join(); } double sum = accumulate(access_time_list.begin(), access_time_list.end(), 0.0); double ave_access_time = sum / access_time_list.size(); cout << "Average access time across " << num_thrds << " thread(s): " << ave_access_time << " ns" << endl; - delete[]thrds; + delete[] thrds; } \ No newline at end of file diff --git a/test/synthetic_workload/distributed_syslog.sh b/tests/synthetic_workload/distributed_syslog.sh similarity index 100% rename from test/synthetic_workload/distributed_syslog.sh rename to tests/synthetic_workload/distributed_syslog.sh diff --git a/test/synthetic_workload/perf_test.sh b/tests/synthetic_workload/perf_test.sh similarity index 100% rename from test/synthetic_workload/perf_test.sh rename to tests/synthetic_workload/perf_test.sh diff --git a/test/system/fidelity_test_01.py b/tests/system/fidelity_test_01.py similarity index 100% rename from test/system/fidelity_test_01.py rename to tests/system/fidelity_test_01.py diff --git a/test/system/fidelity_test_02.py b/tests/system/fidelity_test_02.py similarity index 100% rename from test/system/fidelity_test_02.py rename to tests/system/fidelity_test_02.py diff --git a/test/system/fidelity_test_03.py b/tests/system/fidelity_test_03.py similarity index 100% rename from test/system/fidelity_test_03.py rename to tests/system/fidelity_test_03.py diff --git a/test/system/fidelity_test_all.py b/tests/system/fidelity_test_all.py similarity index 100% rename from test/system/fidelity_test_all.py rename to tests/system/fidelity_test_all.py diff --git a/test/unit/CMakeLists.txt b/tests/unit/CMakeLists.txt similarity index 100% rename from test/unit/CMakeLists.txt rename to tests/unit/CMakeLists.txt diff --git a/test/unit/chrono-common/CMakeLists.txt b/tests/unit/chrono-common/CMakeLists.txt similarity index 89% rename from test/unit/chrono-common/CMakeLists.txt rename to tests/unit/chrono-common/CMakeLists.txt index b1dd773c4..47ede0bbe 100644 --- a/test/unit/chrono-common/CMakeLists.txt +++ b/tests/unit/chrono-common/CMakeLists.txt @@ -14,8 +14,8 @@ add_executable(story_chunk_test ) target_include_directories(story_chunk_test PRIVATE - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(story_chunk_test PRIVATE @@ -36,8 +36,8 @@ add_executable(story_pipeline_test ) target_include_directories(story_pipeline_test PRIVATE - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(story_pipeline_test PRIVATE @@ -61,8 +61,8 @@ add_executable(extraction_chain_test ) target_include_directories(extraction_chain_test PRIVATE - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(extraction_chain_test PRIVATE @@ -90,8 +90,8 @@ add_executable(chunk_consumer_service_test ) target_include_directories(chunk_consumer_service_test PRIVATE - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(chunk_consumer_service_test PRIVATE diff --git a/test/unit/chrono-common/chrono_common_chunk_consumer_service_test.cpp b/tests/unit/chrono-common/chrono_common_chunk_consumer_service_test.cpp similarity index 100% rename from test/unit/chrono-common/chrono_common_chunk_consumer_service_test.cpp rename to tests/unit/chrono-common/chrono_common_chunk_consumer_service_test.cpp diff --git a/test/unit/chrono-common/chrono_common_extraction_chain_test.cpp b/tests/unit/chrono-common/chrono_common_extraction_chain_test.cpp similarity index 100% rename from test/unit/chrono-common/chrono_common_extraction_chain_test.cpp rename to tests/unit/chrono-common/chrono_common_extraction_chain_test.cpp diff --git a/test/unit/chrono-common/chrono_common_story_chunk_test.cpp b/tests/unit/chrono-common/chrono_common_story_chunk_test.cpp similarity index 100% rename from test/unit/chrono-common/chrono_common_story_chunk_test.cpp rename to tests/unit/chrono-common/chrono_common_story_chunk_test.cpp diff --git a/test/unit/chrono-common/chrono_common_story_pipeline_test.cpp b/tests/unit/chrono-common/chrono_common_story_pipeline_test.cpp similarity index 100% rename from test/unit/chrono-common/chrono_common_story_pipeline_test.cpp rename to tests/unit/chrono-common/chrono_common_story_pipeline_test.cpp diff --git a/test/unit/chrono-player/CMakeLists.txt b/tests/unit/chrono-player/CMakeLists.txt similarity index 77% rename from test/unit/chrono-player/CMakeLists.txt rename to tests/unit/chrono-player/CMakeLists.txt index 744571842..afd485f5d 100644 --- a/test/unit/chrono-player/CMakeLists.txt +++ b/tests/unit/chrono-player/CMakeLists.txt @@ -9,13 +9,13 @@ find_package(HDF5 REQUIRED COMPONENTS C CXX) add_executable(transfer_agent_test chrono_player_transfer_agent_test.cpp - ${CMAKE_SOURCE_DIR}/ChronoPlayer/src/StoryChunkTransferAgent.cpp + ${CMAKE_SOURCE_DIR}/src/chrono-player/src/StoryChunkTransferAgent.cpp ) target_include_directories(transfer_agent_test PRIVATE - ${CMAKE_SOURCE_DIR}/ChronoPlayer/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-player/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(transfer_agent_test PRIVATE @@ -40,14 +40,14 @@ endif() add_executable(playback_service_test chrono_player_playback_service_test.cpp - ${CMAKE_SOURCE_DIR}/ChronoPlayer/src/PlaybackService.cpp - ${CMAKE_SOURCE_DIR}/ChronoPlayer/src/StoryChunkTransferAgent.cpp + ${CMAKE_SOURCE_DIR}/src/chrono-player/src/PlaybackService.cpp + ${CMAKE_SOURCE_DIR}/src/chrono-player/src/StoryChunkTransferAgent.cpp ) target_include_directories(playback_service_test PRIVATE - ${CMAKE_SOURCE_DIR}/ChronoPlayer/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-player/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_libraries(playback_service_test PRIVATE @@ -72,13 +72,13 @@ endif() add_executable(hdf5_archive_reader_test chrono_player_hdf5_archive_reader_test.cpp - ${CMAKE_SOURCE_DIR}/ChronoPlayer/src/HDF5ArchiveReadingAgent.cpp + ${CMAKE_SOURCE_DIR}/src/chrono-player/src/HDF5ArchiveReadingAgent.cpp ) target_include_directories(hdf5_archive_reader_test PRIVATE - ${CMAKE_SOURCE_DIR}/ChronoPlayer/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-player/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_directories(hdf5_archive_reader_test PRIVATE ${HDF5_LIBRARY_DIRS}) @@ -104,14 +104,14 @@ endif() add_executable(fs_monitoring_test chrono_player_fs_monitoring_test.cpp - ${CMAKE_SOURCE_DIR}/ChronoPlayer/src/HDF5ArchiveReadingAgent.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/src/chrono-player/src/HDF5ArchiveReadingAgent.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_include_directories(fs_monitoring_test PRIVATE - ${CMAKE_SOURCE_DIR}/ChronoPlayer/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-player/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ) target_link_directories(fs_monitoring_test PRIVATE ${HDF5_LIBRARY_DIRS}) diff --git a/test/unit/chrono-player/chrono_player_fs_monitoring_test.cpp b/tests/unit/chrono-player/chrono_player_fs_monitoring_test.cpp similarity index 100% rename from test/unit/chrono-player/chrono_player_fs_monitoring_test.cpp rename to tests/unit/chrono-player/chrono_player_fs_monitoring_test.cpp diff --git a/test/unit/chrono-player/chrono_player_hdf5_archive_reader_test.cpp b/tests/unit/chrono-player/chrono_player_hdf5_archive_reader_test.cpp similarity index 100% rename from test/unit/chrono-player/chrono_player_hdf5_archive_reader_test.cpp rename to tests/unit/chrono-player/chrono_player_hdf5_archive_reader_test.cpp diff --git a/test/unit/chrono-player/chrono_player_playback_service_test.cpp b/tests/unit/chrono-player/chrono_player_playback_service_test.cpp similarity index 100% rename from test/unit/chrono-player/chrono_player_playback_service_test.cpp rename to tests/unit/chrono-player/chrono_player_playback_service_test.cpp diff --git a/test/unit/chrono-player/chrono_player_transfer_agent_test.cpp b/tests/unit/chrono-player/chrono_player_transfer_agent_test.cpp similarity index 100% rename from test/unit/chrono-player/chrono_player_transfer_agent_test.cpp rename to tests/unit/chrono-player/chrono_player_transfer_agent_test.cpp diff --git a/test/unit/chrono-store/CMakeLists.txt b/tests/unit/chrono-store/CMakeLists.txt similarity index 84% rename from test/unit/chrono-store/CMakeLists.txt rename to tests/unit/chrono-store/CMakeLists.txt index 351d048fc..c59d02667 100644 --- a/test/unit/chrono-store/CMakeLists.txt +++ b/tests/unit/chrono-store/CMakeLists.txt @@ -14,14 +14,14 @@ add_executable(hdf5_archiver_test ${CMAKE_SOURCE_DIR}/ChronoStore/src/StoryWriter.cpp ${CMAKE_SOURCE_DIR}/ChronoStore/include/StoryReader.h ${CMAKE_SOURCE_DIR}/ChronoStore/src/StoryReader.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_include_directories(hdf5_archiver_test PRIVATE ${CMAKE_SOURCE_DIR}/ChronoStore/include - ${CMAKE_SOURCE_DIR}/ChronoKeeper/include - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-keeper/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ${HDF5_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR} ) @@ -47,12 +47,12 @@ endif() add_executable(cmp_vlen_bytes_vs_blob_map chrono_store_vlen_bytes_vs_blob_map_test.cpp - ${CMAKE_SOURCE_DIR}/Client/cpp/src/chrono_monitor.cpp + ${CMAKE_SOURCE_DIR}/client/cpp/src/chrono_monitor.cpp ) target_include_directories(cmp_vlen_bytes_vs_blob_map PRIVATE - ${CMAKE_SOURCE_DIR}/Client/cpp/include - ${CMAKE_SOURCE_DIR}/chrono_common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include ) target_link_libraries(cmp_vlen_bytes_vs_blob_map PRIVATE diff --git a/test/unit/chrono-store/chrono_store_hdf5_archiver_test.cpp b/tests/unit/chrono-store/chrono_store_hdf5_archiver_test.cpp similarity index 100% rename from test/unit/chrono-store/chrono_store_hdf5_archiver_test.cpp rename to tests/unit/chrono-store/chrono_store_hdf5_archiver_test.cpp diff --git a/test/unit/chrono-store/chrono_store_vlen_bytes_vs_blob_map_test.cpp b/tests/unit/chrono-store/chrono_store_vlen_bytes_vs_blob_map_test.cpp similarity index 100% rename from test/unit/chrono-store/chrono_store_vlen_bytes_vs_blob_map_test.cpp rename to tests/unit/chrono-store/chrono_store_vlen_bytes_vs_blob_map_test.cpp diff --git a/test/unit/chrono-store/story_chunk_test_utils.h b/tests/unit/chrono-store/story_chunk_test_utils.h similarity index 100% rename from test/unit/chrono-store/story_chunk_test_utils.h rename to tests/unit/chrono-store/story_chunk_test_utils.h diff --git a/test/unit/chronokvs/CMakeLists.txt b/tests/unit/chronokvs/CMakeLists.txt similarity index 93% rename from test/unit/chronokvs/CMakeLists.txt rename to tests/unit/chronokvs/CMakeLists.txt index 9407c1d34..cc6d56849 100644 --- a/test/unit/chronokvs/CMakeLists.txt +++ b/tests/unit/chronokvs/CMakeLists.txt @@ -11,7 +11,7 @@ add_executable(chronokvs_logger_test ) target_include_directories(chronokvs_logger_test PRIVATE - ${CMAKE_SOURCE_DIR}/Plugins/chronokvs/include + ${CMAKE_SOURCE_DIR}/plugins/chrono-kvs/include ) target_link_libraries(chronokvs_logger_test PRIVATE diff --git a/test/unit/chronokvs/chronokvs_logger_test.cpp b/tests/unit/chronokvs/chronokvs_logger_test.cpp similarity index 100% rename from test/unit/chronokvs/chronokvs_logger_test.cpp rename to tests/unit/chronokvs/chronokvs_logger_test.cpp diff --git a/tools/cli/CMakeLists.txt b/tools/cli/CMakeLists.txt index 5fba6a94a..d145b5bfa 100644 --- a/tools/cli/CMakeLists.txt +++ b/tools/cli/CMakeLists.txt @@ -12,8 +12,8 @@ add_executable(client_admin ) target_include_directories(client_admin PRIVATE - ${CMAKE_SOURCE_DIR}/chrono_common/include - ${CMAKE_SOURCE_DIR}/Client/cpp/include + ${CMAKE_SOURCE_DIR}/src/chrono-common/include + ${CMAKE_SOURCE_DIR}/client/cpp/include ${MPI_INCLUDE_PATH} ${MARGO_INCLUDE_DIRS} ) @@ -35,7 +35,7 @@ set_target_properties(client_admin PROPERTIES ) configure_file( - ${CMAKE_SOURCE_DIR}/default_conf.json.in + ${CMAKE_SOURCE_DIR}/conf/default_conf.json.in ${CMAKE_CURRENT_BINARY_DIR}/default_conf.json COPYONLY )