├── .clang-format ├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .github ├── codeql │ └── codeql-config.yml ├── stale.yml └── workflows │ ├── asan.yml │ ├── codeql.yml │ └── main.yml ├── .gitignore ├── .mergify.yml ├── .pre-commit-config.yaml ├── .readthedocs.yaml ├── .typos.toml ├── .vscode ├── c_cpp_properties.json ├── extensions.json ├── settings.json └── tasks.json ├── CONTRIBUTING.md ├── LICENSE ├── Makefile.am ├── NEWS.md ├── NOTICE.LLNS ├── README.md ├── autogen.sh ├── codecov.yml ├── config ├── .gitignore ├── ac_pkgconfig.m4 ├── adl_recursive_eval.m4 ├── am_check_pymod.m4 ├── ax_code_coverage.m4 ├── ax_compare_version.m4 ├── ax_compile_check_sizeof.m4 ├── ax_compiler_vendor.m4 ├── ax_compiler_version.m4 ├── ax_cxx_compile_stdcxx.m4 ├── ax_lua.m4 ├── ax_python_devel.m4 ├── ax_split_version.m4 ├── ax_valgrind.m4 ├── lx_find_mpi.m4 ├── pkg.m4 ├── systemd.m4 ├── tap-driver.py ├── tap-driver.sh ├── x_ac_check_cond_lib.m4 ├── x_ac_check_pthreads.m4 ├── x_ac_expand_install_dirs.m4 ├── x_ac_jansson.m4 ├── x_ac_malloc.m4 ├── x_ac_sanitize.m4 └── x_ac_zeromq.m4 ├── configure.ac ├── debian ├── README.Debian ├── README.source ├── compat ├── control ├── copyright ├── flux-core-docs.docs ├── rules └── source │ └── format ├── doc ├── Makefile.am ├── README.md ├── conf.py ├── domainrefs.py ├── guide │ ├── admin.rst │ ├── broker.rst │ ├── build.rst │ ├── debug.rst │ ├── glossary.rst │ ├── images │ │ ├── Frog-1.svg │ │ ├── adminarch.dia │ │ ├── adminarch.png │ │ ├── fox-standing.svg │ │ ├── lgplv3-147x51.png │ │ ├── states.dot │ │ ├── states.png │ │ ├── states_norm.dot │ │ └── states_norm.png │ ├── interact.rst │ ├── internals.rst │ ├── kvs.rst │ ├── start.rst │ ├── support.rst │ ├── troubleshooting.rst │ └── workflows.rst ├── index.rst ├── index_man.rst ├── man1 │ ├── .gitignore │ ├── common │ │ ├── experimental.rst │ │ ├── job-constraints.rst │ │ ├── job-dependencies.rst │ │ ├── job-env-rules.rst │ │ ├── job-environment-variables.rst │ │ ├── job-environment.rst │ │ ├── job-mustache-templates.rst │ │ ├── job-other-batch.rst │ │ ├── job-other-options.rst │ │ ├── job-other-run.rst │ │ ├── job-param-additional.rst │ │ ├── job-param-batch.rst │ │ ├── job-param-common.rst │ │ ├── job-param-perres.rst │ │ ├── job-param-pertask.rst │ │ ├── job-process-resource-limits.rst │ │ ├── job-shell-options.rst │ │ ├── job-standard-io.rst │ │ └── resources.rst │ ├── flux-alloc.rst │ ├── flux-archive.rst │ ├── flux-batch.rst │ ├── flux-broker.rst │ ├── flux-bulksubmit.rst │ ├── flux-cancel.rst │ ├── flux-config.rst │ ├── flux-content.rst │ ├── flux-cron.rst │ ├── flux-dmesg.rst │ ├── flux-dump.rst │ ├── flux-env.rst │ ├── flux-event.rst │ ├── flux-exec.rst │ ├── flux-fsck.rst │ ├── flux-getattr.rst │ ├── flux-hostlist.rst │ ├── flux-housekeeping.rst │ ├── flux-job.rst │ ├── flux-jobs.rst │ ├── flux-jobtap.rst │ ├── flux-keygen.rst │ ├── flux-kvs.rst │ ├── flux-logger.rst │ ├── flux-module.rst │ ├── flux-overlay.rst │ ├── flux-pgrep.rst │ ├── flux-ping.rst │ ├── flux-pmi.rst │ ├── flux-proxy.rst │ ├── flux-pstree.rst │ ├── flux-queue.rst │ ├── flux-resource.rst │ ├── flux-restore.rst │ ├── flux-run.rst │ ├── flux-shell.rst │ ├── flux-shutdown.rst │ ├── flux-start.rst │ ├── flux-startlog.rst │ ├── flux-submit.rst │ ├── flux-top.rst │ ├── flux-update.rst │ ├── flux-uptime.rst │ ├── flux-uri.rst │ ├── flux-version.rst │ ├── flux-watch.rst │ ├── flux.rst │ └── index.rst ├── man3 │ ├── .gitignore │ ├── common │ │ ├── experimental.rst │ │ ├── json_pack.rst │ │ ├── json_unpack.rst │ │ └── resources.rst │ ├── example │ │ ├── die.h │ │ ├── event.c │ │ ├── info.c │ │ ├── open.c │ │ ├── recv.c │ │ ├── rpc.c │ │ ├── rpc_then.c │ │ ├── send.c │ │ └── sync.c │ ├── flux_attr_get.rst │ ├── flux_aux_set.rst │ ├── flux_comms_error_set.rst │ ├── flux_core_version.rst │ ├── flux_event_decode.rst │ ├── flux_event_publish.rst │ ├── flux_event_subscribe.rst │ ├── flux_fd_watcher_create.rst │ ├── flux_flags_set.rst │ ├── flux_future_and_then.rst │ ├── flux_future_create.rst │ ├── flux_future_get.rst │ ├── flux_future_wait_all_create.rst │ ├── flux_get_rank.rst │ ├── flux_get_reactor.rst │ ├── flux_handle_watcher_create.rst │ ├── flux_idle_watcher_create.rst │ ├── flux_job_timeleft.rst │ ├── flux_jobtap_get_flux.rst │ ├── flux_kvs_commit.rst │ ├── flux_kvs_copy.rst │ ├── flux_kvs_getroot.rst │ ├── flux_kvs_lookup.rst │ ├── flux_kvs_namespace_create.rst │ ├── flux_kvs_txn_create.rst │ ├── flux_log.rst │ ├── flux_msg_cmp.rst │ ├── flux_msg_create.rst │ ├── flux_msg_encode.rst │ ├── flux_msg_handler_addvec.rst │ ├── flux_msg_handler_create.rst │ ├── flux_msg_has_flag.rst │ ├── flux_open.rst │ ├── flux_periodic_watcher_create.rst │ ├── flux_pollevents.rst │ ├── flux_reactor_create.rst │ ├── flux_reactor_now.rst │ ├── flux_recv.rst │ ├── flux_request_decode.rst │ ├── flux_request_encode.rst │ ├── flux_requeue.rst │ ├── flux_respond.rst │ ├── flux_response_decode.rst │ ├── flux_rpc.rst │ ├── flux_send.rst │ ├── flux_service_register.rst │ ├── flux_shell_add_completion_ref.rst │ ├── flux_shell_add_event_context.rst │ ├── flux_shell_add_event_handler.rst │ ├── flux_shell_aux_set.rst │ ├── flux_shell_current_task.rst │ ├── flux_shell_get_flux.rst │ ├── flux_shell_get_hostlist.rst │ ├── flux_shell_get_hwloc_xml.rst │ ├── flux_shell_get_info.rst │ ├── flux_shell_get_jobspec_info.rst │ ├── flux_shell_get_taskmap.rst │ ├── flux_shell_getenv.rst │ ├── flux_shell_getopt.rst │ ├── flux_shell_killall.rst │ ├── flux_shell_log.rst │ ├── flux_shell_plugstack_call.rst │ ├── flux_shell_rpc_pack.rst │ ├── flux_shell_service_register.rst │ ├── flux_shell_task_channel_subscribe.rst │ ├── flux_shell_task_get_info.rst │ ├── flux_shell_task_subprocess.rst │ ├── flux_signal_watcher_create.rst │ ├── flux_stat_watcher_create.rst │ ├── flux_sync_create.rst │ ├── flux_timer_watcher_create.rst │ ├── flux_watcher_set_priority.rst │ ├── flux_watcher_start.rst │ ├── hostlist_create.rst │ ├── idset_add.rst │ ├── idset_alloc.rst │ ├── idset_create.rst │ ├── idset_decode.rst │ ├── idset_encode.rst │ └── index.rst ├── man5 │ ├── common │ │ ├── experimental.rst │ │ └── resources.rst │ ├── flux-config-access.rst │ ├── flux-config-bootstrap.rst │ ├── flux-config-exec.rst │ ├── flux-config-heartbeat.rst │ ├── flux-config-ingest.rst │ ├── flux-config-job-manager.rst │ ├── flux-config-kvs.rst │ ├── flux-config-policy.rst │ ├── flux-config-queues.rst │ ├── flux-config-resource.rst │ ├── flux-config-systemd.rst │ ├── flux-config-tbon.rst │ ├── flux-config.rst │ └── index.rst ├── man7 │ ├── common │ │ ├── experimental.rst │ │ └── resources.rst │ ├── flux-broker-attributes.rst │ ├── flux-environment.rst │ ├── flux-jobtap-plugins.rst │ ├── flux-undocumented.rst │ └── index.rst ├── manpages.py ├── python │ ├── .gitignore │ ├── basics.rst │ ├── complete_api.rst │ ├── developer.rst │ ├── index.rst │ └── job_submission.rst ├── requirements.txt └── test │ ├── Makefile.am │ ├── spell.en.pws │ └── spellcheck ├── etc ├── .gitignore ├── Makefile.am ├── completions │ ├── flux.pre │ └── get_builtins.sh ├── flux-core.pc.in ├── flux-epilog@.service.in ├── flux-hostlist.pc.in ├── flux-housekeeping@.service.in ├── flux-idset.pc.in ├── flux-optparse.pc.in ├── flux-pmi.pc.in ├── flux-prolog@.service.in ├── flux-schedutil.pc.in ├── flux-taskmap.pc.in ├── flux.conf ├── flux.service.in ├── gen-cmdhelp.py ├── kvs-backup.cron ├── rc1 ├── rc1.d │ └── 02-cron └── rc3 ├── pyproject.toml ├── scripts ├── .pylintrc ├── check-format ├── check-macos.sh ├── configure-macos.sh ├── debbuild.sh ├── fetch-and-build-catch.sh ├── fetch-and-build-mpich.sh ├── format ├── generate_compile_commands ├── install-deps-deb.sh ├── install-deps-macos.sh ├── install-deps-rpm.sh ├── pylint ├── requirements-ci.txt ├── requirements-dev.txt ├── requirements-doc.txt └── run_mypy.sh ├── setup.cfg ├── src ├── Makefile.am ├── bindings │ ├── Makefile.am │ ├── lua │ │ ├── Makefile.am │ │ ├── README │ │ ├── Test │ │ │ ├── Builder.lua │ │ │ ├── Builder │ │ │ │ ├── NoOutput.lua │ │ │ │ ├── SocketOutput.lua │ │ │ │ ├── Tester.lua │ │ │ │ └── Tester │ │ │ │ │ └── File.lua │ │ │ ├── COPYRIGHT │ │ │ ├── More.lua │ │ │ ├── README.md │ │ │ └── dist.info │ │ ├── flux-lua.c │ │ ├── flux │ │ │ ├── Subcommander.lua │ │ │ ├── alt_getopt.lua │ │ │ ├── posix.lua │ │ │ ├── shell.lua │ │ │ └── timer.lua │ │ ├── inspect.lua │ │ ├── jansson-lua.c │ │ ├── jansson-lua.h │ │ ├── lalarm.c │ │ ├── lutil.c │ │ ├── lutil.h │ │ ├── ping.lua │ │ ├── tests │ │ │ ├── json-test.c │ │ │ ├── t0000-json.t │ │ │ ├── t0001-zmsg.t │ │ │ └── zmsg-test.c │ │ ├── zmsg-lua.c │ │ └── zmsg-lua.h │ └── python │ │ ├── Makefile.am │ │ ├── _flux │ │ ├── .gitignore │ │ ├── Makefile.am │ │ ├── __init__.py │ │ ├── _core_build.py │ │ ├── _hostlist_build.py │ │ ├── _idset_build.py │ │ ├── _rlist_build.py │ │ ├── _security_build.py │ │ ├── callbacks.h │ │ └── make_clean_header.py │ │ ├── flux │ │ ├── .gitignore │ │ ├── Makefile.am │ │ ├── __init__.py │ │ ├── abc │ │ │ ├── __init__.py │ │ │ └── journal.py │ │ ├── cli │ │ │ ├── __init__.py │ │ │ ├── alloc.py │ │ │ ├── base.py │ │ │ ├── batch.py │ │ │ ├── bulksubmit.py │ │ │ ├── fortune.py │ │ │ ├── run.py │ │ │ └── submit.py │ │ ├── compat36.py │ │ ├── conf_builtin.py │ │ ├── constants.py │ │ ├── constraint │ │ │ ├── __init__.py │ │ │ └── parser.py │ │ ├── core │ │ │ ├── __init__.py │ │ │ ├── handle.py │ │ │ ├── inner.py │ │ │ ├── trampoline.py │ │ │ └── watchers.py │ │ ├── debugged.py │ │ ├── eventlog.py │ │ ├── future.py │ │ ├── hostlist.py │ │ ├── idset.py │ │ ├── importer.py │ │ ├── job │ │ │ ├── JobID.py │ │ │ ├── Jobspec.py │ │ │ ├── __init__.py │ │ │ ├── _wrapper.py │ │ │ ├── directives.py │ │ │ ├── event.py │ │ │ ├── executor.py │ │ │ ├── frobnicator │ │ │ │ ├── __init__.py │ │ │ │ ├── frobnicator.py │ │ │ │ └── plugins │ │ │ │ │ ├── constraints.py │ │ │ │ │ └── defaults.py │ │ │ ├── info.py │ │ │ ├── journal.py │ │ │ ├── kill.py │ │ │ ├── kvs.py │ │ │ ├── kvslookup.py │ │ │ ├── list.py │ │ │ ├── output.py │ │ │ ├── stats.py │ │ │ ├── submit.py │ │ │ ├── timeleft.py │ │ │ ├── validator │ │ │ │ ├── __init__.py │ │ │ │ ├── plugins │ │ │ │ │ ├── feasibility.py │ │ │ │ │ ├── jobspec.py │ │ │ │ │ └── require-instance.py │ │ │ │ └── validator.py │ │ │ ├── wait.py │ │ │ └── watcher.py │ │ ├── kvs.py │ │ ├── memoized_property.py │ │ ├── message.py │ │ ├── progress.py │ │ ├── queue.py │ │ ├── resource │ │ │ ├── ResourceSet.py │ │ │ ├── ResourceSetImplementation.py │ │ │ ├── Rlist.py │ │ │ ├── __init__.py │ │ │ ├── journal.py │ │ │ ├── list.py │ │ │ └── status.py │ │ ├── rpc.py │ │ ├── security.py │ │ ├── uri │ │ │ ├── __init__.py │ │ │ ├── resolvers │ │ │ │ ├── jobid.py │ │ │ │ ├── lsf.py │ │ │ │ ├── pid.py │ │ │ │ └── slurm.py │ │ │ └── uri.py │ │ ├── util.py │ │ ├── utils │ │ │ ├── README.md │ │ │ ├── dataclasses │ │ │ │ ├── 3.6-notes.txt │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── MANIFEST.in │ │ │ │ ├── README.rst │ │ │ │ ├── __init__.py │ │ │ │ ├── data-classes.rst │ │ │ │ ├── dataclass_tools.py │ │ │ │ ├── dataclasses.py │ │ │ │ ├── setup.py │ │ │ │ └── test │ │ │ │ │ ├── dataclass_module_1.py │ │ │ │ │ ├── dataclass_module_1_str.py │ │ │ │ │ ├── dataclass_module_2.py │ │ │ │ │ ├── dataclass_module_2_str.py │ │ │ │ │ └── test_dataclasses.py │ │ │ ├── parsedatetime │ │ │ │ ├── __init__.py │ │ │ │ ├── context.py │ │ │ │ ├── parsedatetime.py │ │ │ │ ├── pdt_locales │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base.py │ │ │ │ │ ├── de_DE.py │ │ │ │ │ ├── en_AU.py │ │ │ │ │ ├── en_US.py │ │ │ │ │ ├── es.py │ │ │ │ │ ├── fr_FR.py │ │ │ │ │ ├── icu.py │ │ │ │ │ ├── nl_NL.py │ │ │ │ │ ├── pt_BR.py │ │ │ │ │ └── ru_RU.py │ │ │ │ └── warns.py │ │ │ └── tomli │ │ │ │ ├── LICENSE │ │ │ │ ├── __init__.py │ │ │ │ ├── _parser.py │ │ │ │ ├── _re.py │ │ │ │ ├── _types.py │ │ │ │ └── py.typed │ │ └── wrapper.py │ │ └── setup.py ├── broker │ ├── .gitignore │ ├── Makefile.am │ ├── README.md │ ├── attr.c │ ├── attr.h │ ├── bizcard.c │ ├── bizcard.h │ ├── boot_config.c │ ├── boot_config.h │ ├── boot_pmi.c │ ├── boot_pmi.h │ ├── broker.c │ ├── broker.h │ ├── brokercfg.c │ ├── brokercfg.h │ ├── exec.c │ ├── exec.h │ ├── groups.c │ ├── groups.h │ ├── heaptrace.c │ ├── heaptrace.h │ ├── log.c │ ├── log.h │ ├── modhash.c │ ├── modhash.h │ ├── modservice.c │ ├── modservice.h │ ├── module.c │ ├── module.h │ ├── overlay.c │ ├── overlay.h │ ├── publisher.c │ ├── publisher.h │ ├── runat.c │ ├── runat.h │ ├── service.c │ ├── service.h │ ├── shutdown.c │ ├── shutdown.h │ ├── state_machine.c │ ├── state_machine.h │ ├── test │ │ ├── attr.c │ │ ├── bizcard.c │ │ ├── boot_config.c │ │ ├── overlay.c │ │ ├── runat.c │ │ ├── service.c │ │ └── topology.c │ ├── topology.c │ ├── topology.h │ ├── trace.c │ └── trace.h ├── cmd │ ├── .gitignore │ ├── Makefile.am │ ├── builtin-cmds-list.sh │ ├── builtin.h │ ├── builtin │ │ ├── archive.c │ │ ├── attr.c │ │ ├── config.c │ │ ├── content.c │ │ ├── dmesg.c │ │ ├── dump.c │ │ ├── env.c │ │ ├── fsck.c │ │ ├── heaptrace.c │ │ ├── help.c │ │ ├── lptest.c │ │ ├── overlay.c │ │ ├── pmi.c │ │ ├── proxy.c │ │ ├── python.c │ │ ├── relay.c │ │ ├── restore.c │ │ ├── shutdown.c │ │ ├── startlog.c │ │ ├── uptime.c │ │ └── version.c │ ├── cmdhelp.c │ ├── cmdhelp.h │ ├── flux-R.c │ ├── flux-admin.py │ ├── flux-alloc.py │ ├── flux-batch.py │ ├── flux-bulksubmit.py │ ├── flux-cancel.py │ ├── flux-cron │ ├── flux-event.c │ ├── flux-exec.c │ ├── flux-fortune.py │ ├── flux-hostlist.py │ ├── flux-housekeeping.py │ ├── flux-imp-exec-helper │ ├── flux-job-exec-override.py │ ├── flux-job-frobnicator.py │ ├── flux-job-validator.py │ ├── flux-jobs.py │ ├── flux-jobtap.py │ ├── flux-keygen.c │ ├── flux-kvs.c │ ├── flux-logger.c │ ├── flux-module.c │ ├── flux-pgrep.py │ ├── flux-ping.c │ ├── flux-post-job-event.py │ ├── flux-pstree.py │ ├── flux-python │ ├── flux-queue.py │ ├── flux-resource.py │ ├── flux-run-epilog.in │ ├── flux-run-housekeeping.in │ ├── flux-run-prolog.in │ ├── flux-run.py │ ├── flux-start.c │ ├── flux-submit.py │ ├── flux-terminus.c │ ├── flux-update.py │ ├── flux-uri.py │ ├── flux-watch.py │ ├── flux.c │ ├── job │ │ ├── attach.c │ │ ├── cancel.c │ │ ├── common.c │ │ ├── common.h │ │ ├── eventlog.c │ │ ├── hostpids.c │ │ ├── id.c │ │ ├── info.c │ │ ├── last.c │ │ ├── list.c │ │ ├── main.c │ │ ├── memo.c │ │ ├── mpir.c │ │ ├── mpir.h │ │ ├── namespace.c │ │ ├── purge.c │ │ ├── stats.c │ │ ├── status.c │ │ ├── submit.c │ │ ├── taskmap.c │ │ ├── timeleft.c │ │ ├── urgency.c │ │ └── wait.c │ ├── py-runner.py │ └── top │ │ ├── joblist_pane.c │ │ ├── keys.c │ │ ├── queues.c │ │ ├── summary_pane.c │ │ ├── top.c │ │ ├── top.h │ │ └── ucache.c ├── common │ ├── Makefile.am │ ├── core.h │ ├── libccan │ │ ├── Makefile.am │ │ ├── ccan │ │ │ ├── array_size │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── array_size.h │ │ │ │ └── test │ │ │ │ │ ├── compile_fail-function-param.c │ │ │ │ │ ├── compile_fail.c │ │ │ │ │ └── run.c │ │ │ ├── base64 │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── base64.c │ │ │ │ ├── base64.h │ │ │ │ └── test │ │ │ │ │ ├── moretap.h │ │ │ │ │ └── run.c │ │ │ ├── bitmap │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── bitmap.c │ │ │ │ ├── bitmap.h │ │ │ │ └── test │ │ │ │ │ ├── run-alloc.c │ │ │ │ │ ├── run-ffs.c │ │ │ │ │ ├── run-ranges.c │ │ │ │ │ └── run.c │ │ │ ├── build_assert │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── build_assert.h │ │ │ │ └── test │ │ │ │ │ ├── compile_fail-expr.c │ │ │ │ │ ├── compile_fail.c │ │ │ │ │ ├── compile_ok.c │ │ │ │ │ └── run-BUILD_ASSERT_OR_ZERO.c │ │ │ ├── check_type │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── check_type.h │ │ │ │ └── test │ │ │ │ │ ├── compile_fail-check_type.c │ │ │ │ │ ├── compile_fail-check_type_unsigned.c │ │ │ │ │ ├── compile_fail-check_types_match.c │ │ │ │ │ └── run.c │ │ │ ├── compiler │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── compiler.h │ │ │ │ └── test │ │ │ │ │ ├── compile_fail-printf.c │ │ │ │ │ └── run-is_compile_constant.c │ │ │ ├── container_of │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── container_of.h │ │ │ │ └── test │ │ │ │ │ ├── compile_fail-bad-type.c │ │ │ │ │ ├── compile_fail-types.c │ │ │ │ │ ├── compile_fail-var-types.c │ │ │ │ │ └── run.c │ │ │ ├── endian │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── endian.h │ │ │ │ └── test │ │ │ │ │ ├── compile_ok-constant.c │ │ │ │ │ └── run.c │ │ │ ├── list │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── list.c │ │ │ │ ├── list.h │ │ │ │ └── test │ │ │ │ │ ├── compile_ok-constant.c │ │ │ │ │ ├── helper.c │ │ │ │ │ ├── helper.h │ │ │ │ │ ├── run-CCAN_LIST_DEBUG.c │ │ │ │ │ ├── run-check-corrupt.c │ │ │ │ │ ├── run-check-nonconst.c │ │ │ │ │ ├── run-list_del_from-assert.c │ │ │ │ │ ├── run-list_prev-list_next.c │ │ │ │ │ ├── run-prepend_list.c │ │ │ │ │ ├── run-single-eval.c │ │ │ │ │ ├── run-with-debug.c │ │ │ │ │ └── run.c │ │ │ ├── ptrint │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── ptrint.h │ │ │ │ └── test │ │ │ │ │ └── run.c │ │ │ ├── pushpull │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── pull.c │ │ │ │ ├── pull.h │ │ │ │ ├── push.c │ │ │ │ ├── push.h │ │ │ │ ├── pushpull.h │ │ │ │ └── test │ │ │ │ │ └── run.c │ │ │ └── str │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── debug.c │ │ │ │ ├── hex │ │ │ │ ├── LICENSE │ │ │ │ ├── _info │ │ │ │ ├── hex.c │ │ │ │ ├── hex.h │ │ │ │ └── test │ │ │ │ │ └── run.c │ │ │ │ ├── str.c │ │ │ │ ├── str.h │ │ │ │ ├── str_debug.h │ │ │ │ └── test │ │ │ │ ├── compile_fail-STR_MAX_CHARS.c │ │ │ │ ├── compile_fail-isalnum.c │ │ │ │ ├── compile_fail-isalpha.c │ │ │ │ ├── compile_fail-isascii.c │ │ │ │ ├── compile_fail-isblank.c │ │ │ │ ├── compile_fail-iscntrl.c │ │ │ │ ├── compile_fail-isdigit.c │ │ │ │ ├── compile_fail-islower.c │ │ │ │ ├── compile_fail-isprint.c │ │ │ │ ├── compile_fail-ispunct.c │ │ │ │ ├── compile_fail-isspace.c │ │ │ │ ├── compile_fail-isupper.c │ │ │ │ ├── compile_fail-isxdigit.c │ │ │ │ ├── compile_fail-strchr.c │ │ │ │ ├── compile_fail-strrchr.c │ │ │ │ ├── compile_fail-strstr.c │ │ │ │ ├── compile_ok-STR_MAX_CHARS-static.c │ │ │ │ ├── debug.c │ │ │ │ ├── run-STR_MAX_CHARS.c │ │ │ │ └── run.c │ │ └── licenses │ │ │ ├── BSD-MIT │ │ │ ├── CC0 │ │ │ └── LGPL-2.1 │ ├── libcontent │ │ ├── Makefile.am │ │ ├── content-util.c │ │ ├── content-util.h │ │ ├── content.c │ │ └── content.h │ ├── libczmqcontainers │ │ ├── Makefile.am │ │ ├── czmq_containers.h │ │ ├── czmq_internal.c │ │ ├── czmq_internal.h │ │ ├── czmq_rename.h │ │ ├── zhash.c │ │ ├── zhash.h │ │ ├── zhash_primes.inc │ │ ├── zhashx.c │ │ ├── zhashx.h │ │ ├── zlist.c │ │ ├── zlist.h │ │ ├── zlistx.c │ │ └── zlistx.h │ ├── libdebugged │ │ ├── Makefile.am │ │ ├── debugged.c │ │ ├── debugged.h │ │ └── test │ │ │ └── test_debugged.c │ ├── libev │ │ ├── LICENSE │ │ ├── Makefile.am │ │ ├── ev.c │ │ ├── ev.h │ │ ├── ev_epoll.c │ │ ├── ev_iouring.c │ │ ├── ev_kqueue.c │ │ ├── ev_linuxaio.c │ │ ├── ev_poll.c │ │ ├── ev_port.c │ │ ├── ev_select.c │ │ ├── ev_vars.h │ │ ├── ev_wrap.h │ │ └── libev.m4 │ ├── libeventlog │ │ ├── Makefile.am │ │ ├── eventlog.c │ │ ├── eventlog.h │ │ ├── eventlogger.c │ │ ├── eventlogger.h │ │ ├── formatter.c │ │ ├── formatter.h │ │ └── test │ │ │ ├── eventlog.c │ │ │ └── formatter.c │ ├── libfilemap │ │ ├── Makefile.am │ │ ├── filemap.c │ │ ├── filemap.h │ │ ├── fileref.c │ │ ├── fileref.h │ │ └── test │ │ │ └── fileref.c │ ├── libflux │ │ ├── Makefile.am │ │ ├── attr.c │ │ ├── attr.h │ │ ├── barrier.c │ │ ├── barrier.h │ │ ├── composite_future.c │ │ ├── conf.c │ │ ├── conf.h │ │ ├── conf_private.h │ │ ├── connector.h │ │ ├── connector_interthread.c │ │ ├── connector_local.c │ │ ├── connector_loop.c │ │ ├── control.c │ │ ├── control.h │ │ ├── disconnect.c │ │ ├── disconnect.h │ │ ├── event.c │ │ ├── event.h │ │ ├── flog.c │ │ ├── flog.h │ │ ├── flux.h │ │ ├── fripp.c │ │ ├── fripp.h │ │ ├── future.c │ │ ├── future.h │ │ ├── handle.c │ │ ├── handle.h │ │ ├── hwatcher.c │ │ ├── message.c │ │ ├── message.h │ │ ├── message_iovec.c │ │ ├── message_iovec.h │ │ ├── message_private.h │ │ ├── message_proto.c │ │ ├── message_proto.h │ │ ├── message_route.c │ │ ├── message_route.h │ │ ├── module.c │ │ ├── module.h │ │ ├── msg_deque.c │ │ ├── msg_deque.h │ │ ├── msg_handler.c │ │ ├── msg_handler.h │ │ ├── msglist.c │ │ ├── msglist.h │ │ ├── paths.h │ │ ├── plugin.c │ │ ├── plugin.h │ │ ├── plugin_private.h │ │ ├── reactor.c │ │ ├── reactor.h │ │ ├── reactor_private.h │ │ ├── request.c │ │ ├── request.h │ │ ├── response.c │ │ ├── response.h │ │ ├── rpc.c │ │ ├── rpc.h │ │ ├── service.c │ │ ├── service.h │ │ ├── stats.c │ │ ├── stats.h │ │ ├── sync.c │ │ ├── sync.h │ │ ├── test │ │ │ ├── attr.c │ │ │ ├── composite_future.c │ │ │ ├── conf.c │ │ │ ├── disconnect.c │ │ │ ├── dispatch.c │ │ │ ├── event.c │ │ │ ├── future.c │ │ │ ├── handle.c │ │ │ ├── interthread.c │ │ │ ├── log.c │ │ │ ├── message.c │ │ │ ├── module.c │ │ │ ├── msg_deque.c │ │ │ ├── msg_handler.c │ │ │ ├── msglist.c │ │ │ ├── plugin.c │ │ │ ├── plugin_bar.c │ │ │ ├── plugin_foo.c │ │ │ ├── reactor.c │ │ │ ├── reactor_loop.c │ │ │ ├── request.c │ │ │ ├── response.c │ │ │ ├── rpc.c │ │ │ ├── rpc_chained.c │ │ │ ├── rpc_security.c │ │ │ ├── rpcscale.c │ │ │ ├── sync.c │ │ │ └── version.c │ │ ├── types.h │ │ ├── version.c │ │ ├── version.h.in │ │ ├── watcher.c │ │ ├── watcher.h │ │ ├── watcher_private.h │ │ └── watcher_wrap.c │ ├── libfluxutil │ │ ├── Makefile.am │ │ ├── method.c │ │ ├── method.h │ │ ├── policy.c │ │ └── policy.h │ ├── libhostlist │ │ ├── Makefile.am │ │ ├── hostlist.c │ │ ├── hostlist.h │ │ ├── hostname.c │ │ ├── hostname.h │ │ ├── hostrange.c │ │ ├── hostrange.h │ │ ├── test │ │ │ ├── hostlist.c │ │ │ ├── hostname.c │ │ │ ├── hostrange.c │ │ │ └── util.c │ │ ├── util.c │ │ └── util.h │ ├── libidset │ │ ├── Makefile.am │ │ ├── idset.c │ │ ├── idset.h │ │ ├── idset_decode.c │ │ ├── idset_encode.c │ │ ├── idset_format.c │ │ ├── idset_private.h │ │ ├── test │ │ │ ├── idset.c │ │ │ ├── idsetutil.c │ │ │ └── veb.c │ │ ├── veb.c │ │ ├── veb.h │ │ └── veb_mach.c │ ├── libioencode │ │ ├── Makefile.am │ │ ├── ioencode.c │ │ ├── ioencode.h │ │ └── test │ │ │ └── ioencode.c │ ├── libjob │ │ ├── Makefile.am │ │ ├── id.c │ │ ├── idf58.h │ │ ├── info.c │ │ ├── jj.c │ │ ├── jj.h │ │ ├── job.c │ │ ├── job.h │ │ ├── job_hash.c │ │ ├── job_hash.h │ │ ├── jobspec1.c │ │ ├── jobspec1.h │ │ ├── jobspec1_private.h │ │ ├── kvs.c │ │ ├── list.c │ │ ├── result.c │ │ ├── sign_none.c │ │ ├── sign_none.h │ │ ├── state.c │ │ ├── strtab.c │ │ ├── strtab.h │ │ ├── submit.c │ │ ├── test │ │ │ ├── job.c │ │ │ ├── jobspec1.c │ │ │ ├── sign_none.c │ │ │ └── unwrap.c │ │ ├── unwrap.c │ │ ├── unwrap.h │ │ └── wait.c │ ├── libkvs │ │ ├── Makefile.am │ │ ├── kvs.c │ │ ├── kvs.h │ │ ├── kvs_checkpoint.c │ │ ├── kvs_checkpoint.h │ │ ├── kvs_commit.c │ │ ├── kvs_commit.h │ │ ├── kvs_copy.c │ │ ├── kvs_copy.h │ │ ├── kvs_dir.c │ │ ├── kvs_dir.h │ │ ├── kvs_dir_private.h │ │ ├── kvs_getroot.c │ │ ├── kvs_getroot.h │ │ ├── kvs_lookup.c │ │ ├── kvs_lookup.h │ │ ├── kvs_txn.c │ │ ├── kvs_txn.h │ │ ├── kvs_txn_compact.c │ │ ├── kvs_txn_private.h │ │ ├── kvs_util.c │ │ ├── kvs_util_private.h │ │ ├── test │ │ │ ├── kvs.c │ │ │ ├── kvs_checkpoint.c │ │ │ ├── kvs_commit.c │ │ │ ├── kvs_copy.c │ │ │ ├── kvs_dir.c │ │ │ ├── kvs_getroot.c │ │ │ ├── kvs_lookup.c │ │ │ ├── kvs_txn.c │ │ │ ├── kvs_txn_compact.c │ │ │ ├── kvs_util.c │ │ │ └── treeobj.c │ │ ├── treeobj.c │ │ └── treeobj.h │ ├── liblsd │ │ ├── Makefile.am │ │ ├── cbuf.c │ │ └── cbuf.h │ ├── libmissing │ │ ├── Makefile.am │ │ ├── argz.c │ │ ├── argz.h │ │ ├── argz_add.c │ │ ├── envz.c │ │ ├── envz.h │ │ ├── envz_add.c │ │ ├── get_current_dir_name.c │ │ ├── get_current_dir_name.h │ │ ├── json_object_update_recursive.c │ │ ├── json_object_update_recursive.h │ │ ├── macros.h │ │ ├── mempcpy.c │ │ ├── mempcpy.h │ │ ├── pipe2.c │ │ ├── pipe2.h │ │ ├── strerrorname_np.c │ │ ├── strerrorname_np.h │ │ ├── strlcat.c │ │ ├── strlcat.h │ │ ├── strlcpy.c │ │ └── strlcpy.h │ ├── liboptparse │ │ ├── Makefile.am │ │ ├── getopt.c │ │ ├── getopt.h │ │ ├── getopt_int.h │ │ ├── optparse.c │ │ ├── optparse.h │ │ └── test │ │ │ └── optparse.c │ ├── libpmi │ │ ├── .gitignore │ │ ├── Makefile.am │ │ ├── keyval.c │ │ ├── keyval.h │ │ ├── ltrace.conf │ │ ├── pmi.c │ │ ├── pmi.h │ │ ├── pmi2.c │ │ ├── pmi2.h │ │ ├── pmi_strerror.c │ │ ├── pmi_strerror.h │ │ ├── sentinel.c │ │ ├── simple_client.c │ │ ├── simple_client.h │ │ ├── simple_server.c │ │ ├── simple_server.h │ │ ├── test │ │ │ ├── canonical.c │ │ │ ├── canonical2.c │ │ │ ├── clique.c │ │ │ ├── keyval.c │ │ │ ├── kvstest.c │ │ │ ├── kvstest2.c │ │ │ ├── plugin │ │ │ │ └── singlex.c │ │ │ ├── pmi2_info.c │ │ │ ├── pmi_info.c │ │ │ ├── server_thread.c │ │ │ ├── server_thread.h │ │ │ ├── simple.c │ │ │ └── upmi.c │ │ ├── upmi.c │ │ ├── upmi.h │ │ ├── upmi_libpmi.c │ │ ├── upmi_libpmi2.c │ │ ├── upmi_plugin.h │ │ ├── upmi_simple.c │ │ └── upmi_single.c │ ├── librlist │ │ ├── Makefile.am │ │ ├── match.c │ │ ├── match.h │ │ ├── rhwloc.c │ │ ├── rhwloc.h │ │ ├── rlist.c │ │ ├── rlist.h │ │ ├── rlist_private.h │ │ ├── rnode.c │ │ ├── rnode.h │ │ └── test │ │ │ ├── match.c │ │ │ ├── rhwloc.c │ │ │ ├── rlist.c │ │ │ └── rnode.c │ ├── librouter │ │ ├── Makefile.am │ │ ├── auth.c │ │ ├── auth.h │ │ ├── disconnect.c │ │ ├── disconnect.h │ │ ├── msg_hash.c │ │ ├── msg_hash.h │ │ ├── router.c │ │ ├── router.h │ │ ├── rpc_track.c │ │ ├── rpc_track.h │ │ ├── sendfd.c │ │ ├── sendfd.h │ │ ├── servhash.c │ │ ├── servhash.h │ │ ├── subhash.c │ │ ├── subhash.h │ │ ├── test │ │ │ ├── auth.c │ │ │ ├── disconnect.c │ │ │ ├── msg_hash.c │ │ │ ├── router.c │ │ │ ├── rpc_track.c │ │ │ ├── sendfd.c │ │ │ ├── servhash.c │ │ │ ├── subhash.c │ │ │ ├── usock.c │ │ │ ├── usock_echo.c │ │ │ ├── usock_emfile.c │ │ │ ├── usock_epipe.c │ │ │ ├── usock_service.c │ │ │ ├── usock_util.c │ │ │ └── usock_util.h │ │ ├── usock.c │ │ ├── usock.h │ │ ├── usock_service.c │ │ └── usock_service.h │ ├── libschedutil │ │ ├── Makefile.am │ │ ├── alloc.c │ │ ├── alloc.h │ │ ├── free.c │ │ ├── free.h │ │ ├── hello.c │ │ ├── hello.h │ │ ├── init.c │ │ ├── init.h │ │ ├── ops.c │ │ ├── ops.h │ │ ├── ready.c │ │ ├── ready.h │ │ └── schedutil_private.h │ ├── libsdexec │ │ ├── Makefile.am │ │ ├── channel.c │ │ ├── channel.h │ │ ├── list.c │ │ ├── list.h │ │ ├── outbuf.c │ │ ├── outbuf.h │ │ ├── parse.c │ │ ├── parse.h │ │ ├── property.c │ │ ├── property.h │ │ ├── start.c │ │ ├── start.h │ │ ├── state.c │ │ ├── state.h │ │ ├── stop.c │ │ ├── stop.h │ │ ├── test │ │ │ ├── channel.c │ │ │ ├── channel_outbuf.c │ │ │ ├── list.c │ │ │ ├── parse.c │ │ │ ├── property.c │ │ │ ├── start.c │ │ │ ├── state.c │ │ │ ├── stop.c │ │ │ └── unit.c │ │ ├── unit.c │ │ └── unit.h │ ├── libsubprocess │ │ ├── Makefile.am │ │ ├── bulk-exec.c │ │ ├── bulk-exec.h │ │ ├── client.c │ │ ├── client.h │ │ ├── command.c │ │ ├── command.h │ │ ├── command_private.h │ │ ├── fbuf.c │ │ ├── fbuf.h │ │ ├── fbuf_watcher.c │ │ ├── fbuf_watcher.h │ │ ├── fork.c │ │ ├── fork.h │ │ ├── local.c │ │ ├── local.h │ │ ├── posix_spawn.c │ │ ├── posix_spawn.h │ │ ├── remote.c │ │ ├── remote.h │ │ ├── server.c │ │ ├── server.h │ │ ├── sigchld.c │ │ ├── sigchld.h │ │ ├── subprocess.c │ │ ├── subprocess.h │ │ ├── subprocess_private.h │ │ ├── test │ │ │ ├── bulk-exec-einval.c │ │ │ ├── bulk-exec.c │ │ │ ├── channel.c │ │ │ ├── command.c │ │ │ ├── fbuf.c │ │ │ ├── fbuf_watcher.c │ │ │ ├── fdcopy.c │ │ │ ├── iochan.c │ │ │ ├── iostress.c │ │ │ ├── rcmdsrv.c │ │ │ ├── rcmdsrv.h │ │ │ ├── remote.c │ │ │ ├── sigchld.c │ │ │ ├── stdio.c │ │ │ ├── subprocess.c │ │ │ ├── test_echo.c │ │ │ ├── test_fork_sleep.c │ │ │ └── test_multi_echo.c │ │ ├── util.c │ │ └── util.h │ ├── libtap │ │ ├── Makefile.am │ │ ├── tap.c │ │ └── tap.h │ ├── libtaskmap │ │ ├── Makefile.am │ │ ├── taskmap.c │ │ ├── taskmap.h │ │ ├── taskmap_private.h │ │ └── test │ │ │ └── taskmap.c │ ├── libterminus │ │ ├── Makefile.am │ │ ├── client.c │ │ ├── pty.c │ │ ├── pty.h │ │ ├── terminus.c │ │ ├── terminus.h │ │ └── test │ │ │ ├── pty.c │ │ │ └── terminus.c │ ├── libtestutil │ │ ├── Makefile.am │ │ ├── util.c │ │ ├── util.h │ │ ├── util_rpc.c │ │ └── util_rpc.h │ ├── libtomlc99 │ │ ├── BurntSushi_input │ │ │ ├── COPYING │ │ │ ├── invalid │ │ │ │ ├── array-mixed-types-arrays-and-ints.toml │ │ │ │ ├── array-mixed-types-ints-and-floats.toml │ │ │ │ ├── array-mixed-types-strings-and-ints.toml │ │ │ │ ├── datetime-malformed-no-leads.toml │ │ │ │ ├── datetime-malformed-no-secs.toml │ │ │ │ ├── datetime-malformed-no-t.toml │ │ │ │ ├── datetime-malformed-with-milli.toml │ │ │ │ ├── duplicate-key-table.toml │ │ │ │ ├── duplicate-keys.toml │ │ │ │ ├── duplicate-tables.toml │ │ │ │ ├── empty-implicit-table.toml │ │ │ │ ├── empty-table.toml │ │ │ │ ├── float-no-leading-zero.toml │ │ │ │ ├── float-no-trailing-digits.toml │ │ │ │ ├── key-empty.toml │ │ │ │ ├── key-hash.toml │ │ │ │ ├── key-newline.toml │ │ │ │ ├── key-open-bracket.toml │ │ │ │ ├── key-single-open-bracket.toml │ │ │ │ ├── key-space.toml │ │ │ │ ├── key-start-bracket.toml │ │ │ │ ├── key-two-equals.toml │ │ │ │ ├── string-bad-byte-escape.toml │ │ │ │ ├── string-bad-escape.toml │ │ │ │ ├── string-byte-escapes.toml │ │ │ │ ├── string-no-close.toml │ │ │ │ ├── table-array-implicit.toml │ │ │ │ ├── table-array-malformed-bracket.toml │ │ │ │ ├── table-array-malformed-empty.toml │ │ │ │ ├── table-empty.toml │ │ │ │ ├── table-nested-brackets-close.toml │ │ │ │ ├── table-nested-brackets-open.toml │ │ │ │ ├── table-whitespace.toml │ │ │ │ ├── table-with-pound.toml │ │ │ │ ├── text-after-array-entries.toml │ │ │ │ ├── text-after-integer.toml │ │ │ │ ├── text-after-string.toml │ │ │ │ ├── text-after-table.toml │ │ │ │ ├── text-before-array-separator.toml │ │ │ │ └── text-in-array.toml │ │ │ └── valid │ │ │ │ ├── array-empty.json │ │ │ │ ├── array-empty.toml │ │ │ │ ├── array-nospaces.json │ │ │ │ ├── array-nospaces.toml │ │ │ │ ├── arrays-hetergeneous.json │ │ │ │ ├── arrays-hetergeneous.toml │ │ │ │ ├── arrays-nested.json │ │ │ │ ├── arrays-nested.toml │ │ │ │ ├── arrays.json │ │ │ │ ├── arrays.toml │ │ │ │ ├── bool.json │ │ │ │ ├── bool.toml │ │ │ │ ├── comments-everywhere.json │ │ │ │ ├── comments-everywhere.toml │ │ │ │ ├── datetime.json │ │ │ │ ├── datetime.toml │ │ │ │ ├── empty.json │ │ │ │ ├── empty.toml │ │ │ │ ├── example.json │ │ │ │ ├── example.toml │ │ │ │ ├── float.json │ │ │ │ ├── float.toml │ │ │ │ ├── implicit-and-explicit-after.json │ │ │ │ ├── implicit-and-explicit-after.toml │ │ │ │ ├── implicit-and-explicit-before.json │ │ │ │ ├── implicit-and-explicit-before.toml │ │ │ │ ├── implicit-groups.json │ │ │ │ ├── implicit-groups.toml │ │ │ │ ├── integer.json │ │ │ │ ├── integer.toml │ │ │ │ ├── key-equals-nospace.json │ │ │ │ ├── key-equals-nospace.toml │ │ │ │ ├── key-space.json │ │ │ │ ├── key-space.toml │ │ │ │ ├── key-special-chars.json │ │ │ │ ├── key-special-chars.toml │ │ │ │ ├── long-float.json │ │ │ │ ├── long-float.toml │ │ │ │ ├── long-integer.json │ │ │ │ ├── long-integer.toml │ │ │ │ ├── multiline-string.json │ │ │ │ ├── multiline-string.toml │ │ │ │ ├── raw-multiline-string.json │ │ │ │ ├── raw-multiline-string.toml │ │ │ │ ├── raw-string.json │ │ │ │ ├── raw-string.toml │ │ │ │ ├── string-empty.json │ │ │ │ ├── string-empty.toml │ │ │ │ ├── string-escapes.json │ │ │ │ ├── string-escapes.toml │ │ │ │ ├── string-simple.json │ │ │ │ ├── string-simple.toml │ │ │ │ ├── string-with-pound.json │ │ │ │ ├── string-with-pound.toml │ │ │ │ ├── table-array-implicit.json │ │ │ │ ├── table-array-implicit.toml │ │ │ │ ├── table-array-many.json │ │ │ │ ├── table-array-many.toml │ │ │ │ ├── table-array-nest.json │ │ │ │ ├── table-array-nest.toml │ │ │ │ ├── table-array-one.json │ │ │ │ ├── table-array-one.toml │ │ │ │ ├── table-empty.json │ │ │ │ ├── table-empty.toml │ │ │ │ ├── table-sub-empty.json │ │ │ │ ├── table-sub-empty.toml │ │ │ │ ├── table-whitespace.json │ │ │ │ ├── table-whitespace.toml │ │ │ │ ├── table-with-pound.json │ │ │ │ ├── table-with-pound.toml │ │ │ │ ├── unicode-escape.json │ │ │ │ ├── unicode-escape.toml │ │ │ │ ├── unicode-literal.json │ │ │ │ └── unicode-literal.toml │ │ ├── LICENSE │ │ ├── Makefile.am │ │ ├── README.md │ │ ├── test │ │ │ └── toml.c │ │ ├── toml.c │ │ ├── toml.h │ │ ├── toml_cat.c │ │ └── toml_json.c │ ├── libutil │ │ ├── Makefile.am │ │ ├── ansi_color.h │ │ ├── aux.c │ │ ├── aux.h │ │ ├── basemoji.c │ │ ├── basemoji.h │ │ ├── basename.c │ │ ├── basename.h │ │ ├── blobref.c │ │ ├── blobref.h │ │ ├── cidr.c │ │ ├── cidr.h │ │ ├── cleanup.c │ │ ├── cleanup.h │ │ ├── cronodate.c │ │ ├── cronodate.h │ │ ├── dirwalk.c │ │ ├── dirwalk.h │ │ ├── environment.c │ │ ├── environment.h │ │ ├── errno_safe.h │ │ ├── errprintf.c │ │ ├── errprintf.h │ │ ├── fdutils.c │ │ ├── fdutils.h │ │ ├── fdwalk.c │ │ ├── fdwalk.h │ │ ├── fluid.c │ │ ├── fluid.h │ │ ├── fsd.c │ │ ├── fsd.h │ │ ├── grudgeset.c │ │ ├── grudgeset.h │ │ ├── hola.c │ │ ├── hola.h │ │ ├── intree.c │ │ ├── intree.h │ │ ├── ipaddr.c │ │ ├── ipaddr.h │ │ ├── iterators.h │ │ ├── jpath.c │ │ ├── jpath.h │ │ ├── kary.c │ │ ├── kary.h │ │ ├── llog.h │ │ ├── log.c │ │ ├── log.h │ │ ├── lru_cache.c │ │ ├── lru_cache.h │ │ ├── macros.h │ │ ├── mn_wordlist.c │ │ ├── mnemonic.c │ │ ├── mnemonic.h │ │ ├── monotime.c │ │ ├── monotime.h │ │ ├── oom.h │ │ ├── parse_size.c │ │ ├── parse_size.h │ │ ├── popen2.c │ │ ├── popen2.h │ │ ├── read_all.c │ │ ├── read_all.h │ │ ├── setenvf.c │ │ ├── setenvf.h │ │ ├── sha1.c │ │ ├── sha1.h │ │ ├── sha256.c │ │ ├── sha256.h │ │ ├── sigutil.c │ │ ├── sigutil.h │ │ ├── slice.c │ │ ├── slice.h │ │ ├── stdlog.c │ │ ├── stdlog.h │ │ ├── strstrip.c │ │ ├── strstrip.h │ │ ├── test │ │ │ ├── aux.c │ │ │ ├── basemoji.c │ │ │ ├── blobref.c │ │ │ ├── cidr.c │ │ │ ├── cleanup.c │ │ │ ├── cronodate.c │ │ │ ├── dirwalk.c │ │ │ ├── environment.c │ │ │ ├── errprintf.c │ │ │ ├── fdutils.c │ │ │ ├── fdwalk.c │ │ │ ├── fluid.c │ │ │ ├── fsd.c │ │ │ ├── getaddr.c │ │ │ ├── grudgeset.c │ │ │ ├── hola.c │ │ │ ├── intree.c │ │ │ ├── ipaddr.c │ │ │ ├── jpath.c │ │ │ ├── kary.c │ │ │ ├── lru_cache.c │ │ │ ├── parse_size.c │ │ │ ├── popen2.c │ │ │ ├── read_all.c │ │ │ ├── sha1.c │ │ │ ├── sha256.c │ │ │ ├── sigutil.c │ │ │ ├── slice.c │ │ │ ├── stdlog.c │ │ │ ├── strstrip.c │ │ │ ├── timestamp.c │ │ │ ├── tomltk.c │ │ │ ├── unlink.c │ │ │ └── wallclock.c │ │ ├── timestamp.c │ │ ├── timestamp.h │ │ ├── tomltk.c │ │ ├── tomltk.h │ │ ├── tstat.c │ │ ├── tstat.h │ │ ├── unlink_recursive.c │ │ ├── unlink_recursive.h │ │ ├── uri.c │ │ ├── uri.h │ │ ├── wallclock.c │ │ ├── wallclock.h │ │ ├── xzmalloc.c │ │ └── xzmalloc.h │ ├── libyuarel │ │ ├── LICENSE │ │ ├── Makefile.am │ │ ├── README.md │ │ ├── examples │ │ │ └── simple.c │ │ ├── test │ │ │ ├── minunit.h │ │ │ └── test_lib.c │ │ ├── yuarel.c │ │ └── yuarel.h │ ├── libzmqutil │ │ ├── Makefile.am │ │ ├── cert.c │ │ ├── cert.h │ │ ├── monitor.c │ │ ├── monitor.h │ │ ├── mpart.c │ │ ├── mpart.h │ │ ├── msg_zsock.c │ │ ├── msg_zsock.h │ │ ├── sockopt.c │ │ ├── sockopt.h │ │ ├── test │ │ │ ├── cert.c │ │ │ ├── monitor.c │ │ │ ├── mpart.c │ │ │ ├── msg_zsock.c │ │ │ ├── zap.c │ │ │ └── zwatcher.c │ │ ├── zap.c │ │ ├── zap.h │ │ ├── zwatcher.c │ │ └── zwatcher.h │ └── schedutil.h ├── connectors │ ├── Makefile.am │ └── ssh │ │ └── ssh.c ├── include │ └── flux │ │ ├── core.h │ │ ├── hostlist.h │ │ ├── idset.h │ │ ├── jobtap.h │ │ ├── optparse.h │ │ ├── schedutil.h │ │ ├── shell.h │ │ └── taskmap.h ├── modules │ ├── Makefile.am │ ├── barrier │ │ └── barrier.c │ ├── connector-local │ │ └── local.c │ ├── content-files │ │ ├── Makefile.am │ │ ├── content-files.c │ │ ├── filedb.c │ │ ├── filedb.h │ │ └── test │ │ │ ├── filedb.c │ │ │ ├── load.c │ │ │ └── store.c │ ├── content-sqlite │ │ └── content-sqlite.c │ ├── content │ │ ├── cache.c │ │ ├── cache.h │ │ ├── checkpoint.c │ │ ├── checkpoint.h │ │ ├── main.c │ │ ├── mmap.c │ │ └── mmap.h │ ├── cron │ │ ├── cron.c │ │ ├── datetime.c │ │ ├── entry.h │ │ ├── event.c │ │ ├── interval.c │ │ ├── task.c │ │ ├── task.h │ │ ├── types.c │ │ └── types.h │ ├── heartbeat │ │ └── heartbeat.c │ ├── job-exec │ │ ├── Makefile.am │ │ ├── checkpoint.c │ │ ├── checkpoint.h │ │ ├── exec.c │ │ ├── exec_config.c │ │ ├── exec_config.h │ │ ├── job-exec.c │ │ ├── job-exec.h │ │ ├── rset.c │ │ ├── rset.h │ │ ├── test │ │ │ └── rset.c │ │ └── testexec.c │ ├── job-info │ │ ├── allow.c │ │ ├── allow.h │ │ ├── guest_watch.c │ │ ├── guest_watch.h │ │ ├── job-info.c │ │ ├── job-info.h │ │ ├── lookup.c │ │ ├── lookup.h │ │ ├── update.c │ │ ├── update.h │ │ ├── util.c │ │ ├── util.h │ │ ├── watch.c │ │ └── watch.h │ ├── job-ingest │ │ ├── Makefile.am │ │ ├── job-ingest.c │ │ ├── job.c │ │ ├── job.h │ │ ├── pipeline.c │ │ ├── pipeline.h │ │ ├── test │ │ │ ├── job.c │ │ │ └── util.c │ │ ├── types.h │ │ ├── util.c │ │ ├── util.h │ │ ├── workcrew.c │ │ ├── workcrew.h │ │ ├── worker.c │ │ └── worker.h │ ├── job-list │ │ ├── Makefile.am │ │ ├── idsync.c │ │ ├── idsync.h │ │ ├── job-list.c │ │ ├── job-list.h │ │ ├── job_data.c │ │ ├── job_data.h │ │ ├── job_state.c │ │ ├── job_state.h │ │ ├── job_util.c │ │ ├── job_util.h │ │ ├── list.c │ │ ├── list.h │ │ ├── match.c │ │ ├── match.h │ │ ├── match_util.c │ │ ├── match_util.h │ │ ├── state_match.c │ │ ├── state_match.h │ │ ├── stats.c │ │ ├── stats.h │ │ └── test │ │ │ ├── R │ │ │ ├── 1node_1core.R │ │ │ ├── 1node_4core.R │ │ │ ├── 4node_1core.R │ │ │ ├── 4node_4core.R │ │ │ ├── invalid_R_lite.R │ │ │ ├── invalid_json.R │ │ │ ├── invalid_nodelist.R │ │ │ ├── invalid_version.R │ │ │ ├── missing_R_lite.R │ │ │ ├── missing_expiration.R │ │ │ ├── missing_nodelist.R │ │ │ ├── missing_starttime.R │ │ │ └── missing_version.R │ │ │ ├── job_data.c │ │ │ ├── jobspec │ │ │ ├── 1node.jobspec │ │ │ ├── 1node_1slot_nonexclusive.jobspec │ │ │ ├── 1node_perresourcecore4.jobspec │ │ │ ├── 1node_perresourcenode4.jobspec │ │ │ ├── 1slot.jobspec │ │ │ ├── 1slot_4core.jobspec │ │ │ ├── 1slot_perresourcecore4.jobspec │ │ │ ├── 1slot_project_bank.jobspec │ │ │ ├── 4node.jobspec │ │ │ ├── 4node_1slot_nonexclusive.jobspec │ │ │ ├── 4node_4slot_nonexclusive.jobspec │ │ │ ├── 4node_perresourcecore4.jobspec │ │ │ ├── 4node_perresourcenode4.jobspec │ │ │ ├── 4slot.jobspec │ │ │ ├── 4slot_perresourcecore4.jobspec │ │ │ ├── cwd_not_specified.jobspec │ │ │ ├── duration_alt.jobspec │ │ │ ├── invalid_attributes_system_job.jobspec │ │ │ ├── invalid_attributes_system_missing_duration.jobspec │ │ │ ├── invalid_command_array.jobspec │ │ │ ├── invalid_command_string.jobspec │ │ │ ├── invalid_json.jobspec │ │ │ ├── invalid_per_resource_missing_type.jobspec │ │ │ ├── invalid_resources.jobspec │ │ │ ├── invalid_resources_invalid_count.jobspec │ │ │ ├── invalid_resources_invalid_type.jobspec │ │ │ ├── invalid_resources_missing_count.jobspec │ │ │ ├── invalid_resources_missing_type.jobspec │ │ │ ├── invalid_resources_nocores.jobspec │ │ │ ├── invalid_resources_noslots.jobspec │ │ │ ├── invalid_tasks_array.jobspec │ │ │ ├── invalid_tasks_missing_command.jobspec │ │ │ ├── invalid_version.jobspec │ │ │ ├── job_name_alt.jobspec │ │ │ ├── missing_attributes.jobspec │ │ │ ├── missing_resources.jobspec │ │ │ ├── missing_tasks.jobspec │ │ │ ├── missing_version.jobspec │ │ │ └── queue_specified.jobspec │ │ │ ├── match.c │ │ │ └── state_match.c │ ├── job-manager │ │ ├── Makefile.am │ │ ├── alloc.c │ │ ├── alloc.h │ │ ├── annotate.c │ │ ├── annotate.h │ │ ├── conf.c │ │ ├── conf.h │ │ ├── drain.c │ │ ├── drain.h │ │ ├── event.c │ │ ├── event.h │ │ ├── getattr.c │ │ ├── getattr.h │ │ ├── housekeeping.c │ │ ├── housekeeping.h │ │ ├── job-manager.c │ │ ├── job-manager.h │ │ ├── job.c │ │ ├── job.h │ │ ├── jobtap-internal.h │ │ ├── jobtap.c │ │ ├── jobtap.h │ │ ├── journal.c │ │ ├── journal.h │ │ ├── kill.c │ │ ├── kill.h │ │ ├── list.c │ │ ├── list.h │ │ ├── plugins │ │ │ ├── alloc-bypass.c │ │ │ ├── alloc-check.c │ │ │ ├── begin-time.c │ │ │ ├── dependency-after.c │ │ │ ├── dependency-singleton.c │ │ │ ├── history.c │ │ │ ├── limit-duration.c │ │ │ ├── limit-job-size.c │ │ │ ├── perilog.c │ │ │ ├── post-event.c │ │ │ ├── priority-default.c │ │ │ ├── submit-hold.c │ │ │ ├── update-duration.c │ │ │ └── validate-duration.c │ │ ├── prioritize.c │ │ ├── prioritize.h │ │ ├── purge.c │ │ ├── purge.h │ │ ├── queue.c │ │ ├── queue.h │ │ ├── raise.c │ │ ├── raise.h │ │ ├── restart.c │ │ ├── restart.h │ │ ├── start.c │ │ ├── start.h │ │ ├── submit.c │ │ ├── submit.h │ │ ├── test │ │ │ ├── annotate.c │ │ │ ├── job.c │ │ │ ├── kill.c │ │ │ ├── list.c │ │ │ ├── raise.c │ │ │ └── restart.c │ │ ├── update.c │ │ ├── update.h │ │ ├── urgency.c │ │ ├── urgency.h │ │ ├── wait.c │ │ └── wait.h │ ├── kvs-watch │ │ └── kvs-watch.c │ ├── kvs │ │ ├── Makefile.am │ │ ├── README.md │ │ ├── cache.c │ │ ├── cache.h │ │ ├── kvs.c │ │ ├── kvs_checkpoint.c │ │ ├── kvs_checkpoint.h │ │ ├── kvsroot.c │ │ ├── kvsroot.h │ │ ├── kvstxn.c │ │ ├── kvstxn.h │ │ ├── lookup.c │ │ ├── lookup.h │ │ ├── test │ │ │ ├── cache.c │ │ │ ├── kvsroot.c │ │ │ ├── kvstxn.c │ │ │ ├── lookup.c │ │ │ └── waitqueue.c │ │ ├── waitqueue.c │ │ └── waitqueue.h │ ├── resource │ │ ├── Makefile.am │ │ ├── acquire.c │ │ ├── acquire.h │ │ ├── drain.c │ │ ├── drain.h │ │ ├── drainset.c │ │ ├── drainset.h │ │ ├── exclude.c │ │ ├── exclude.h │ │ ├── inventory.c │ │ ├── inventory.h │ │ ├── monitor.c │ │ ├── monitor.h │ │ ├── reslog.c │ │ ├── reslog.h │ │ ├── resource.c │ │ ├── resource.h │ │ ├── rutil.c │ │ ├── rutil.h │ │ ├── status.c │ │ ├── status.h │ │ ├── test │ │ │ ├── drainset.c │ │ │ └── rutil.c │ │ ├── topo.c │ │ ├── topo.h │ │ ├── upgrade.c │ │ └── upgrade.h │ ├── sched-simple │ │ └── sched.c │ ├── sdbus │ │ ├── Makefile.am │ │ ├── README.md │ │ ├── connect.c │ │ ├── connect.h │ │ ├── interface.c │ │ ├── interface.h │ │ ├── main.c │ │ ├── message.c │ │ ├── message.h │ │ ├── objpath.c │ │ ├── objpath.h │ │ ├── sdbus.c │ │ ├── sdbus.h │ │ ├── subscribe.c │ │ ├── subscribe.h │ │ ├── test │ │ │ ├── message.c │ │ │ └── objpath.c │ │ ├── watcher.c │ │ └── watcher.h │ ├── sdexec │ │ └── sdexec.c │ └── sdmon │ │ └── sdmon.c ├── shell │ ├── Makefile.am │ ├── affinity.c │ ├── affinity.h │ ├── batch.c │ ├── builtins.c │ ├── builtins.h │ ├── doom.c │ ├── env-expand.c │ ├── events.c │ ├── events.h │ ├── evlog.c │ ├── exception.c │ ├── files.c │ ├── gpubind.c │ ├── hwloc.c │ ├── info.c │ ├── info.h │ ├── initrc.lua │ ├── input │ │ ├── file.c │ │ ├── kvs.c │ │ ├── service.c │ │ ├── util.c │ │ └── util.h │ ├── internal.h │ ├── jobspec.c │ ├── jobspec.h │ ├── kill.c │ ├── log.c │ ├── log.h │ ├── lua.d │ │ ├── mpi │ │ │ └── spectrum.lua │ │ └── openmpi.lua │ ├── mpir │ │ ├── mpir.c │ │ ├── nodelist.c │ │ ├── nodelist.h │ │ ├── proctable.c │ │ ├── proctable.h │ │ ├── ptrace.c │ │ ├── rangelist.c │ │ ├── rangelist.h │ │ └── test │ │ │ ├── nodelist.c │ │ │ ├── proctable.c │ │ │ └── rangelist.c │ ├── mustache.c │ ├── mustache.h │ ├── oom.c │ ├── output │ │ ├── client.c │ │ ├── client.h │ │ ├── conf.c │ │ ├── conf.h │ │ ├── filehash.c │ │ ├── filehash.h │ │ ├── kvs.c │ │ ├── kvs.h │ │ ├── log.c │ │ ├── log.h │ │ ├── output.c │ │ ├── output.h │ │ ├── service.c │ │ ├── service.h │ │ ├── task.c │ │ └── task.h │ ├── plugstack.c │ ├── plugstack.h │ ├── pmi │ │ ├── pmi.c │ │ ├── pmi_exchange.c │ │ └── pmi_exchange.h │ ├── pty.c │ ├── rc.c │ ├── rc.h │ ├── rcalc.c │ ├── rcalc.h │ ├── rexec.c │ ├── rlimit.c │ ├── shell.c │ ├── shell.h │ ├── signal.c │ ├── signals.c │ ├── stage-in.c │ ├── svc.c │ ├── svc.h │ ├── task.c │ ├── task.h │ ├── taskmap │ │ ├── cyclic.c │ │ └── hostfile.c │ ├── test │ │ ├── jobspec.c │ │ ├── mustache.c │ │ ├── plugin_test.c │ │ └── plugstack.c │ └── tmpdir.c └── test │ ├── .gitignore │ ├── Makefile.am │ ├── backtrace-all.sh │ ├── checks-annotate.sh │ ├── checks-lib.sh │ ├── checks_run.sh │ ├── cppcheck.sh │ ├── create-kvs-dumpfile.sh │ ├── docker-deploy.sh │ ├── docker │ ├── README.md │ ├── alpine │ │ └── Dockerfile │ ├── bookworm │ │ └── Dockerfile │ ├── checks │ │ ├── Dockerfile │ │ ├── bashrc │ │ └── entrypoint.sh │ ├── docker-run-checks.sh │ ├── docker-run-systest.sh │ ├── el7 │ │ ├── Dockerfile │ │ └── config.site │ ├── el8 │ │ ├── Dockerfile │ │ └── config.site │ ├── el9 │ │ ├── Dockerfile │ │ └── config.site │ ├── fedora33 │ │ ├── Dockerfile │ │ └── config.site │ ├── fedora34 │ │ ├── Dockerfile │ │ └── config.site │ ├── fedora35 │ │ ├── Dockerfile │ │ └── config.site │ ├── fedora38 │ │ ├── Dockerfile │ │ └── config.site │ ├── fedora39 │ │ ├── Dockerfile │ │ └── config.site │ ├── fedora40 │ │ ├── Dockerfile │ │ └── config.site │ ├── fluxorama │ │ ├── Dockerfile │ │ ├── access.toml │ │ ├── entrypoint.sh │ │ ├── f.txt │ │ ├── imp.toml │ │ └── job-exec.toml │ ├── focal │ │ └── Dockerfile │ ├── jammy │ │ └── Dockerfile │ ├── noble │ │ └── Dockerfile │ └── poison-libflux.sh.in │ ├── generate-matrix.py │ ├── relnotes.sh │ ├── scaling │ ├── instancebench.py │ └── mpi-scale.sh │ └── throughput.py ├── t ├── .gitignore ├── Makefile.am ├── README.md ├── aggregate-results.sh ├── barrier │ └── tbarrier.c ├── batch │ ├── directives │ │ ├── invalid │ │ │ ├── 001-invalid-directive.sh │ │ │ ├── 002-sentinel-changed.sh │ │ │ ├── 003-unclosed-multiline.sh │ │ │ ├── 004-unclose-triplequote.sh │ │ │ ├── 005-changed-sentinel.sh │ │ │ ├── 006-bad-shell-quoting.sh │ │ │ ├── 007-bad-shell-quoting.sh │ │ │ └── expected │ │ │ │ ├── 001-invalid-directive.pattern │ │ │ │ ├── 002-sentinel-changed.pattern │ │ │ │ ├── 003-unclosed-multiline.pattern │ │ │ │ ├── 004-unclose-triplequote.pattern │ │ │ │ ├── 005-changed-sentinel.pattern │ │ │ │ ├── 006-bad-shell-quoting.pattern │ │ │ │ └── 007-bad-shell-quoting.pattern │ │ └── valid │ │ │ ├── 001-simple.sh │ │ │ ├── 002-python.py │ │ │ ├── 003-lua.lua │ │ │ ├── 004-mixed-comments.sh │ │ │ ├── 005-mixed-comments.py │ │ │ ├── 006-single-quotes.sh │ │ │ ├── 007-triple-quotes.sh │ │ │ ├── 008-multiline-with-indent.sh │ │ │ ├── 009-multiline-comment-char-escaped.sh │ │ │ ├── 010-noop.sh │ │ │ ├── 011-quoted-punctuation.sh │ │ │ └── expected │ │ │ ├── 001-simple.expected │ │ │ ├── 002-python.expected │ │ │ ├── 003-lua.expected │ │ │ ├── 004-mixed-comments.expected │ │ │ ├── 005-mixed-comments.expected │ │ │ ├── 006-single-quotes.expected │ │ │ ├── 007-triple-quotes.expected │ │ │ ├── 008-multiline-with-indent.expected │ │ │ ├── 009-multiline-comment-char-escaped.expected │ │ │ ├── 010-noop.expected │ │ │ └── 011-quoted-punctuation.expected │ └── jobspec │ │ └── v0.47.json ├── content │ └── content-helper.sh ├── debug │ └── stall.c ├── disconnect │ └── watcher.c ├── flux-jobs │ └── tests │ │ ├── contextual_info │ │ ├── description │ │ ├── format │ │ ├── input │ │ └── output │ │ ├── issue#2634 │ │ ├── description │ │ ├── format │ │ ├── input │ │ └── output │ │ ├── issue#2658 │ │ ├── description │ │ ├── format │ │ ├── input │ │ └── output │ │ ├── issue#5827 │ │ ├── description │ │ ├── format │ │ ├── input │ │ └── output │ │ └── returncode │ │ ├── description │ │ ├── format │ │ ├── input │ │ └── output ├── flux-resource │ ├── list │ │ ├── fluke-info.expected │ │ ├── fluke.R │ │ ├── fluke.config │ │ ├── fluke.expected │ │ ├── fluke.json │ │ ├── fluxion-info.expected │ │ ├── fluxion.R │ │ ├── fluxion.expected │ │ ├── fluxion.json │ │ ├── missing-info.expected │ │ ├── missing.R │ │ ├── missing.expected │ │ ├── missing.json │ │ ├── normal-input-info.expected │ │ ├── normal-input.R │ │ ├── normal-input.expected │ │ ├── normal-input.json │ │ ├── normal-new-info.expected │ │ ├── normal-new.R │ │ ├── normal-new.expected │ │ ├── normal-new.json │ │ ├── null-info.expected │ │ ├── null.R │ │ ├── null.expected │ │ ├── null.json │ │ └── properties-info.expected │ └── status │ │ ├── drain.expected │ │ ├── drain.json │ │ ├── example.expected │ │ ├── example.json │ │ ├── exclude.expected │ │ ├── exclude.json │ │ ├── fluke.config │ │ ├── fluke.expected │ │ ├── fluke.json │ │ ├── offline.expected │ │ ├── offline.json │ │ ├── simple.expected │ │ ├── simple.json │ │ ├── torpid.expected │ │ └── torpid.json ├── fluxometer.lua ├── fluxometer │ ├── .gitignore │ ├── conf.lua.in │ └── conf.lua.installed.in ├── hwloc-data │ ├── 1N │ │ ├── hwloc-versions │ │ │ ├── v1.11.11 │ │ │ │ └── 0.xml │ │ │ ├── v2.1.0 │ │ │ │ └── 0.xml │ │ │ └── v2to1 │ │ │ │ └── 0.xml │ │ ├── nonoverlapping │ │ │ └── 02-brokers │ │ │ │ ├── 0.xml │ │ │ │ └── 1.xml │ │ └── shared │ │ │ └── 02-brokers │ │ │ ├── 0.xml │ │ │ └── 1.xml │ ├── corona │ │ └── 0.xml │ └── sierra2 │ │ ├── 0.xml │ │ └── 1.xml ├── hwloc │ ├── hwloc-convert.c │ └── hwloc-version.c ├── ingest │ ├── bad-validate.py │ ├── job-manager.c │ └── submitbench.c ├── issues │ ├── t0441-kvs-put-get.sh │ ├── t0505-msg-handler-reg.lua │ ├── t0821-kvs-segfault.sh │ ├── t1760-kvs-use-after-free.sh │ ├── t1876-kvs-watch-cancel-race.sh │ ├── t2281-service-add-crash.sh │ ├── t2284-initial-program-format-chars.sh │ ├── t2337-loop-closes-stdin.sh │ ├── t2492-shell-lost.sh │ ├── t2686-shell-input-race.sh │ ├── t2711-rpc-in-aux-item-destructor.sh │ ├── t3186-python-future-get-sigint.sh │ ├── t3415-job-shell-segfault-on-null.sh │ ├── t3429-python-future-ref.py │ ├── t3432-python-sigint.sh │ ├── t3470-multithread-reactor-run.py │ ├── t3492-kvs-subcommand-help.sh │ ├── t3503-nofiles-limit.sh │ ├── t3617-flux-shell-depends-zmq.sh │ ├── t3775-binary-io.sh │ ├── t3906-job-exec-exception.sh │ ├── t3920-running-underflow.sh │ ├── t3960-job-exec-ehostunreach.sh │ ├── t3982-python-message-ref.py │ ├── t4182-resource-rerank.sh │ ├── t4184-sched-simple-restart.sh │ ├── t4222-kvs-assume-empty-dir.sh │ ├── t4227-test.sh │ ├── t4375-content-flush-hang.sh │ ├── t4378-content-flush-force.sh │ ├── t4379-dirty-cache-entries-flush.sh │ ├── t4413-empty-eventlog.sh │ ├── t4465-job-list-use-after-free.sh │ ├── t4482-flush-list-corruption.sh │ ├── t4583-free-range-test.sh │ ├── t4612-eventlog-overwrite-crash.sh │ ├── t4711-job-list-purge-inactive.sh │ ├── t4852-t_submit-legacy.sh │ ├── t5105-signal-propagation.sh │ ├── t5308-kvsdir-initial-path.py │ ├── t5368-kvs-commit-clear.py │ ├── t5657-kvs-getroot-namespace.sh │ ├── t5892-shutdown-no-epilog.sh │ └── t6773-multiple-dependency-add.sh ├── job-attach │ └── outputsleep.sh ├── job-exec │ ├── dummy.sh │ ├── imp-fail.sh │ └── imp.sh ├── job-info │ ├── info_lookup.c │ ├── update_lookup.c │ └── update_watch_stream.c ├── job-list │ ├── job-list-helper.sh │ ├── jobspec-permissive.jsonschema │ ├── list-id.py │ └── list-rpc.py ├── job-manager │ ├── bulk-state.py │ ├── drain-cancel.py │ ├── dumps │ │ ├── invalid │ │ │ └── dump-baddir.tar.bz2 │ │ ├── valid │ │ │ ├── dump-0-40-0.tar.bz2 │ │ │ ├── dump-0-41-0.tar.bz2 │ │ │ ├── dump-0-45-0-no-checkpoint.tar.bz2 │ │ │ ├── dump-0-45-0-queue-anon.tar.bz2 │ │ │ ├── dump-0-45-0-queues-named.tar.bz2 │ │ │ ├── dump-0-46-0-queue-anon-v1.tar.bz2 │ │ │ └── dump-0-46-0-queues-named-v1.tar.bz2 │ │ └── warn │ │ │ ├── dump-noeventlog.tar.bz2 │ │ │ ├── dump-nojobspec.tar.bz2 │ │ │ ├── dump-nosubmit.tar.bz2 │ │ │ └── dump-shorteventlog.tar.bz2 │ ├── events_journal_stream.c │ ├── exec-service.lua │ ├── job-conv.py │ ├── list-jobs.c │ ├── plugins │ │ ├── args.c │ │ ├── cleanup-event.c │ │ ├── config.c │ │ ├── create-event.c │ │ ├── create-reject.c │ │ ├── dependency-test.c │ │ ├── job_aux.c │ │ ├── jobspec-update-job-list.c │ │ ├── jobspec-update.c │ │ ├── jobtap_api.c │ │ ├── offline.c │ │ ├── perilog-test.c │ │ ├── priority-invert.c │ │ ├── priority-wait.c │ │ ├── project-bank-validate.c │ │ ├── random.c │ │ ├── resource-update-expiration.c │ │ ├── subscribe.c │ │ ├── test.c │ │ ├── update-test.c │ │ └── validate.c │ ├── print-constants.c │ ├── sched-helper.sh │ ├── submit-sliding-window.py │ ├── submit-wait.py │ ├── submit-waitany.py │ └── wait-interrupted.py ├── jobspec │ ├── invalid │ │ ├── attributes_bad_entry.yaml │ │ ├── attributes_not_mapping.yaml │ │ ├── attributes_null.yaml │ │ ├── constraints_not_object.yaml │ │ ├── dependencies_not_array.yaml │ │ ├── dependency_invalid.yaml │ │ ├── invalid_yaml1.yaml │ │ ├── missing_attributes.yaml │ │ ├── missing_resources.yaml │ │ ├── missing_tasks.yaml │ │ ├── missing_version.yaml │ │ ├── resource_count_bad_type.yaml │ │ ├── resource_count_is_zero.yaml │ │ ├── resource_count_missing_max.yaml │ │ ├── resource_count_missing_min.yaml │ │ ├── resource_count_missing_operand.yaml │ │ ├── resource_count_missing_operator.yaml │ │ ├── resource_count_scalar_bad_value.yaml │ │ ├── resource_exclusive_invalid.yaml │ │ ├── resource_exclusive_not_scalar.yaml │ │ ├── resource_id_not_scalar.yaml │ │ ├── resource_label_not_scalar.yaml │ │ ├── resource_missing_count.yaml │ │ ├── resource_missing_type.yaml │ │ ├── resource_node_with_notarray.yaml │ │ ├── resource_not_mapping.yaml │ │ ├── resource_slot_not_labelled.yaml │ │ ├── resource_slot_with_notarray.yaml │ │ ├── resource_slot_with_zero.yaml │ │ ├── resource_unit_not_scalar.yaml │ │ ├── resources_not_sequence.yaml │ │ ├── task_command_array_notstring.yaml │ │ ├── task_command_not_array.yaml │ │ ├── task_command_zero_length_array.yaml │ │ ├── task_count_empty.yaml │ │ ├── task_count_not_mapping.yaml │ │ ├── task_count_per_slot_zero.yaml │ │ ├── task_count_total_and_per_slot.yaml │ │ ├── task_count_total_zero.yaml │ │ ├── task_missing_command.yaml │ │ ├── task_missing_count.yaml │ │ ├── task_missing_slot.yaml │ │ ├── task_not_mapping.yaml │ │ ├── tasks_not_sequence.yaml │ │ ├── version_bad_number.yaml │ │ └── version_not_scalar.yaml │ ├── invalid_v1 │ │ ├── core_count_invalid.yaml │ │ ├── duration_missing.yaml │ │ ├── gpu_count_invalid.yaml │ │ ├── node_vertex_missing_count.yaml │ │ ├── node_vertex_with_notarray.yaml │ │ ├── node_vertex_with_toomany.yaml │ │ ├── node_vertex_zero_count.yaml │ │ ├── res_type_unknown.yaml │ │ ├── slot_node.yaml │ │ ├── task_count_per_resource.yaml │ │ ├── version_wrong.yaml │ │ ├── with_toomany.yaml │ │ └── with_whatnow.yaml │ ├── summarize-minimal-jobspec.py │ ├── valid │ │ ├── attributes_system.yaml │ │ ├── attributes_user.yaml │ │ ├── basic.yaml │ │ ├── basic_v1.yaml │ │ ├── example1.yaml │ │ ├── example2.yaml │ │ ├── use_case_1.1.yaml │ │ ├── use_case_1.10.json │ │ ├── use_case_1.2.yaml │ │ ├── use_case_1.3.yaml │ │ ├── use_case_1.4.json │ │ ├── use_case_1.5.json │ │ ├── use_case_1.6.yaml │ │ ├── use_case_1.7.yaml │ │ ├── use_case_1.8.json │ │ ├── use_case_1.9.json │ │ ├── use_case_2.1.yaml │ │ ├── use_case_2.2.yaml │ │ ├── use_case_2.3.yaml │ │ ├── use_case_2.4.yaml │ │ ├── use_case_2.5.yaml │ │ ├── use_case_2.6.yaml │ │ └── use_case_2.7.yaml │ ├── valid_v1 │ │ ├── example1.yaml │ │ ├── gpu_count_zero.yaml │ │ ├── use_case_1.1.yaml │ │ ├── use_case_2.1.yaml │ │ ├── use_case_2.2.yaml │ │ ├── use_case_2.3.yaml │ │ └── use_case_2.4.yaml │ └── y2j.py ├── kvs │ ├── .gitignore │ ├── blobref.c │ ├── commit.c │ ├── commit_order.c │ ├── content-spam.c │ ├── dtree.c │ ├── issue1760.c │ ├── issue1876.c │ ├── kvs-helper.sh │ ├── lookup_invalid.c │ ├── loop_append.c │ ├── setrootevents.c │ ├── torture.c │ ├── transactionmerge.c │ ├── waitcreate_cancel.c │ ├── watch_disconnect.c │ └── watch_stream.c ├── loop │ ├── .gitignore │ ├── issue2337.c │ ├── issue2711.c │ └── logstderr.c ├── lua │ ├── t0001-send-recv.t │ ├── t0002-rpc.t │ ├── t0003-events.t │ ├── t0004-getattr.t │ ├── t0007-alarm.t │ ├── t1000-reactor.t │ ├── t1001-timeouts.t │ └── t1004-statwatcher.t ├── marshall │ ├── invalid │ │ └── v0.46.1.data │ └── valid │ │ └── v0.47.data ├── module │ ├── legacy.c │ ├── running.c │ └── testmod.c ├── mpi │ ├── abort.c │ ├── hello.c │ ├── mpich_basic │ │ ├── GetOpt.c │ │ ├── GetOpt.h │ │ ├── adapt.c │ │ ├── netmpi.c │ │ ├── patterns.c │ │ ├── self.c │ │ ├── sendrecv.c │ │ ├── simple.c │ │ └── srtest.c │ └── version.c ├── prove-under-flux.sh ├── python │ ├── __init__.py │ ├── subflux.py │ ├── t0001-handle.py │ ├── t0002-wrapper.py │ ├── t0003-barrier.py │ ├── t0004-event.py │ ├── t0005-kvs.py │ ├── t0006-request.py │ ├── t0007-watchers.py │ ├── t0008-message.py │ ├── t0009-security.py │ ├── t0010-job.py │ ├── t0012-futures.py │ ├── t0013-job-list.py │ ├── t0014-job-kvslookup.py │ ├── t0015-job-output.py │ ├── t0020-hostlist.py │ ├── t0021-idset.py │ ├── t0022-resource-set.py │ ├── t0023-executor.py │ ├── t0024-util.py │ ├── t0025-uri.py │ ├── t0026-tree.py │ ├── t0027-constraint-parser.py │ ├── t0028-compat36.py │ ├── t0029-fileref.py │ ├── t0030-journal.py │ ├── t0031-conf-builtin.py │ ├── t0032-resource-journal.py │ ├── t0033-eventlog-formatter.py │ ├── t0034-queuelist.py │ ├── t1000-service-add-remove.py │ └── tap │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── COPYING │ │ ├── README.md │ │ ├── example │ │ └── test_example.py │ │ ├── pycotap │ │ └── __init__.py │ │ ├── setup.py │ │ └── test │ │ └── test.py ├── rc │ ├── rc1-job │ ├── rc1-kvs │ ├── rc3-job │ └── rc3-kvs ├── reactor │ └── reactorcat.c ├── request │ ├── .gitignore │ ├── req.c │ ├── rpc.c │ ├── rpc_stream.c │ └── treq.c ├── resource │ ├── resource.eventlog.thing1 │ └── resource.eventlog.thing2 ├── rexec │ ├── rexec.c │ ├── rexec_count_stdout.c │ └── rexec_getline.c ├── runtests.sh ├── sched-simple │ └── jj-reader.c ├── scripts │ ├── dmesg-grep.py │ ├── event-trace-bypass.lua │ ├── event-trace.lua │ ├── groups.py │ ├── pipe.py │ ├── rexec.py │ ├── run_timeout.py │ ├── runpty.py │ ├── sign-as.py │ ├── sqlite-query.py │ ├── startctl.py │ ├── stats-listen.py │ ├── strerror_symbol │ ├── t0004-event-helper.sh │ ├── tssh │ └── waitfile.lua ├── sharness.d │ ├── 01-setup.sh │ ├── flux-sharness.sh │ └── heredoc.sh ├── sharness.sh ├── sharness │ └── vim │ │ ├── ftdetect │ │ └── sharness.vim │ │ ├── indent │ │ └── sharness.vim │ │ └── syntax │ │ └── sharness.vim ├── shell │ ├── initrc │ │ └── tests │ │ │ ├── 0000-basic.lua │ │ │ ├── 0001-shell-info.lua │ │ │ ├── 0002-shell-env.lua │ │ │ ├── 0003-plugin-override.lua │ │ │ └── 0004-getopt.lua │ ├── input │ │ ├── 1r1c.json │ │ ├── 1r1c2gpu.json │ │ ├── 1r2c.json │ │ ├── 4r4c4r1c.json │ │ ├── 8r1c.json │ │ └── out-of-order-ranks.json │ ├── mpir.c │ ├── output │ │ ├── 1r1c.1.err │ │ ├── 1r1c.1.expected │ │ ├── 1r1c2gpu.1.err │ │ ├── 1r1c2gpu.1.expected │ │ ├── 1r2c.1.err │ │ ├── 1r2c.1.expected │ │ ├── 1r2c.2.err │ │ ├── 1r2c.2.expected │ │ ├── 4r4c4r1c.16.err │ │ ├── 4r4c4r1c.16.expected │ │ ├── 4r4c4r1c.20.err │ │ ├── 4r4c4r1c.20.expected │ │ ├── 4r4c4r1c.4.err │ │ ├── 4r4c4r1c.4.expected │ │ ├── 4r4c4r1c.8.err │ │ ├── 4r4c4r1c.8.expected │ │ ├── 4r4c4r1c.9.err │ │ ├── 4r4c4r1c.9.expected │ │ ├── 8r1c.4.err │ │ ├── 8r1c.4.expected │ │ ├── 8r1c.8.err │ │ ├── 8r1c.8.expected │ │ ├── 8r1c.9.err │ │ ├── 8r1c.9.expected │ │ ├── out-of-order-ranks.10.err │ │ ├── out-of-order-ranks.10.expected │ │ └── per-resource │ │ │ ├── 1r1c.core.1.err │ │ │ ├── 1r1c.core.1.expected │ │ │ ├── 1r1c.core.2.err │ │ │ ├── 1r1c.core.2.expected │ │ │ ├── 1r1c.node.1.err │ │ │ ├── 1r1c.node.1.expected │ │ │ ├── 1r1c.node.2.err │ │ │ ├── 1r1c.node.2.expected │ │ │ ├── 1r1c2gpu.core.1.err │ │ │ ├── 1r1c2gpu.core.1.expected │ │ │ ├── 1r1c2gpu.core.2.err │ │ │ ├── 1r1c2gpu.core.2.expected │ │ │ ├── 1r1c2gpu.node.1.err │ │ │ ├── 1r1c2gpu.node.1.expected │ │ │ ├── 1r1c2gpu.node.2.err │ │ │ ├── 1r1c2gpu.node.2.expected │ │ │ ├── 1r2c.core.1.err │ │ │ ├── 1r2c.core.1.expected │ │ │ ├── 1r2c.core.2.err │ │ │ ├── 1r2c.core.2.expected │ │ │ ├── 1r2c.node.1.err │ │ │ ├── 1r2c.node.1.expected │ │ │ ├── 1r2c.node.2.err │ │ │ ├── 1r2c.node.2.expected │ │ │ ├── 4r4c4r1c.core.1.err │ │ │ ├── 4r4c4r1c.core.1.expected │ │ │ ├── 4r4c4r1c.core.2.err │ │ │ ├── 4r4c4r1c.core.2.expected │ │ │ ├── 4r4c4r1c.node.1.err │ │ │ ├── 4r4c4r1c.node.1.expected │ │ │ ├── 4r4c4r1c.node.2.err │ │ │ ├── 4r4c4r1c.node.2.expected │ │ │ ├── 8r1c.core.1.err │ │ │ ├── 8r1c.core.1.expected │ │ │ ├── 8r1c.core.2.err │ │ │ ├── 8r1c.core.2.expected │ │ │ ├── 8r1c.node.1.err │ │ │ ├── 8r1c.node.1.expected │ │ │ ├── 8r1c.node.2.err │ │ │ └── 8r1c.node.2.expected │ ├── plugins │ │ ├── conftest.c │ │ ├── dummy.c │ │ ├── fork.c │ │ ├── getopt.c │ │ ├── invalid-args.c │ │ ├── jobspec-info.c │ │ ├── log.c │ │ ├── taskmap-reverse.c │ │ └── test-event.c │ └── rcalc.c ├── stats │ ├── stats-basic.c │ └── stats-immediate.c ├── system │ ├── 0001-basic.t │ ├── 0002-exec-with-imp.t │ ├── 0004-recovery.t │ └── 0005-exec.t ├── t0000-sharness.t ├── t0001-basic.t ├── t0002-request.t ├── t0003-module.t ├── t0004-event.t ├── t0005-exec-jobid.t ├── t0005-exec.t ├── t0005-rexec.t ├── t0007-ping.t ├── t0008-attr.t ├── t0009-dmesg.t ├── t0010-generic-utils.t ├── t0011-content-cache.t ├── t0012-content-sqlite.t ├── t0013-config-file.t ├── t0014-runlevel.t ├── t0015-cron.t ├── t0016-cron-faketime.t ├── t0017-security.t ├── t0018-content-files.t ├── t0019-tbon-config.t ├── t0020-terminus.t ├── t0021-archive-cmd.t ├── t0022-jj-reader.t ├── t0023-jobspec1-validate.t ├── t0025-broker-state-machine.t ├── t0026-flux-R.t ├── t0027-broker-groups.t ├── t0029-archive-mmap.t ├── t0030-marshall.t ├── t0031-constraint-parser.t ├── t0032-directives-parser.t ├── t0033-filemap-cmd.t ├── t0090-content-enospc.t ├── t1000-kvs.t ├── t1001-kvs-internals.t ├── t1003-kvs-stress.t ├── t1004-kvs-namespace.t ├── t1005-kvs-security.t ├── t1007-kvs-lookup-watch.t ├── t1008-kvs-eventlog.t ├── t1009-kvs-copy.t ├── t1010-kvs-commit-sync.t ├── t1011-kvs-checkpoint-period.t ├── t1012-kvs-checkpoint.t ├── t1013-kvs-initial-rootref.t ├── t1101-barrier-basic.t ├── t1102-cmddriver.t ├── t1103-apidisconnect.t ├── t1105-proxy.t ├── t1106-ssh-connector.t ├── t1107-heartbeat.t ├── t1200-stats-basic.t ├── t2004-hydra.t ├── t2008-althash.t ├── t2010-kvs-snapshot-restore.t ├── t2100-job-ingest.t ├── t2110-job-ingest-validator.t ├── t2111-job-ingest-config.t ├── t2112-job-ingest-frobnicator.t ├── t2113-job-ingest-pipeline.t ├── t2201-job-cmd.t ├── t2202-job-manager.t ├── t2203-job-manager-single.t ├── t2204-job-manager-limited.t ├── t2205-job-manager-unlimited.t ├── t2206-job-manager-annotate.t ├── t2208-job-manager-wait.t ├── t2209-job-manager-bugs.t ├── t2210-job-manager-events-journal.t ├── t2211-job-manager-jobspec.t ├── t2212-job-manager-plugins.t ├── t2213-job-manager-hold-single.t ├── t2214-job-manager-hold-limited.t ├── t2215-job-manager-hold-unlimited.t ├── t2216-job-manager-priority-order-single.t ├── t2217-job-manager-priority-order-limited.t ├── t2218-job-manager-priority-order-unlimited.t ├── t2219-job-manager-restart.t ├── t2220-job-manager-R.t ├── t2221-job-manager-limit-duration.t ├── t2222-job-manager-limit-job-size.t ├── t2223-job-manager-queue-priority-order-limited.t ├── t2224-job-manager-queue-priority-order-unlimited.t ├── t2226-housekeeping.t ├── t2230-job-info-lookup.t ├── t2231-job-info-eventlog-watch.t ├── t2232-job-info-security.t ├── t2233-job-info-update.t ├── t2240-queue-cmd.t ├── t2241-queue-cmd-list.t ├── t2245-policy-config.t ├── t2260-job-list.t ├── t2261-job-list-update.t ├── t2262-job-list-stats.t ├── t2270-job-dependencies.t ├── t2271-job-dependency-after.t ├── t2272-job-begin-time.t ├── t2273-job-alloc-bypass.t ├── t2274-manager-perilog-per-rank.t ├── t2275-job-duration-validator.t ├── t2276-job-requires.t ├── t2277-dependency-singleton.t ├── t2280-job-memo.t ├── t2290-job-update.t ├── t2291-job-update-queue.t ├── t2292-job-update-running.t ├── t2300-sched-simple.t ├── t2302-sched-simple-up-down.t ├── t2303-sched-hello.t ├── t2304-sched-simple-alloc-check.t ├── t2305-sched-slow.t ├── t2310-resource-module.t ├── t2311-resource-drain.t ├── t2312-resource-exclude.t ├── t2313-resource-acquire.t ├── t2314-resource-monitor.t ├── t2315-resource-system.t ├── t2316-resource-rediscover.t ├── t2317-resource-shrink.t ├── t2350-resource-list.t ├── t2351-resource-status-input.t ├── t2352-resource-cmd-config.t ├── t2353-resource-eventlog.t ├── t2354-resource-status.t ├── t2355-resource-journal.t ├── t2400-job-exec-test.t ├── t2401-job-exec-hello.t ├── t2402-job-exec-dummy.t ├── t2403-job-exec-conf.t ├── t2404-job-exec-multiuser.t ├── t2406-job-exec-cleanup.t ├── t2407-sdbus.t ├── t2408-sdbus-recovery.t ├── t2409-sdexec.t ├── t2410-sdexec-memlimit.t ├── t2411-sdexec-job.t ├── t2412-sdmon.t ├── t2413-sdmon-resource.t ├── t2500-job-attach.t ├── t2501-job-status.t ├── t2600-job-shell-rcalc.t ├── t2602-job-shell.t ├── t2603-job-shell-initrc.t ├── t2604-job-shell-affinity.t ├── t2606-job-shell-output-redirection.t ├── t2607-job-shell-input.t ├── t2608-job-shell-log.t ├── t2609-job-shell-events.t ├── t2610-job-shell-mpir.t ├── t2611-debug-emulate.t ├── t2612-job-shell-pty.t ├── t2613-job-shell-batch.t ├── t2614-job-shell-doom.t ├── t2615-job-shell-rlimit.t ├── t2616-job-shell-taskmap-hostfile.t ├── t2616-job-shell-taskmap.t ├── t2617-job-shell-stage-in.t ├── t2618-job-shell-signal.t ├── t2619-job-shell-hwloc.t ├── t2620-job-shell-mustache.t ├── t2621-job-shell-plugin-fork.t ├── t2710-python-cli-submit.t ├── t2711-python-cli-run.t ├── t2712-python-cli-alloc.t ├── t2713-python-cli-bulksubmit.t ├── t2714-python-cli-batch.t ├── t2715-python-cli-cancel.t ├── t2716-python-cli-batch-conf.t ├── t2800-jobs-cmd-multiuser.t ├── t2800-jobs-cmd.t ├── t2800-jobs-config.t ├── t2800-jobs-instance-info.t ├── t2800-jobs-recursive.t ├── t2801-top-cmd.t ├── t2802-uri-cmd.t ├── t2803-flux-pstree.t ├── t2804-uptime-cmd.t ├── t2805-startlog-cmd.t ├── t2806-config-cmd.t ├── t2807-dump-cmd.t ├── t2808-shutdown-cmd.t ├── t2809-job-purge.t ├── t2810-kvs-garbage-collect.t ├── t2811-flux-pgrep.t ├── t2812-flux-job-last.t ├── t2813-flux-watch.t ├── t2814-hostlist-cmd.t ├── t2815-post-job-event.t ├── t2816-fsck-cmd.t ├── t2900-job-timelimits.t ├── t3000-mpi-basic.t ├── t3001-mpi-personalities.t ├── t3002-pmi.t ├── t3003-mpi-abort.t ├── t3100-flux-in-flux.t ├── t3200-instance-restart.t ├── t3201-crontabs.t ├── t3202-instance-restart-testexec.t ├── t3203-instance-recovery.t ├── t3300-system-basic.t ├── t3301-system-latestart.t ├── t3302-system-offline.t ├── t3303-system-healthcheck.t ├── t3304-system-rpctrack-down.t ├── t3305-system-rpctrack-up.t ├── t3306-system-routercrash.t ├── t3307-system-leafcrash.t ├── t3308-system-torpid.t ├── t3309-system-reconnect.t ├── t3310-system-heartbeat.t ├── t3400-overlay-trace.t ├── t3401-module-trace.t ├── t4000-issues-test-driver.t ├── t5000-valgrind.t ├── t9000-system.t ├── test-inception.sh ├── test-terminal.perl ├── test-under-flux │ ├── expected.modcheck │ ├── t_modcheck.t │ └── test.t ├── util │ ├── handle.c │ ├── jobspec1-validate.c │ └── marshall.c └── valgrind │ ├── valgrind-workload.sh │ ├── valgrind.supp │ └── workload.d │ ├── job │ ├── job-cancel │ ├── job-info │ ├── job-list │ ├── job-multinode │ ├── job-sdexec │ ├── job-wait │ └── resource └── vscode.md /.github/codeql/codeql-config.yml: -------------------------------------------------------------------------------- 1 | Name: "flux codeql defaults" 2 | queries: 3 | - uses: security-and-quality 4 | paths: 5 | - src 6 | paths-ignore: 7 | - "**/flux/utils/**/*.py" 8 | - "src/**/parsedatetime/**/*.py" 9 | - "**/_flux/**/*.py" 10 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ms-vscode.cpptools", 4 | "github.vscode-pull-request-github", 5 | "sumneko.lua", 6 | "ms-python.python" 7 | ] 8 | } -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Run an extra libtoolize before autoreconf to ensure that 4 | # libtool macros can be found if libtool is in PATH, but its 5 | # macros are not in default aclocal search path. 6 | # 7 | echo "Running libtoolize --automake --copy ... " 8 | libtoolize --automake --copy || exit 9 | echo "Running autoreconf --force --verbose --install" 10 | autoreconf --force --verbose --install || exit 11 | echo "Now run ./configure." 12 | -------------------------------------------------------------------------------- /config/.gitignore: -------------------------------------------------------------------------------- 1 | /py-compile 2 | /test-driver 3 | -------------------------------------------------------------------------------- /debian/README.Debian: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/debian/README.Debian -------------------------------------------------------------------------------- /debian/README.source: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/debian/README.source -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 10 2 | -------------------------------------------------------------------------------- /debian/flux-core-docs.docs: -------------------------------------------------------------------------------- 1 | README.Debian 2 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (quilt) 2 | -------------------------------------------------------------------------------- /doc/guide/images/adminarch.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/doc/guide/images/adminarch.dia -------------------------------------------------------------------------------- /doc/guide/images/adminarch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/doc/guide/images/adminarch.png -------------------------------------------------------------------------------- /doc/guide/images/lgplv3-147x51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/doc/guide/images/lgplv3-147x51.png -------------------------------------------------------------------------------- /doc/guide/images/states.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/doc/guide/images/states.png -------------------------------------------------------------------------------- /doc/guide/images/states_norm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/doc/guide/images/states_norm.png -------------------------------------------------------------------------------- /doc/guide/internals.rst: -------------------------------------------------------------------------------- 1 | Resources for Flux Developers 2 | ============================= 3 | 4 | .. toctree:: 5 | :maxdepth: 1 6 | :caption: Contents: 7 | 8 | debug 9 | kvs 10 | broker 11 | -------------------------------------------------------------------------------- /doc/index_man.rst: -------------------------------------------------------------------------------- 1 | .. _man-pages: 2 | 3 | Manual Pages 4 | ============ 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | 9 | man1/index 10 | man3/index 11 | man5/index 12 | man7/index 13 | -------------------------------------------------------------------------------- /doc/man1/.gitignore: -------------------------------------------------------------------------------- 1 | /flux*.xml 2 | -------------------------------------------------------------------------------- /doc/man1/common/experimental.rst: -------------------------------------------------------------------------------- 1 | Experimental Flux features and interfaces are made available for evaluation 2 | only and may change or be removed without notice. 3 | 4 | Feedback is welcome. Please use the flux-core project Github issue tracker. 5 | -------------------------------------------------------------------------------- /doc/man1/common/job-param-pertask.rst: -------------------------------------------------------------------------------- 1 | .. option:: -n, --ntasks=N 2 | 3 | Set the number of tasks to launch (default 1). 4 | 5 | .. option:: -c, --cores-per-task=N 6 | 7 | Set the number of cores to assign to each task (default 1). 8 | 9 | .. option:: -g, --gpus-per-task=N 10 | 11 | Set the number of GPU devices to assign to each task (default none). 12 | -------------------------------------------------------------------------------- /doc/man1/common/resources.rst: -------------------------------------------------------------------------------- 1 | Flux: http://flux-framework.org 2 | 3 | Flux RFC: https://flux-framework.readthedocs.io/projects/flux-rfc 4 | 5 | Issue Tracker: https://github.com/flux-framework/flux-core/issues 6 | -------------------------------------------------------------------------------- /doc/man1/index.rst: -------------------------------------------------------------------------------- 1 | .. _man-commands: 2 | 3 | Section 1 - Flux Commands 4 | ========================= 5 | 6 | .. toctree:: 7 | :maxdepth: 1 8 | :glob: 9 | 10 | * 11 | -------------------------------------------------------------------------------- /doc/man3/.gitignore: -------------------------------------------------------------------------------- 1 | /tevent 2 | /tinfo 3 | /topen 4 | /trecv 5 | /trpc 6 | /trpc_then 7 | /trpc_then_multi 8 | /tsend 9 | -------------------------------------------------------------------------------- /doc/man3/common/experimental.rst: -------------------------------------------------------------------------------- 1 | Experimental Flux features and interfaces are made available for evaluation 2 | only and may change or be removed without notice. 3 | 4 | Feedback is welcome. Please use the flux-core project Github issue tracker. 5 | -------------------------------------------------------------------------------- /doc/man3/common/resources.rst: -------------------------------------------------------------------------------- 1 | Flux: http://flux-framework.org 2 | 3 | Flux RFC: https://flux-framework.readthedocs.io/projects/flux-rfc 4 | 5 | Issue Tracker: https://github.com/flux-framework/flux-core/issues 6 | -------------------------------------------------------------------------------- /doc/man3/example/die.h: -------------------------------------------------------------------------------- 1 | #ifndef _EXAMPLE_DIE 2 | #define _EXAMPLE_DIE 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #define die(fmt, ...) do { \ 9 | int _e = errno; \ 10 | fprintf (stderr, (fmt), ##__VA_ARGS__); \ 11 | fprintf (stderr, ": %s\n", strerror (_e)); \ 12 | exit (1); \ 13 | } while (0); 14 | #endif // _EXAMPLE_DIE 15 | -------------------------------------------------------------------------------- /doc/man3/example/info.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "die.h" 3 | 4 | int main (int argc, char **argv) 5 | { 6 | flux_t *h; 7 | uint32_t rank, n; 8 | 9 | if (!(h = flux_open (NULL, 0))) 10 | die ("could not connect to broker"); 11 | if (flux_get_rank (h, &rank) < 0) 12 | die ("error getting rank"); 13 | if (flux_get_size (h, &n) < 0) 14 | die ("error getting size"); 15 | flux_close (h); 16 | return (0); 17 | } 18 | -------------------------------------------------------------------------------- /doc/man3/example/open.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "die.h" 3 | 4 | int main (int argc, char **argv) 5 | { 6 | flux_t *h; 7 | uint32_t rank; 8 | 9 | if (!(h = flux_open (NULL, 0))) 10 | die ("could not connect to broker"); 11 | if (flux_get_rank (h, &rank) < 0) 12 | die ("could not get rank"); 13 | printf ("My rank is %d\n", (int)rank); 14 | flux_close (h); 15 | return (0); 16 | } 17 | -------------------------------------------------------------------------------- /doc/man3/example/send.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "die.h" 3 | 4 | int main (int argc, char **argv) 5 | { 6 | flux_t *h; 7 | flux_msg_t *msg; 8 | 9 | if (!(h = flux_open (NULL, 0))) 10 | die ("flux open %s", "NULL"); 11 | if (!(msg = flux_event_encode ("snack.bar.closing", NULL))) 12 | die ("flux_event_encode"); 13 | if (flux_send (h, msg, 0) < 0) 14 | die ("flux_send"); 15 | flux_msg_destroy (msg); 16 | flux_close (h); 17 | return (0); 18 | } 19 | -------------------------------------------------------------------------------- /doc/man3/index.rst: -------------------------------------------------------------------------------- 1 | Section 3 - Flux C API 2 | ====================== 3 | 4 | .. toctree:: 5 | :maxdepth: 1 6 | :glob: 7 | 8 | * 9 | -------------------------------------------------------------------------------- /doc/man5/common/experimental.rst: -------------------------------------------------------------------------------- 1 | Experimental Flux features and interfaces are made available for evaluation 2 | only and may change or be removed without notice. 3 | 4 | Feedback is welcome. Please use the flux-core project Github issue tracker. 5 | -------------------------------------------------------------------------------- /doc/man5/common/resources.rst: -------------------------------------------------------------------------------- 1 | Flux: http://flux-framework.org 2 | 3 | Flux RFC: https://flux-framework.readthedocs.io/projects/flux-rfc 4 | 5 | Issue Tracker: https://github.com/flux-framework/flux-core/issues 6 | -------------------------------------------------------------------------------- /doc/man5/index.rst: -------------------------------------------------------------------------------- 1 | Section 5 - Flux Configuration File 2 | =================================== 3 | 4 | .. toctree:: 5 | :maxdepth: 1 6 | :glob: 7 | 8 | * 9 | -------------------------------------------------------------------------------- /doc/man7/common/experimental.rst: -------------------------------------------------------------------------------- 1 | Experimental Flux features and interfaces are made available for evaluation 2 | only and may change or be removed without notice. 3 | 4 | Feedback is welcome. Please use the flux-core project Github issue tracker. 5 | -------------------------------------------------------------------------------- /doc/man7/common/resources.rst: -------------------------------------------------------------------------------- 1 | Flux: http://flux-framework.org 2 | 3 | Flux RFC: https://flux-framework.readthedocs.io/projects/flux-rfc 4 | 5 | Issue Tracker: https://github.com/flux-framework/flux-core/issues 6 | -------------------------------------------------------------------------------- /doc/man7/flux-undocumented.rst: -------------------------------------------------------------------------------- 1 | ==================== 2 | flux-undocumented(7) 3 | ==================== 4 | 5 | 6 | DESCRIPTION 7 | =========== 8 | 9 | This documentation does not exist 10 | Apparently something was missed 11 | We might need reminding 12 | Of the page you're not finding 13 | So sorry, please don't be pissed 14 | 15 | Issue or PR to http://github.com/flux-framework/flux-core welcome. 16 | -------------------------------------------------------------------------------- /doc/man7/index.rst: -------------------------------------------------------------------------------- 1 | Section 7 - Flux Miscellany 2 | =========================== 3 | 4 | .. toctree:: 5 | :maxdepth: 1 6 | :glob: 7 | 8 | * 9 | -------------------------------------------------------------------------------- /doc/python/.gitignore: -------------------------------------------------------------------------------- 1 | autogenerated/ 2 | -------------------------------------------------------------------------------- /doc/python/complete_api.rst: -------------------------------------------------------------------------------- 1 | Complete API Reference 2 | ====================== 3 | 4 | Note that some of the items documented here 5 | may not be intended or designed for public use. 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 4 10 | 11 | autogenerated/flux 12 | -------------------------------------------------------------------------------- /doc/python/index.rst: -------------------------------------------------------------------------------- 1 | Python API 2 | ========== 3 | 4 | Flux provides a rich Python interface. With few exceptions, 5 | any Flux interactions that are possible in C or on the 6 | command line are possible in Python as well via the ``flux`` package. 7 | 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | :caption: Contents: 12 | 13 | basics 14 | job_submission 15 | complete_api 16 | developer 17 | 18 | 19 | Indices and tables 20 | ------------------ 21 | 22 | * :ref:`genindex` 23 | * :ref:`modindex` 24 | * :ref:`search` 25 | -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- 1 | ../scripts/requirements-doc.txt -------------------------------------------------------------------------------- /doc/test/Makefile.am: -------------------------------------------------------------------------------- 1 | dist_noinst_SCRIPTS = spellcheck 2 | 3 | EXTRA_DIST = spell.en.pws 4 | 5 | AM_TESTS_ENVIRONMENT = \ 6 | ASPELL=$(ASPELL) \ 7 | pws_dict=$(abs_top_srcdir)/doc/test/spell.en.pws \ 8 | man_base_dir=$(abs_top_srcdir)/doc 9 | 10 | LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ 11 | $(top_srcdir)/config/tap-driver.sh 12 | 13 | TESTS = spellcheck 14 | -------------------------------------------------------------------------------- /etc/.gitignore: -------------------------------------------------------------------------------- 1 | /flux 2 | /flux.service 3 | 4 | -------------------------------------------------------------------------------- /etc/flux-epilog@.service.in: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Epilog for Flux job %I 3 | CollectMode=inactive-or-failed 4 | 5 | [Service] 6 | Type=oneshot 7 | EnvironmentFile=-@X_RUNSTATEDIR@/flux-epilog@%I.env 8 | ExecStart=@X_SYSCONFDIR@/flux/system/epilog 9 | ExecStopPost=-rm -f @X_RUNSTATEDIR@/flux-epilog@%I.env 10 | -------------------------------------------------------------------------------- /etc/flux-hostlist.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: flux-hostlist 7 | Description: Flux Resource Manager Hostlist Library 8 | Version: @PACKAGE_VERSION@ 9 | Libs: -L${libdir} -lflux-hostlist 10 | Cflags: -I${includedir} 11 | -------------------------------------------------------------------------------- /etc/flux-idset.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: flux-idset 7 | Description: Flux Resource Manager ID Set Library 8 | Version: @PACKAGE_VERSION@ 9 | Libs: -L${libdir} -lflux-idset 10 | Cflags: -I${includedir} 11 | -------------------------------------------------------------------------------- /etc/flux-optparse.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: flux-optparse 7 | Description: Flux Resource Manager Option Parser 8 | Version: @PACKAGE_VERSION@ 9 | Libs: -L${libdir} -lflux-optparse 10 | Cflags: -I${includedir} 11 | -------------------------------------------------------------------------------- /etc/flux-pmi.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: flux-pmi 7 | Description: Flux Core PMI Library 8 | Version: @PACKAGE_VERSION@ 9 | Libs: -L${libdir}/flux -lpmi 10 | Cflags: -I${includedir}/flux 11 | -------------------------------------------------------------------------------- /etc/flux-prolog@.service.in: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Prolog for Flux job %I 3 | CollectMode=inactive-or-failed 4 | 5 | [Service] 6 | Type=oneshot 7 | EnvironmentFile=-@X_RUNSTATEDIR@/flux-prolog@%I.env 8 | ExecStart=@X_SYSCONFDIR@/flux/system/prolog 9 | ExecStopPost=-rm -f @X_RUNSTATEDIR@/flux-prolog@%I.env 10 | -------------------------------------------------------------------------------- /etc/flux-schedutil.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: flux-schedutil 7 | Description: Flux Resource Manager Scheduler Utility Library 8 | Version: @PACKAGE_VERSION@ 9 | Libs: -L${libdir} -lflux-schedutil 10 | Cflags: -I${includedir} 11 | -------------------------------------------------------------------------------- /etc/flux-taskmap.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: flux-taskmap 7 | Description: Flux Resource Manager Taskmap Library 8 | Version: @PACKAGE_VERSION@ 9 | Libs: -L${libdir} -lflux-taskmap 10 | Cflags: -I${includedir} 11 | -------------------------------------------------------------------------------- /etc/flux.conf: -------------------------------------------------------------------------------- 1 | # See tmpfiles.d(5) 2 | # remove old Flux dump files 3 | 4 | e /var/lib/flux/dump - - - 7d 5 | -------------------------------------------------------------------------------- /etc/kvs-backup.cron: -------------------------------------------------------------------------------- 1 | 0 3 * * * sh -c "flux dump --quiet --ignore-failed-read $(flux getattr statedir)/dump/$(date +%Y%m%d_%H%M%S).tgz" 2 | -------------------------------------------------------------------------------- /etc/rc1.d/02-cron: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Load crontabs from directory if cron.directory attribute is set 4 | 5 | if test $(flux getattr rank) -eq 0 \ 6 | && cron_dir=$(flux getattr cron.directory 2>/dev/null) \ 7 | && test -d "$cron_dir"; then 8 | shopt -s nullglob 9 | for file in $cron_dir/*; do 10 | if test -f $file; then 11 | if ! flux cron tab <$file; then 12 | echo "could not load crontab: $file" >&2 13 | exit 1 14 | fi 15 | fi 16 | done 17 | shopt -u nullglob 18 | fi 19 | -------------------------------------------------------------------------------- /scripts/fetch-and-build-catch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | mkdir catch2 5 | pushd catch2 6 | wget -O - https://github.com/catchorg/Catch2/archive/refs/tags/v3.6.0.tar.gz | tar xvz --strip-components 1 7 | cmake -B build -DCMAKE_INSTALL_PREFIX=/usr 8 | cmake --build build -j 4 -t install 9 | popd 10 | rm -rf catch2 11 | -------------------------------------------------------------------------------- /scripts/fetch-and-build-mpich.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -euo pipefail 3 | 4 | mkdir catch2 5 | pushd catch2 6 | wget -O - https://www.mpich.org/static/downloads/4.2.2/mpich-4.2.2.tar.gz | tar xvz --strip-components 1 7 | mkdir -p build 8 | pushd build 9 | ../configure --prefix=/usr --without-pmix 10 | make -j 4 install 11 | popd 12 | popd 13 | rm -rf catch2 14 | 15 | -------------------------------------------------------------------------------- /scripts/format: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if command -v black 2>&1 > /dev/null ; then 4 | # awk cmd copied from: 5 | # https://unix.stackexchange.com/questions/66097/find-all-files-with-a-python-shebang 6 | find src t \ 7 | -path "src/bindings/python/_flux" -prune -o \ 8 | -path "src/bindings/python/flux/utils" -prune -o \ 9 | -type f \( -name "*.py" -print -o \ 10 | -exec awk ' /^#!.*python/{print FILENAME} {nextfile}' {} + \) \ 11 | | xargs black 12 | else 13 | echo "black not found, python left unformatted" 14 | fi 15 | -------------------------------------------------------------------------------- /scripts/generate_compile_commands: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | : ${OUTPUT:=$(pwd)/compile_commands.json} 4 | : ${APPEND:=--append} 5 | : ${TARGET:=all} 6 | while test $# -gt 0 ; do 7 | case $1 in 8 | -f) 9 | # overwrite existing, do not append 10 | APPEND='' 11 | shift 12 | ;; 13 | -t) 14 | # include tests, this means running all of check, prepare to wait 15 | TARGET=check 16 | shift 17 | ;; 18 | *) 19 | break 20 | ;; 21 | esac 22 | done 23 | 24 | bear -o "${OUTPUT}" $APPEND make "$TARGET" "$@" -------------------------------------------------------------------------------- /scripts/requirements-ci.txt: -------------------------------------------------------------------------------- 1 | markupsafe==2.0.0 2 | coverage 3 | cffi 4 | ply 5 | six 6 | pyyaml 7 | jsonschema>=2.6,<4.0 8 | sphinxcontrib-spelling 9 | -r requirements-doc.txt 10 | -------------------------------------------------------------------------------- /scripts/requirements-dev.txt: -------------------------------------------------------------------------------- 1 | cffi>=1.1 2 | ply>=3.9 3 | pyyaml>=3.10.0 4 | black==24.3.0 5 | flake8>=5.0.4 6 | isort>=5.9.3 7 | mypy==1.9.0 8 | pre-commit>=2.9.2 9 | types-PyYAML 10 | -------------------------------------------------------------------------------- /scripts/requirements-doc.txt: -------------------------------------------------------------------------------- 1 | sphinx-rtd-theme>=0.5.2 2 | docutils>=0.14,<0.18 3 | urllib3<2 4 | -------------------------------------------------------------------------------- /scripts/run_mypy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | # This seems to be needed to use our own version of mypy? 6 | mypy 7 | -------------------------------------------------------------------------------- /src/Makefile.am: -------------------------------------------------------------------------------- 1 | .NOTPARALLEL: 2 | 3 | #This order is *important*, common must precede modules, 4 | # modules must precede lib 5 | SUBDIRS = common modules broker connectors bindings shell cmd test 6 | 7 | check-local: all 8 | 9 | noinst_HEADERS = \ 10 | include/flux/core.h \ 11 | include/flux/optparse.h \ 12 | include/flux/idset.h \ 13 | include/flux/schedutil.h \ 14 | include/flux/shell.h \ 15 | include/flux/hostlist.h \ 16 | include/flux/jobtap.h \ 17 | include/flux/taskmap.h 18 | -------------------------------------------------------------------------------- /src/bindings/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = lua python 2 | -------------------------------------------------------------------------------- /src/bindings/lua/README: -------------------------------------------------------------------------------- 1 | Flux API Lua bindings 2 | ======================= 3 | 4 | These bindings are deprecated. Do not use unless lives are at stake. 5 | -------------------------------------------------------------------------------- /src/bindings/lua/Test/dist.info: -------------------------------------------------------------------------------- 1 | 2 | name = "lua-testmore" 3 | version = "0.3.1" 4 | 5 | desc = "an Unit Testing Framework" 6 | author = "Francois Perrad" 7 | license = "MIT/X11" 8 | url = "http://fperrad.github.com/lua-TestMore/" 9 | maintainer = "Francois Perrad" 10 | 11 | depends = { 12 | "lua ~> 5.1", 13 | } 14 | -------------------------------------------------------------------------------- /src/bindings/python/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS=_flux flux 2 | 3 | clean-local: 4 | -rm -f .coverage* 5 | -------------------------------------------------------------------------------- /src/bindings/python/_flux/.gitignore: -------------------------------------------------------------------------------- 1 | *.c 2 | -------------------------------------------------------------------------------- /src/bindings/python/_flux/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/src/bindings/python/_flux/__init__.py -------------------------------------------------------------------------------- /src/bindings/python/flux/.gitignore: -------------------------------------------------------------------------------- 1 | # Intermediate autogenerated files 2 | _*_build.py 3 | _*.c 4 | 5 | # PLY autogenerated file 6 | parsetab.py 7 | -------------------------------------------------------------------------------- /src/bindings/python/flux/cli/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/src/bindings/python/flux/cli/__init__.py -------------------------------------------------------------------------------- /src/bindings/python/flux/constraint/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/src/bindings/python/flux/constraint/__init__.py -------------------------------------------------------------------------------- /src/bindings/python/flux/core/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/src/bindings/python/flux/core/__init__.py -------------------------------------------------------------------------------- /src/bindings/python/flux/job/frobnicator/__init__.py: -------------------------------------------------------------------------------- 1 | ############################################################### 2 | # Copyright 2022 Lawrence Livermore National Security, LLC 3 | # (c.f. AUTHORS, NOTICE.LLNS, COPYING) 4 | # 5 | # This file is part of the Flux resource manager framework. 6 | # For details, see https://github.com/flux-framework. 7 | # 8 | # SPDX-License-Identifier: LGPL-3.0 9 | ############################################################### 10 | 11 | from flux.job.frobnicator.frobnicator import FrobnicatorPlugin, JobFrobnicator 12 | -------------------------------------------------------------------------------- /src/bindings/python/flux/job/validator/__init__.py: -------------------------------------------------------------------------------- 1 | ############################################################### 2 | # Copyright 2021 Lawrence Livermore National Security, LLC 3 | # (c.f. AUTHORS, NOTICE.LLNS, COPYING) 4 | # 5 | # This file is part of the Flux resource manager framework. 6 | # For details, see https://github.com/flux-framework. 7 | # 8 | # SPDX-License-Identifier: LGPL-3.0 9 | ############################################################### 10 | 11 | from flux.job.validator.validator import JobValidator, ValidatorPlugin 12 | -------------------------------------------------------------------------------- /src/bindings/python/flux/uri/__init__.py: -------------------------------------------------------------------------------- 1 | ############################################################### 2 | # Copyright 2021 Lawrence Livermore National Security, LLC 3 | # (c.f. AUTHORS, NOTICE.LLNS, COPYING) 4 | # 5 | # This file is part of the Flux resource manager framework. 6 | # For details, see https://github.com/flux-framework. 7 | # 8 | # SPDX-License-Identifier: LGPL-3.0 9 | ############################################################### 10 | 11 | from flux.uri.uri import URI, FluxURIResolver, JobURI, URIResolverPlugin, URIResolverURI 12 | -------------------------------------------------------------------------------- /src/bindings/python/flux/utils/README.md: -------------------------------------------------------------------------------- 1 | Place vendored Python modules here. 2 | 3 | Record commit hash of included version for convenience. 4 | 5 | parsedatetime c55337589ee582813182b74f2d3ae80e2fcd9738 6 | tomli 345bd2a224f215fbb33546b6d7e358307b783793 7 | dataclasses 5f6568c3468f872e8f447dc20666628387786397 8 | -------------------------------------------------------------------------------- /src/bindings/python/flux/utils/dataclasses/MANIFEST.in: -------------------------------------------------------------------------------- 1 | include test/* 2 | include dataclass_tools.py 3 | include LICENSE.txt 4 | include README.rst 5 | include MANIFEST.in 6 | -------------------------------------------------------------------------------- /src/bindings/python/flux/utils/parsedatetime/parsedatetime.py: -------------------------------------------------------------------------------- 1 | # Backward compatibility fix. 2 | from . import * # noqa 3 | -------------------------------------------------------------------------------- /src/bindings/python/flux/utils/parsedatetime/pdt_locales/en_AU.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | from .base import * # noqa 4 | 5 | # don't use an unicode string 6 | localeID = 'en_AU' 7 | dateSep = ['-', '/'] 8 | uses24 = False 9 | 10 | dateFormats = { 11 | 'full': 'EEEE, d MMMM yyyy', 12 | 'long': 'd MMMM yyyy', 13 | 'medium': 'dd/MM/yyyy', 14 | 'short': 'd/MM/yy', 15 | } 16 | 17 | timeFormats['long'] = timeFormats['full'] 18 | 19 | dp_order = ['d', 'm', 'y'] 20 | -------------------------------------------------------------------------------- /src/bindings/python/flux/utils/parsedatetime/pdt_locales/en_US.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | from .base import * # noqa 4 | 5 | # don't use an unicode string 6 | localeID = 'en_US' 7 | uses24 = False 8 | -------------------------------------------------------------------------------- /src/bindings/python/flux/utils/tomli/__init__.py: -------------------------------------------------------------------------------- 1 | """A lil' TOML parser.""" 2 | 3 | __all__ = ("loads", "load", "TOMLDecodeError") 4 | __version__ = "1.2.3" # DO NOT EDIT THIS LINE MANUALLY. LET bump2version UTILITY DO IT 5 | 6 | from ._parser import TOMLDecodeError, load, loads 7 | 8 | # Pretend this exception was created here. 9 | TOMLDecodeError.__module__ = "tomli" 10 | -------------------------------------------------------------------------------- /src/bindings/python/flux/utils/tomli/_types.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Callable, Tuple 2 | 3 | # Type annotations 4 | ParseFloat = Callable[[str], Any] 5 | Key = Tuple[str, ...] 6 | Pos = int 7 | -------------------------------------------------------------------------------- /src/bindings/python/flux/utils/tomli/py.typed: -------------------------------------------------------------------------------- 1 | # Marker file for PEP 561 2 | -------------------------------------------------------------------------------- /src/broker/.gitignore: -------------------------------------------------------------------------------- 1 | /flux-broker 2 | -------------------------------------------------------------------------------- /src/broker/README.md: -------------------------------------------------------------------------------- 1 | ## Design notes 2 | 3 | Assorted design notes are available in 4 | [Resources for Flux Developers](https://flux-framework.readthedocs.io/projects/flux-core/en/latest/guide/internals.html) 5 | including for the 6 | [Broker](https://flux-framework.readthedocs.io/projects/flux-core/en/latest/guide/broker.html). 7 | -------------------------------------------------------------------------------- /src/cmd/.gitignore: -------------------------------------------------------------------------------- 1 | /flux 2 | /flux-keygen 3 | /flux-kvs 4 | /flux-logger 5 | /flux-module 6 | /flux-ping 7 | /flux-start 8 | /flux-exec 9 | /flux-event 10 | /flux-queue 11 | /flux-job 12 | /flux-terminus 13 | /builtin-cmds.c 14 | -------------------------------------------------------------------------------- /src/cmd/flux-python: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This minimal wrapper exists to help handle systems where env -S is 4 | # unavailable and scripts wish to use `flux python`. Using a shebang like this 5 | # for flux python scripts allows them to rely only on posix to start: 6 | # #!/usr/bin/env flux-python 7 | 8 | exec flux python "$@" 9 | -------------------------------------------------------------------------------- /src/cmd/flux-run-epilog.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if test $FLUX_JOB_ID; then 4 | FLUX_JOB_ID=$(flux job id --to=f58plain $FLUX_JOB_ID) 5 | fi 6 | unitname=flux-epilog@${FLUX_JOB_ID:-unknown} 7 | 8 | terminate() { 9 | systemctl stop $unitname 10 | exit 1 11 | } 12 | 13 | trap terminate INT TERM 14 | 15 | umask 022 16 | printenv >@X_RUNSTATEDIR@/${unitname}.env 17 | 18 | # Run systemctl start in background and `wait` for it so that the trap 19 | # will run immediately when signal is received: 20 | systemctl start $unitname --quiet & 21 | wait $! 22 | -------------------------------------------------------------------------------- /src/cmd/flux-run-prolog.in: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if test $FLUX_JOB_ID; then 4 | FLUX_JOB_ID=$(flux job id --to=f58plain $FLUX_JOB_ID) 5 | fi 6 | unitname=flux-prolog@${FLUX_JOB_ID:-unknown} 7 | 8 | terminate() { 9 | systemctl stop $unitname 10 | exit 1 11 | } 12 | 13 | trap terminate INT TERM 14 | 15 | umask 022 16 | printenv >@X_RUNSTATEDIR@/${unitname}.env 17 | 18 | # Run systemctl start in background and `wait` for it so that the trap 19 | # will run immediately when signal is received: 20 | systemctl start $unitname --quiet & 21 | wait $! 22 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/array_size/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/array_size/test/compile_fail.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char *argv[8]) 4 | { 5 | (void)argc; 6 | (void)argv; 7 | char array[100]; 8 | #ifdef FAIL 9 | return ARRAY_SIZE(argv) + ARRAY_SIZE(array); 10 | #if !HAVE_TYPEOF || !HAVE_BUILTIN_TYPES_COMPATIBLE_P 11 | #error "Unfortunately we don't fail if _array_size_chk is a noop." 12 | #endif 13 | #else 14 | return ARRAY_SIZE(array); 15 | #endif 16 | } 17 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/base64/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/BSD-MIT -------------------------------------------------------------------------------- /src/common/libccan/ccan/bitmap/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/LGPL-2.1 -------------------------------------------------------------------------------- /src/common/libccan/ccan/build_assert/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/build_assert/test/compile_fail-expr.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(void) 4 | { 5 | #ifdef FAIL 6 | return BUILD_ASSERT_OR_ZERO(1 == 0); 7 | #else 8 | return 0; 9 | #endif 10 | } 11 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/build_assert/test/compile_fail.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(void) 4 | { 5 | #ifdef FAIL 6 | BUILD_ASSERT(1 == 0); 7 | #endif 8 | return 0; 9 | } 10 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/build_assert/test/compile_ok.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(void) 4 | { 5 | BUILD_ASSERT(1 == 1); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/build_assert/test/run-BUILD_ASSERT_OR_ZERO.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(void) 5 | { 6 | plan_tests(1); 7 | ok1(BUILD_ASSERT_OR_ZERO(1 == 1) == 0); 8 | return exit_status(); 9 | } 10 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/check_type/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/check_type/test/compile_fail-check_type.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char *argv[]) 4 | { 5 | (void)argc; 6 | (void)argv; 7 | #ifdef FAIL 8 | check_type(argc, char); 9 | #endif 10 | return 0; 11 | } 12 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/check_type/test/compile_fail-check_type_unsigned.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char *argv[]) 4 | { 5 | (void)argc; 6 | (void)argv; 7 | #ifdef FAIL 8 | #if HAVE_TYPEOF 9 | check_type(argc, unsigned int); 10 | #else 11 | /* This doesn't work without typeof, so just fail */ 12 | #error "Fail without typeof" 13 | #endif 14 | #endif 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/check_type/test/compile_fail-check_types_match.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char *argv[]) 4 | { 5 | unsigned char x = argc; 6 | (void)argv; 7 | #ifdef FAIL 8 | check_types_match(argc, x); 9 | #endif 10 | return x; 11 | } 12 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/compiler/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/compiler/test/compile_fail-printf.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | static void PRINTF_FMT(2,3) my_printf(int x, const char *fmt, ...) 4 | { 5 | (void)x; 6 | (void)fmt; 7 | } 8 | 9 | int main(void) 10 | { 11 | unsigned int i = 0; 12 | 13 | my_printf(1, "Not a pointer " 14 | #ifdef FAIL 15 | "%p", 16 | #if !HAVE_ATTRIBUTE_PRINTF 17 | #error "Unfortunately we don't fail if !HAVE_ATTRIBUTE_PRINTF." 18 | #endif 19 | #else 20 | "%i", 21 | #endif 22 | i); 23 | return 0; 24 | } 25 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/compiler/test/run-is_compile_constant.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | (void)argv; 8 | plan_tests(2); 9 | 10 | ok1(!IS_COMPILE_CONSTANT(argc)); 11 | #if HAVE_BUILTIN_CONSTANT_P 12 | ok1(IS_COMPILE_CONSTANT(7)); 13 | #else 14 | pass("If !HAVE_BUILTIN_CONSTANT_P, IS_COMPILE_CONSTANT always false"); 15 | #endif 16 | return exit_status(); 17 | } 18 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/container_of/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/container_of/test/compile_fail-bad-type.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | struct foo { 5 | int a; 6 | char b; 7 | }; 8 | 9 | int main(void) 10 | { 11 | struct foo foo = { .a = 1, .b = 2 }; 12 | int *intp = &foo.a; 13 | char *p; 14 | 15 | #ifdef FAIL 16 | /* p is a char *, but this gives a struct foo * */ 17 | p = container_of(intp, struct foo, a); 18 | #else 19 | p = (char *)intp; 20 | #endif 21 | return p == NULL; 22 | } 23 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/container_of/test/compile_fail-types.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | struct foo { 5 | int a; 6 | char b; 7 | }; 8 | 9 | int main(void) 10 | { 11 | struct foo foo = { .a = 1, .b = 2 }, *foop; 12 | int *intp = &foo.a; 13 | 14 | #ifdef FAIL 15 | /* b is a char, but intp is an int * */ 16 | foop = container_of(intp, struct foo, b); 17 | #else 18 | foop = NULL; 19 | #endif 20 | (void) foop; /* Suppress unused-but-set-variable warning. */ 21 | return intp == NULL; 22 | } 23 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/endian/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/endian/test/compile_ok-constant.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | struct foo { 4 | char one[BSWAP_16(0xFF00)]; 5 | char two[BSWAP_32(0xFF000000)]; 6 | char three[BSWAP_64(0xFF00000000000000ULL)]; 7 | }; 8 | 9 | int main(void) 10 | { 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/list/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/BSD-MIT -------------------------------------------------------------------------------- /src/common/libccan/ccan/list/test/helper.h: -------------------------------------------------------------------------------- 1 | /* These are in a separate C file so we can test undefined structures. */ 2 | struct opaque; 3 | typedef struct opaque opaque_t; 4 | 5 | opaque_t *create_opaque_blob(void); 6 | bool if_blobs_know_the_secret(opaque_t *blob); 7 | void destroy_opaque_blob(opaque_t *blob); 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/list/test/run-with-debug.c: -------------------------------------------------------------------------------- 1 | /* Just like run.c, but with all debug checks enabled. */ 2 | #define CCAN_LIST_DEBUG 1 3 | #include 4 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/ptrint/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/pushpull/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/pushpull/pushpull.h: -------------------------------------------------------------------------------- 1 | /* CC0 license (public domain) - see LICENSE file for details */ 2 | #ifndef CCAN_PUSHPULL_H 3 | #define CCAN_PUSHPULL_H 4 | /* You can also include these independently, if you don't need both. */ 5 | #include 6 | #include 7 | #endif /* CCAN_PUSHPULL_H */ 8 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/LICENSE: -------------------------------------------------------------------------------- 1 | ../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/hex/LICENSE: -------------------------------------------------------------------------------- 1 | ../../../licenses/CC0 -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/str.c: -------------------------------------------------------------------------------- 1 | /* CC0 (Public domain) - see LICENSE file for details */ 2 | #include 3 | 4 | size_t strcount(const char *haystack, const char *needle) 5 | { 6 | size_t i = 0, nlen = strlen(needle); 7 | 8 | while ((haystack = strstr(haystack, needle)) != NULL) { 9 | i++; 10 | haystack += nlen; 11 | } 12 | return i; 13 | } 14 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-STR_MAX_CHARS.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | struct s { 4 | int val; 5 | }; 6 | 7 | int main(void) 8 | { 9 | struct s 10 | #ifdef FAIL 11 | #if !HAVE_TYPEOF 12 | #error We need typeof to check STR_MAX_CHARS. 13 | #endif 14 | #else 15 | /* A pointer is OK. */ 16 | * 17 | #endif 18 | val; 19 | char str[STR_MAX_CHARS(val)]; 20 | 21 | str[0] = '\0'; 22 | return str[0] ? 0 : 1; 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-isalnum.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check isalnum. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return isalnum(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-isalpha.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check isalpha. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return isalpha(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-isascii.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check isascii. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return isascii(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-iscntrl.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check iscntrl. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return iscntrl(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-isdigit.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check isdigit. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return isdigit(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-islower.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check islower. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return islower(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-isprint.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check isprint. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return isprint(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-ispunct.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check ispunct. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return ispunct(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-isspace.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check isspace. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return isspace(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-isupper.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check isupper. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return isupper(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-isxdigit.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | (void)argc; 7 | #ifdef FAIL 8 | #if !HAVE_BUILTIN_TYPES_COMPATIBLE_P || !HAVE_TYPEOF 9 | #error We need typeof to check isxdigit. 10 | #endif 11 | char 12 | #else 13 | unsigned char 14 | #endif 15 | c = argv[0][0]; 16 | 17 | #ifdef FAIL 18 | /* Fake fail on unsigned char platforms. */ 19 | BUILD_ASSERT((char)255 < 0); 20 | #endif 21 | 22 | return isxdigit(c); 23 | } 24 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-strchr.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(void) 5 | { 6 | #ifdef FAIL 7 | #if !HAVE_TYPEOF 8 | #error We need typeof to check strstr. 9 | #endif 10 | #else 11 | const 12 | #endif 13 | char *ret; 14 | const char *str = "hello"; 15 | 16 | ret = strchr(str, 'l'); 17 | return ret ? 0 : 1; 18 | } 19 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-strrchr.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(void) 5 | { 6 | #ifdef FAIL 7 | #if !HAVE_TYPEOF 8 | #error We need typeof to check strstr. 9 | #endif 10 | #else 11 | const 12 | #endif 13 | char *ret; 14 | const char *str = "hello"; 15 | 16 | ret = strrchr(str, 'l'); 17 | return ret ? 0 : 1; 18 | } 19 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_fail-strstr.c: -------------------------------------------------------------------------------- 1 | #define CCAN_STR_DEBUG 1 2 | #include 3 | 4 | int main(void) 5 | { 6 | #ifdef FAIL 7 | #if !HAVE_TYPEOF 8 | #error We need typeof to check strstr. 9 | #endif 10 | #else 11 | const 12 | #endif 13 | char *ret; 14 | const char *str = "hello"; 15 | 16 | ret = strstr(str, "hell"); 17 | return ret ? 0 : 1; 18 | } 19 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/compile_ok-STR_MAX_CHARS-static.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(void) 4 | { 5 | static char str[STR_MAX_CHARS(int)]; 6 | 7 | return str[0] ? 0 : 1; 8 | } 9 | -------------------------------------------------------------------------------- /src/common/libccan/ccan/str/test/debug.c: -------------------------------------------------------------------------------- 1 | /* We can't use the normal "#include the .c file" trick, since this is 2 | contaminated by str.h's macro overrides. So we put it in all tests 3 | like this. */ 4 | #define CCAN_STR_DEBUG 1 5 | #include 6 | -------------------------------------------------------------------------------- /src/common/libcontent/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CFLAGS = \ 2 | $(WARNING_CFLAGS) \ 3 | $(CODE_COVERAGE_CFLAGS) 4 | 5 | AM_LDFLAGS = \ 6 | $(CODE_COVERAGE_LIBS) 7 | 8 | AM_CPPFLAGS = \ 9 | $(CODE_COVERAGE_CPPFLAGS) \ 10 | -I$(top_srcdir) \ 11 | -I$(top_srcdir)/src/include \ 12 | -I$(top_builddir)/src/common/libflux 13 | 14 | noinst_LTLIBRARIES = libcontent.la 15 | 16 | libcontent_la_SOURCES = \ 17 | content-util.h \ 18 | content-util.c \ 19 | content.h \ 20 | content.c 21 | -------------------------------------------------------------------------------- /src/common/libev/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CPPFLAGS = -w $(CODE_COVERAGE_CPPFLAGS) 2 | 3 | noinst_LTLIBRARIES = libev.la 4 | 5 | libev_la_SOURCES = \ 6 | ev.c \ 7 | ev.h \ 8 | ev_vars.h \ 9 | ev_wrap.h 10 | 11 | EXTRA_DIST = \ 12 | ev_select.c \ 13 | ev_poll.c \ 14 | ev_epoll.c \ 15 | ev_linuxaio.c \ 16 | ev_port.c \ 17 | ev_kqueue.c \ 18 | ev_iouring.c \ 19 | libev.m4 \ 20 | LICENSE 21 | -------------------------------------------------------------------------------- /src/common/libflux/paths.h: -------------------------------------------------------------------------------- 1 | #define INSTALLED_MODULE_PATH "${exec_prefix}/lib/flux/modules" 2 | -------------------------------------------------------------------------------- /src/common/libfluxutil/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CFLAGS = \ 2 | $(WARNING_CFLAGS) \ 3 | $(CODE_COVERAGE_CFLAGS) 4 | 5 | AM_LDFLAGS = \ 6 | $(CODE_COVERAGE_LIBS) 7 | 8 | AM_CPPFLAGS = \ 9 | $(CODE_COVERAGE_CPPFLAGS) \ 10 | -I$(top_srcdir) \ 11 | -I$(top_srcdir)/src/include \ 12 | -I$(top_srcdir)/src/common/libccan \ 13 | -I$(top_builddir)/src/common/libflux \ 14 | $(JANSSON_CFLAGS) 15 | 16 | noinst_LTLIBRARIES = libfluxutil.la 17 | libfluxutil_la_SOURCES = \ 18 | method.h \ 19 | method.c \ 20 | policy.h \ 21 | policy.c 22 | -------------------------------------------------------------------------------- /src/common/libidset/veb_mach.c: -------------------------------------------------------------------------------- 1 | 2 | #define WORD \ 3 | sizeof(uint)*8 4 | 5 | static uint 6 | clz(uint x) 7 | { 8 | return __builtin_clz(x); 9 | } 10 | 11 | static uint 12 | ctz(uint x) 13 | { 14 | return __builtin_ctz(x); 15 | } 16 | 17 | static uint 18 | fls(uint x) 19 | { 20 | return WORD-clz(x); 21 | } 22 | -------------------------------------------------------------------------------- /src/common/liblsd/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CFLAGS = \ 2 | $(WARNING_CFLAGS) \ 3 | $(CODE_COVERAGE_CFLAGS) \ 4 | -Wno-parentheses -Wno-error=parentheses \ 5 | -Wno-error=unused-but-set-variable \ 6 | -Wno-unused-but-set-variable 7 | 8 | AM_LDFLAGS = \ 9 | $(CODE_COVERAGE_LIBS) 10 | 11 | AM_CPPFLAGS = \ 12 | $(CODE_COVERAGE_CPPFLAGS) 13 | 14 | noinst_LTLIBRARIES = liblsd.la 15 | 16 | liblsd_la_SOURCES = \ 17 | cbuf.c \ 18 | cbuf.h 19 | -------------------------------------------------------------------------------- /src/common/libmissing/argz_add.c: -------------------------------------------------------------------------------- 1 | // build all of argz.c if argz_add() is detected missing by autotools 2 | #include "argz.c" 3 | -------------------------------------------------------------------------------- /src/common/libmissing/envz_add.c: -------------------------------------------------------------------------------- 1 | // build all of envz.c if envz_add() is detected missing by autotools 2 | #include "envz.c" 3 | -------------------------------------------------------------------------------- /src/common/libmissing/strlcpy.h: -------------------------------------------------------------------------------- 1 | #if HAVE_CONFIG_H 2 | # include "config.h" 3 | #endif /* HAVE_CONFIG_H */ 4 | 5 | #if !_UTIL_STRLCPY_H 6 | #define _UTIL_STRLCPY_H 7 | 8 | size_t strlcpy(char *dst, const char *src, size_t siz); 9 | /* 10 | * Copy src to string dst of size siz. At most siz-1 characters 11 | * will be copied. Always NUL terminates (unless siz == 0). 12 | * Returns strlen(src); if retval >= siz, truncation occurred. 13 | */ 14 | #endif /* !_UTIL_STRLCPY_H */ 15 | -------------------------------------------------------------------------------- /src/common/libpmi/.gitignore: -------------------------------------------------------------------------------- 1 | /test_kvstest 2 | /test_pminfo 3 | -------------------------------------------------------------------------------- /src/common/libtap/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CFLAGS = \ 2 | $(WARNING_CFLAGS) \ 3 | $(CODE_COVERAGE_CFLAGS) 4 | 5 | AM_LDFLAGS = \ 6 | $(CODE_COVERAGE_LIBS) 7 | 8 | AM_CPPFLAGS = \ 9 | $(CODE_COVERAGE_CPPFLAGS) 10 | 11 | check_LTLIBRARIES = libtap.la 12 | 13 | libtap_la_SOURCES = tap.c tap.h 14 | -------------------------------------------------------------------------------- /src/common/libtestutil/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_CFLAGS = \ 2 | $(WARNING_CFLAGS) \ 3 | $(CODE_COVERAGE_CFLAGS) 4 | 5 | AM_LDFLAGS = \ 6 | $(CODE_COVERAGE_LIBS) 7 | 8 | AM_CPPFLAGS = \ 9 | $(CODE_COVERAGE_CPPFLAGS) \ 10 | -I$(top_srcdir) \ 11 | -I$(top_srcdir)/src/include \ 12 | -I$(top_builddir)/src/common/libflux \ 13 | -I$(top_srcdir)/src/common/libccan \ 14 | $(LIBUUID_CFLAGS) 15 | 16 | check_LTLIBRARIES = libtestutil.la 17 | 18 | libtestutil_la_SOURCES = \ 19 | util.c \ 20 | util.h \ 21 | util_rpc.c \ 22 | util_rpc.h 23 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/array-mixed-types-arrays-and-ints.toml: -------------------------------------------------------------------------------- 1 | arrays-and-ints = [1, ["Arrays are not integers."]] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/array-mixed-types-ints-and-floats.toml: -------------------------------------------------------------------------------- 1 | ints-and-floats = [1, 1.1] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/array-mixed-types-strings-and-ints.toml: -------------------------------------------------------------------------------- 1 | strings-and-ints = ["hi", 42] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/datetime-malformed-no-leads.toml: -------------------------------------------------------------------------------- 1 | no-leads = 1987-7-05T17:45:00Z 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/datetime-malformed-no-secs.toml: -------------------------------------------------------------------------------- 1 | no-secs = 1987-07-05T17:45Z 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/datetime-malformed-no-t.toml: -------------------------------------------------------------------------------- 1 | no-t = 1987-07-0517:45:00Z 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/datetime-malformed-with-milli.toml: -------------------------------------------------------------------------------- 1 | with-milli = 1987-07-5T17:45:00.12Z 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/duplicate-key-table.toml: -------------------------------------------------------------------------------- 1 | [fruit] 2 | type = "apple" 3 | 4 | [fruit.type] 5 | apple = "yes" 6 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/duplicate-keys.toml: -------------------------------------------------------------------------------- 1 | dupe = false 2 | dupe = true 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/duplicate-tables.toml: -------------------------------------------------------------------------------- 1 | [a] 2 | [a] 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/empty-implicit-table.toml: -------------------------------------------------------------------------------- 1 | [naughty..naughty] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/empty-table.toml: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/float-no-leading-zero.toml: -------------------------------------------------------------------------------- 1 | answer = .12345 2 | neganswer = -.12345 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/float-no-trailing-digits.toml: -------------------------------------------------------------------------------- 1 | answer = 1. 2 | neganswer = -1. 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/key-empty.toml: -------------------------------------------------------------------------------- 1 | = 1 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/key-hash.toml: -------------------------------------------------------------------------------- 1 | a# = 1 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/key-newline.toml: -------------------------------------------------------------------------------- 1 | a 2 | = 1 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/key-open-bracket.toml: -------------------------------------------------------------------------------- 1 | [abc = 1 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/key-single-open-bracket.toml: -------------------------------------------------------------------------------- 1 | [ -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/key-space.toml: -------------------------------------------------------------------------------- 1 | a b = 1 -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/key-start-bracket.toml: -------------------------------------------------------------------------------- 1 | [a] 2 | [xyz = 5 3 | [b] 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/key-two-equals.toml: -------------------------------------------------------------------------------- 1 | key= = 1 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/string-bad-byte-escape.toml: -------------------------------------------------------------------------------- 1 | naughty = "\xAg" 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/string-bad-escape.toml: -------------------------------------------------------------------------------- 1 | invalid-escape = "This string has a bad \a escape character." 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/string-byte-escapes.toml: -------------------------------------------------------------------------------- 1 | answer = "\x33" 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/string-no-close.toml: -------------------------------------------------------------------------------- 1 | no-ending-quote = "One time, at band camp 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/table-array-malformed-bracket.toml: -------------------------------------------------------------------------------- 1 | [[albums] 2 | name = "Born to Run" 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/table-array-malformed-empty.toml: -------------------------------------------------------------------------------- 1 | [[]] 2 | name = "Born to Run" 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/table-empty.toml: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/table-nested-brackets-close.toml: -------------------------------------------------------------------------------- 1 | [a]b] 2 | zyx = 42 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/table-nested-brackets-open.toml: -------------------------------------------------------------------------------- 1 | [a[b] 2 | zyx = 42 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/table-whitespace.toml: -------------------------------------------------------------------------------- 1 | [invalid key] -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/table-with-pound.toml: -------------------------------------------------------------------------------- 1 | [key#group] 2 | answer = 42 -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/text-after-array-entries.toml: -------------------------------------------------------------------------------- 1 | array = [ 2 | "Is there life after an array separator?", No 3 | "Entry" 4 | ] 5 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/text-after-integer.toml: -------------------------------------------------------------------------------- 1 | answer = 42 the ultimate answer? 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/text-after-string.toml: -------------------------------------------------------------------------------- 1 | string = "Is there life after strings?" No. 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/text-after-table.toml: -------------------------------------------------------------------------------- 1 | [error] this shouldn't be here 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/text-before-array-separator.toml: -------------------------------------------------------------------------------- 1 | array = [ 2 | "Is there life before an array separator?" No, 3 | "Entry" 4 | ] 5 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/invalid/text-in-array.toml: -------------------------------------------------------------------------------- 1 | array = [ 2 | "Entry 1", 3 | I don't belong, 4 | "Entry 2", 5 | ] 6 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/array-empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "thevoid": { "type": "array", "value": [ 3 | {"type": "array", "value": [ 4 | {"type": "array", "value": [ 5 | {"type": "array", "value": [ 6 | {"type": "array", "value": []} 7 | ]} 8 | ]} 9 | ]} 10 | ]} 11 | } 12 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/array-empty.toml: -------------------------------------------------------------------------------- 1 | thevoid = [[[[[]]]]] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/array-nospaces.json: -------------------------------------------------------------------------------- 1 | { 2 | "ints": { 3 | "type": "array", 4 | "value": [ 5 | {"type": "integer", "value": "1"}, 6 | {"type": "integer", "value": "2"}, 7 | {"type": "integer", "value": "3"} 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/array-nospaces.toml: -------------------------------------------------------------------------------- 1 | ints = [1,2,3] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/arrays-hetergeneous.toml: -------------------------------------------------------------------------------- 1 | mixed = [[1, 2], ["a", "b"], [1.1, 2.1]] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/arrays-nested.json: -------------------------------------------------------------------------------- 1 | { 2 | "nest": { 3 | "type": "array", 4 | "value": [ 5 | {"type": "array", "value": [ 6 | {"type": "string", "value": "a"} 7 | ]}, 8 | {"type": "array", "value": [ 9 | {"type": "string", "value": "b"} 10 | ]} 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/arrays-nested.toml: -------------------------------------------------------------------------------- 1 | nest = [["a"], ["b"]] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/arrays.toml: -------------------------------------------------------------------------------- 1 | ints = [1, 2, 3] 2 | floats = [1.1, 2.1, 3.1] 3 | strings = ["a", "b", "c"] 4 | dates = [ 5 | 1987-07-05T17:45:00Z, 6 | 1979-05-27T07:32:00Z, 7 | 2006-06-01T11:00:00Z, 8 | ] 9 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/bool.json: -------------------------------------------------------------------------------- 1 | { 2 | "f": {"type": "bool", "value": "false"}, 3 | "t": {"type": "bool", "value": "true"} 4 | } 5 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/bool.toml: -------------------------------------------------------------------------------- 1 | t = true 2 | f = false 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/comments-everywhere.json: -------------------------------------------------------------------------------- 1 | { 2 | "group": { 3 | "answer": {"type": "integer", "value": "42"}, 4 | "more": { 5 | "type": "array", 6 | "value": [ 7 | {"type": "integer", "value": "42"}, 8 | {"type": "integer", "value": "42"} 9 | ] 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/datetime.json: -------------------------------------------------------------------------------- 1 | { 2 | "bestdayever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"} 3 | } 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/datetime.toml: -------------------------------------------------------------------------------- 1 | bestdayever = 1987-07-05T17:45:00Z 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/empty.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/empty.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/src/common/libtomlc99/BurntSushi_input/valid/empty.toml -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "best-day-ever": {"type": "datetime", "value": "1987-07-05T17:45:00Z"}, 3 | "numtheory": { 4 | "boring": {"type": "bool", "value": "false"}, 5 | "perfection": { 6 | "type": "array", 7 | "value": [ 8 | {"type": "integer", "value": "6"}, 9 | {"type": "integer", "value": "28"}, 10 | {"type": "integer", "value": "496"} 11 | ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/example.toml: -------------------------------------------------------------------------------- 1 | best-day-ever = 1987-07-05T17:45:00Z 2 | 3 | [numtheory] 4 | boring = false 5 | perfection = [6, 28, 496] 6 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/float.json: -------------------------------------------------------------------------------- 1 | { 2 | "pi": {"type": "float", "value": "3.14"}, 3 | "negpi": {"type": "float", "value": "-3.14"} 4 | } 5 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/float.toml: -------------------------------------------------------------------------------- 1 | pi = 3.14 2 | negpi = -3.14 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/implicit-and-explicit-after.json: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "better": {"type": "integer", "value": "43"}, 4 | "b": { 5 | "c": { 6 | "answer": {"type": "integer", "value": "42"} 7 | } 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/implicit-and-explicit-after.toml: -------------------------------------------------------------------------------- 1 | [a.b.c] 2 | answer = 42 3 | 4 | [a] 5 | better = 43 6 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/implicit-and-explicit-before.json: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "better": {"type": "integer", "value": "43"}, 4 | "b": { 5 | "c": { 6 | "answer": {"type": "integer", "value": "42"} 7 | } 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/implicit-and-explicit-before.toml: -------------------------------------------------------------------------------- 1 | [a] 2 | better = 43 3 | 4 | [a.b.c] 5 | answer = 42 6 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/implicit-groups.json: -------------------------------------------------------------------------------- 1 | { 2 | "a": { 3 | "b": { 4 | "c": { 5 | "answer": {"type": "integer", "value": "42"} 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/implicit-groups.toml: -------------------------------------------------------------------------------- 1 | [a.b.c] 2 | answer = 42 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/integer.json: -------------------------------------------------------------------------------- 1 | { 2 | "answer": {"type": "integer", "value": "42"}, 3 | "neganswer": {"type": "integer", "value": "-42"} 4 | } 5 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/integer.toml: -------------------------------------------------------------------------------- 1 | answer = 42 2 | neganswer = -42 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/key-equals-nospace.json: -------------------------------------------------------------------------------- 1 | { 2 | "answer": {"type": "integer", "value": "42"} 3 | } 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/key-equals-nospace.toml: -------------------------------------------------------------------------------- 1 | answer=42 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/key-space.json: -------------------------------------------------------------------------------- 1 | { 2 | "a b": {"type": "integer", "value": "1"} 3 | } 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/key-space.toml: -------------------------------------------------------------------------------- 1 | "a b" = 1 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/key-special-chars.json: -------------------------------------------------------------------------------- 1 | { 2 | "~!@$^&*()_+-`1234567890[]|/?><.,;:'": { 3 | "type": "integer", "value": "1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/key-special-chars.toml: -------------------------------------------------------------------------------- 1 | "~!@$^&*()_+-`1234567890[]|/?><.,;:'" = 1 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/long-float.json: -------------------------------------------------------------------------------- 1 | { 2 | "longpi": {"type": "float", "value": "3.141592653589793"}, 3 | "neglongpi": {"type": "float", "value": "-3.141592653589793"} 4 | } 5 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/long-float.toml: -------------------------------------------------------------------------------- 1 | longpi = 3.141592653589793 2 | neglongpi = -3.141592653589793 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/long-integer.json: -------------------------------------------------------------------------------- 1 | { 2 | "answer": {"type": "integer", "value": "9223372036854775807"}, 3 | "neganswer": {"type": "integer", "value": "-9223372036854775808"} 4 | } 5 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/long-integer.toml: -------------------------------------------------------------------------------- 1 | answer = 9223372036854775807 2 | neganswer = -9223372036854775808 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/multiline-string.toml: -------------------------------------------------------------------------------- 1 | multiline_empty_one = """""" 2 | multiline_empty_two = """ 3 | """ 4 | multiline_empty_three = """\ 5 | """ 6 | multiline_empty_four = """\ 7 | \ 8 | \ 9 | """ 10 | 11 | equivalent_one = "The quick brown fox jumps over the lazy dog." 12 | equivalent_two = """ 13 | The quick brown \ 14 | 15 | 16 | fox jumps over \ 17 | the lazy dog.""" 18 | 19 | equivalent_three = """\ 20 | The quick brown \ 21 | fox jumps over \ 22 | the lazy dog.\ 23 | """ 24 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/raw-multiline-string.json: -------------------------------------------------------------------------------- 1 | { 2 | "oneline": { 3 | "type": "string", 4 | "value": "This string has a ' quote character." 5 | }, 6 | "firstnl": { 7 | "type": "string", 8 | "value": "This string has a ' quote character." 9 | }, 10 | "multiline": { 11 | "type": "string", 12 | "value": "This string\nhas ' a quote character\nand more than\none newline\nin it." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/raw-multiline-string.toml: -------------------------------------------------------------------------------- 1 | oneline = '''This string has a ' quote character.''' 2 | firstnl = ''' 3 | This string has a ' quote character.''' 4 | multiline = ''' 5 | This string 6 | has ' a quote character 7 | and more than 8 | one newline 9 | in it.''' 10 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/raw-string.toml: -------------------------------------------------------------------------------- 1 | backspace = 'This string has a \b backspace character.' 2 | tab = 'This string has a \t tab character.' 3 | newline = 'This string has a \n new line character.' 4 | formfeed = 'This string has a \f form feed character.' 5 | carriage = 'This string has a \r carriage return character.' 6 | slash = 'This string has a \/ slash character.' 7 | backslash = 'This string has a \\ backslash character.' 8 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/string-empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "answer": { 3 | "type": "string", 4 | "value": "" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/string-empty.toml: -------------------------------------------------------------------------------- 1 | answer = "" 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/string-simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "answer": { 3 | "type": "string", 4 | "value": "You are not drinking enough whisky." 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/string-simple.toml: -------------------------------------------------------------------------------- 1 | answer = "You are not drinking enough whisky." 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/string-with-pound.json: -------------------------------------------------------------------------------- 1 | { 2 | "pound": {"type": "string", "value": "We see no # comments here."}, 3 | "poundcomment": { 4 | "type": "string", 5 | "value": "But there are # some comments here." 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/string-with-pound.toml: -------------------------------------------------------------------------------- 1 | pound = "We see no # comments here." 2 | poundcomment = "But there are # some comments here." # Did I # mess you up? 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-array-implicit.json: -------------------------------------------------------------------------------- 1 | { 2 | "albums": { 3 | "songs": [ 4 | {"name": {"type": "string", "value": "Glory Days"}} 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-array-implicit.toml: -------------------------------------------------------------------------------- 1 | [[albums.songs]] 2 | name = "Glory Days" 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-array-many.toml: -------------------------------------------------------------------------------- 1 | [[people]] 2 | first_name = "Bruce" 3 | last_name = "Springsteen" 4 | 5 | [[people]] 6 | first_name = "Eric" 7 | last_name = "Clapton" 8 | 9 | [[people]] 10 | first_name = "Bob" 11 | last_name = "Seger" 12 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-array-nest.toml: -------------------------------------------------------------------------------- 1 | [[albums]] 2 | name = "Born to Run" 3 | 4 | [[albums.songs]] 5 | name = "Jungleland" 6 | 7 | [[albums.songs]] 8 | name = "Meeting Across the River" 9 | 10 | [[albums]] 11 | name = "Born in the USA" 12 | 13 | [[albums.songs]] 14 | name = "Glory Days" 15 | 16 | [[albums.songs]] 17 | name = "Dancing in the Dark" 18 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-array-one.json: -------------------------------------------------------------------------------- 1 | { 2 | "people": [ 3 | { 4 | "first_name": {"type": "string", "value": "Bruce"}, 5 | "last_name": {"type": "string", "value": "Springsteen"} 6 | } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-array-one.toml: -------------------------------------------------------------------------------- 1 | [[people]] 2 | first_name = "Bruce" 3 | last_name = "Springsteen" 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "a": {} 3 | } 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-empty.toml: -------------------------------------------------------------------------------- 1 | [a] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-sub-empty.json: -------------------------------------------------------------------------------- 1 | { 2 | "a": { "b": {} } 3 | } 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-sub-empty.toml: -------------------------------------------------------------------------------- 1 | [a] 2 | [a.b] 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-whitespace.json: -------------------------------------------------------------------------------- 1 | { 2 | "valid key": {} 3 | } 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-whitespace.toml: -------------------------------------------------------------------------------- 1 | ["valid key"] 2 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-with-pound.json: -------------------------------------------------------------------------------- 1 | { 2 | "key#group": { 3 | "answer": {"type": "integer", "value": "42"} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/table-with-pound.toml: -------------------------------------------------------------------------------- 1 | ["key#group"] 2 | answer = 42 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/unicode-escape.json: -------------------------------------------------------------------------------- 1 | { 2 | "answer4": {"type": "string", "value": "\u03B4"}, 3 | "answer8": {"type": "string", "value": "\u03B4"} 4 | } 5 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/unicode-escape.toml: -------------------------------------------------------------------------------- 1 | answer4 = "\u03B4" 2 | answer8 = "\U000003B4" 3 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/unicode-literal.json: -------------------------------------------------------------------------------- 1 | { 2 | "answer": {"type": "string", "value": "δ"} 3 | } 4 | -------------------------------------------------------------------------------- /src/common/libtomlc99/BurntSushi_input/valid/unicode-literal.toml: -------------------------------------------------------------------------------- 1 | answer = "δ" 2 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/1node_1core.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0", 7 | "children": { 8 | "core": "0" 9 | } 10 | } 11 | ], 12 | "starttime": 0, 13 | "expiration": 0, 14 | "nodelist": [ 15 | "node1" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/1node_4core.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0", 7 | "children": { 8 | "core": "0-3" 9 | } 10 | } 11 | ], 12 | "starttime": 0, 13 | "expiration": 0, 14 | "nodelist": [ 15 | "node1" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/4node_1core.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0-3", 7 | "children": { 8 | "core": "0" 9 | } 10 | } 11 | ], 12 | "starttime": 0, 13 | "expiration": 0, 14 | "nodelist": [ 15 | "node[1-4]" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/4node_4core.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0-3", 7 | "children": { 8 | "core": "0-3" 9 | } 10 | } 11 | ], 12 | "starttime": 0, 13 | "expiration": 0, 14 | "nodelist": [ 15 | "node[1-4]" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/invalid_R_lite.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": "foo", 5 | "starttime": 0, 6 | "expiration": 0, 7 | "nodelist": [ 8 | "node1" 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/invalid_json.R: -------------------------------------------------------------------------------- 1 | foo 2 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/invalid_nodelist.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0", 7 | "children": { 8 | "core": "0" 9 | } 10 | } 11 | ], 12 | "starttime": 0, 13 | "expiration": 0, 14 | "nodelist": "foo" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/invalid_version.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 999, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0", 7 | "children": { 8 | "core": "0" 9 | } 10 | } 11 | ], 12 | "starttime": 0, 13 | "expiration": 0, 14 | "nodelist": [ 15 | "node1" 16 | ] 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/missing_R_lite.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "starttime": 0, 5 | "expiration": 0, 6 | "nodelist": [ 7 | "node1" 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/missing_expiration.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0", 7 | "children": { 8 | "core": "0" 9 | } 10 | } 11 | ], 12 | "starttime": 0, 13 | "nodelist": [ 14 | "node1" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/missing_nodelist.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0", 7 | "children": { 8 | "core": "0" 9 | } 10 | } 11 | ], 12 | "starttime": 0, 13 | "expiration": 0, 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/missing_starttime.R: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "0", 7 | "children": { 8 | "core": "0" 9 | } 10 | } 11 | ], 12 | "expiration": 0, 13 | "nodelist": [ 14 | "node1" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/modules/job-list/test/R/missing_version.R: -------------------------------------------------------------------------------- 1 | { 2 | "execution": { 3 | "R_lite": [ 4 | { 5 | "rank": "0", 6 | "children": { 7 | "core": "0" 8 | } 9 | } 10 | ], 11 | "starttime": 0, 12 | "expiration": 0, 13 | "nodelist": [ 14 | "node1" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/modules/job-list/test/jobspec/invalid_json.jobspec: -------------------------------------------------------------------------------- 1 | foo 2 | -------------------------------------------------------------------------------- /src/modules/job-list/test/jobspec/invalid_resources.jobspec: -------------------------------------------------------------------------------- 1 | { 2 | "resources": "foo", 3 | "tasks": [ 4 | { 5 | "command": [ 6 | "hostname" 7 | ], 8 | "slot": "task", 9 | "count": { 10 | "per_slot": 1 11 | } 12 | } 13 | ], 14 | "attributes": { 15 | "system": { 16 | "duration": 0, 17 | "cwd": "/tmp/job" 18 | } 19 | }, 20 | "version": 1 21 | } 22 | -------------------------------------------------------------------------------- /src/modules/job-list/test/jobspec/invalid_resources_nocores.jobspec: -------------------------------------------------------------------------------- 1 | { 2 | "resources": [ 3 | { 4 | "type": "node", 5 | "count": 1, 6 | "label": "task" 7 | } 8 | ], 9 | "tasks": [ 10 | { 11 | "command": [ 12 | "hostname" 13 | ], 14 | "slot": "task", 15 | "count": { 16 | "per_slot": 1 17 | } 18 | } 19 | ], 20 | "attributes": { 21 | "system": { 22 | "duration": 0, 23 | "cwd": "/tmp/job" 24 | } 25 | }, 26 | "version": 1 27 | } 28 | -------------------------------------------------------------------------------- /src/modules/job-list/test/jobspec/invalid_resources_noslots.jobspec: -------------------------------------------------------------------------------- 1 | { 2 | "resources": [ 3 | { 4 | "type": "gpu", 5 | "count": 1, 6 | "label": "task" 7 | } 8 | ], 9 | "tasks": [ 10 | { 11 | "command": [ 12 | "hostname" 13 | ], 14 | "slot": "task", 15 | "count": { 16 | "per_slot": 1 17 | } 18 | } 19 | ], 20 | "attributes": { 21 | "system": { 22 | "duration": 0, 23 | "cwd": "/tmp/job" 24 | } 25 | }, 26 | "version": 1 27 | } 28 | -------------------------------------------------------------------------------- /src/modules/job-list/test/jobspec/invalid_tasks_array.jobspec: -------------------------------------------------------------------------------- 1 | { 2 | "resources": [ 3 | { 4 | "type": "slot", 5 | "count": 1, 6 | "with": [ 7 | { 8 | "type": "core", 9 | "count": 1 10 | } 11 | ], 12 | "label": "task" 13 | } 14 | ], 15 | "tasks": "foo", 16 | "attributes": { 17 | "system": { 18 | "duration": 0, 19 | "cwd": "/tmp/job" 20 | } 21 | }, 22 | "version": 1 23 | } 24 | -------------------------------------------------------------------------------- /src/modules/job-list/test/jobspec/missing_attributes.jobspec: -------------------------------------------------------------------------------- 1 | { 2 | "resources": [ 3 | { 4 | "type": "slot", 5 | "count": 1, 6 | "with": [ 7 | { 8 | "type": "core", 9 | "count": 1 10 | } 11 | ], 12 | "label": "task" 13 | } 14 | ], 15 | "tasks": [ 16 | { 17 | "command": [ 18 | "hostname" 19 | ], 20 | "slot": "task", 21 | "count": { 22 | "per_slot": 1 23 | } 24 | } 25 | ], 26 | "version": 1 27 | } 28 | -------------------------------------------------------------------------------- /src/modules/job-list/test/jobspec/missing_resources.jobspec: -------------------------------------------------------------------------------- 1 | { 2 | "tasks": [ 3 | { 4 | "command": [ 5 | "hostname" 6 | ], 7 | "slot": "task", 8 | "count": { 9 | "per_slot": 1 10 | } 11 | } 12 | ], 13 | "attributes": { 14 | "system": { 15 | "duration": 0, 16 | "cwd": "/tmp/job" 17 | } 18 | }, 19 | "version": 1 20 | } 21 | -------------------------------------------------------------------------------- /src/modules/job-list/test/jobspec/missing_tasks.jobspec: -------------------------------------------------------------------------------- 1 | { 2 | "resources": [ 3 | { 4 | "type": "slot", 5 | "count": 1, 6 | "with": [ 7 | { 8 | "type": "core", 9 | "count": 1 10 | } 11 | ], 12 | "label": "task" 13 | } 14 | ], 15 | "attributes": { 16 | "system": { 17 | "duration": 0, 18 | "cwd": "/tmp/job" 19 | } 20 | }, 21 | "version": 1 22 | } 23 | -------------------------------------------------------------------------------- /src/modules/kvs/README.md: -------------------------------------------------------------------------------- 1 | ## Design notes 2 | 3 | Assorted design notes are available in 4 | [Resources for Flux Developers](https://flux-framework.readthedocs.io/projects/flux-core/en/latest/guide/internals.html) 5 | including for the 6 | [KVS](https://flux-framework.readthedocs.io/projects/flux-core/en/latest/guide/kvs.html). 7 | -------------------------------------------------------------------------------- /src/test/.gitignore: -------------------------------------------------------------------------------- 1 | /tasyncsock 2 | /tcommit 3 | /tenc 4 | /tkvstorture 5 | /tkvswatch 6 | /tmunge 7 | /tpmikvs 8 | /mpi_hello 9 | /tbarrier 10 | -------------------------------------------------------------------------------- /src/test/Makefile.am: -------------------------------------------------------------------------------- 1 | noinst_SCRIPTS = \ 2 | relnotes.sh \ 3 | backtrace-all.sh \ 4 | checks-annotate.sh \ 5 | checks-lib.sh \ 6 | checks_run.sh \ 7 | cppcheck.sh \ 8 | docker-deploy.sh \ 9 | generate-matrix.py 10 | 11 | EXTRA_DIST = $(noinst_SCRIPTS) 12 | -------------------------------------------------------------------------------- /src/test/docker/checks/bashrc: -------------------------------------------------------------------------------- 1 | if ! echo "$PS1" | grep -q FLUX; then 2 | PS1=$'${FLUX_URI+\u0192(s=$(flux getattr size),d=$(flux getattr instance-level)$(which flux|grep -q src/cmd && echo ,builddir))} '${PS1} 3 | fi 4 | 5 | -------------------------------------------------------------------------------- /src/test/docker/checks/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | sudo runuser -u munge /usr/sbin/munged 3 | exec "$@" 4 | -------------------------------------------------------------------------------- /src/test/docker/el7/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/el8/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/el9/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/fedora33/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/fedora34/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/fedora35/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/fedora38/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/fedora39/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/fedora40/config.site: -------------------------------------------------------------------------------- 1 | # Force libdir to /usr/lib64 if prefix=/usr on this platform 2 | if test "$prefix" = "/usr" ; then 3 | test $sysconfdir = "${prefix}/etc" && sysconfdir=/etc 4 | libdir=/usr/lib64 5 | fi 6 | : 7 | -------------------------------------------------------------------------------- /src/test/docker/fluxorama/access.toml: -------------------------------------------------------------------------------- 1 | [access] 2 | allow-guest-user = true 3 | allow-root-owner = true 4 | -------------------------------------------------------------------------------- /src/test/docker/fluxorama/imp.toml: -------------------------------------------------------------------------------- 1 | [exec] 2 | allowed-users = [ "flux" ] 3 | allowed-shells = [ "/usr/libexec/flux/flux-shell" ] 4 | -------------------------------------------------------------------------------- /src/test/docker/fluxorama/job-exec.toml: -------------------------------------------------------------------------------- 1 | [exec] 2 | imp = "/usr/libexec/flux/flux-imp" 3 | -------------------------------------------------------------------------------- /t/.gitignore: -------------------------------------------------------------------------------- 1 | /t9990-python-tests.t 2 | /test-results 3 | /trash-directory.* 4 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/001-invalid-directive.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | #FLUX: -N4 -n4 4 | #FLUX: --job-name=test 5 | hostname 6 | #FLUX: --dump 7 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/002-sentinel-changed.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | #FLUX: -N4 -n4 4 | #FLUX: --job-name=test 5 | #flux: --dump 6 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/003-unclosed-multiline.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | #FLUX: -N4 -n4 4 | #FLUX: --setattr=user.foo=""" 5 | #FLUX: [table] 6 | #FLUX: value = "foo" 7 | #FLUX: "" 8 | date; hostname 9 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/004-unclose-triplequote.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # flux: --job-name='''It's a "job" 3 | date; hostname 4 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/005-changed-sentinel.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # flux: -N4 --job-name=test 4 | # flux: --output=flux-{{id}}.out 5 | #flux: --dump 6 | # 7 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/006-bad-shell-quoting.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # flux: --job-name="foo 4 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/007-bad-shell-quoting.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # flux: --job-name='foo'' 4 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/expected/001-invalid-directive.pattern: -------------------------------------------------------------------------------- 1 | ValueError: line 6: orphan 'FLUX:' detected: directives disabled after line 4 2 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/expected/002-sentinel-changed.pattern: -------------------------------------------------------------------------------- 1 | ValueError: line 5: sentinel changed from '#FLUX:' to '#flux:' 2 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/expected/003-unclosed-multiline.pattern: -------------------------------------------------------------------------------- 1 | ValueError: line 8: unterminated multi-line quote at line 4: `--setattr=user.foo="""' 2 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/expected/004-unclose-triplequote.pattern: -------------------------------------------------------------------------------- 1 | ValueError: line 2: unclosed triple quote: --job-name='''It's a "job" 2 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/expected/005-changed-sentinel.pattern: -------------------------------------------------------------------------------- 1 | ValueError: line 5: sentinel changed from '# flux:' to '#flux:' 2 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/expected/006-bad-shell-quoting.pattern: -------------------------------------------------------------------------------- 1 | ValueError: line 3: --job-name="foo: No closing quotation 2 | -------------------------------------------------------------------------------- /t/batch/directives/invalid/expected/007-bad-shell-quoting.pattern: -------------------------------------------------------------------------------- 1 | ValueError: line 3: --job-name='foo'': No closing quotation 2 | -------------------------------------------------------------------------------- /t/batch/directives/valid/001-simple.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # simple directives 3 | #FLUX: -N4 # Request four nodes 4 | #FLUX: --queue=batch # Submit to the batch queue 5 | #FLUX: --job-name=app001 # Set an explicit job name 6 | flux run -N4 app 7 | -------------------------------------------------------------------------------- /t/batch/directives/valid/002-python.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Directives embedded in python docstring 3 | def main(): 4 | """ 5 | flux: -N4 6 | flux: --queue=batch 7 | flux: --job-name="my python job" 8 | 9 | # Set some arbitrary user data: 10 | flux: --setattr=user.data=''' 11 | flux: x, y, z 12 | flux: a, b, c 13 | flux: ''' 14 | """ 15 | run() 16 | 17 | 18 | if __name__ == "__main__": 19 | main() 20 | -------------------------------------------------------------------------------- /t/batch/directives/valid/003-lua.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/lua 2 | -- Directives embedded in Lua script: 3 | -- 4 | -- flux: -N1 --exclusive 5 | -- 6 | -- flux: --output=job.out # Set output file 7 | -- 8 | local app = require 'app' 9 | app.run() 10 | -------------------------------------------------------------------------------- /t/batch/directives/valid/004-mixed-comments.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Set flux directives 3 | #FLUX: -N1 4 | # Set job name: 5 | #FLUX: --job-name=test 6 | hostname; date 7 | -------------------------------------------------------------------------------- /t/batch/directives/valid/005-mixed-comments.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """ 3 | flux: --nodes=4 4 | 5 | Set an arbitrary value in jobspec: 6 | flux: --setattr=user.foo="hello, earth" 7 | """ 8 | -------------------------------------------------------------------------------- /t/batch/directives/valid/006-single-quotes.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # flux: --setattr=user.data='{"option": "arg"}' 3 | -------------------------------------------------------------------------------- /t/batch/directives/valid/007-triple-quotes.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # flux: --job-name='''It's a "job"''' 3 | -------------------------------------------------------------------------------- /t/batch/directives/valid/008-multiline-with-indent.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # flux: -N4 --exclusive 3 | # flux: --setattr=user.conf=""" 4 | # flux: [config] 5 | # flux: item = "foo" 6 | # flux: """ 7 | foo 8 | -------------------------------------------------------------------------------- /t/batch/directives/valid/009-multiline-comment-char-escaped.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # flux: -N4 --exclusive 3 | # flux: --job-name=foo --setattr=user.conf=""" 4 | # flux: [config] 5 | # flux: item = "foo" # an inline comment 6 | # flux: # another comment 7 | # flux: [tab2] 8 | # flux: b = 'bar' 9 | # flux: """ 10 | foo 11 | -------------------------------------------------------------------------------- /t/batch/directives/valid/010-noop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # flux: -n 32 4 | # flux: # clear environment except for PATH and PYTHONPATH 5 | # flux: --env=-* --env=PATH --env=PYTHONPATH 6 | -------------------------------------------------------------------------------- /t/batch/directives/valid/011-quoted-punctuation.sh: -------------------------------------------------------------------------------- 1 | #flux: --output='Test_quoted.{{id}}.out' 2 | #flux: --output=Test_unquoted.{{id}}.out 3 | #flux: --output=Test_unquoted.-out 4 | #flux: --output=Test_unquoted.:out 5 | #flux: --output=Test_unquoted.@out 6 | #flux: --output=Test[unquoted] 7 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/001-simple.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['-N4']) 2 | SETARGS(['--queue=batch']) 3 | SETARGS(['--job-name=app001']) 4 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/002-python.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['-N4']) 2 | SETARGS(['--queue=batch']) 3 | SETARGS(['--job-name=my python job']) 4 | SETARGS(['--setattr=user.data=x, y, z\na, b, c\n']) 5 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/003-lua.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['-N1', '--exclusive']) 2 | SETARGS(['--output=job.out']) 3 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/004-mixed-comments.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['-N1']) 2 | SETARGS(['--job-name=test']) 3 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/005-mixed-comments.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['--nodes=4']) 2 | SETARGS(['--setattr=user.foo=hello, earth']) 3 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/006-single-quotes.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['--setattr=user.data={"option": "arg"}']) 2 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/007-triple-quotes.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['--job-name=It\'s a "job"']) 2 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/008-multiline-with-indent.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['-N4', '--exclusive']) 2 | SETARGS(['--setattr=user.conf=[config]\n item = "foo"\n']) 3 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/009-multiline-comment-char-escaped.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['-N4', '--exclusive']) 2 | SETARGS(['--job-name=foo', '--setattr=user.conf=[config]\n item = "foo" # an inline comment\n# another comment\n[tab2]\n b = \'bar\'\n']) 3 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/010-noop.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['-n', '32']) 2 | NOOP([]) 3 | SETARGS(['--env=-*', '--env=PATH', '--env=PYTHONPATH']) 4 | -------------------------------------------------------------------------------- /t/batch/directives/valid/expected/011-quoted-punctuation.expected: -------------------------------------------------------------------------------- 1 | SETARGS(['--output=Test_quoted.{{id}}.out']) 2 | SETARGS(['--output=Test_unquoted.{{id}}.out']) 3 | SETARGS(['--output=Test_unquoted.-out']) 4 | SETARGS(['--output=Test_unquoted.:out']) 5 | SETARGS(['--output=Test_unquoted.@out']) 6 | SETARGS(['--output=Test[unquoted]']) 7 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/contextual_info/description: -------------------------------------------------------------------------------- 1 | check contextual_info field in various scenarios 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/contextual_info/format: -------------------------------------------------------------------------------- 1 | {contextual_info:h} 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/contextual_info/output: -------------------------------------------------------------------------------- 1 | priority-wait 2 | eta:now 3 | depends:after-finish=ƒ2ARxLQf 4 | depends:after-success=ƒ2RsQrcw 5 | asp,asp,asp,asp 6 | asp 7 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#2634/description: -------------------------------------------------------------------------------- 1 | t_run is not listed for jobs rejected by scheduler 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#2634/format: -------------------------------------------------------------------------------- 1 | {runtime!F:h} {runtime!F} 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#2634/input: -------------------------------------------------------------------------------- 1 | {"id": 406008627200, "userid": 6885, "urgency": 16, "t_submit": 1579133377.8522565, "state": 32, "name": "hostname", "ntasks": 128, "t_depend": 1579133377.8522565, "t_cleanup": 1579133377.8667088, "t_inactive": 1579133377.8667269} 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#2634/output: -------------------------------------------------------------------------------- 1 | - 0s 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#2658/description: -------------------------------------------------------------------------------- 1 | check output of runtime_fsd 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#2658/format: -------------------------------------------------------------------------------- 1 | {runtime!F} 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#2658/output: -------------------------------------------------------------------------------- 1 | 0s 2 | 0s 3 | 1.000s 4 | 10s 5 | 59.9s 6 | 1m 7 | 10.02m 8 | 11.68m 9 | 1h 10 | 1.667h 11 | 16.67h 12 | 1d 13 | 10d 14 | 1157d 15 | 116.9d 16 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#5827/description: -------------------------------------------------------------------------------- 1 | D conversion flag outputs empty string on epoch timestamp 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#5827/format: -------------------------------------------------------------------------------- 1 | {t_run},{t_run!D} 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#5827/input: -------------------------------------------------------------------------------- 1 | {"id": 375843192832, "userid": 1000, "urgency": 16, "priority": 0, "t_submit": 1711580059.6155457, "t_depend": 1711580059.6265068, "state": 8, "name": "sleep", "cwd": "/tmp/foo", "ntasks": 1, "ncores": 1, "duration": 0.0} 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/issue#5827/output: -------------------------------------------------------------------------------- 1 | 0.0, 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/returncode/description: -------------------------------------------------------------------------------- 1 | check job returncode in various scenarios 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/returncode/format: -------------------------------------------------------------------------------- 1 | {returncode:h} 2 | -------------------------------------------------------------------------------- /t/flux-jobs/tests/returncode/output: -------------------------------------------------------------------------------- 1 | - 2 | -15 3 | -128 4 | 42 5 | 1 6 | 0 7 | -------------------------------------------------------------------------------- /t/flux-resource/list/fluke-info.expected: -------------------------------------------------------------------------------- 1 | 101 Nodes, 404 Cores, 0 GPUs 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/fluke.R: -------------------------------------------------------------------------------- 1 | {"version": 1, "execution": {"R_lite": [{"rank": "0-100", "children": {"core": "0-3"}}], "starttime": 0.0, "expiration": 0.0, "nodelist": ["fluke[3-103]"], "properties": {"batch": "0-92", "debug": "93-100"}}} 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/fluke.config: -------------------------------------------------------------------------------- 1 | { 2 | "queues": { 3 | "batch": { 4 | "requires": [ 5 | "batch" 6 | ] 7 | }, 8 | "debug": { 9 | "requires": [ 10 | "debug" 11 | ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /t/flux-resource/list/fluke.expected: -------------------------------------------------------------------------------- 1 | STATE PROPERTIES NNODES NCORES NGPUS 2 | free batch 83 332 0 3 | free debug 5 20 0 4 | allocated 0 0 0 5 | down batch 10 40 0 6 | down debug 3 12 0 7 | -------------------------------------------------------------------------------- /t/flux-resource/list/fluxion-info.expected: -------------------------------------------------------------------------------- 1 | 4 Nodes, 16 Cores, 0 GPUs 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/fluxion.R: -------------------------------------------------------------------------------- 1 | {"version": 1, "execution": {"R_lite": [{"rank": "0-3", "children": {"core": "0-3"}}], "starttime": 0.0, "expiration": 0.0}} 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/fluxion.expected: -------------------------------------------------------------------------------- 1 | STATE PROPERTIES NNODES NCORES NGPUS 2 | free 3 8 0 3 | allocated 2 4 0 4 | down 1 4 0 5 | -------------------------------------------------------------------------------- /t/flux-resource/list/missing-info.expected: -------------------------------------------------------------------------------- 1 | 4 Nodes, 16 Cores, 0 GPUs 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/missing.R: -------------------------------------------------------------------------------- 1 | {"version": 1, "execution": {"R_lite": [{"rank": "0-3", "children": {"core": "0-3"}}], "starttime": 0.0, "expiration": 0.0}} 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/missing.expected: -------------------------------------------------------------------------------- 1 | STATE PROPERTIES NNODES NCORES NGPUS 2 | free 4 16 0 3 | allocated 0 0 0 4 | down 0 0 0 5 | -------------------------------------------------------------------------------- /t/flux-resource/list/missing.json: -------------------------------------------------------------------------------- 1 | { 2 | "all": { 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "children": { 7 | "core": "0-3" 8 | }, 9 | "rank": "0-3" 10 | } 11 | ] 12 | }, 13 | "version": 1 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /t/flux-resource/list/normal-input-info.expected: -------------------------------------------------------------------------------- 1 | 4 Nodes, 16 Cores, 0 GPUs 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/normal-input.R: -------------------------------------------------------------------------------- 1 | {"version": 1, "execution": {"R_lite": [{"rank": "0-3", "children": {"core": "0-3"}}], "starttime": 0.0, "expiration": 0.0}} 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/normal-input.expected: -------------------------------------------------------------------------------- 1 | STATE PROPERTIES NNODES NCORES NGPUS 2 | free 4 16 0 3 | allocated 0 0 0 4 | down 0 0 0 5 | -------------------------------------------------------------------------------- /t/flux-resource/list/normal-input.json: -------------------------------------------------------------------------------- 1 | { 2 | "all": { 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "children": { 7 | "core": "0-3" 8 | }, 9 | "rank": "0-3" 10 | } 11 | ] 12 | }, 13 | "version": 1 14 | }, 15 | "allocated": { 16 | "execution": { 17 | "R_lite": [] 18 | }, 19 | "version": 1 20 | }, 21 | "down": { 22 | "execution": { 23 | "R_lite": [] 24 | }, 25 | "version": 1 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /t/flux-resource/list/normal-new-info.expected: -------------------------------------------------------------------------------- 1 | 5 Nodes, 20 Cores, 0 GPUs 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/normal-new.R: -------------------------------------------------------------------------------- 1 | {"version": 1, "execution": {"R_lite": [{"rank": "0-4", "children": {"core": "0-3"}}], "starttime": 0.0, "expiration": 0.0, "nodelist": ["pi[3,0-2,4]"], "properties": {"8g": "0-2"}}} 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/normal-new.expected: -------------------------------------------------------------------------------- 1 | STATE PROPERTIES NNODES NCORES NGPUS 2 | free 8g 3 12 0 3 | free 2 8 0 4 | allocated 0 0 0 5 | down 0 0 0 6 | -------------------------------------------------------------------------------- /t/flux-resource/list/normal-new.json: -------------------------------------------------------------------------------- 1 | { 2 | "all": { 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "children": { 7 | "core": "0-3" 8 | }, 9 | "rank": "0-4" 10 | } 11 | ], 12 | "expiration": 0, 13 | "nodelist": [ 14 | "pi[3,0-2,4]" 15 | ], 16 | "properties": { 17 | "8g": "0-2" 18 | }, 19 | "starttime": 0 20 | }, 21 | "version": 1 22 | }, 23 | "allocated": null, 24 | "down": null 25 | } 26 | -------------------------------------------------------------------------------- /t/flux-resource/list/null-info.expected: -------------------------------------------------------------------------------- 1 | 4 Nodes, 16 Cores, 0 GPUs 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/null.R: -------------------------------------------------------------------------------- 1 | {"version": 1, "execution": {"R_lite": [{"rank": "0-3", "children": {"core": "0-3"}}], "starttime": 0.0, "expiration": 0.0}} 2 | -------------------------------------------------------------------------------- /t/flux-resource/list/null.expected: -------------------------------------------------------------------------------- 1 | STATE PROPERTIES NNODES NCORES NGPUS 2 | free 4 16 0 3 | allocated 0 0 0 4 | down 0 0 0 5 | -------------------------------------------------------------------------------- /t/flux-resource/list/null.json: -------------------------------------------------------------------------------- 1 | { 2 | "all": { 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "children": { 7 | "core": "0-3" 8 | }, 9 | "rank": "0-3" 10 | } 11 | ] 12 | }, 13 | "version": 1 14 | }, 15 | "allocated": null, 16 | "down": null 17 | } 18 | -------------------------------------------------------------------------------- /t/flux-resource/list/properties-info.expected: -------------------------------------------------------------------------------- 1 | 4 Nodes, 16 Cores, 0 GPUs 2 | -------------------------------------------------------------------------------- /t/flux-resource/status/drain.expected: -------------------------------------------------------------------------------- 1 | STATE NNODES RANKS NODELIST 2 | avail 2 2-3 foo[3-4] 3 | drained 2 0-1 foo[1-2] 4 | -------------------------------------------------------------------------------- /t/flux-resource/status/example.expected: -------------------------------------------------------------------------------- 1 | STATE NNODES RANKS NODELIST 2 | avail 2 2-3 foo[3-4] 3 | exclude 1 0 foo1 4 | drained 1 0 foo1 5 | drained* 1 1 foo2 6 | -------------------------------------------------------------------------------- /t/flux-resource/status/exclude.expected: -------------------------------------------------------------------------------- 1 | STATE NNODES RANKS NODELIST 2 | avail 2 2-3 foo[3-4] 3 | avail* 1 1 foo2 4 | exclude 1 0 foo1 5 | -------------------------------------------------------------------------------- /t/flux-resource/status/exclude.json: -------------------------------------------------------------------------------- 1 | { 2 | "R": { 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "children": { 7 | "core": "0-3" 8 | }, 9 | "rank": "0-3" 10 | } 11 | ], 12 | "expiration": 0, 13 | "nodelist": [ 14 | "foo[1-4]" 15 | ], 16 | "starttime": 0 17 | }, 18 | "version": 1 19 | }, 20 | "drain": {}, 21 | "exclude": "0", 22 | "torpid": "", 23 | "offline": "1", 24 | "online": "0,2-3" 25 | } 26 | -------------------------------------------------------------------------------- /t/flux-resource/status/fluke.config: -------------------------------------------------------------------------------- 1 | { 2 | "queues": { 3 | "batch": { 4 | "requires": [ 5 | "batch" 6 | ] 7 | }, 8 | "debug": { 9 | "requires": [ 10 | "debug" 11 | ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /t/flux-resource/status/fluke.expected: -------------------------------------------------------------------------------- 1 | STATE NNODES RANKS NODELIST 2 | avail 85 3-13,16-20,22-39,41-57,59-61,63-72,75,77-88,90-93,96-99 fluke[6-16,19-23,25-42,44-60,62-64,66-75,78,80-91,93-96,99-102] 3 | avail* 11 14,21,58,62,73-74,76,89,94-95,100 fluke[17,24,61,65,76-77,79,92,97-98,103] 4 | exclude 3 0-2 fluke[1,3,108] 5 | drained 2 15,40 fluke[18,43] 6 | -------------------------------------------------------------------------------- /t/flux-resource/status/offline.expected: -------------------------------------------------------------------------------- 1 | STATE NNODES RANKS NODELIST 2 | avail 3 0,2-3 foo[1,3-4] 3 | avail* 1 1 foo2 4 | -------------------------------------------------------------------------------- /t/flux-resource/status/offline.json: -------------------------------------------------------------------------------- 1 | { 2 | "R": { 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "children": { 7 | "core": "0-3" 8 | }, 9 | "rank": "0-3" 10 | } 11 | ], 12 | "expiration": 0, 13 | "nodelist": [ 14 | "foo[1-4]" 15 | ], 16 | "starttime": 0 17 | }, 18 | "version": 1 19 | }, 20 | "drain": {}, 21 | "exclude": "", 22 | "torpid": "", 23 | "offline": "1", 24 | "online": "0,2-3" 25 | } 26 | -------------------------------------------------------------------------------- /t/flux-resource/status/simple.expected: -------------------------------------------------------------------------------- 1 | STATE NNODES RANKS NODELIST 2 | avail 4 0-3 foo[1-4] 3 | -------------------------------------------------------------------------------- /t/flux-resource/status/simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "R": { 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "children": { 7 | "core": "0-3" 8 | }, 9 | "rank": "0-3" 10 | } 11 | ], 12 | "expiration": 0, 13 | "nodelist": [ 14 | "foo[1-4]" 15 | ], 16 | "starttime": 0 17 | }, 18 | "version": 1 19 | }, 20 | "drain": {}, 21 | "exclude": "", 22 | "torpid": "", 23 | "offline": "", 24 | "online": "0-3" 25 | } 26 | -------------------------------------------------------------------------------- /t/flux-resource/status/torpid.expected: -------------------------------------------------------------------------------- 1 | STATE NNODES RANKS NODELIST 2 | avail 1 2 foo3 3 | torpid 1 3 foo4 4 | drained 2 0-1 foo[1-2] 5 | -------------------------------------------------------------------------------- /t/fluxometer/.gitignore: -------------------------------------------------------------------------------- 1 | /conf.lua 2 | /conf.lua.installed 3 | -------------------------------------------------------------------------------- /t/hwloc/hwloc-version.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main(void) 5 | { 6 | #if HWLOC_API_VERSION >= 0x20000 7 | printf("2\n"); 8 | #else 9 | printf("1\n"); 10 | #endif 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /t/issues/t0441-kvs-put-get.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # kvs put x=foo, get x.y fails without panic 3 | 4 | TEST=issue441 5 | 6 | flux kvs put ${TEST}.x=foo 7 | 8 | flux kvs get ${TEST}.x.y && test $? -eq 1 9 | 10 | flux kvs get ${TEST}.x # fails if broker died 11 | -------------------------------------------------------------------------------- /t/issues/t0821-kvs-segfault.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # kvs put test="large string", get test.x fails without panic 3 | 4 | TEST=issue0821 5 | flux kvs put ${TEST}="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 6 | flux kvs get ${TEST}.x && test $? -eq 1 7 | flux kvs get ${TEST} # fails if broker died 8 | -------------------------------------------------------------------------------- /t/issues/t1876-kvs-watch-cancel-race.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | # initial call to getroot() can race with an early call to 4 | # flux_kvs_lookup_cancel(), leading to a namespace data 5 | # structure being destroyed then used afterwards. 6 | 7 | TEST=issue1876 8 | ${FLUX_BUILD_DIR}/t/kvs/issue1876 test.a 9 | -------------------------------------------------------------------------------- /t/issues/t2281-service-add-crash.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # client exit before service.add response doesn't crash broker 3 | cat <service.add.lua 4 | #!/usr/bin/env lua 5 | local f = require 'flux' .new() 6 | f:send ("service.add", { service = "foo" }) 7 | EOF 8 | chmod +x service.add.lua 9 | 10 | # Run service.add 3x and ensure no broker crash 11 | flux start sh -c './service.add.lua; ./service.add.lua; ./service.add.lua' 12 | -------------------------------------------------------------------------------- /t/issues/t2284-initial-program-format-chars.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # broker cmdline preserves format characters 3 | 4 | for s in %h %g %%h %f; do 5 | echo "Running flux broker echo $s" 6 | output=$(flux broker -Sbroker.rc1_path= -Sbroker.rc3_path= /bin/echo $s) 7 | test "$output" = "$s" 8 | done 9 | exit 0 10 | -------------------------------------------------------------------------------- /t/issues/t2337-loop-closes-stdin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | # loop connector didn't initialize pollfd correctly, leading 4 | # to an accidental close of STDIN (i.e. fd = 0) 5 | 6 | TEST=issue2337 7 | ${FLUX_BUILD_DIR}/t/loop/issue2337 8 | -------------------------------------------------------------------------------- /t/issues/t2711-rpc-in-aux-item-destructor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | # 4 | # Attempt to use handle via RPC within an aux item destructor 5 | # causes segfault. 6 | # Also tests that flux_send returns ENOSYS when flux_t handle 7 | # destruction is in-progress 8 | # 9 | ${FLUX_BUILD_DIR}/t/loop/issue2711 10 | -------------------------------------------------------------------------------- /t/issues/t3415-job-shell-segfault-on-null.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # submit a job with json-null and ensure it doesn't cause the shell 3 | # to segfault 4 | 5 | flux job attach -vEX $(flux run --dry-run hostname \ 6 | | jq .attributes.system.shell.options.foo=null \ 7 | | flux job submit) 8 | -------------------------------------------------------------------------------- /t/issues/t3492-kvs-subcommand-help.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # flux kvs namespace -h 3 | # and 4 | # flux kvs eventlog -h 5 | # don't output appropriate help output 6 | 7 | TEST=issue3492 8 | 9 | flux kvs namespace -h 2>&1 | grep create && test $? -eq 0 10 | flux kvs eventlog -h 2>&1 | grep append && test $? -eq 0 11 | -------------------------------------------------------------------------------- /t/issues/t3617-flux-shell-depends-zmq.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # flux-shell does not link to libzmq 3 | 4 | FLUX_SHELL="${FLUX_BUILD_DIR}/src/shell/.libs/lt-flux-shell" 5 | if libtool --mode=execute ldd ${FLUX_SHELL} | grep -q zmq 6 | then 7 | exit 1 8 | fi 9 | exit 0 10 | -------------------------------------------------------------------------------- /t/issues/t3775-binary-io.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # job-shell properly encodes binary data on stdin/out/err 3 | 4 | dd if=/dev/urandom bs=1k count=1 > data 5 | cat data | flux run cat >data2 6 | cmp data data2 7 | cat data | flux run sh -c 'cat >&2' 2>data3 8 | cmp data data3 9 | exit 0 10 | -------------------------------------------------------------------------------- /t/issues/t4227-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | flux run -vvv hostname 4 | flux submit -vvv --wait hostname 5 | -------------------------------------------------------------------------------- /t/issues/t4375-content-flush-hang.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | flux content flush 4 | 5 | flux module remove content-sqlite 6 | 7 | # we need to have a dirty entry in the content-cache for content-flush 8 | # to mean anything. 9 | flux kvs put issue4375=issue4375 10 | 11 | ! flux content flush 12 | 13 | flux module load content-sqlite 14 | -------------------------------------------------------------------------------- /t/issues/t4378-content-flush-force.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | flux content flush 4 | 5 | flux module remove content-sqlite 6 | 7 | # create a dirty cache entry in the content-cache 8 | flux kvs put issue4378=issue4378bug 9 | 10 | flux module load content-sqlite 11 | 12 | # Issue 4378 - without fix, this flux content flush would hang 13 | flux content flush 14 | -------------------------------------------------------------------------------- /t/issues/t4413-empty-eventlog.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | # create a fake job eventlog in the KVS, no normal mechanism will 4 | # create an empty eventlog 5 | 6 | jobpath=`flux job id --to=kvs 123456789` 7 | flux kvs put "${jobpath}.eventlog"="" 8 | 9 | # Issue 4413, previously would return Cannot allocate memory 10 | flux job info 123456789 eventlog 2>&1 | grep "error parsing eventlog" 11 | 12 | 13 | -------------------------------------------------------------------------------- /t/job-attach/outputsleep.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo before 4 | 5 | # to prevent racyness, write something to eventlog to indicate we've 6 | # output foo 7 | flux kvs eventlog append exec.eventlog test-output-ready 8 | 9 | sleep inf 10 | 11 | echo after 12 | -------------------------------------------------------------------------------- /t/job-list/job-list-helper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | 4 | # Return the expected jobids list in a given state: 5 | # "all", "pending", "running", "inactive", "active", 6 | # "completed", "canceled", "failed", "timeout" 7 | # 8 | job_list_state_ids() { 9 | for f in "$@"; do 10 | cat ${f}.ids 11 | done 12 | } 13 | 14 | # Return the expected count of jobs in a given state (See above for list) 15 | # 16 | job_list_state_count() { 17 | job_list_state_ids "$@" | wc -l 18 | } 19 | -------------------------------------------------------------------------------- /t/job-list/jobspec-permissive.jsonschema: -------------------------------------------------------------------------------- 1 | { 2 | "title": "permissive-jobspec", 3 | "description": "Flux permissive jobspec", 4 | "type": "object", 5 | "properties": { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /t/job-manager/dumps/invalid/dump-baddir.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/job-manager/dumps/invalid/dump-baddir.tar.bz2 -------------------------------------------------------------------------------- /t/job-manager/dumps/valid/dump-0-40-0.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/job-manager/dumps/valid/dump-0-40-0.tar.bz2 -------------------------------------------------------------------------------- /t/job-manager/dumps/valid/dump-0-41-0.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/job-manager/dumps/valid/dump-0-41-0.tar.bz2 -------------------------------------------------------------------------------- /t/job-manager/dumps/warn/dump-noeventlog.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/job-manager/dumps/warn/dump-noeventlog.tar.bz2 -------------------------------------------------------------------------------- /t/job-manager/dumps/warn/dump-nojobspec.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/job-manager/dumps/warn/dump-nojobspec.tar.bz2 -------------------------------------------------------------------------------- /t/job-manager/dumps/warn/dump-nosubmit.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/job-manager/dumps/warn/dump-nosubmit.tar.bz2 -------------------------------------------------------------------------------- /t/job-manager/dumps/warn/dump-shorteventlog.tar.bz2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/job-manager/dumps/warn/dump-shorteventlog.tar.bz2 -------------------------------------------------------------------------------- /t/jobspec/invalid/attributes_bad_entry.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1h 17 | foo: 1 18 | -------------------------------------------------------------------------------- /t/jobspec/invalid/attributes_not_mapping.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 1 15 | -------------------------------------------------------------------------------- /t/jobspec/invalid/attributes_null.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | -------------------------------------------------------------------------------- /t/jobspec/invalid/constraints_not_object.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | constraints: 17 | - foo 18 | - bar 19 | -------------------------------------------------------------------------------- /t/jobspec/invalid/dependencies_not_array.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | dependencies: 17 | scheme: foo 18 | -------------------------------------------------------------------------------- /t/jobspec/invalid/dependency_invalid.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | dependencies: 17 | - scheme: foo 18 | value: 1 19 | -------------------------------------------------------------------------------- /t/jobspec/invalid/invalid_yaml1.yaml: -------------------------------------------------------------------------------- 1 | foo: bar: baz 2 | -------------------------------------------------------------------------------- /t/jobspec/invalid/missing_attributes.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | -------------------------------------------------------------------------------- /t/jobspec/invalid/missing_resources.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | tasks: 3 | - command: [ "app" ] 4 | slot: foo 5 | count: 6 | per_slot: 1 7 | attributes: 8 | system: 9 | duration: 1 10 | -------------------------------------------------------------------------------- /t/jobspec/invalid/missing_tasks.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | count: 1 9 | attributes: 10 | system: 11 | duration: 1 12 | -------------------------------------------------------------------------------- /t/jobspec/invalid/missing_version.yaml: -------------------------------------------------------------------------------- 1 | resources: 2 | - type: slot 3 | count: 1 4 | label: foo 5 | with: 6 | - type: node 7 | count: 1 8 | tasks: 9 | - command: [ "app" ] 10 | slot: foo 11 | count: 12 | per_slot: 1 13 | attributes: 14 | system: 15 | duration: 1 16 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_count_bad_type.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 5 | - 1 6 | - 2 7 | label: foo 8 | with: 9 | - type: node 10 | count: 1 11 | tasks: 12 | - command: [ "app" ] 13 | slot: foo 14 | count: 15 | per_slot: 1 16 | attributes: 17 | system: 18 | duration: 1 19 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_count_is_zero.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 0 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_count_missing_max.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 5 | min: 1 6 | operator: "+" 7 | operand: 1 8 | label: foo 9 | with: 10 | - type: node 11 | count: 1 12 | tasks: 13 | - command: [ "app" ] 14 | slot: foo 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 1 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_count_missing_min.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 5 | max: 2 6 | operator: "+" 7 | operand: 1 8 | label: foo 9 | with: 10 | - type: node 11 | count: 1 12 | tasks: 13 | - command: [ "app" ] 14 | slot: foo 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 1 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_count_missing_operand.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 5 | min: 1 6 | max: 2 7 | operator: "+" 8 | label: foo 9 | with: 10 | - type: node 11 | count: 1 12 | tasks: 13 | - command: [ "app" ] 14 | slot: foo 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 1 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_count_missing_operator.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 5 | min: 1 6 | max: 2 7 | operand: 1 8 | label: foo 9 | with: 10 | - type: node 11 | count: 1 12 | tasks: 13 | - command: [ "app" ] 14 | slot: foo 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 1 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_count_scalar_bad_value.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: bar 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_exclusive_invalid.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | count: 1 9 | exclusive: blah 10 | tasks: 11 | - command: [ "app" ] 12 | slot: foo 13 | count: 14 | per_slot: 1 15 | attributes: 16 | system: 17 | duration: 1 18 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_exclusive_not_scalar.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | exclusive: 7 | - foo 8 | - bar 9 | with: 10 | - type: node 11 | count: 1 12 | tasks: 13 | - command: [ "app" ] 14 | slot: foo 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 1 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_id_not_scalar.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | id: 7 | - foo 8 | - bar 9 | with: 10 | - type: node 11 | count: 1 12 | tasks: 13 | - command: [ "app" ] 14 | slot: foo 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 1 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_label_not_scalar.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: 6 | - foo 7 | - bar 8 | with: 9 | - type: node 10 | count: 1 11 | tasks: 12 | - command: [ "app" ] 13 | slot: foo 14 | count: 15 | per_slot: 1 16 | attributes: 17 | system: 18 | duration: 1 19 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_missing_count.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | tasks: 9 | - command: [ "app" ] 10 | slot: foo 11 | count: 12 | per_slot: 1 13 | attributes: 14 | system: 15 | duration: 1 16 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_missing_type.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - count: 1 8 | tasks: 9 | - command: [ "app" ] 10 | slot: foo 11 | count: 12 | per_slot: 1 13 | attributes: 14 | system: 15 | duration: 1 16 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_node_with_notarray.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 42 6 | tasks: 7 | - command: [ "app" ] 8 | slot: default 9 | count: 10 | per_slot: 1 11 | attributes: 12 | system: 13 | duration: 3600. 14 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_not_mapping.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - - type: slot 4 | - count: 1 5 | - label: foo 6 | - with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_slot_not_labelled.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | with: 6 | - type: node 7 | count: 1 8 | tasks: 9 | - command: [ "app" ] 10 | slot: foo 11 | count: 12 | per_slot: 1 13 | attributes: 14 | system: 15 | duration: 1 16 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_slot_with_notarray.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | label: foo 5 | count: 1 6 | with: 42 7 | tasks: 8 | - command: [ "app" ] 9 | slot: foo 10 | count: 11 | per_slot: 1 12 | attributes: 13 | system: 14 | duration: 1 15 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_slot_with_zero.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | label: foo 5 | count: 0 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resource_unit_not_scalar.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | unit: 7 | - foo 8 | - bar 9 | with: 10 | - type: node 11 | count: 1 12 | tasks: 13 | - command: [ "app" ] 14 | slot: foo 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 1 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid/resources_not_sequence.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_command_array_notstring.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [1,2,3] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_command_not_array.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: app 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_command_zero_length_array.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_count_empty.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: {} 13 | attributes: 14 | system: 15 | duration: 1 16 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_count_not_mapping.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 1 13 | attributes: 14 | system: 15 | duration: 1 16 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_count_per_slot_zero.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 1 8 | label: myslot 9 | with: 10 | - type: core 11 | count: 1 12 | tasks: 13 | - command: [ "hostname" ] 14 | slot: myslot 15 | count: 16 | per_slot: 0 17 | attributes: 18 | system: 19 | duration: 3600. 20 | cwd: "/home/flux" 21 | environment: 22 | HOME: "/home/flux" 23 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_count_total_and_per_slot.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | total: 1 14 | per_slot: 1 15 | attributes: 16 | system: 17 | duration: 1 18 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_count_total_zero.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 1 8 | label: myslot 9 | with: 10 | - type: core 11 | count: 1 12 | tasks: 13 | - command: [ "hostname" ] 14 | slot: myslot 15 | count: 16 | total: 0 17 | attributes: 18 | system: 19 | duration: 3600. 20 | cwd: "/home/flux" 21 | environment: 22 | HOME: "/home/flux" 23 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_missing_command.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - slot: foo 11 | count: 12 | per_slot: 1 13 | attributes: 14 | system: 15 | duration: 1 16 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_missing_count.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | attributes: 13 | system: 14 | duration: 1 15 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_missing_slot.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | count: 12 | per_slot: 1 13 | attributes: 14 | system: 15 | duration: 1 16 | -------------------------------------------------------------------------------- /t/jobspec/invalid/task_not_mapping.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - foo 11 | attributes: 12 | system: 13 | duration: 1 14 | -------------------------------------------------------------------------------- /t/jobspec/invalid/tasks_not_sequence.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/version_bad_number.yaml: -------------------------------------------------------------------------------- 1 | version: 4.2 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid/version_not_scalar.yaml: -------------------------------------------------------------------------------- 1 | version: 2 | foo: 1 3 | resources: 4 | - type: slot 5 | count: 1 6 | label: foo 7 | with: 8 | - type: node 9 | count: 1 10 | tasks: 11 | - command: [ "app" ] 12 | slot: foo 13 | count: 14 | per_slot: 1 15 | attributes: 16 | system: 17 | duration: 1 18 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/core_count_invalid.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 1 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 0 12 | tasks: 13 | - command: [ "app" ] 14 | slot: default 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 3600. 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/duration_missing.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: task 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | foo: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/gpu_count_invalid.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 1 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 1 12 | - type: gpu 13 | count: -1 14 | 15 | tasks: 16 | - command: [ "app" ] 17 | slot: default 18 | count: 19 | per_slot: 1 20 | attributes: 21 | system: 22 | duration: 3600. 23 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/node_vertex_missing_count.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | with: 5 | - type: slot 6 | count: 1 7 | label: default 8 | with: 9 | - type: core 10 | count: 2 11 | tasks: 12 | - command: [ "app" ] 13 | slot: default 14 | count: 15 | per_slot: 1 16 | attributes: 17 | system: 18 | duration: 3600. 19 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/node_vertex_with_notarray.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 1 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 2 10 | tasks: 11 | - command: [ "app" ] 12 | slot: default 13 | count: 14 | per_slot: 1 15 | attributes: 16 | system: 17 | duration: 3600. 18 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/node_vertex_with_toomany.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 1 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 2 12 | tasks: 13 | - command: [ "app" ] 14 | slot: default 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 3600. 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/node_vertex_zero_count.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 0 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 2 12 | tasks: 13 | - command: [ "app" ] 14 | slot: default 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 3600. 20 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/res_type_unknown.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: smurf 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 2 12 | tasks: 13 | - command: [ "app" ] 14 | slot: default 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 3600. 20 | cwd: "/home/flux" 21 | environment: 22 | HOME: "/home/flux" 23 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/slot_node.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: task 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/task_count_per_resource.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 1 12 | tasks: 13 | - command: [ "flux", "start" ] 14 | slot: default 15 | count: 16 | per_resource: 17 | type: core 18 | count: 1 19 | attributes: 20 | system: 21 | duration: 3600. 22 | cwd: "/home/flux" 23 | environment: 24 | HOME: "/home/flux" 25 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/version_wrong.yaml: -------------------------------------------------------------------------------- 1 | version: 2 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: task 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 1 17 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/with_toomany.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | label: foo 5 | count: 1 6 | with: 7 | - type: core 8 | count: 1 9 | - type: gpu 10 | count: 1 11 | - type: smurf 12 | count: 1 13 | tasks: 14 | - command: [ "app" ] 15 | slot: foo 16 | count: 17 | per_slot: 1 18 | attributes: 19 | system: 20 | duration: 1 21 | -------------------------------------------------------------------------------- /t/jobspec/invalid_v1/with_whatnow.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | label: foo 5 | count: 1 6 | with: 7 | - type: piglets 8 | count: 1 9 | - type: mermaids 10 | count: 1 11 | tasks: 12 | - command: [ "app" ] 13 | slot: foo 14 | count: 15 | per_slot: 1 16 | attributes: 17 | system: 18 | duration: 1 19 | -------------------------------------------------------------------------------- /t/jobspec/valid/attributes_system.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | a: "string" 17 | b: 42 18 | c: [ 1, 2, 3 ] 19 | d: 20 | foo: "string" 21 | -------------------------------------------------------------------------------- /t/jobspec/valid/attributes_user.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | user: 16 | a: "string" 17 | b: 42 18 | c: [ 1, 2, 3 ] 19 | d: 20 | foo: "string" 21 | -------------------------------------------------------------------------------- /t/jobspec/valid/basic.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: foo 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: {} 15 | -------------------------------------------------------------------------------- /t/jobspec/valid/basic_v1.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 1 5 | label: task 6 | with: 7 | - type: core 8 | count: 1 9 | tasks: 10 | - command: [ "app" ] 11 | slot: foo 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 0 17 | -------------------------------------------------------------------------------- /t/jobspec/valid/example1.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 2 12 | tasks: 13 | - command: [ "app" ] 14 | slot: default 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 3600. 20 | cwd: "/home/flux" 21 | environment: 22 | HOME: "/home/flux" 23 | -------------------------------------------------------------------------------- /t/jobspec/valid/example2.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 4 5 | label: default 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "hostname" ] 11 | slot: default 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 3600. 17 | cwd: "/home/flux" 18 | environment: 19 | HOME: "/home/flux" 20 | -------------------------------------------------------------------------------- /t/jobspec/valid/use_case_1.1.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | count: 4 5 | label: default 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "flux", "start" ] 11 | slot: default 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 3600. 17 | cwd: "/home/flux" 18 | environment: 19 | HOME: "/home/flux" 20 | -------------------------------------------------------------------------------- /t/jobspec/valid/use_case_1.2.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | count: 5 | min: 3 6 | max: 30 7 | operator: "+" 8 | operand: 1 9 | label: default 10 | with: 11 | - type: node 12 | count: 1 13 | tasks: 14 | - command: [ "flux", "start" ] 15 | slot: default 16 | count: 17 | per_slot: 1 18 | attributes: 19 | system: 20 | duration: 3600. 21 | cwd: "/home/flux" 22 | environment: 23 | HOME: "/home/flux" 24 | -------------------------------------------------------------------------------- /t/jobspec/valid/use_case_2.1.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | label: default 5 | count: 4 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "hostname" ] 11 | slot: default 12 | count: 13 | per_slot: 5 14 | attributes: 15 | system: 16 | duration: 3600. 17 | cwd: "/home/flux" 18 | environment: 19 | HOME: "/home/flux" 20 | -------------------------------------------------------------------------------- /t/jobspec/valid/use_case_2.2.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | count: 4 5 | label: myslot 6 | with: 7 | - type: node 8 | count: 1 9 | tasks: 10 | - command: [ "hostname" ] 11 | slot: myslot 12 | count: 13 | total: 5 14 | attributes: 15 | system: 16 | duration: 3600. 17 | cwd: "/home/flux" 18 | environment: 19 | HOME: "/home/flux" 20 | -------------------------------------------------------------------------------- /t/jobspec/valid/use_case_2.3.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | label: default 5 | count: 10 6 | with: 7 | - type: core 8 | count: 2 9 | tasks: 10 | - command: [ "myapp" ] 11 | slot: default 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 3600. 17 | cwd: "/home/flux" 18 | environment: 19 | HOME: "/home/flux" 20 | -------------------------------------------------------------------------------- /t/jobspec/valid/use_case_2.5.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | label: default 5 | count: 10 6 | with: 7 | - type: memory 8 | count: 9 | min: 2 10 | unit: GB 11 | - type: core 12 | count: 1 13 | tasks: 14 | - command: [ "app" ] 15 | slot: default 16 | count: 17 | per_slot: 1 18 | attributes: 19 | system: 20 | duration: 3600. 21 | cwd: "/home/flux" 22 | environment: 23 | HOME: "/home/flux" 24 | -------------------------------------------------------------------------------- /t/jobspec/valid/use_case_2.6.yaml: -------------------------------------------------------------------------------- 1 | version: 999 2 | resources: 3 | - type: slot 4 | label: 4GB-node 5 | count: 2 6 | with: 7 | - type: node 8 | count: 1 9 | with: 10 | - type: memory 11 | count: 12 | min: 4 13 | unit: GB 14 | tasks: 15 | - command: [ "app" ] 16 | slot: 4GB-node 17 | count: 18 | total: 10 19 | attributes: 20 | system: 21 | duration: 3600. 22 | cwd: "/home/flux" 23 | environment: 24 | HOME: "/home/flux" 25 | -------------------------------------------------------------------------------- /t/jobspec/valid_v1/example1.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 2 12 | tasks: 13 | - command: [ "app" ] 14 | slot: default 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 3600. 20 | cwd: "/home/flux" 21 | environment: 22 | HOME: "/home/flux" 23 | -------------------------------------------------------------------------------- /t/jobspec/valid_v1/gpu_count_zero.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 1 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 1 12 | - type: gpu 13 | count: 0 14 | 15 | tasks: 16 | - command: [ "app" ] 17 | slot: default 18 | count: 19 | per_slot: 1 20 | attributes: 21 | system: 22 | duration: 3600. 23 | -------------------------------------------------------------------------------- /t/jobspec/valid_v1/use_case_1.1.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 1 8 | label: default 9 | with: 10 | - type: core 11 | count: 1 12 | tasks: 13 | - command: [ "flux", "start" ] 14 | slot: default 15 | count: 16 | per_slot: 1 17 | attributes: 18 | system: 19 | duration: 3600. 20 | cwd: "/home/flux" 21 | environment: 22 | HOME: "/home/flux" 23 | -------------------------------------------------------------------------------- /t/jobspec/valid_v1/use_case_2.1.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 1 8 | label: myslot 9 | with: 10 | - type: core 11 | count: 1 12 | tasks: 13 | - command: [ "hostname" ] 14 | slot: myslot 15 | count: 16 | total: 5 17 | attributes: 18 | system: 19 | duration: 3600. 20 | cwd: "/home/flux" 21 | environment: 22 | HOME: "/home/flux" 23 | -------------------------------------------------------------------------------- /t/jobspec/valid_v1/use_case_2.2.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | label: default 5 | count: 10 6 | with: 7 | - type: core 8 | count: 2 9 | tasks: 10 | - command: [ "myapp" ] 11 | slot: default 12 | count: 13 | per_slot: 1 14 | attributes: 15 | system: 16 | duration: 3600. 17 | cwd: "/home/flux" 18 | environment: 19 | HOME: "/home/flux" 20 | -------------------------------------------------------------------------------- /t/jobspec/valid_v1/use_case_2.3.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: slot 4 | count: 10 5 | label: default 6 | with: 7 | - type: core 8 | count: 2 9 | - type: gpu 10 | count: 1 11 | tasks: 12 | - command: [ "myapp" ] 13 | slot: default 14 | count: 15 | per_slot: 1 16 | attributes: 17 | system: 18 | duration: 3600. 19 | cwd: "/home/flux" 20 | environment: 21 | HOME: "/home/flux" 22 | -------------------------------------------------------------------------------- /t/jobspec/valid_v1/use_case_2.4.yaml: -------------------------------------------------------------------------------- 1 | version: 1 2 | resources: 3 | - type: node 4 | count: 4 5 | with: 6 | - type: slot 7 | count: 4 8 | label: default 9 | with: 10 | - type: core 11 | count: 1 12 | - type: gpu 13 | count: 1 14 | tasks: 15 | - command: [ "myapp" ] 16 | slot: default 17 | count: 18 | per_slot: 1 19 | attributes: 20 | system: 21 | duration: 3600. 22 | cwd: "/home/flux" 23 | environment: 24 | HOME: "/home/flux" 25 | -------------------------------------------------------------------------------- /t/jobspec/y2j.py: -------------------------------------------------------------------------------- 1 | # Usage: flux python y2j out.json 2 | 3 | import sys, yaml, json 4 | 5 | try: 6 | obj = yaml.safe_load(sys.stdin) 7 | except (OSError, IOError) as e: 8 | sys.exit("y2j: " + e.strerror) 9 | except yaml.YAMLError as e: 10 | sys.exit("y2j: " + e.problem) 11 | 12 | json.dump(obj, sys.stdout, separators=(",", ":")) 13 | -------------------------------------------------------------------------------- /t/kvs/.gitignore: -------------------------------------------------------------------------------- 1 | /blobref 2 | /commit 3 | /commit_order 4 | /content-spam 5 | /dtree 6 | /issue1760 7 | /issue1876 8 | /lookup_invalid 9 | /setrootevents 10 | /torture 11 | /transactionmerge 12 | /waitcreate_cancel 13 | /watch_disconnect 14 | /watch_stream 15 | -------------------------------------------------------------------------------- /t/loop/.gitignore: -------------------------------------------------------------------------------- 1 | /handle.t 2 | /log.t 3 | /multrpc.t 4 | /reactor.t 5 | /reduce.t 6 | /rpc.t 7 | -------------------------------------------------------------------------------- /t/lua/t0007-alarm.t: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env lua 2 | 3 | local test = require 'fluxometer'.init (...) 4 | local posix = require_ok ('posix') 5 | local alarm = require_ok ('lalarm') 6 | type_ok (alarm, 'function', 'lalarm: is function') 7 | 8 | local success = false 9 | local rc, err = alarm (1, function () success = true end) 10 | 11 | posix.sleep (2) 12 | 13 | ok (success, "lalarm: alarm was triggered") 14 | 15 | done_testing() 16 | 17 | -------------------------------------------------------------------------------- /t/marshall/invalid/v0.46.1.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/marshall/invalid/v0.46.1.data -------------------------------------------------------------------------------- /t/marshall/valid/v0.47.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/marshall/valid/v0.47.data -------------------------------------------------------------------------------- /t/mpi/mpich_basic/self.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) by Argonne National Laboratory 3 | * See COPYRIGHT in top-level directory 4 | */ 5 | 6 | #include "mpi.h" 7 | 8 | int main(int argc, char *argv[]) 9 | { 10 | int i, j; 11 | MPI_Status status; 12 | 13 | MPI_Init(&argc, &argv); 14 | 15 | MPI_Sendrecv(&i, 1, MPI_INT, 0, 100, &j, 1, MPI_INT, 0, 100, MPI_COMM_WORLD, &status); 16 | 17 | MPI_Finalize(); 18 | return (0); 19 | } 20 | -------------------------------------------------------------------------------- /t/mpi/mpich_basic/simple.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) by Argonne National Laboratory 3 | * See COPYRIGHT in top-level directory 4 | */ 5 | 6 | #include "mpi.h" 7 | 8 | int main(int argc, char *argv[]) 9 | { 10 | MPI_Init(&argc, &argv); 11 | MPI_Finalize(); 12 | 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /t/prove-under-flux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | prove --merge --timer -j 128 --exec="flux run -n1" ./t*.t ./python/t*.py 3 | -------------------------------------------------------------------------------- /t/python/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/python/__init__.py -------------------------------------------------------------------------------- /t/python/tap/.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | /build 3 | /dist 4 | /*.egg-info 5 | -------------------------------------------------------------------------------- /t/python/tap/.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "2.7" 4 | - "3.2" 5 | - "3.3" 6 | - "3.4" 7 | script: make check 8 | -------------------------------------------------------------------------------- /t/rc/rc1-kvs: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | RANK=$(flux getattr rank) 4 | 5 | # Usage: modload {all|} modname [args ...] 6 | modload() { 7 | local where=$1; shift 8 | if test "$where" = "all" || test $where -eq $RANK; then 9 | flux module load $* 10 | fi 11 | } 12 | 13 | modload all content blob-size-limit=1048576 14 | modload 0 content-sqlite 15 | modload all kvs 16 | modload all kvs-watch 17 | modload all heartbeat 18 | -------------------------------------------------------------------------------- /t/rc/rc3-kvs: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | RANK=$(flux getattr rank) 4 | 5 | # Usage: modrm {all|} modname 6 | modrm() { 7 | local where=$1; shift 8 | if test "$where" = "all" || test $where -eq $RANK; then 9 | flux module remove -f $* 10 | fi 11 | } 12 | 13 | 14 | modrm all heartbeat 15 | modrm all kvs-watch 16 | modrm all kvs 17 | 18 | flux content flush 19 | modrm 0 content-sqlite 20 | modrm all content 21 | -------------------------------------------------------------------------------- /t/request/.gitignore: -------------------------------------------------------------------------------- 1 | /treq 2 | -------------------------------------------------------------------------------- /t/runtests.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | rm -rf test-results trash-directory* 3 | SHELL_PATH="/bin/sh" 4 | code=0 5 | 6 | if test -z "$srcdir"; then 7 | srcdir="." 8 | fi 9 | 10 | for test in ${srcdir}/t[0-9]*.t; do 11 | echo "*** $test ***" 12 | $SHELL_PATH $test 13 | if [ $? -ne 0 ]; then 14 | code=1 15 | fi 16 | done 17 | 18 | $SHELL_PATH ${srcdir}/aggregate-results.sh test-results/* 19 | 20 | exit $code 21 | -------------------------------------------------------------------------------- /t/scripts/sign-as.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | from flux.security import SecurityContext 4 | 5 | if len(sys.argv) < 2: 6 | print("Usage: {0} USERID".format(sys.argv[0])) 7 | sys.exit(1) 8 | 9 | userid = int(sys.argv[1]) 10 | ctx = SecurityContext() 11 | payload = sys.stdin.read() 12 | 13 | print(ctx.sign_wrap_as(userid, payload, mech_type="none").decode("utf-8")) 14 | # vi: ts=4 sw=4 expandtab 15 | -------------------------------------------------------------------------------- /t/scripts/t0004-event-helper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -x 2 | 3 | # This is a helper for t0004-events.t 4 | 5 | base=$1 6 | if test $# -gt 1; then 7 | rank=$2 8 | for suffix in foo bar baz eof; do 9 | flux exec -r $rank flux event pub ${base}.${suffix} 10 | done 11 | else 12 | for suffix in foo bar baz eof; do 13 | echo ${base}.${suffix} 14 | done 15 | fi 16 | -------------------------------------------------------------------------------- /t/sharness/vim/ftdetect/sharness.vim: -------------------------------------------------------------------------------- 1 | au BufRead,BufNewFile *.t set filetype=sh.sharness 2 | -------------------------------------------------------------------------------- /t/sharness/vim/indent/sharness.vim: -------------------------------------------------------------------------------- 1 | let b:sh_indent_options = { 'continuation-line': 0 } 2 | 3 | runtime! indent/sh.vim 4 | -------------------------------------------------------------------------------- /t/shell/input/1r1c.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution":{ 4 | "R_lite":[ 5 | { "children": { "core": "0" }, "rank": "0" } 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /t/shell/input/1r1c2gpu.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution":{ 4 | "R_lite":[ 5 | { "children": { "core": "0", "gpu": "0-1" }, "rank": "0" } 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /t/shell/input/1r2c.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution":{ 4 | "R_lite":[ 5 | { "children": { "core": "0-1" }, "rank": "0" } 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /t/shell/input/8r1c.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution":{ 4 | "R_lite":[ 5 | { "children": { "core": "0" }, "rank": "0-7" } 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /t/shell/input/out-of-order-ranks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "execution": { 4 | "R_lite": [ 5 | { 6 | "rank": "1", 7 | "children": { 8 | "core": "0-7" 9 | } 10 | }, 11 | { 12 | "rank": "0", 13 | "children": { 14 | "core": "0-1" 15 | } 16 | } 17 | ], 18 | "starttime": 0, 19 | "expiration": 0, 20 | "nodelist": [ 21 | "f[0-1]" 22 | ] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /t/shell/output/1r1c.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/1r1c.1.err -------------------------------------------------------------------------------- /t/shell/output/1r1c.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks across 1 nodes with 1 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=1 cores=0 4 | -------------------------------------------------------------------------------- /t/shell/output/1r1c2gpu.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/1r1c2gpu.1.err -------------------------------------------------------------------------------- /t/shell/output/1r1c2gpu.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks across 1 nodes with 1 cores 2 gpus 2 | Used 1 nodes 3 | 0: rank=0 ntasks=1 cores=0 gpus=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/1r2c.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/1r2c.1.err -------------------------------------------------------------------------------- /t/shell/output/1r2c.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks across 1 nodes with 2 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=1 cores=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/1r2c.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/1r2c.2.err -------------------------------------------------------------------------------- /t/shell/output/1r2c.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks across 1 nodes with 2 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=2 cores=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.16.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/4r4c4r1c.16.err -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.16.expected: -------------------------------------------------------------------------------- 1 | Distributing 16 tasks across 8 nodes with 20 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=3 cores=0-3 4 | 1: rank=1 ntasks=3 cores=0-3 5 | 2: rank=2 ntasks=3 cores=0-3 6 | 3: rank=3 ntasks=3 cores=0-3 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.20.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/4r4c4r1c.20.err -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.20.expected: -------------------------------------------------------------------------------- 1 | Distributing 20 tasks across 8 nodes with 20 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=4 cores=0-3 4 | 1: rank=1 ntasks=4 cores=0-3 5 | 2: rank=2 ntasks=4 cores=0-3 6 | 3: rank=3 ntasks=4 cores=0-3 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.4.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/4r4c4r1c.4.err -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.4.expected: -------------------------------------------------------------------------------- 1 | Distributing 4 tasks across 8 nodes with 20 cores 2 | Used 4 nodes 3 | 0: rank=0 ntasks=1 cores=0-3 4 | 1: rank=1 ntasks=1 cores=0-3 5 | 2: rank=2 ntasks=1 cores=0-3 6 | 3: rank=3 ntasks=1 cores=0-3 7 | 4: rank=4 ntasks=0 cores=0 8 | 5: rank=5 ntasks=0 cores=0 9 | 6: rank=6 ntasks=0 cores=0 10 | 7: rank=7 ntasks=0 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.8.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/4r4c4r1c.8.err -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.8.expected: -------------------------------------------------------------------------------- 1 | Distributing 8 tasks across 8 nodes with 20 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=1 cores=0-3 4 | 1: rank=1 ntasks=1 cores=0-3 5 | 2: rank=2 ntasks=1 cores=0-3 6 | 3: rank=3 ntasks=1 cores=0-3 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.9.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/4r4c4r1c.9.err -------------------------------------------------------------------------------- /t/shell/output/4r4c4r1c.9.expected: -------------------------------------------------------------------------------- 1 | Distributing 9 tasks across 8 nodes with 20 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=2 cores=0-3 4 | 1: rank=1 ntasks=1 cores=0-3 5 | 2: rank=2 ntasks=1 cores=0-3 6 | 3: rank=3 ntasks=1 cores=0-3 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/8r1c.4.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/8r1c.4.err -------------------------------------------------------------------------------- /t/shell/output/8r1c.4.expected: -------------------------------------------------------------------------------- 1 | Distributing 4 tasks across 8 nodes with 8 cores 2 | Used 4 nodes 3 | 0: rank=0 ntasks=1 cores=0 4 | 1: rank=1 ntasks=1 cores=0 5 | 2: rank=2 ntasks=1 cores=0 6 | 3: rank=3 ntasks=1 cores=0 7 | 4: rank=4 ntasks=0 cores=0 8 | 5: rank=5 ntasks=0 cores=0 9 | 6: rank=6 ntasks=0 cores=0 10 | 7: rank=7 ntasks=0 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/8r1c.8.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/8r1c.8.err -------------------------------------------------------------------------------- /t/shell/output/8r1c.8.expected: -------------------------------------------------------------------------------- 1 | Distributing 8 tasks across 8 nodes with 8 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=1 cores=0 4 | 1: rank=1 ntasks=1 cores=0 5 | 2: rank=2 ntasks=1 cores=0 6 | 3: rank=3 ntasks=1 cores=0 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/8r1c.9.err: -------------------------------------------------------------------------------- 1 | rcalc_distribute: Invalid argument 2 | -------------------------------------------------------------------------------- /t/shell/output/8r1c.9.expected: -------------------------------------------------------------------------------- 1 | Distributing 9 tasks across 8 nodes with 8 cores 2 | -------------------------------------------------------------------------------- /t/shell/output/out-of-order-ranks.10.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/out-of-order-ranks.10.err -------------------------------------------------------------------------------- /t/shell/output/out-of-order-ranks.10.expected: -------------------------------------------------------------------------------- 1 | Distributing 10 tasks across 2 nodes with 10 cores 2 | Used 2 nodes 3 | 0: rank=0 ntasks=2 cores=0-1 4 | 1: rank=1 ntasks=8 cores=0-7 5 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c.core.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r1c.core.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c.core.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-core across 1 nodes with 1 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=1 cores=0 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c.core.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r1c.core.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c.core.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-core across 1 nodes with 1 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=2 cores=0 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c.node.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r1c.node.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c.node.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-node across 1 nodes with 1 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=1 cores=0 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c.node.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r1c.node.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c.node.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-node across 1 nodes with 1 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=2 cores=0 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c2gpu.core.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r1c2gpu.core.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c2gpu.core.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-core across 1 nodes with 1 cores 2 gpus 2 | Used 1 nodes 3 | 0: rank=0 ntasks=1 cores=0 gpus=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c2gpu.core.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r1c2gpu.core.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c2gpu.core.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-core across 1 nodes with 1 cores 2 gpus 2 | Used 1 nodes 3 | 0: rank=0 ntasks=2 cores=0 gpus=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c2gpu.node.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r1c2gpu.node.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c2gpu.node.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-node across 1 nodes with 1 cores 2 gpus 2 | Used 1 nodes 3 | 0: rank=0 ntasks=1 cores=0 gpus=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c2gpu.node.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r1c2gpu.node.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r1c2gpu.node.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-node across 1 nodes with 1 cores 2 gpus 2 | Used 1 nodes 3 | 0: rank=0 ntasks=2 cores=0 gpus=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r2c.core.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r2c.core.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r2c.core.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-core across 1 nodes with 2 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=2 cores=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r2c.core.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r2c.core.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r2c.core.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-core across 1 nodes with 2 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=4 cores=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r2c.node.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r2c.node.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r2c.node.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-node across 1 nodes with 2 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=1 cores=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r2c.node.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/1r2c.node.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/1r2c.node.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-node across 1 nodes with 2 cores 2 | Used 1 nodes 3 | 0: rank=0 ntasks=2 cores=0-1 4 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/4r4c4r1c.core.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/4r4c4r1c.core.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/4r4c4r1c.core.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-core across 8 nodes with 20 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=4 cores=0-3 4 | 1: rank=1 ntasks=4 cores=0-3 5 | 2: rank=2 ntasks=4 cores=0-3 6 | 3: rank=3 ntasks=4 cores=0-3 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/4r4c4r1c.core.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/4r4c4r1c.core.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/4r4c4r1c.core.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-core across 8 nodes with 20 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=8 cores=0-3 4 | 1: rank=1 ntasks=8 cores=0-3 5 | 2: rank=2 ntasks=8 cores=0-3 6 | 3: rank=3 ntasks=8 cores=0-3 7 | 4: rank=4 ntasks=2 cores=0 8 | 5: rank=5 ntasks=2 cores=0 9 | 6: rank=6 ntasks=2 cores=0 10 | 7: rank=7 ntasks=2 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/4r4c4r1c.node.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/4r4c4r1c.node.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/4r4c4r1c.node.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-node across 8 nodes with 20 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=1 cores=0-3 4 | 1: rank=1 ntasks=1 cores=0-3 5 | 2: rank=2 ntasks=1 cores=0-3 6 | 3: rank=3 ntasks=1 cores=0-3 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/4r4c4r1c.node.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/4r4c4r1c.node.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/4r4c4r1c.node.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-node across 8 nodes with 20 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=2 cores=0-3 4 | 1: rank=1 ntasks=2 cores=0-3 5 | 2: rank=2 ntasks=2 cores=0-3 6 | 3: rank=3 ntasks=2 cores=0-3 7 | 4: rank=4 ntasks=2 cores=0 8 | 5: rank=5 ntasks=2 cores=0 9 | 6: rank=6 ntasks=2 cores=0 10 | 7: rank=7 ntasks=2 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/8r1c.core.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/8r1c.core.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/8r1c.core.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-core across 8 nodes with 8 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=1 cores=0 4 | 1: rank=1 ntasks=1 cores=0 5 | 2: rank=2 ntasks=1 cores=0 6 | 3: rank=3 ntasks=1 cores=0 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/8r1c.core.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/8r1c.core.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/8r1c.core.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-core across 8 nodes with 8 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=2 cores=0 4 | 1: rank=1 ntasks=2 cores=0 5 | 2: rank=2 ntasks=2 cores=0 6 | 3: rank=3 ntasks=2 cores=0 7 | 4: rank=4 ntasks=2 cores=0 8 | 5: rank=5 ntasks=2 cores=0 9 | 6: rank=6 ntasks=2 cores=0 10 | 7: rank=7 ntasks=2 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/8r1c.node.1.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/8r1c.node.1.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/8r1c.node.1.expected: -------------------------------------------------------------------------------- 1 | Distributing 1 tasks per-node across 8 nodes with 8 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=1 cores=0 4 | 1: rank=1 ntasks=1 cores=0 5 | 2: rank=2 ntasks=1 cores=0 6 | 3: rank=3 ntasks=1 cores=0 7 | 4: rank=4 ntasks=1 cores=0 8 | 5: rank=5 ntasks=1 cores=0 9 | 6: rank=6 ntasks=1 cores=0 10 | 7: rank=7 ntasks=1 cores=0 11 | -------------------------------------------------------------------------------- /t/shell/output/per-resource/8r1c.node.2.err: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/flux-framework/flux-core/ea37596d68ce7e694c23b296c88b10f71205a193/t/shell/output/per-resource/8r1c.node.2.err -------------------------------------------------------------------------------- /t/shell/output/per-resource/8r1c.node.2.expected: -------------------------------------------------------------------------------- 1 | Distributing 2 tasks per-node across 8 nodes with 8 cores 2 | Used 8 nodes 3 | 0: rank=0 ntasks=2 cores=0 4 | 1: rank=1 ntasks=2 cores=0 5 | 2: rank=2 ntasks=2 cores=0 6 | 3: rank=3 ntasks=2 cores=0 7 | 4: rank=4 ntasks=2 cores=0 8 | 5: rank=5 ntasks=2 cores=0 9 | 6: rank=6 ntasks=2 cores=0 10 | 7: rank=7 ntasks=2 cores=0 11 | -------------------------------------------------------------------------------- /t/test-under-flux/expected.modcheck: -------------------------------------------------------------------------------- 1 | ok 1 - flux module load heartbeat 2 | # passed all 1 test(s) 3 | 1..1 4 | error: manually loaded module(s) not unloaded: heartbeat 5 | -------------------------------------------------------------------------------- /t/test-under-flux/t_modcheck.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | test_description="test_under_flux with module loaded, but not unloaded" 3 | . "$SHARNESS_TEST_SRCDIR"/sharness.sh 4 | test_under_flux 2 minimal 5 | test_expect_success "flux module load heartbeat" " 6 | flux module load heartbeat 7 | " 8 | test_done 9 | -------------------------------------------------------------------------------- /t/test-under-flux/test.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | pwd 3 | test_description="test_under_flux (in sub sharness)" 4 | . "$SHARNESS_TEST_SRCDIR"/sharness.sh 5 | test_under_flux 2 minimal 6 | test_expect_success "flux getattr size" " 7 | flux getattr size 8 | " 9 | test_done 10 | -------------------------------------------------------------------------------- /t/valgrind/valgrind-workload.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo FLUX_URI=$FLUX_URI 4 | exitcode=0 5 | 6 | for file in ${SHARNESS_TEST_SRCDIR:-..}/valgrind/workload.d/*; do 7 | echo Running $(basename $file) 8 | $file 9 | rc=$? 10 | if test $rc -gt 0; then 11 | echo "$(basename $file): Failed with rc=$rc" >&2 12 | exitcode=1 13 | fi 14 | done 15 | exit $exitcode 16 | -------------------------------------------------------------------------------- /t/valgrind/workload.d/job: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | NJOBS=${NJOBS:-10} 4 | 5 | flux submit --cc="1-$NJOBS" --wait \ 6 | flux lptest 78 2 7 | -------------------------------------------------------------------------------- /t/valgrind/workload.d/job-cancel: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | set -x 4 | 5 | # Test job cancel 6 | id=$(flux submit sleep 60) 7 | flux job wait-event ${id} start 8 | flux cancel ${id} 9 | flux job wait-event ${id} clean 10 | -------------------------------------------------------------------------------- /t/valgrind/workload.d/job-info: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | set -x 4 | 5 | # Test info fetch 6 | 7 | id=$(flux submit -n 1 true) 8 | flux job attach ${id} 9 | 10 | flux job info ${id} eventlog >/dev/null 11 | flux job info ${id} jobspec >/dev/null 12 | flux job info ${id} R >/dev/null 13 | -------------------------------------------------------------------------------- /t/valgrind/workload.d/job-list: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | set -x 4 | 5 | # Test job list 6 | 7 | # launch a few jobs just to ensure there are jobs to list 8 | flux submit -n 1 true 9 | flux submit -n 1 false 10 | 11 | flux jobs -a -A 12 | -------------------------------------------------------------------------------- /t/valgrind/workload.d/job-multinode: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | NJOBS=${NJOBS:-2} 4 | 5 | flux submit --cc="1-$NJOBS" -N2 --wait hostname 6 | 7 | -------------------------------------------------------------------------------- /t/valgrind/workload.d/job-wait: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | set -x 4 | 5 | # Test job wait 6 | 7 | id=$(flux submit --flags waitable true) 8 | flux job wait ${id} 9 | 10 | # No leaks if zombie persists 11 | id=$(flux submit --flags waitable true) 12 | flux job wait-event ${id} clean 13 | -------------------------------------------------------------------------------- /t/valgrind/workload.d/resource: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | flux submit --wait-event=alloc sleep inf 4 | 5 | flux resource drain 0 6 | 7 | # calls both resource.status and resource.sched-status 8 | flux resource status 9 | 10 | # second call should use cached values 11 | flux resource status 12 | 13 | flux resource undrain 0 14 | 15 | # Cancel the sleep job and wait for it to complete 16 | flux cancel $(flux job last) 17 | flux queue drain 18 | --------------------------------------------------------------------------------