From 31ce147c50e853f63b70048b0bbf71bb8889ca18 Mon Sep 17 00:00:00 2001 From: egor-tensin Date: Mon, 28 Aug 2023 07:43:34 +0000 Subject: =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20egor-tensin/cimp?= =?UTF-8?q?le@efb0a921609cf06080308a6a7c321d451489db8a=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rotocol.c.4964764a2e677a55c2f4207a995c3ce7.html | 1776 ++++++++++++++++++++ 1 file changed, 1776 insertions(+) create mode 100644 coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html (limited to 'coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html') diff --git a/coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html b/coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html new file mode 100644 index 0000000..3c8f928 --- /dev/null +++ b/coverage/index.protocol.c.4964764a2e677a55c2f4207a995c3ce7.html @@ -0,0 +1,1776 @@ + + + + + + GCC Code Coverage Report + + + + + +

GCC Code Coverage Report

+ +
+ +
+
+ + + + + + + + + + + + + +
Directory:src/
File:src/protocol.c
Date:2023-08-28 07:33:56
+
+
+ + + + + + + + + + + + + + + + + + + +
ExecTotalCoverage
Lines:7811468.4%
Branches:224450.0%
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LineBranchExecSource
1 + /*
2 + * Copyright (c) 2023 Egor Tensin <Egor.Tensin@gmail.com>
3 + * This file is part of the "cimple" project.
4 + * For details, see https://github.com/egor-tensin/cimple.
5 + * Distributed under the MIT License.
6 + */
7 +
8 + #include "protocol.h"
9 + #include "base64.h"
10 + #include "compiler.h"
11 + #include "const.h"
12 + #include "json_rpc.h"
13 + #include "process.h"
14 + #include "run_queue.h"
15 +
16 + #include <stddef.h>
17 + #include <stdint.h>
18 + #include <stdlib.h>
19 +
20 + static const char *const run_key_id = "id";
21 + static const char *const run_key_url = "url";
22 + static const char *const run_key_rev = "rev";
23 +
24 + 9180int run_request_create(struct jsonrpc_request **request, const struct run *run)
25 + {
26 + 9180 int ret = 0;
27 +
28 + 9180 ret = jsonrpc_request_create(request, 1, CMD_RUN, NULL);
29 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
30 + return ret;
31 + 9180 ret = jsonrpc_request_set_param_string(*request, run_key_url, run_get_url(run));
32 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
33 + goto free_request;
34 + 9180 ret = jsonrpc_request_set_param_string(*request, run_key_rev, run_get_rev(run));
35 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
36 + goto free_request;
37 +
38 + 9180 return ret;
39 +
40 + free_request:
41 + jsonrpc_request_destroy(*request);
42 +
43 + return ret;
44 + }
45 +
46 + 9180int run_request_parse(const struct jsonrpc_request *request, struct run **run)
47 + {
48 + 9180 int ret = 0;
49 +
50 + 9180 const char *url = NULL;
51 + 9180 ret = jsonrpc_request_get_param_string(request, run_key_url, &url);
52 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
53 + return ret;
54 + 9180 const char *rev = NULL;
55 + 9180 ret = jsonrpc_request_get_param_string(request, run_key_rev, &rev);
56 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
57 + return ret;
58 +
59 + 9180 return run_create(run, 0, url, rev);
60 + }
61 +
62 + 9234int new_worker_request_create(struct jsonrpc_request **request)
63 + {
64 + 9234 return jsonrpc_notification_create(request, CMD_NEW_WORKER, NULL);
65 + }
66 +
67 + int new_worker_request_parse(UNUSED const struct jsonrpc_request *request)
68 + {
69 + return 0;
70 + }
71 +
72 + 9180int start_request_create(struct jsonrpc_request **request, const struct run *run)
73 + {
74 + 9180 int ret = 0;
75 +
76 + 9180 ret = jsonrpc_notification_create(request, CMD_START, NULL);
77 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
78 + return ret;
79 + 9180 ret = jsonrpc_request_set_param_int(*request, run_key_id, run_get_id(run));
80 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
81 + goto free_request;
82 + 9180 ret = jsonrpc_request_set_param_string(*request, run_key_url, run_get_url(run));
83 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
84 + goto free_request;
85 + 9180 ret = jsonrpc_request_set_param_string(*request, run_key_rev, run_get_rev(run));
86 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
87 + goto free_request;
88 +
89 + 9180 return ret;
90 +
91 + free_request:
92 + jsonrpc_request_destroy(*request);
93 +
94 + return ret;
95 + }
96 +
97 + 9180int start_request_parse(const struct jsonrpc_request *request, struct run **run)
98 + {
99 + 9180 int ret = 0;
100 +
101 + 9180 int64_t id = 0;
102 + 9180 ret = jsonrpc_request_get_param_int(request, run_key_id, &id);
103 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
104 + return ret;
105 + 9180 const char *url = NULL;
106 + 9180 ret = jsonrpc_request_get_param_string(request, run_key_url, &url);
107 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
108 + return ret;
109 + 9180 const char *rev = NULL;
110 + 9180 ret = jsonrpc_request_get_param_string(request, run_key_rev, &rev);
111 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
112 + return ret;
113 +
114 + 9180 return run_create(run, (int)id, url, rev);
115 + }
116 +
117 + static const char *const finished_key_run_id = "run_id";
118 + static const char *const finished_key_ec = "exit_code";
119 + static const char *const finished_key_data = "output";
120 +
121 + 9180int finished_request_create(struct jsonrpc_request **request, int run_id,
122 + const struct proc_output *output)
123 + {
124 + 9180 int ret = 0;
125 +
126 + 9180 ret = jsonrpc_notification_create(request, CMD_FINISHED, NULL);
127 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
128 + return ret;
129 + 9180 ret = jsonrpc_request_set_param_int(*request, finished_key_run_id, run_id);
130 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
131 + goto free_request;
132 + 9180 ret = jsonrpc_request_set_param_int(*request, finished_key_ec, output->ec);
133 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
134 + goto free_request;
135 +
136 + 9180 char *b64data = NULL;
137 + 9180 ret = base64_encode(output->data, output->data_size, &b64data);
138 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
139 + goto free_request;
140 +
141 + 9180 ret = jsonrpc_request_set_param_string(*request, finished_key_data, b64data);
142 + 9180 free(b64data);
143 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
144 + goto free_request;
145 +
146 + 9180 return ret;
147 +
148 + free_request:
149 + jsonrpc_request_destroy(*request);
150 +
151 + return ret;
152 + }
153 +
154 + 9180int finished_request_parse(const struct jsonrpc_request *request, int *_run_id,
155 + struct proc_output **_output)
156 + {
157 + 9180 int ret = 0;
158 +
159 + 9180 struct proc_output *output = NULL;
160 + 9180 ret = proc_output_create(&output);
161 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
162 + return ret;
163 +
164 + 9180 int64_t run_id = 0;
165 + 9180 ret = jsonrpc_request_get_param_int(request, finished_key_run_id, &run_id);
166 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
167 + goto free_output;
168 +
169 + 9180 int64_t ec = -1;
170 + 9180 ret = jsonrpc_request_get_param_int(request, finished_key_ec, &ec);
171 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
172 + goto free_output;
173 + 9180 output->ec = (int)ec;
174 +
175 + 9180 const char *b64data = NULL;
176 + 9180 ret = jsonrpc_request_get_param_string(request, finished_key_data, &b64data);
177 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
178 + goto free_output;
179 +
180 + 9180 ret = base64_decode(b64data, &output->data, &output->data_size);
181 +
+ 1/2 +
+
✗ Branch 0 not taken.
+
✓ Branch 1 taken 9180 times.
+
+
+
9180 if (ret < 0)
182 + goto free_output;
183 +
184 + 9180 *_run_id = (int)run_id;
185 + 9180 *_output = output;
186 + 9180 return ret;
187 +
188 + free_output:
189 + proc_output_destroy(output);
190 +
191 + return ret;
192 + }
193 +
+
+ +
+ + + + -- cgit v1.2.3