Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 135 additions & 12 deletions src/tests/ftest/soak/harassers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ orterun:
allow_run_as_root: true

# This timeout must be longer than the test_timeout param (+15minutes)
timeout: 24H30M

timeout: 72H30M
setup:
start_servers: true
start_agents: true
Expand Down Expand Up @@ -47,14 +46,12 @@ pool_jobs:
size: 90%
rebuild_timeout: 600
pool_query_timeout: 120
properties: rd_fac:0,space_rb:0

properties: "scrub:timed,scrub_freq:120,space_rb:8"
pool_reserved:
size: 5%
rebuild_timeout: 600
pool_query_timeout: 120
properties: rd_fac:0,space_rb:0

properties: "scrub:timed,scrub_freq:120,space_rb:8"
container:
type: POSIX
properties: cksum:crc16,cksum_size:16384,srv_cksum:on
Expand Down Expand Up @@ -84,13 +81,18 @@ soak_harassers:
# harasser test timeout in hours
single_test_pool: false
test_timeout:
test_soak_online_harassers: 24
test_soak_offline_harassers: 24
test_soak_online_harassers: 72
test_soak_offline_harassers: 72
# maximum timeout for a single job in test in minutes
joblist:
- ior_harasser
- fio_harasser
- mdtest_harasser
#- vpic_harasser
- lammps_harasser
- macsio_harasser
- datamover_harasser
- e3smio_harasser
# one harrasser is run during each pass of soak jobs
harasserlist:
test_soak_offline_harassers:
Expand Down Expand Up @@ -148,8 +150,8 @@ ior_harasser:
- '4k'
segment_count: 1
dfs_oclass:
- ["EC_2P2GX", "RP_3GX"]
- ["EC_4P2GX", "RP_3GX"]
- ["EC_2P2GX"]
- ["EC_4P2GX"]
dfuse:
mount_dir: "/tmp/soak_dfuse_ior"
disable_caching: true
Expand Down Expand Up @@ -186,7 +188,60 @@ fio_harasser:
dfuse:
mount_dir: "/tmp/soak_dfuse_fio/"
disable_caching: true

vpic_harasser:
# Requires opeapi
job_timeout: 20
nodesperjob:
- 1
taskspernode:
- 32
cmdline: "${DAOS_TEST_APP_DIR}/vpic-install/bin/harris.Linux"
api:
- POSIX
- POSIX-LIBIOIL
- POSIX-LIBPIL4DFS
workdir: "/tmp/soak_dfuse_vpic/"
dfuse:
mount_dir: "/tmp/soak_dfuse_vpic/"
disable_caching: true
oclass:
- ["EC_2P1GX", "RP_2GX"]
lammps_harasser:
job_timeout: 55
nodesperjob:
- 8
taskspernode:
- 32
cmdline: "${DAOS_TEST_APP_DIR}/lammps/src/lmp_mpi -i ${DAOS_TEST_APP_DIR}/lammps/bench/in.lj"
api:
- POSIX
- POSIX-LIBIOIL
- POSIX-LIBPIL4DFS
workdir: "/tmp/soak_dfuse_lammps/"
dfuse:
mount_dir: "/tmp/soak_dfuse_lammps/"
disable_caching: true
thread_count: 8
cores: '0-7'
oclass:
- ["EC_2P1GX", "RP_2GX"]
e3smio_harasser:
job_timeout: 20
nodesperjob:
- 4
taskspernode:
- 32
cmdline: "e3sm_io -r 10 -o can_I_out.h5 -a hdf5 -x canonical -k "
api:
- POSIX-LIBPIL4DFS
workdir: "/tmp/soak_dfuse_e3smio/"
dfuse:
mount_dir: "/tmp/soak_dfuse_e3smio/"
disable_caching: true
thread_count: 8
cores: '0-7'
oclass:
- ["EC_2P1GX", "RP_2GX"]
mdtest_harasser:
# maximum timeout for a single job in test in minutes
job_timeout: 30
Expand Down Expand Up @@ -219,7 +274,75 @@ mdtest_harasser:
dfuse:
mount_dir: "/tmp/soak_dfuse_mdtest/"
disable_caching: true

