GCC Code Coverage Report


Directory: cvmfs/
File: cvmfs/ingestion/task_write.cc
Date: 2026-10-04 02:40:33
Exec Total Coverage
Lines: 35 39 89.7%
Branches: 21 35 60.0%

Line Branch Exec Source
1 /**
2 * This file is part of the CernVM File System.
3 */
4
5
6 #include "task_write.h"
7
8 #include <cstdlib>
9
10 #include "upload_facility.h"
11 #include "util/exception.h"
12 #include "util/logging.h"
13
14
15 5158155 void TaskWrite::OnBlockComplete(const upload::UploaderResults &results,
16 BlockItem *block_item) {
17
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 5158155 times.
5158155 if (results.return_code != 0) {
18 ✗ PANIC(kLogStderr, "block upload failed (code: %d)", results.return_code);
19 }
20
21
1/2
✓ Branch 0 taken 5158155 times.
✗ Branch 1 not taken.
5158155 delete block_item;
22 5158155 }
23
24
25 3007043 void TaskWrite::OnChunkComplete(const upload::UploaderResults &results,
26 ChunkItem *chunk_item) {
27
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3007043 times.
3007043 if (results.return_code != 0) {
28 ✗ PANIC(kLogStderr, "chunk upload failed (code: %d)", results.return_code);
29 }
30
31 3007043 FileItem *file_item = chunk_item->file_item();
32
1/2
✓ Branch 3 taken 3007043 times.
✗ Branch 4 not taken.
6014086 file_item->RegisterChunk(FileChunk(
33 3007043 *chunk_item->hash_ptr(), chunk_item->offset(), chunk_item->size()));
34
1/2
✓ Branch 0 taken 3007043 times.
✗ Branch 1 not taken.
3007043 delete chunk_item;
35
36
2/2
✓ Branch 1 taken 3001651 times.
✓ Branch 2 taken 5392 times.
3007043 if (file_item->IsProcessed()) {
37 3001651 tubes_out_->DispatchAny(file_item);
38 }
39 3007043 }
40
41
42 8163554 void TaskWrite::Process(BlockItem *input_block) {
43 8163554 ChunkItem *chunk_item = input_block->chunk_item();
44
45 8163098 upload::UploadStreamHandle *handle = chunk_item->upload_handle();
46
2/2
✓ Branch 0 taken 3006419 times.
✓ Branch 1 taken 5156643 times.
8163062 if (handle == NULL) {
47 // The closure passed here, is called by the AbstractUploader as soon as
48 // it successfully committed the complete chunk
49 9018729 handle = uploader_->InitStreamedUpload(
50
2/4
✓ Branch 1 taken 3006179 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3006131 times.
✗ Branch 5 not taken.
3006419 upload::AbstractUploader::MakeClosure(
51 &TaskWrite::OnChunkComplete, this, chunk_item));
52
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3006131 times.
3006131 assert(handle != NULL);
53 3006131 chunk_item->set_upload_handle(handle);
54 }
55
56
2/3
✓ Branch 1 taken 5157135 times.
✓ Branch 2 taken 3006875 times.
✗ Branch 3 not taken.
8162738 switch (input_block->type()) {
57 5157135 case BlockItem::kBlockData:
58
1/2
✓ Branch 2 taken 5158131 times.
✗ Branch 3 not taken.
5157327 uploader_->ScheduleUpload(
59 handle,
60 5157339 upload::AbstractUploader::UploadBuffer(input_block->size(),
61 5157423 input_block->data()),
62
1/2
✓ Branch 1 taken 5157423 times.
✗ Branch 2 not taken.
5157135 upload::AbstractUploader::MakeClosure(
63 &TaskWrite::OnBlockComplete, this, input_block));
64 5158131 break;
65 3006875 case BlockItem::kBlockStop:
66 // If there is a sole piece and a legacy bulk chunk, two times the same
67 // chunk is being uploaded. Well. It doesn't hurt.
68
2/2
✓ Branch 1 taken 16 times.
✓ Branch 2 taken 3006835 times.
3006875 if (chunk_item->IsSolePiece()) {
69
1/2
✓ Branch 1 taken 16 times.
✗ Branch 2 not taken.
16 chunk_item->MakeBulkChunk();
70 }
71
1/2
✓ Branch 2 taken 3007043 times.
✗ Branch 3 not taken.
3006851 uploader_->ScheduleCommit(handle, *chunk_item->hash_ptr());
72
1/2
✓ Branch 0 taken 3007043 times.
✗ Branch 1 not taken.
3007043 delete input_block;
73 3006983 break;
74 ✗ default:
75 ✗ PANIC(NULL);
76 }
77 8165114 }
78