• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

LLNL / dftracer / 2760

02 Dec 2025 05:20AM UTC coverage: 38.87% (+9.8%) from 29.083%
2760

push

github

web-flow
Merge f1f0c2140 into 4ef0a645e

3634 of 12986 branches covered (27.98%)

Branch coverage included in aggregate %.

894 of 962 new or added lines in 7 files covered. (92.93%)

6 existing lines in 1 file now uncovered.

3085 of 4300 relevant lines covered (71.74%)

1001.98 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.24
/test/c/test_c_api_coverage.c
1
/*
2
 * Comprehensive C API Coverage Test
3
 * Tests all C API functions provided by dftracer
4
 */
5

6
#define _POSIX_C_SOURCE 199309L
7
#include <dftracer/dftracer.h>
8
#include <fcntl.h>
9
#include <stdio.h>
10
#include <string.h>
11
#include <sys/stat.h>
12
#include <time.h>
13
#include <unistd.h>
14

15
/* Helper function for sleeping */
16
static void sleep_ms(int milliseconds) {
6✔
17
  struct timespec ts;
18
  ts.tv_sec = milliseconds / 1000;
6✔
19
  ts.tv_nsec = (milliseconds % 1000) * 1000000;
6✔
20
  nanosleep(&ts, NULL);
6✔
21
}
6✔
22

23
/* Test C function tracing macros */
24
void test_c_function_tracing() {
1✔
25
  DFTRACER_C_FUNCTION_START();
1✔
26

27
  /* Test metadata updates */
28
  DFTRACER_C_FUNCTION_UPDATE_INT("c_int", 42);
1✔
29
  DFTRACER_C_FUNCTION_UPDATE_STR("c_string", "c_value");
1✔
30
  DFTRACER_C_FUNCTION_UPDATE_INT("iterations", 100);
1✔
31
  DFTRACER_C_FUNCTION_UPDATE_STR("function_name", __func__);
1✔
32

33
  /* Test more metadata variations */
34
  DFTRACER_C_FUNCTION_UPDATE_INT("buffer_size", 4096);
1✔
35
  DFTRACER_C_FUNCTION_UPDATE_STR("status", "running");
1✔
36

37
  sleep_ms(1);
1✔
38

39
  DFTRACER_C_FUNCTION_END();
1✔
40
}
1✔
41

42
/* Test C function tracing with typed updates */
43
void test_c_function_tracing_typed() {
1✔
44
  DFTRACER_C_FUNCTION_START();
1✔
45

46
  /* Test typed metadata updates */
47
  DFTRACER_C_FUNCTION_UPDATE_INT_TYPE("typed_int", 123, 0);
1✔
48
  DFTRACER_C_FUNCTION_UPDATE_STR_TYPE("typed_string", "typed_value", 0);
1✔
49
  DFTRACER_C_FUNCTION_UPDATE_INT_TYPE("priority", 5, 1);
1✔
50
  DFTRACER_C_FUNCTION_UPDATE_STR_TYPE("category", "test", 1);
1✔
51

52
  sleep_ms(1);
1✔
53

54
  DFTRACER_C_FUNCTION_END();
1✔
55
}
1✔
56

57
/* Test C region tracing */
58
void test_c_region_tracing() {
1✔
59
  DFTRACER_C_FUNCTION_START();
1✔
60

61
  /* Start a custom region */
62
  DFTRACER_C_REGION_START(C_REGION_1);
1✔
63
  DFTRACER_C_REGION_UPDATE_STR(C_REGION_1, "region_name", "first_region");
1✔
64
  DFTRACER_C_REGION_UPDATE_INT(C_REGION_1, "size", 1024);
1✔
65
  DFTRACER_C_REGION_UPDATE_STR(C_REGION_1, "operation", "read");
1✔
66
  sleep_ms(1);
1✔
67
  DFTRACER_C_REGION_END(C_REGION_1);
1✔
68

69
  /* Another region */
70
  DFTRACER_C_REGION_START(C_REGION_2);
1✔
71
  DFTRACER_C_REGION_UPDATE_INT(C_REGION_2, "iteration", 1);
1✔
72
  DFTRACER_C_REGION_UPDATE_STR(C_REGION_2, "status", "running");
1✔
73
  DFTRACER_C_REGION_UPDATE_INT(C_REGION_2, "count", 42);
1✔
74
  sleep_ms(1);
1✔
75
  DFTRACER_C_REGION_END(C_REGION_2);
1✔
76

77
  /* Test nested regions */
78
  DFTRACER_C_REGION_START(OUTER_REGION);
1✔
79
  DFTRACER_C_REGION_UPDATE_STR(OUTER_REGION, "level", "outer");
1✔
80

81
  DFTRACER_C_REGION_START(INNER_REGION);
1✔
82
  DFTRACER_C_REGION_UPDATE_STR(INNER_REGION, "level", "inner");
1✔
83
  sleep_ms(1);
1✔
84
  DFTRACER_C_REGION_END(INNER_REGION);
1✔
85

86
  DFTRACER_C_REGION_END(OUTER_REGION);
1✔
87

88
  DFTRACER_C_FUNCTION_END();
1✔
89
}
1✔
90

