# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/components.gni")

fuchsia_component("minfs-crash") {
  testonly = true
  manifest = "minfs/meta/crash.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/minfs/bin:minfs-component",
  ]
}

fuchsia_component("minfs-no-crash") {
  testonly = true
  manifest = "minfs/meta/no-crash.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/minfs/bin:minfs-component",
  ]
}

fuchsia_component("fxfs-crash") {
  testonly = true
  manifest = "fxfs/meta/crash.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/fxfs:fxfs_component",
    "//src/storage/fxfs-crypt",
  ]
}

fuchsia_component("fxfs-no-crash") {
  testonly = true
  manifest = "fxfs/meta/no-crash.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/fxfs:fxfs_component",
    "//src/storage/fxfs-crypt",
  ]
}

fuchsia_component("f2fs-crash") {
  testonly = true
  manifest = "f2fs/meta/crash.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/f2fs/bin:f2fs-component",
  ]
}

fuchsia_component("f2fs-no-crash") {
  testonly = true
  manifest = "f2fs/meta/no-crash.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/f2fs/bin:f2fs-component",
  ]
}

fuchsia_component("blobfs-crash") {
  testonly = true
  manifest = "blobfs/meta/crash.cml"
  deps = [
    "blobfs:stressor-bin",
    "//src/storage/blobfs/bin:blobfs-component",
  ]
}

fuchsia_component("blobfs-no-crash") {
  testonly = true
  manifest = "blobfs/meta/no-crash.cml"
  deps = [
    "blobfs:stressor-bin",
    "//src/storage/blobfs/bin:blobfs-component",
  ]
}

fuchsia_component("fvm-no-crash") {
  testonly = true
  manifest = "fvm/meta/no-crash.cml"
  deps = [ "fvm:stressor-bin" ]
}

fuchsia_component("fvm-crash") {
  testonly = true
  manifest = "fvm/meta/crash.cml"
  deps = [ "fvm:stressor-bin" ]
}

fuchsia_component("blobfs-short") {
  testonly = true
  manifest = "blobfs/meta/short.cml"
  deps = [
    "blobfs:stressor-bin",
    "//src/storage/blobfs/bin:blobfs-component",
  ]
}

fuchsia_component("fvm-short") {
  testonly = true
  manifest = "fvm/meta/short.cml"
  deps = [ "fvm:stressor-bin" ]
}

fuchsia_component("minfs-short") {
  testonly = true
  manifest = "minfs/meta/short.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/minfs/bin:minfs-component",
  ]
}

fuchsia_component("fxfs-short") {
  testonly = true
  manifest = "fxfs/meta/short.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/fxfs:fxfs_component",
    "//src/storage/fxfs-crypt",
  ]
}

fuchsia_component("f2fs-short") {
  testonly = true
  manifest = "f2fs/meta/short.cml"
  deps = [
    "genericfs:stressor-bin",
    "//src/storage/f2fs/bin:f2fs-component",
  ]
}

# This test package is designed to run on `core.x64-stress`.
# These bots have a time limit of 23 hours. There are 6 tests
# in this package, each running for exactly 22 hours.
fuchsia_test_package("storage-stress-tests") {
  test_components = [
    ":fvm-crash",
    ":fvm-no-crash",
    ":blobfs-crash",
    ":blobfs-no-crash",
    ":minfs-crash",
    ":minfs-no-crash",
    ":fxfs-crash",
    ":fxfs-no-crash",
    ":f2fs-crash",
    ":f2fs-no-crash",
  ]
  deps = [ "//src/storage/testing:storage_driver_test_realm" ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
    environments = [
      {
        dimensions = {
          device_type = "QEMU"
        }
        tags = [ "stress-tests" ]
      },
    ]
  }
}

# This test package is designed to run a small number of operations on CQ bots.
# This ensures that these tests cannot break due to CL changes.
fuchsia_test_package("storage-stress-tests-short") {
  test_components = [
    ":fvm-short",
    ":blobfs-short",
    ":minfs-short",
    ":fxfs-short",
    ":f2fs-short",
  ]
  deps = [ "//src/storage/testing:storage_driver_test_realm" ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
    environments = [
      {
        dimensions = {
          device_type = "QEMU"
        }
      },
    ]
  }
}

group("stress-tests") {
  testonly = true
  deps = [
    ":storage-stress-tests",
    ":storage-stress-tests-short",
  ]
}
