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

paticcaa / pain / 17488410533

05 Sep 2025 08:47AM UTC coverage: 53.819% (-0.8%) from 54.596%
17488410533

push

github

ivanallen
register manusya to deva

Signed-off-by: allen <1007729991@qq.com>

1637 of 4154 branches covered (39.41%)

Branch coverage included in aggregate %.

108 of 140 new or added lines in 4 files covered. (77.14%)

2 existing lines in 1 file now uncovered.

1865 of 2353 relevant lines covered (79.26%)

401.18 hits per line

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

47.81
/src/deva/deva_service_impl.cc
1
#include "deva/deva_service_impl.h"
2
#include <brpc/closure_guard.h>
3

4
#include <pain/base/uuid.h>
5
#include "pain/proto/deva_store.pb.h"
6
#include "deva/bridge.h"
7
#include "deva/deva.h"
8
#include "deva/macro.h"
9

10
#define DEVA_SERVICE_METHOD(name)                                                                                      \
11
    void DevaServiceImpl::name(::google::protobuf::RpcController* controller,                                          \
12
                               [[maybe_unused]] const pain::proto::deva::name##Request* request,                       \
13
                               [[maybe_unused]] pain::proto::deva::name##Response* response,                           \
14
                               ::google::protobuf::Closure* done)
15