macsio_harasser:
job_timeout: 30
nodesperjob:
- 1
- 4
- 8
taskspernode:
- 16
api:
- HDF5
- HDF5-VOL
interface: hdf5
parallel_file_mode: SIF 1
filebase: daos
units_prefix_system: decimal
part_size: 10M
avg_num_parts: 2.5
num_dumps: 2
debug_level: 1
oclass:
- ["SX","SX"]
- ["EC_2P1GX", "RP_2GX"]
# - ["EC_4P1G1", "RP_2GX"]
- ["EC_4P2GX", "RP_3GX"]
# - ["EC_8P2G1", "RP_3GX"]
# - ["EC_16P2GX", "RP_3GX"]
dfuse:
mount_dir: "/tmp/soak_dfuse_macsio/"
disable_caching: true
thread_count: 8
cores: '0-7'
datamover_harasser:
job_timeout: 10
nodesperjob:
- 8
taskspernode:
- 16
oclass:
- ["SX","SX"]
- ["EC_2P1GX", "RP_2GX"]
# - ["EC_4P1G1", "RP_2GX"]
- ["EC_4P2GX", "RP_3GX"]
# - ["EC_8P2G1", "RP_3GX"]
# - ["EC_16P2GX", "RP_3GX"]
dcp:
bufsize: 1M
chunksize: 1M
ior_write:
api:
- DFS
flags: "-w -F -k"
signature: "5"
transfer_size:
- 1M
block_size:
- 2G
test_file: "daos:/testFile"
dfs_destroy: false
ior_read:
api:
- DFS
flags: "-r -R -F -k"
signature: "5"
transfer_size:
- 1M
block_size:
- 2G
test_file: "daos:/testFile"
dfs_destroy: false
hdf5_vol:
plugin_path: "/usr/lib64/mpich/lib"

Expand Down
28 changes: 21 additions & 7 deletions src/tests/ftest/soak/smoke.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,13 @@ server_config:
# pool_params - attributes of the pools to create; Currently only create one
pool_jobs:
size: 90%
properties: rd_fac:0,space_rb:0

properties: "scrub:timed,scrub_freq:120,space_rb:8"
pool_reserved:
size: 5%
properties: rd_fac:0,space_rb:0

properties: "scrub:timed,scrub_freq:120,space_rb:8"
pool_racer:
size: 5%
properties: rd_fac:0,space_rb:0

properties: "scrub:timed,scrub_freq:120,space_rb:8"
container:
type: POSIX
properties: cksum:crc16,cksum_size:16384,srv_cksum:on
Expand Down Expand Up @@ -93,6 +90,7 @@ smoke:
- lammps_smoke
- macsio_smoke
- datamover_smoke
- e3smio_smoke
# num of bytes to write to reserved container
resv_bytes: 500
enable_intercept_lib: true
Expand Down Expand Up @@ -215,7 +213,23 @@ lammps_smoke:
cores: '0-7'
oclass:
- ["EC_2P1GX", "RP_2GX"]

e3smio_smoke:
job_timeout: 20
nodesperjob:
- 4
taskspernode:
- 32
cmdline: "e3sm_io -r 10 -o can_I_out.h5 -a hdf5 -x canonical -k "
api:
- POSIX-LIBPIL4DFS
workdir: "/tmp/soak_dfuse_e3smio/"
dfuse:
mount_dir: "/tmp/soak_dfuse_e3smio/"
disable_caching: true
thread_count: 8
cores: '0-7'
oclass:
- ["EC_2P1GX", "RP_2GX"]
mdtest_smoke:
# maximum timeout for a single job in test in minutes
job_timeout: 10
Expand Down
4 changes: 3 additions & 1 deletion src/tests/ftest/util/soak_test_base.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""
(C) Copyright 2019-2024 Intel Corporation.
(C) Copyright 2025 Hewlett Packard Enterprise Development LP
(C) Copyright 2025-2026 Hewlett Packard Enterprise Development LP