91
/* Test C region tracing with typed updates */
92
void test_c_region_tracing_typed() {
1✔
93
  DFTRACER_C_FUNCTION_START();
1✔
94

95
  /* Region with typed updates */
96
  DFTRACER_C_REGION_START(C_REGION_TYPED);
1✔
97
  DFTRACER_C_REGION_UPDATE_INT_TYPE(C_REGION_TYPED, "count", 999, 0);
1✔
98
  DFTRACER_C_REGION_UPDATE_STR_TYPE(C_REGION_TYPED, "type", "typed_region", 0);
1✔
99
  DFTRACER_C_REGION_UPDATE_INT_TYPE(C_REGION_TYPED, "version", 2, 1);
1✔
100
  DFTRACER_C_REGION_UPDATE_STR_TYPE(C_REGION_TYPED, "mode", "advanced", 1);
1✔
101
  sleep_ms(1);
1✔
102
  DFTRACER_C_REGION_END(C_REGION_TYPED);
1✔
103

104
  DFTRACER_C_FUNCTION_END();
1✔
105
}
1✔
106

107
/* Test C metadata */
108
void test_c_metadata() {
1✔
109
  DFTRACER_C_FUNCTION_START();
1✔
110

111
  DFTRACER_C_METADATA(app_meta, "c_app", "api_test");
1✔
112
  DFTRACER_C_METADATA(lang_meta, "language", "C");
1✔
113
  DFTRACER_C_METADATA(version_meta, "version", "1.0");
1✔
114

115
  DFTRACER_C_FUNCTION_END();
1✔
116
}
1✔
117

118
/* Test I/O operations with C API */
119
void test_c_io_operations(const char* data_dir) {
1✔
120
  DFTRACER_C_FUNCTION_START();
1✔
121

122
  char filename[1024];
123
  snprintf(filename, sizeof(filename), "%s/c_api_test.dat", data_dir);
1✔
124

125
  DFTRACER_C_FUNCTION_UPDATE_STR("filename", filename);
1✔
126
  DFTRACER_C_FUNCTION_UPDATE_INT("buffer_size", 128);
1✔
127

128
  /* POSIX file operations */
129
  int fd = open(filename, O_CREAT | O_RDWR, 0644);
1✔
130
  if (fd != -1) {
1!
131
    char buf[128] = "C test data";
1✔
132
    write(fd, buf, strlen(buf));
1✔
133
    lseek(fd, 0, SEEK_SET);
1✔
134
    read(fd, buf, sizeof(buf));
1✔
135
    close(fd);
1✔
136
  }
137

138
  /* Standard C file operations */
139
  FILE* fp = fopen(filename, "r");
1✔
140
  if (fp != NULL) {
1!
141
    char buf[128];
142
    fread(buf, 1, sizeof(buf), fp);
1✔
143
    fclose(fp);
1✔
144
  }
145

146
  /* Cleanup */
147
  unlink(filename);
1✔
148

149
  DFTRACER_C_FUNCTION_END();
1✔
150
}
1✔
151

152
int main(int argc, char* argv[]) {
1✔
153
  if (argc < 2) {
1!
NEW
154
    fprintf(stderr, "Usage: %s <data_dir>\n", argv[0]);
×
NEW
155
    return 1;
×
156
  }
157

158
  /* Initialize DFTracer with main binding */
159
  DFTRACER_C_INIT(NULL, NULL, NULL);
1✔
160

161
  /* Run all test functions - complete C API coverage */
162
  test_c_metadata();
1✔
163
  test_c_function_tracing();
1✔
164
  test_c_function_tracing_typed();
1✔
165
  test_c_region_tracing();
1✔
166
  test_c_region_tracing_typed();
1✔
167
  test_c_io_operations(argv[1]);
1✔
168

169
  /* Finalize */
170
  DFTRACER_C_FINI();
1✔
171

172
  printf("All C API tests completed successfully (16/16 APIs tested)\n");
1✔
173

174
  return 0;
1✔
175
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc