mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-23 11:06:21 +00:00
fix: address code review comments from PR #79
- Add TEST_GROUPS constant to eliminate magic number - Use stdout for info messages, stderr for errors only - Remove redundant comments and dead code - Add CI check before copying coverage.info - Unify variable declaration order - Add port allocation explanation comment - Restore /* 50ms */ inline comment - Update CONTRIBUTING.md with build 1 description
This commit is contained in:
@@ -17,6 +17,9 @@
|
||||
|
||||
#include "proftest.h"
|
||||
|
||||
/* Number of parallel test groups for CI builds */
|
||||
#define TEST_GROUPS 4
|
||||
|
||||
char *config_orig;
|
||||
char *data_orig;
|
||||
|
||||
@@ -138,9 +141,9 @@ _cleanup_dirs(void)
|
||||
{
|
||||
const char *group_env = getenv("PROF_TEST_GROUP");
|
||||
int group = group_env ? atoi(group_env) : 0;
|
||||
int dir_id = (group >= 1 && group <= 4) ? group : stub_port;
|
||||
int dir_id = (group >= 1 && group <= TEST_GROUPS) ? group : stub_port;
|
||||
|
||||
fprintf(stderr, "[PROF_TEST] Cleaning up directories for group %d (dir_id %d)\n", group, dir_id);
|
||||
printf("[PROF_TEST] Cleaning up directories for group %d (dir_id %d)\n", group, dir_id);
|
||||
|
||||
char cmd[512];
|
||||
snprintf(cmd, sizeof(cmd), "rm -rf ./test-files/%d", dir_id);
|
||||
@@ -243,36 +246,38 @@ init_prof_test(void **state)
|
||||
const char *build_env = getenv("PROF_BUILD_INDEX");
|
||||
int build_idx = build_env ? atoi(build_env) : 0;
|
||||
|
||||
/* Calculate port base: each build uses a different range of 4 ports
|
||||
* Build 0/1: 5230-5233, Build 2: 5234-5237, Build 3: 5238-5241, Build 4: 5242-5245 */
|
||||
int port_base = 5230 + ((build_idx > 0 ? build_idx - 1 : 0) * 4);
|
||||
/* Calculate port base: each build uses a different range of TEST_GROUPS ports.
|
||||
* Build 0 (local/default): 5230-5233, Build 1: 5230-5233, Build 2: 5234-5237, etc.
|
||||
* Build 0 and 1 share the same range because build 0 is for local runs (no parallel builds),
|
||||
* while builds 1-4 are used in CI where they run in parallel. */
|
||||
int port_base = 5230 + ((build_idx > 0 ? build_idx - 1 : 0) * TEST_GROUPS);
|
||||
|
||||
/* Static resource allocation to avoid conflicts in parallel execution.
|
||||
* Group 1-4: use static port assignment.
|
||||
* Group 0 (all groups): use dynamic allocation as fallback. */
|
||||
gboolean started = FALSE;
|
||||
|
||||
if (group >= 1 && group <= 4) {
|
||||
if (group >= 1 && group <= TEST_GROUPS) {
|
||||
/* Static allocation: each group gets a dedicated port */
|
||||
stub_port = port_base + group - 1;
|
||||
fprintf(stderr, "[PROF_TEST] Build %d, Group %d: trying port %d\n", build_idx, group, stub_port);
|
||||
printf("[PROF_TEST] Build %d, Group %d: trying port %d\n", build_idx, group, stub_port);
|
||||
|
||||
if (stbbr_start(STBBR_LOGDEBUG, stub_port, 0) == 0) {
|
||||
started = TRUE;
|
||||
fprintf(stderr, "[PROF_TEST] Started stabber on port %d\n", stub_port);
|
||||
printf("[PROF_TEST] Started stabber on port %d\n", stub_port);
|
||||
} else {
|
||||
fprintf(stderr, "[PROF_TEST] Failed to start stabber on port %d\n", stub_port);
|
||||
printf("[PROF_TEST] Failed to start stabber on port %d\n", stub_port);
|
||||
}
|
||||
}
|
||||
|
||||
/* Fallback to dynamic allocation if static failed or group=0 */
|
||||
if (!started) {
|
||||
fprintf(stderr, "[PROF_TEST] Using dynamic port allocation\n");
|
||||
printf("[PROF_TEST] Using dynamic port allocation\n");
|
||||
for (int p = port_base; p < port_base + 20; ++p) {
|
||||
if (stbbr_start(STBBR_LOGDEBUG, p, 0) == 0) {
|
||||
stub_port = p;
|
||||
started = TRUE;
|
||||
fprintf(stderr, "[PROF_TEST] Started stabber on port %d\n", stub_port);
|
||||
printf("[PROF_TEST] Started stabber on port %d\n", stub_port);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -280,20 +285,19 @@ init_prof_test(void **state)
|
||||
|
||||
if (!started) {
|
||||
fprintf(stderr, "[PROF_TEST] ERROR: could not start stabber on any port\n");
|
||||
assert_true(FALSE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Generate unique XDG paths based on group for parallel execution
|
||||
// Use ./test-files/ in current (build) directory for out-of-tree builds compatibility
|
||||
int dir_id = (group >= 1 && group <= 4) ? group : stub_port;
|
||||
/* Generate unique XDG paths based on group for parallel execution.
|
||||
* Use ./test-files/ in current (build) directory for out-of-tree builds compatibility. */
|
||||
int dir_id = (group >= 1 && group <= TEST_GROUPS) ? group : stub_port;
|
||||
snprintf(xdg_config_home, sizeof(xdg_config_home),
|
||||
"./test-files/%d/xdg_config_home", dir_id);
|
||||
snprintf(xdg_data_home, sizeof(xdg_data_home),
|
||||
"./test-files/%d/xdg_data_home", dir_id);
|
||||
|
||||
fprintf(stderr, "[PROF_TEST] Group %d using directories: config=%s, data=%s\n",
|
||||
group, xdg_config_home, xdg_data_home);
|
||||
printf("[PROF_TEST] Group %d using directories: config=%s, data=%s\n",
|
||||
group, xdg_config_home, xdg_data_home);
|
||||
|
||||
// Give stabber server thread time to start listening
|
||||
usleep(100000); // 100ms
|
||||
@@ -447,7 +451,7 @@ prof_output_regex(const char *pattern)
|
||||
return 1;
|
||||
}
|
||||
|
||||
usleep(50000);
|
||||
usleep(50000); /* 50ms */
|
||||
}
|
||||
|
||||
/* Timeout reached - log diagnostic info */
|
||||
|
||||
Reference in New Issue
Block a user