1. 03 Apr, 2021 1 commit
  2. 30 Mar, 2021 7 commits
  3. 10 Mar, 2021 2 commits
  4. 17 Feb, 2021 1 commit
    • Ramon Nou's avatar
      Resolve "Update copyright year in headers" · bd17441b
      Ramon Nou authored
      This MR deletes the outdated scripts used for managing copyright headers and provides a new one in `scripts/maintainer-tools/copyright-headers`. Also, similarly to before, it also provides a Dockerfile for a `gekkofs/copyright-header` image that encapsulates a version of Osterman's [copyright-header](https://github.com/osterman/copyright-header/) Gem appropriately patched for our needs. Please refer to the README.md file in `scripts/maintainer-tools/copyright-headers` for more details.
      Closes #142
      See merge request !83
  5. 07 Feb, 2021 2 commits
  6. 06 Feb, 2021 3 commits
  7. 28 Jan, 2021 6 commits
    • Ramon Nou's avatar
      Enable coverage information generation and tracking · 8487c78f
      Ramon Nou authored
      This MR enables the generation of code coverage reports for the source code. More specifically, it introduces the following changes:
      - Adds the `gkfs-code-coverage.cmake` CMake script under `{PROJECT_ROOT}/CMake/` and includes it in the project's main `CMakeLists.txt`. This script defines the `GKFS_ENABLE_CODE_COVERAGE` option to control whether code coverage should be enabled when building, as well as the `target_code_coverage()` function to ensure that the appropriate flags are added to a CMake target.
      - Adds `gcovr` to GekkoFS docker build image.
      - Adds a `coverage.sh` script under `{PROJECT_ROOT}/scripts/ci` that provides both a `capture` and a `merge` work modes. This script abstracts away the direct usage of `gcovr` and allows the appropriate generation of coverage reports when running tests **in parallel** in the CI. The script relies on a `.coverage-exclusions` file (also under `{PROJECT_ROOT}/scripts/ci`) to control which paths should be excluded from coverage reporting (e.g. `/usr/include/.*`).
      - Adds a new `report` stage in the CI pipeline that upon completion generates artifacts both for a Cobertura XML and a HTML code coverage reports.
      See merge request hpc/gekkofs!77
    • Alberto Miranda's avatar
      Add coverage badge to README.md · 2c750281
      Alberto Miranda authored
    • Alberto Miranda's avatar
      Enable coverage generation in CI · a49d3294
      Alberto Miranda authored
    • Alberto Miranda's avatar
    • Alberto Miranda's avatar
    • Alberto Miranda's avatar
      Teach CMake to generate coverage reports · 172fe4ce
      Alberto Miranda authored
  8. 18 Dec, 2020 4 commits
    • Marc Vef's avatar
      Merge branch '108-add-path-resolution-tests' into 'master' · 460cabe0
      Marc Vef authored
      Resolve "Add path resolution tests"
      Closes #108
      See merge request !48
    • Ramon Nou's avatar
      Reformat util/integration/gkfs.io files · 7a7f2cd1
      Ramon Nou authored
    • Ramon Nou's avatar
      Added path_resolution test · 554f0e2c
      Ramon Nou authored
    • Alberto Miranda's avatar
      Merge branch '94-remove-exist-check-when-creating-a-file' into 'master' · 28041105
      Alberto Miranda authored
      Optimization of create, stat, and remove operations. The following changes have been made:
      - `gkfs_open()` logic refactored.
      - create: Previously a stat RPC was send before each create to make sure the file doesn't exist. This logic is now implicit in the create operation on the daemon side.
      - `get_metadata()` was used on the client for all stat operation, creating a `shared_ptr` for the `Metadata` object in the process which was not needed. A new function `get_metadata_attr()` was created to only return the metadata binary string, which will only create the metadata object if actually required.
      - Remove logic was separated into two operations: `remove_metadata()` and `remove_data()`. 
      - `gkfs::config::metadata::implicit_data_removal` setting: If `true`, will remove data on the same node during the `remove_metadata()` RPC. This is mainly an optimization, but will be useful for future asynchronous removal implementations.
      Previously, the code path looked like this:
      1. `stat()` to get `size` and `mode`.
      2. Use these fields to determine if data needs to be removed or just metadata.
      3. `remove()` is called which, first, sends a single RPC to the daemon with the metadata. Afterwards, data is removed.
      4. The daemon used one handler for both cases.
      It now looks like this: 
      1. `remove()` is called which, first, sends a single RPC to the daemon with the metadata. Before, removing the metadata, the daemon fetches `mode` and `size`. If `implicit_data_removal` is set as a configuration, the data is removed in this RPC as well. `mode` and `size` are returned to the client.
      2. The client determines if data needs to be removed as well.
      3. If yes, sends a `remove_data()` RPC as it was previously.
      Depends on !66 and !74.
      Closes #94
      See merge request !60
  9. 17 Dec, 2020 4 commits
  10. 14 Dec, 2020 1 commit
  11. 11 Dec, 2020 1 commit
  12. 10 Dec, 2020 5 commits
  13. 09 Dec, 2020 3 commits
    • Alberto Miranda's avatar
      Merge branch '135-make-chunk-computations-constexpr' into 'master' · 838285a9
      Alberto Miranda authored
      Resolve "Make chunk computations constexpr"
      This MR implements the following changes:
      - All arithmetic operations based on block sizes are now constexpr.
      - Add several new functions, also constexpr: is_aligned(),
      is_power_of_2().  - Reimplement log2() to make it faster based on
      compiler builtins.  - Rename functions to avoid depending on the concept
      of chunk (in preparation for more chunk-agnostic code).  - Add
      exhaustive tests for all these functions and enable them in the CI.
      - Rename the gkfs::util namespace to gkfs::utils.  - Create the
      gkfs::utils::arithmetic namespace for all these functions, as well as
      a convenience library/target in CMake for easier testing.
      Fixes #137
      Closes #135
      See merge request !75
    • Alberto Miranda's avatar
    • Alberto Miranda's avatar
      Rename: is_divisible() -> is_aligned() · de873b19
      Alberto Miranda authored