bolt_port: &bolt_port "7687"
args: &args
  - "--bolt-port"
  - *bolt_port
  - "--memory-limit=1024"
  - "--storage-gc-cycle-sec=180"
  - "--log-level=TRACE"

in_memory_cluster: &in_memory_cluster
  cluster:
    main:
      args: *args
      log_file: "memory-e2e.log"
      setup_queries: []
      validation_queries: []

disk_cluster: &disk_cluster
  cluster:
    main:
      args: *args
      log_file: "memory-e2e.log"
      setup_queries:
        - "STORAGE MODE ON_DISK_TRANSACTIONAL"
      validation_queries: []

args_query_limit: &args_query_limit
  - "--bolt-port"
  - *bolt_port
  - "--storage-gc-cycle-sec=180"
  - "--log-level=TRACE"

in_memory_query_limit_cluster: &in_memory_query_limit_cluster
  cluster:
    main:
      args: *args_query_limit
      log_file: "memory-e2e.log"
      setup_queries: []
      validation_queries: []

args_450_MiB_limit: &args_450_MiB_limit
  - "--bolt-port"
  - *bolt_port
  - "--memory-limit=450"
  - "--storage-gc-cycle-sec=180"
  - "--log-level=INFO"

in_memory_450_MiB_limit_cluster: &in_memory_450_MiB_limit_cluster
  cluster:
    main:
      args: *args_450_MiB_limit
      log_file: "memory-e2e.log"
      setup_queries: []
      validation_queries: []


disk_450_MiB_limit_cluster: &disk_450_MiB_limit_cluster
  cluster:
    main:
      args: *args_450_MiB_limit
      log_file: "memory-e2e.log"
      setup_queries: []
      validation_queries: []


args_global_limit_1024_MiB: &args_global_limit_1024_MiB
  - "--bolt-port"
  - *bolt_port
  - "--storage-gc-cycle-sec=180"
  - "--log-level=INFO"

in_memory_limited_global_limit_cluster: &in_memory_limited_global_limit_cluster
  cluster:
    main:
      args: *args_global_limit_1024_MiB
      log_file: "memory-e2e.log"
      setup_queries: []
      validation_queries: []

workloads:
  - name: "Memory control"
    binary: "tests/e2e/memory/memgraph__e2e__memory__control"
    args: ["--bolt-port", *bolt_port, "--timeout", "180"]
    <<: *in_memory_cluster

  - name: "Memory control multi database"
    binary: "tests/e2e/memory/memgraph__e2e__memory__control"
    args: ["--bolt-port", *bolt_port, "--timeout", "180", "--multi-db", "true"]
    <<: *in_memory_cluster

  - name: "Memory limit for modules upon loading"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc"
    args: ["--bolt-port", *bolt_port, "--timeout", "180"]
    proc: "tests/e2e/memory/procedures/"
    <<: *in_memory_cluster

  - name: "Memory limit for modules upon loading multi database"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc"
    args: ["--bolt-port", *bolt_port, "--timeout", "180", "--multi-db", "true"]
    proc: "tests/e2e/memory/procedures/"
    <<: *in_memory_cluster

  - name: "Memory limit for modules inside a procedure"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc_proc"
    args: ["--bolt-port", *bolt_port, "--timeout", "180"]
    proc: "tests/e2e/memory/procedures/"
    <<: *in_memory_cluster

  - name: "Memory limit for modules inside a procedure multi database"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc_proc"
    args: ["--bolt-port", *bolt_port, "--timeout", "180", "--multi-db", "true"]
    proc: "tests/e2e/memory/procedures/"
    <<: *in_memory_cluster

  - name: "Memory limit for modules upon loading for on-disk storage"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc"
    args: ["--bolt-port", *bolt_port, "--timeout", "180"]
    proc: "tests/e2e/memory/procedures/"
    <<: *disk_cluster

  - name: "Memory limit for modules inside a procedure for on-disk storage"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_global_alloc_proc"
    args: ["--bolt-port", *bolt_port, "--timeout", "180"]
    proc: "tests/e2e/memory/procedures/"
    <<: *disk_cluster

  - name: "Memory control query limit proc"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_query_alloc_proc"
    proc: "tests/e2e/memory/procedures/"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_query_limit_cluster

  - name: "Memory control query limit proc multi thread"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_query_alloc_proc_multi_thread"
    args: ["--bolt-port", *bolt_port, "--timeout", "180"]
    proc: "tests/e2e/memory/procedures/"
    <<: *in_memory_query_limit_cluster

  - name: "Memory control query limit create"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_query_alloc_create"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_query_limit_cluster

  - name: "Memory control query limit create multi thread"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_query_alloc_create_multi_thread"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_query_limit_cluster

  - name: "Memory control for detach delete"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_delete"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_450_MiB_limit_cluster

  - name: "Memory control for detach delete on disk storage"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_delete"
    args: ["--bolt-port", *bolt_port]
    <<: *disk_450_MiB_limit_cluster

  - name: "Memory control for accumulation"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_accumulation"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_450_MiB_limit_cluster

  - name: "Memory control for accumulation on disk storage"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_accumulation"
    args: ["--bolt-port", *bolt_port]
    <<: *disk_450_MiB_limit_cluster

  - name: "Memory control for edge create"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_edge_create"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_450_MiB_limit_cluster

  - name: "Memory control for edge create on disk storage"
    binary: "tests/e2e/memory/memgraph__e2e__memory__limit_edge_create"
    args: ["--bolt-port", *bolt_port]
    <<: *disk_450_MiB_limit_cluster

  - name: "Memory control for create from multi thread proc create"
    binary: "tests/e2e/memory/memgraph__e2e__memory_limit_global_multi_thread_proc_create"
    proc: "tests/e2e/memory/procedures/"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_cluster

  - name: "Memory control for memory limit global thread alloc"
    binary: "tests/e2e/memory/memgraph__e2e__memory_limit_global_thread_alloc_proc"
    proc: "tests/e2e/memory/procedures/"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_cluster

  - name: "Procedure memory control for single procedure"
    binary: "tests/e2e/memory/memgraph__e2e__procedure_memory_limit"
    proc: "tests/e2e/memory/procedures/"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_limited_global_limit_cluster

  - name: "Procedure memory control for multiple procedures"
    binary: "tests/e2e/memory/memgraph__e2e__procedure_memory_limit_multi_proc"
    proc: "tests/e2e/memory/procedures/"
    args: ["--bolt-port", *bolt_port]
    <<: *in_memory_limited_global_limit_cluster
