CI and testing updates (#203)

* Python implementation of run-ci.sh

* Container workflow update

- retry failed container build to combat network failures

* cpack workflow update

- retry failed base container build to combat network failures

* General CI workflow updates

- retry failed "Install packages" step to combat network failures

* Miscellanous linting fixes

* Formatting workflow update

- improve regex for source formatting

* format user.h

* Add new omnitrace-avail tests

* Make run-ci.py executable

* workflow retry fix

- timeout_seconds -> retry_wait_seconds

* Fix cmake formatting glob

* source formatting

* Handle PRs in run-ci.py

* Specify timeout_minutes in retry steps

* Remove remaining --cmake-args from workflows

* CI warnings about using MPICH headers

* Remove text=True from run-ci.py

- not capturing stdout/sterr so unnecessary

* Fix OpenSUSE step label

* Update omnitrace-avail-write-config tests

- use TWD (Test Working Directory) instead of PWD since PWD might not be build directory

* paths-ignore + workflow_dispatch

[ROCm/rocprofiler-systems commit: e1102a8ba4]
This commit is contained in:
Jonathan R. Madsen
2022-11-13 10:42:14 -06:00
committed by GitHub
parent 91627797a0
commit 7042f85927
15 changed files with 1669 additions and 1139 deletions
@@ -34,7 +34,7 @@ function(OMNITRACE_ADD_BIN_TEST)
# common
list(APPEND TEST_ENVIRONMENT "OMNITRACE_CI=ON" "OMNITRACE_CONFIG_FILE="
"OMNITRACE_OUTPUT_PATH=omnitrace-tests-output")
"OMNITRACE_OUTPUT_PATH=omnitrace-tests-output" "TWD=${TEST_WORKING_DIRECTORY}")
# copy for inverse
set(TEST_ENVIRONMENT_INV "${TEST_ENVIRONMENT}")
@@ -225,6 +225,25 @@ omnitrace_add_bin_test(
LABELS "omnitrace-avail"
TIMEOUT 45)
omnitrace_add_bin_test(
NAME omnitrace-avail-all-expand-keys
TARGET omnitrace-avail
ARGS --all --expand-keys
LABELS "omnitrace-avail"
TIMEOUT 45
FAIL_REGEX "%[a-zA-Z_]%")
omnitrace_add_bin_test(
NAME omnitrace-avail-all-only-available-alphabetical
TARGET omnitrace-avail
ARGS --all --available --alphabetical --debug --output
${CMAKE_CURRENT_BINARY_DIR}/omnitrace-avail-all-only-available-alphabetical.log
LABELS "omnitrace-avail"
TIMEOUT 45
PROPERTIES
ATTACHED_FILES
${CMAKE_CURRENT_BINARY_DIR}/omnitrace-avail-all-only-available-alphabetical.log)
omnitrace_add_bin_test(
NAME omnitrace-avail-all-csv
TARGET omnitrace-avail
@@ -288,11 +307,20 @@ omnitrace_add_bin_test(
string(REPLACE "+" "\\\+" _AVAIL_CFG_PATH
"${PROJECT_BINARY_DIR}/omnitrace-tests-output/omnitrace-avail/omnitrace-")
# use of TWD == Test Working Directory (added by function)
omnitrace_add_bin_test(
NAME omnitrace-avail-write-config
TARGET omnitrace-avail
ARGS -G %env{PWD}%/omnitrace-tests-output/omnitrace-avail/omnitrace-test.cfg -F txt
json xml --force --all
ARGS -G
%env{TWD}%/omnitrace-tests-output/omnitrace-avail/omnitrace-test.cfg
-F
txt
json
xml
--force
--all
-c
omnitrace
TIMEOUT 45
LABELS "omnitrace-avail"
PASS_REGEX
@@ -302,7 +330,7 @@ omnitrace_add_bin_test(
omnitrace_add_bin_test(
NAME omnitrace-avail-write-config-tweak
TARGET omnitrace-avail
ARGS -G %env{PWD}%/omnitrace-tests-output/omnitrace-avail/omnitrace-tweak.cfg -F txt
ARGS -G %env{TWD}%/omnitrace-tests-output/omnitrace-avail/omnitrace-tweak.cfg -F txt
json xml --force
TIMEOUT 45
LABELS "omnitrace-avail"
@@ -310,3 +338,37 @@ omnitrace_add_bin_test(
PASS_REGEX
"Outputting JSON configuration file '${_AVAIL_CFG_PATH}tweak\\\.json'(.*)Outputting XML configuration file '${_AVAIL_CFG_PATH}tweak\\\.xml'(.*)Outputting text configuration file '${_AVAIL_CFG_PATH}tweak\\\.cfg'(.*)"
)
omnitrace_add_bin_test(
NAME omnitrace-avail-list-keys
TARGET omnitrace-avail
ARGS --list-keys --expand-keys
TIMEOUT 45
LABELS "omnitrace-avail"
PASS_REGEX "Output Keys:\n(.*)%argv%(.*)%argv_hash%")
omnitrace_add_bin_test(
NAME omnitrace-avail-list-keys-markdown
TARGET omnitrace-avail
ARGS --list-keys --expand-keys --markdown
TIMEOUT 45
LABELS "omnitrace-avail;markdown"
PASS_REGEX "(.*)`%argv%`(.*)`%argv_hash%`")
omnitrace_add_bin_test(
NAME omnitrace-avail-list-categories
TARGET omnitrace-avail
ARGS --list-categories
TIMEOUT 45
LABELS "omnitrace-avail"
PASS_REGEX " component::(.*) hw_counters::(.*) settings::")
omnitrace_add_bin_test(
NAME omnitrace-avail-core-categories
TARGET omnitrace-avail
ARGS -c core
TIMEOUT 45
LABELS "omnitrace-avail"
PASS_REGEX
"OMNITRACE_CONFIG_FILE(.*)OMNITRACE_ENABLED(.*)OMNITRACE_SUPPRESS_CONFIG(.*)OMNITRACE_SUPPRESS_PARSING(.*)OMNITRACE_VERBOSE"
)
@@ -26,11 +26,11 @@
#define OMNITRACE_HIDDEN_API __attribute__((visibility("hidden")));
#include <dlfcn.h>
#include <stdbool.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
//
// local type definitions
@@ -52,8 +52,8 @@ omnitrace_main(int, char**, char**) OMNITRACE_HIDDEN_API;
int
omnitrace_libc_start_main(int (*)(int, char**, char**), int, char**,
int (*)(int, char**, char**), void (*)(void), void (*)(void),
void*) OMNITRACE_HIDDEN_API;
int (*)(int, char**, char**), void (*)(void), void (*)(void),
void*) OMNITRACE_HIDDEN_API;
int
__libc_start_main(int (*)(int, char**, char**), int, char**, int (*)(int, char**, char**),
@@ -109,8 +109,8 @@ omnitrace_main(int argc, char** argv, char** envp)
int
omnitrace_libc_start_main(int (*_main)(int, char**, char**), int _argc, char** _argv,
int (*_init)(int, char**, char**), void (*_fini)(void),
void (*_rtld_fini)(void), void* _stack_end)
int (*_init)(int, char**, char**), void (*_fini)(void),
void (*_rtld_fini)(void), void* _stack_end)
{
int _preload = omnitrace_preload_library();
@@ -159,5 +159,5 @@ __libc_start_main(int (*_main)(int, char**, char**), int _argc, char** _argv,
void (*_rtld_fini)(void), void* _stack_end)
{
return omnitrace_libc_start_main(_main, _argc, _argv, _init, _fini, _rtld_fini,
_stack_end);
_stack_end);
}
@@ -105,7 +105,8 @@ extern "C"
/// @fn int omnitrace_user_configure(omnitrace_user_configure_mode_t cfg,
/// omnitrace_user_callbacks_t new_callbacks,
/// omnitrace_user_callbacks_t* old_callbacks)
/// @param[in] config Specifies how the new callbacks are merged with the old callbacks
/// @param[in] config Specifies how the new callbacks are merged with the old
/// callbacks
/// @param[in] new_callbacks An @ref omnitrace_user_callbacks_t instance specifying
/// the callbacks which should be invoked by the user API.
/// @param[out] old_callbacks Pointer to @ref omnitrace_user_callbacks_t which,