SPDX-License-Identifier: BSD-2-Clause-Patent
"""
Expand Down Expand Up @@ -448,6 +448,8 @@ def job_setup(self, jobs, pool):
commands = create_app_cmdline(self, job, pool, ppn, npj)
elif "lammps" in job:
commands = create_app_cmdline(self, job, pool, ppn, npj)
elif "e3smio" in job:
commands = create_app_cmdline(self, job, pool, ppn, npj)
elif "macsio" in job:
commands = create_macsio_cmdline(self, job, pool, ppn, npj)
elif "datamover" in job:
Expand Down
21 changes: 19 additions & 2 deletions src/tests/ftest/util/soak_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1532,20 +1532,37 @@
mpirun_cmd.get_params(self)
env = EnvironmentVariables()
env["D_LOG_FILE_APPEND_PID"] = "1"
if "mpich" in mpi_module:
if "mpich" in mpi_module and "e3smio" not in job_spec:
# Pass pool and container information to the commands
env["DAOS_UNS_PREFIX"] = format_path(pool, self.container[-1])
if self.enable_il and api == "POSIX-LIBPIL4DFS":
env["LD_PRELOAD"] = os.path.join(self.prefix, 'lib64', 'libpil4dfs.so')
if self.enable_il and api == "POSIX-LIBIOIL":
env["LD_PRELOAD"] = os.path.join(self.prefix, 'lib64', 'libioil.so')
self.log.info(f"<<APP COMMAND: {app_cmd}")
if 'e3sm_io' in app_cmd:
env["ROMIO_FSTYPE_FORCE"] = "daos:"
env["ROMIO_READ_AGGMETHOD"] = "0"
env["ROMIO_HINTS"] = os.path.join(apps_dir, 'romio_hints', 'romio_hints_e3smio')
input_file = os.path.join(apps_dir, 'E3SM-IO', 'datasets', 'map_i_case_16p.h5')

# Copy the file to the dfuse mount directory
destination = os.path.join(dfuse.mount_dir.value, os.path.basename(input_file))

Check failure on line 1550 in src/tests/ftest/util/soak_utils.py

View workflow job for this annotation

GitHub Actions / Pylint check

possibly-used-before-assignment, Possibly using variable 'dfuse' before assignment
cp_input_file_cmd = "cp {} {}; ls -l {}".format(

Check warning on line 1551 in src/tests/ftest/util/soak_utils.py

View workflow job for this annotation

GitHub Actions / Pylint check

duplicate-string-formatting-argument, Duplicate string formatting argument 'destination', consider passing as named argument
input_file, destination, destination)
sbatch_cmds.append(cp_input_file_cmd)
self.log.info(f"Copied {input_file} to {destination}")

mpirun_cmd.assign_environment(env, True)
mpirun_cmd.assign_processes(nodesperjob * ppn)
mpirun_cmd.ppn.update(ppn)
mpirun_cmd.hostlist.update("$HOSTLIST")
if api in ["POSIX", "POSIX-LIBIOIL", "POSIX-LIBPIL4DFS"]:
mpirun_cmd.working_dir.update(dfuse.mount_dir.value)
cmdline = str(mpirun_cmd)
if 'e3sm_io' in app_cmd:
cmdline = str(mpirun_cmd) + " " + destination
else:
cmdline = str(mpirun_cmd)
sbatch_cmds.append(str(cmdline))
sbatch_cmds.append("status=$?")
if api in ["POSIX", "POSIX-LIBIOIL", "POSIX-LIBPIL4DFS"]:
Expand Down
Loading