@@ -68,6 +68,7 @@ class MixerClientImplTest : public ::testing::Test {
68
68
Attributes request_;
69
69
std::unique_ptr<MixerClient> client_;
70
70
MockCheckTransport mock_check_transport_;
71
+ TransportCheckFunc empty_transport_;
71
72
};
72
73
73
74
TEST_F (MixerClientImplTest, TestSuccessCheck) {
@@ -81,14 +82,43 @@ TEST_F(MixerClientImplTest, TestSuccessCheck) {
81
82
// Remove quota, not to test quota
82
83
request_.attributes .erase (Attributes::kQuotaName );
83
84
Status done_status = Status::UNKNOWN;
84
- client_->Check (request_,
85
+ client_->Check (request_, empty_transport_,
85
86
[&done_status](Status status) { done_status = status; });
86
87
EXPECT_TRUE (done_status.ok ());
87
88
88
89
for (int i = 0 ; i < 10 ; i++) {
89
90
// Other calls should ba cached.
90
91
Status done_status1 = Status::UNKNOWN;
91
- client_->Check (request_,
92
+ client_->Check (request_, empty_transport_,
93
+ [&done_status1](Status status) { done_status1 = status; });
94
+ EXPECT_TRUE (done_status1.ok ());
95
+ }
96
+ }
97
+
98
+ TEST_F (MixerClientImplTest, TestPerRequestTransport) {
99
+ // Global transport should not be called.
100
+ EXPECT_CALL (mock_check_transport_, Check (_, _, _)).Times (0 );
101
+
102
+ // For local pre-request transport.
103
+ MockCheckTransport local_check_transport;
104
+ EXPECT_CALL (local_check_transport, Check (_, _, _))
105
+ .WillOnce (Invoke ([](const CheckRequest& request, CheckResponse* response,
106
+ DoneFunc on_done) {
107
+ response->mutable_precondition ()->set_valid_use_count (1000 );
108
+ on_done (Status::OK);
109
+ }));
110
+
111
+ // Remove quota, not to test quota
112
+ request_.attributes .erase (Attributes::kQuotaName );
113
+ Status done_status = Status::UNKNOWN;
114
+ client_->Check (request_, local_check_transport.GetFunc (),
115
+ [&done_status](Status status) { done_status = status; });
116
+ EXPECT_TRUE (done_status.ok ());
117
+
118
+ for (int i = 0 ; i < 10 ; i++) {
119
+ // Other calls should ba cached.
120
+ Status done_status1 = Status::UNKNOWN;
121
+ client_->Check (request_, local_check_transport.GetFunc (),
92
122
[&done_status1](Status status) { done_status1 = status; });
93
123
EXPECT_TRUE (done_status1.ok ());
94
124
}
@@ -111,14 +141,14 @@ TEST_F(MixerClientImplTest, TestNoCheckCache) {
111
141
}));
112
142
113
143
Status done_status = Status::UNKNOWN;
114
- client_->Check (request_,
144
+ client_->Check (request_, empty_transport_,
115
145
[&done_status](Status status) { done_status = status; });
116
146
EXPECT_TRUE (done_status.ok ());
117
147
118
148
for (int i = 0 ; i < 10 ; i++) {
119
149
// Other calls should ba cached.
120
150
Status done_status1 = Status::UNKNOWN;
121
- client_->Check (request_,
151
+ client_->Check (request_, empty_transport_,
122
152
[&done_status1](Status status) { done_status1 = status; });
123
153
EXPECT_TRUE (done_status1.ok ());
124
154
}
@@ -143,14 +173,14 @@ TEST_F(MixerClientImplTest, TestNoQuotaCache) {
143
173
}));
144
174
145
175
Status done_status = Status::UNKNOWN;
146
- client_->Check (request_,
176
+ client_->Check (request_, empty_transport_,
147
177
[&done_status](Status status) { done_status = status; });
148
178
EXPECT_TRUE (done_status.ok ());
149
179
150
180
for (int i = 0 ; i < 10 ; i++) {
151
181
// Other calls should ba cached.
152
182
Status done_status1 = Status::UNKNOWN;
153
- client_->Check (request_,
183
+ client_->Check (request_, empty_transport_,
154
184
[&done_status1](Status status) { done_status1 = status; });
155
185
EXPECT_TRUE (done_status1.ok ());
156
186
}
@@ -173,14 +203,14 @@ TEST_F(MixerClientImplTest, TestSuccessCheckAndQuota) {
173
203
}));
174
204
175
205
Status done_status = Status::UNKNOWN;
176
- client_->Check (request_,
206
+ client_->Check (request_, empty_transport_,
177
207
[&done_status](Status status) { done_status = status; });
178
208
EXPECT_TRUE (done_status.ok ());
179
209
180
210
for (int i = 0 ; i < 10 ; i++) {
181
211
// Other calls should ba cached.
182
212
Status done_status1 = Status::UNKNOWN;
183
- client_->Check (request_,
213
+ client_->Check (request_, empty_transport_,
184
214
[&done_status1](Status status) { done_status1 = status; });
185
215
EXPECT_TRUE (done_status1.ok ());
186
216
}
@@ -203,14 +233,14 @@ TEST_F(MixerClientImplTest, TestFailedCheckAndQuota) {
203
233
}));
204
234
205
235
Status done_status = Status::UNKNOWN;
206
- client_->Check (request_,
236
+ client_->Check (request_, empty_transport_,
207
237
[&done_status](Status status) { done_status = status; });
208
238
EXPECT_ERROR_CODE (Code::FAILED_PRECONDITION, done_status);
209
239
210
240
for (int i = 0 ; i < 10 ; i++) {
211
241
// Other calls should ba cached.
212
242
Status done_status1 = Status::UNKNOWN;
213
- client_->Check (request_,
243
+ client_->Check (request_, empty_transport_,
214
244
[&done_status1](Status status) { done_status1 = status; });
215
245
EXPECT_ERROR_CODE (Code::FAILED_PRECONDITION, done_status1);
216
246
}
0 commit comments