GCC Code Coverage Report


Directory: cvmfs/
File: cvmfs/swissknife_lease_json.cc
Date: 2024-04-28 02:33:07
Exec Total Coverage
Lines: 51 53 96.2%
Branches: 63 106 59.4%

Line Branch Exec Source
1 /**
2 * This file is part of the CernVM File System.
3 */
4
5 #include "swissknife_lease_json.h"
6
7 #include "json.h"
8 #include "json_document.h"
9 #include "util/pointer.h"
10
11 #include "util/logging.h"
12
13 6 LeaseReply ParseAcquireReply(const CurlBuffer &buffer,
14 std::string *session_token) {
15
5/6
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 4 times.
6 if (buffer.data.size() == 0 || session_token == NULL) {
16 2 return kLeaseReplyFailure;
17 }
18
19
2/4
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 const UniquePtr<JsonDocument> reply(JsonDocument::Create(buffer.data));
20
5/6
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 3 times.
4 if (!reply.IsValid() || !reply->IsValid()) {
21 1 return kLeaseReplyFailure;
22 }
23
24 const JSON *result =
25
2/4
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
3 JsonDocument::SearchInObject(reply->root(), "status", JSON_STRING);
26
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 if (result != NULL) {
27
1/2
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 const std::string status = result->string_value;
28
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 2 times.
3 if (status == "ok") {
29
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 LogCvmfs(kLogCvmfs, kLogStdout, "Gateway reply: ok");
30
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
1 const JSON *token = JsonDocument::SearchInObject(
31 reply->root(), "session_token", JSON_STRING);
32
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (token != NULL) {
33 1 LogCvmfs(kLogCvmfs, kLogDebug, "Session token: %s",
34
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 token->string_value);
35
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 *session_token = token->string_value;
36 1 return kLeaseReplySuccess;
37 }
38
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
2 } else if (status == "path_busy") {
39
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
1 const JSON *time_remaining = JsonDocument::SearchInObject(
40 reply->root(), "time_remaining", JSON_INT);
41
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (time_remaining != NULL) {
42
0/2
✗ Branch 1 not taken.
✗ Branch 2 not taken.
1 LogCvmfs(kLogCvmfs, kLogStdout, "Path busy. Time remaining = %d s",
43
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 time_remaining->int_value);
44 1 return kLeaseReplyBusy;
45 }
46
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 } else if (status == "error") {
47 const JSON *reason =
48
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
1 JsonDocument::SearchInObject(reply->root(), "reason", JSON_STRING);
49
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (reason != NULL) {
50
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 LogCvmfs(kLogCvmfs, kLogStdout, "Error: %s", reason->string_value);
51 }
52 } else {
53 LogCvmfs(kLogCvmfs, kLogStdout, "Unknown reply. Status: %s",
54 status.c_str());
55 }
56
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 2 times.
3 }
57
58 1 return kLeaseReplyFailure;
59 4 }
60
61 5 LeaseReply ParseDropReply(const CurlBuffer &buffer) {
62
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 4 times.
5 if (buffer.data.size() == 0) {
63 1 return kLeaseReplyFailure;
64 }
65
66
2/4
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
4 const UniquePtr<const JsonDocument> reply(JsonDocument::Create(buffer.data));
67
5/6
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 3 times.
4 if (!reply.IsValid() || !reply->IsValid()) {
68 1 return kLeaseReplyFailure;
69 }
70
71 const JSON *result =
72
2/4
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
3 JsonDocument::SearchInObject(reply->root(), "status", JSON_STRING);
73
1/2
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
3 if (result != NULL) {
74
1/2
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 const std::string status = result->string_value;
75
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 2 times.
3 if (status == "ok") {
76
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 LogCvmfs(kLogCvmfs, kLogStdout, "Gateway reply: ok");
77 1 return kLeaseReplySuccess;
78
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
2 } else if (status == "invalid_token") {
79
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 LogCvmfs(kLogCvmfs, kLogStdout, "Error: invalid session token");
80
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 } else if (status == "error") {
81 const JSON *reason =
82
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
1 JsonDocument::SearchInObject(reply->root(), "reason", JSON_STRING);
83
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (reason != NULL) {
84
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
1 LogCvmfs(kLogCvmfs, kLogStdout, "Error: %s", reason->string_value);
85 }
86 } else {
87 LogCvmfs(kLogCvmfs, kLogStdout, "Unknown reply. Status: %s",
88 status.c_str());
89 }
90
2/2
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
3 }
91
92 2 return kLeaseReplyFailure;
93 4 }
94