16
namespace pain::deva {
17

18
DevaServiceImpl::DevaServiceImpl(RsmPtr rsm) : _rsm(rsm) {}
23✔
19

20
DEVA_SERVICE_METHOD(OpenFile) {
14✔
21
    brpc::ClosureGuard done_guard(done);
14✔
22
    DEFINE_SPAN(span, controller);
42!
23
    PLOG_DEBUG(("desc", "OpenFile")("request", request->DebugString()));
14✔
24
    auto& path = request->path();
14!
25
    auto flags = request->flags();
14!
26

27
    if ((flags & pain::proto::deva::OpenFlag::OPEN_CREATE) != 0) {
14✔
28
        pain::proto::deva::store::CreateFileRequest create_request;
13!
29
        pain::proto::deva::store::CreateFileResponse create_response;
13!
30
        auto file_id = UUID::generate();
13!
31
        create_request.set_path(path);
32
        create_request.mutable_file_id()->set_high(file_id.high());
13!
33
        create_request.mutable_file_id()->set_low(file_id.low());
13!
34
        create_request.set_mode(0666); // NOLINT
13!
35
        create_request.set_uid(0);
13!
36
        create_request.set_gid(0);
13!
37
        create_request.set_atime(butil::gettimeofday_us());
13!
38
        create_request.set_mtime(butil::gettimeofday_us());
13!
39
        create_request.set_ctime(butil::gettimeofday_us());
13!
40
        auto status = bridge<Deva, OpType::kCreateFile>(1, _rsm, create_request, &create_response).get();
13!
41
        if (!status.ok()) {
13!
42
            PLOG_ERROR(("desc", "failed to create file")("error", status.error_str()));
×
43
            response->mutable_header()->set_status(status.error_code());
×
44
            response->mutable_header()->set_message(status.error_str());
×
45
            return;
×
46
        }
47
        response->mutable_file_info()->Swap(create_response.mutable_file_info());
13!
48
        response->mutable_header()->set_status(0);
13!
49
        response->mutable_header()->set_message("ok");
13!
50
    } else {
13!
51
        // readdir
52
        // get file info
53
        pain::proto::deva::store::GetFileInfoRequest get_file_info_request;
1!
54
        pain::proto::deva::store::GetFileInfoResponse get_file_info_response;
1!
55
        get_file_info_request.set_path(path);
56
        auto status = bridge<Deva, OpType::kGetFileInfo>(1, _rsm, get_file_info_request, &get_file_info_response).get();
1!
57
        if (!status.ok()) {
1!
NEW
58
            PLOG_ERROR(("desc", "failed to get file info")("error", status.error_str()));
×
59
        }
60
        response->mutable_file_info()->Swap(get_file_info_response.mutable_file_info());
1!
61
        response->mutable_header()->set_status(0);
1!
62
        response->mutable_header()->set_message("ok");
1!
63
    }
1✔
64

65
    response->mutable_header()->set_status(0);
14!
66
    response->mutable_header()->set_message("ok");
14!
67
}
14!
68

69
DEVA_SERVICE_METHOD(CloseFile) {
×
70
    brpc::ClosureGuard done_guard(done);
×
71
    DEFINE_SPAN(span, controller);
×
72
}
×
73

74
DEVA_SERVICE_METHOD(RemoveFile) {
×
75
    brpc::ClosureGuard done_guard(done);
×
76
    DEFINE_SPAN(span, controller);
×
77
}
×
78

79
DEVA_SERVICE_METHOD(Mkdir) {
13✔
80
    brpc::ClosureGuard done_guard(done);
13✔
81
    DEFINE_SPAN(span, controller);
39!
82
    auto& path = request->path();
13!
83
    pain::proto::deva::store::CreateDirRequest create_request;
13!
84
    pain::proto::deva::store::CreateDirResponse create_response;
13!
85
    auto dir_id = UUID::generate();
13!
86
    create_request.set_path(path);
87
    create_request.mutable_dir_id()->set_high(dir_id.high());
13!
88
    create_request.mutable_dir_id()->set_low(dir_id.low());
13!
89
    create_request.set_mode(0777); // NOLINT
13!
90
    create_request.set_uid(0);
13!
91
    create_request.set_gid(0);
13!
92
    create_request.set_atime(butil::gettimeofday_us());
13!
93
    create_request.set_mtime(butil::gettimeofday_us());
13!
94
    create_request.set_ctime(butil::gettimeofday_us());
13!
95
    auto status = bridge<Deva, OpType::kCreateDir>(1, _rsm, create_request, &create_response).get();
13!
96
    if (!status.ok()) {
13!
97
        PLOG_ERROR(("desc", "failed to create file")("error", status.error_str()));
×
98
        response->mutable_header()->set_status(status.error_code());
×
99
        response->mutable_header()->set_message(status.error_str());
×
100
        return;
×
101
    }
102
    response->mutable_file_info()->Swap(create_response.mutable_file_info());
13!
103
    response->mutable_header()->set_status(0);
13!
104
    response->mutable_header()->set_message("ok");
13!
105
}
13!
106

107
DEVA_SERVICE_METHOD(ReadDir) {
2✔
108
    brpc::ClosureGuard done_guard(done);
2✔
109
    DEFINE_SPAN(span, controller);
6!
110
    auto& path = request->path();
2!
111
    pain::proto::deva::store::ReadDirRequest read_dir_request;
2!
112
    pain::proto::deva::store::ReadDirResponse read_dir_response;
2!
113
    read_dir_request.set_path(path);
114
    auto status = bridge<Deva, OpType::kReadDir>(1, _rsm, read_dir_request, &read_dir_response).get();
2!
115
    if (!status.ok()) {
2!
116
        PLOG_ERROR(("desc", "failed to read dir")("error", status.error_str()));
×
117
        response->mutable_header()->set_status(status.error_code());
×
118
        response->mutable_header()->set_message(status.error_str());
×
119
        return;
×
120
    }
121
    response->mutable_entries()->Swap(read_dir_response.mutable_entries());
2!
122
    response->mutable_header()->set_status(0);
2!
123
    response->mutable_header()->set_message("ok");
2!
124
}
2!
125

126
DEVA_SERVICE_METHOD(SealFile) {
×
127
    brpc::ClosureGuard done_guard(done);
×
128
    DEFINE_SPAN(span, controller);
×
129
}
×
130

131
DEVA_SERVICE_METHOD(NewChunk) {
×
132
    brpc::ClosureGuard done_guard(done);
×
133
    DEFINE_SPAN(span, controller);
×
134
}
×
135

136
DEVA_SERVICE_METHOD(CheckInChunk) {
×
137
    brpc::ClosureGuard done_guard(done);
×
138
    DEFINE_SPAN(span, controller);
×
139
}
×
140

141
DEVA_SERVICE_METHOD(SealChunk) {
×
142
    brpc::ClosureGuard done_guard(done);
×
143
    DEFINE_SPAN(span, controller);
×
144
}
×
145

146
DEVA_SERVICE_METHOD(SealAndNewChunk) {
×
147
    brpc::ClosureGuard done_guard(done);
×
148
    DEFINE_SPAN(span, controller);
×
149
}
×
150

151
DEVA_SERVICE_METHOD(ManusyaHeartbeat) {
1✔
152
    brpc::ClosureGuard done_guard(done);
1✔
153
    DEFINE_SPAN(span, controller);
3!
154
    auto& manusya_registration = request->manusya_registration();
1!
155
    pain::proto::deva::store::ManusyaHeartbeatRequest manusya_heartbeat_request;
1!
156
    pain::proto::deva::store::ManusyaHeartbeatResponse manusya_heartbeat_response;
1!
157

158
    manusya_heartbeat_request.mutable_manusya_registration()->CopyFrom(manusya_registration);
1!
159

160
    auto status =
1✔
161
        bridge<Deva, OpType::kManusyaHeartbeat>(1, _rsm, manusya_heartbeat_request, &manusya_heartbeat_response).get();
1!
162
    if (!status.ok()) {
1!
NEW
163
        PLOG_ERROR(("desc", "failed to handle manusya heartbeat")("error", status.error_str()));
×
NEW
164
        response->mutable_header()->set_status(status.error_code());
×
NEW
165
        response->mutable_header()->set_message(status.error_str());
×
NEW
166
        return;
×
167
    }
168
    response->mutable_header()->set_status(0);
1!
169
    response->mutable_header()->set_message("ok");
1!
170
}
1!
171

172
DEVA_SERVICE_METHOD(ListManusya) {
2✔
173
    brpc::ClosureGuard done_guard(done);
2✔
174
    DEFINE_SPAN(span, controller);
6!
175
    pain::proto::deva::store::ListManusyaRequest list_manusya_request;
2!
176
    pain::proto::deva::store::ListManusyaResponse list_manusya_response;
2!
177
    auto status = bridge<Deva, OpType::kListManusya>(1, _rsm, list_manusya_request, &list_manusya_response).get();
2!
178
    if (!status.ok()) {
2!
NEW
179
        PLOG_ERROR(("desc", "failed to list manusya")("error", status.error_str()));
×
NEW
180
        response->mutable_header()->set_status(status.error_code());
×
NEW
181
        response->mutable_header()->set_message(status.error_str());
×
NEW
182
        return;
×
183
    }
184
    response->mutable_manusya_descriptors()->Swap(list_manusya_response.mutable_manusya_descriptors());
2!
185
    response->mutable_header()->set_status(0);
2!
186
    response->mutable_header()->set_message("ok");
2!
187
}
2!
188

189
} // namespace pain::deva
190

191
#undef DEVA_SERVICE_METHOD
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