@@ -30,15 +30,69 @@ namespace api_manager {
30
30
31
31
namespace {
32
32
33
- const char kServerConfigWithServiceNameConfigId [] = R"(
33
+ const char kServerConfigWithSingleServiceConfig [] = R"(
34
34
{
35
35
"google_authentication_secret": "{}",
36
36
"metadata_server_config": {
37
37
"enabled": true,
38
38
"url": "http://localhost"
39
39
},
40
- "service_name": "bookstore.test.appspot.com",
41
- "config_id": "2017-05-01r0"
40
+ "init_service_configs": [
41
+ {
42
+ "service_config_file_full_path": "contrib/endpoints/src/api_manager/testdata/bookstore_service_config_1.json",
43
+ "traffic_percentage": 100
44
+ }
45
+ ]
46
+ }
47
+ )" ;
48
+
49
+ const char kServerConfigWithPartialServiceConfig [] = R"(
50
+ {
51
+ "google_authentication_secret": "{}",
52
+ "metadata_server_config": {
53
+ "enabled": true,
54
+ "url": "http://localhost"
55
+ },
56
+ "init_service_configs": [
57
+ {
58
+ "service_config_file_full_path": "contrib/endpoints/src/api_manager/testdata/bookstore_service_config_1.json",
59
+ "traffic_percentage": 80
60
+ },
61
+ {
62
+ "service_config_file_full_path": "contrib/endpoints/src/api_manager/testdata/bookstore_service_config_2.json",
63
+ "traffic_percentage": 20
64
+ }
65
+ ]
66
+ }
67
+ )" ;
68
+
69
+ const char kServerConfigWithPartialServiceConfigFailed [] = R"(
70
+ {
71
+ "google_authentication_secret": "{}",
72
+ "metadata_server_config": {
73
+ "enabled": true,
74
+ "url": "http://localhost"
75
+ },
76
+ "init_service_configs": [
77
+ {
78
+ "service_config_file_full_path": "contrib/endpoints/src/api_manager/testdata/bookstore_service_config_1.json",
79
+ "traffic_percentage": 80
80
+ },
81
+ {
82
+ "service_config_file_full_path": "not_found.json",
83
+ "traffic_percentage": 20
84
+ }
85
+ ]
86
+ }
87
+ )" ;
88
+
89
+ const char kServerConfigWithNoServiceConfig [] = R"(
90
+ {
91
+ "google_authentication_secret": "{}",
92
+ "metadata_server_config": {
93
+ "enabled": true,
94
+ "url": "http://localhost"
95
+ }
42
96
}
43
97
)" ;
44
98
@@ -69,17 +123,6 @@ const char kServiceConfig1[] = R"(
69
123
}
70
124
)" ;
71
125
72
- const char kServiceConfig2 [] = R"(
73
- {
74
- "name": "different.test.appspot.com",
75
- "title": "Bookstore",
76
- "control": {
77
- "environment": "servicecontrol.googleapis.com"
78
- },
79
- "id": "2017-05-01r0"
80
- }
81
- )" ;
82
-
83
126
const char kServiceForStatistics [] =
84
127
" name: \" service-name\"\n "
85
128
" control: {\n "
@@ -168,10 +211,10 @@ TEST_F(ApiManagerTest, InitializedOnApiManagerInstanceCreation) {
168
211
std::shared_ptr<ApiManagerImpl> api_manager (
169
212
std::dynamic_pointer_cast<ApiManagerImpl>(
170
213
MakeApiManager (std::move (env), kServiceConfig1 ,
171
- kServerConfigWithServiceNameConfigId )));
214
+ kServerConfigWithSingleServiceConfig )));
172
215
173
216
EXPECT_TRUE (api_manager);
174
- EXPECT_EQ ( " OK " , api_manager->ConfigLoadingStatus (). ToString ());
217
+ EXPECT_TRUE ( api_manager->Enabled ());
175
218
176
219
auto service = api_manager->SelectService ();
177
220
EXPECT_TRUE (service);
@@ -180,7 +223,6 @@ TEST_F(ApiManagerTest, InitializedOnApiManagerInstanceCreation) {
180
223
181
224
api_manager->Init ();
182
225
183
- EXPECT_EQ (" OK" , api_manager->ConfigLoadingStatus ().ToString ());
184
226
EXPECT_TRUE (api_manager->Enabled ());
185
227
EXPECT_EQ (" 2017-05-01r0" , api_manager->service (" 2017-05-01r0" ).id ());
186
228
@@ -190,6 +232,94 @@ TEST_F(ApiManagerTest, InitializedOnApiManagerInstanceCreation) {
190
232
EXPECT_EQ (" 2017-05-01r0" , service->service ().id ());
191
233
}
192
234
235
+ TEST_F (ApiManagerTest, InitializedByConfigManager) {
236
+ std::unique_ptr<MockApiManagerEnvironment> env (
237
+ new ::testing::NiceMock<MockApiManagerEnvironment>());
238
+
239
+ std::shared_ptr<ApiManagerImpl> api_manager (
240
+ std::dynamic_pointer_cast<ApiManagerImpl>(MakeApiManager (
241
+ std::move (env), " " , kServerConfigWithSingleServiceConfig )));
242
+
243
+ EXPECT_TRUE (api_manager);
244
+ EXPECT_TRUE (api_manager->Enabled ());
245
+ EXPECT_EQ (" bookstore.test.appspot.com" , api_manager->service_name ());
246
+ EXPECT_EQ (" 2017-05-01r0" , api_manager->service (" 2017-05-01r0" ).id ());
247
+
248
+ api_manager->Init ();
249
+
250
+ EXPECT_TRUE (api_manager->Enabled ());
251
+ EXPECT_EQ (" 2017-05-01r0" , api_manager->service (" 2017-05-01r0" ).id ());
252
+
253
+ auto service = api_manager->SelectService ();
254
+ EXPECT_TRUE (service);
255
+ EXPECT_EQ (" bookstore.test.appspot.com" , service->service_name ());
256
+ EXPECT_EQ (" 2017-05-01r0" , service->service ().id ());
257
+ }
258
+
259
+ TEST_F (ApiManagerTest, kServerConfigWithPartialServiceConfig ) {
260
+ std::unique_ptr<MockApiManagerEnvironment> env (
261
+ new ::testing::NiceMock<MockApiManagerEnvironment>());
262
+
263
+ std::shared_ptr<ApiManagerImpl> api_manager (
264
+ std::dynamic_pointer_cast<ApiManagerImpl>(MakeApiManager (
265
+ std::move (env), " " , kServerConfigWithPartialServiceConfig )));
266
+
267
+ EXPECT_TRUE (api_manager);
268
+ EXPECT_TRUE (api_manager->Enabled ());
269
+ EXPECT_EQ (" bookstore.test.appspot.com" , api_manager->service_name ());
270
+ EXPECT_EQ (" 2017-05-01r0" , api_manager->service (" 2017-05-01r0" ).id ());
271
+ EXPECT_EQ (" 2017-05-01r1" , api_manager->service (" 2017-05-01r1" ).id ());
272
+
273
+ api_manager->Init ();
274
+
275
+ EXPECT_TRUE (api_manager->Enabled ());
276
+ EXPECT_EQ (" 2017-05-01r0" , api_manager->service (" 2017-05-01r0" ).id ());
277
+ EXPECT_EQ (" 2017-05-01r1" , api_manager->service (" 2017-05-01r1" ).id ());
278
+
279
+ std::unordered_map<std::string, int > counter = {{" 2017-05-01r0" , 0 },
280
+ {" 2017-05-01r1" , 0 }};
281
+ for (int i = 0 ; i < 100 ; i++) {
282
+ auto service = api_manager->SelectService ();
283
+ EXPECT_TRUE (service);
284
+ EXPECT_EQ (" bookstore.test.appspot.com" , service->service_name ());
285
+ counter[service->service ().id ()]++;
286
+ }
287
+ EXPECT_EQ (80 , counter[" 2017-05-01r0" ]);
288
+ EXPECT_EQ (20 , counter[" 2017-05-01r1" ]);
289
+ }
290
+
291
+ TEST_F (ApiManagerTest, kServerConfigWithInvaludServiceConfig ) {
292
+ std::unique_ptr<MockApiManagerEnvironment> env (
293
+ new ::testing::NiceMock<MockApiManagerEnvironment>());
294
+
295
+ std::shared_ptr<ApiManagerImpl> api_manager (
296
+ std::dynamic_pointer_cast<ApiManagerImpl>(MakeApiManager (
297
+ std::move (env), " " , kServerConfigWithPartialServiceConfigFailed )));
298
+
299
+ EXPECT_TRUE (api_manager);
300
+ EXPECT_FALSE (api_manager->Enabled ());
301
+
302
+ api_manager->Init ();
303
+
304
+ EXPECT_FALSE (api_manager->Enabled ());
305
+ }
306
+
307
+ TEST_F (ApiManagerTest, kServerConfigServiceConfigNotSpecifed ) {
308
+ std::unique_ptr<MockApiManagerEnvironment> env (
309
+ new ::testing::NiceMock<MockApiManagerEnvironment>());
310
+
311
+ std::shared_ptr<ApiManagerImpl> api_manager (
312
+ std::dynamic_pointer_cast<ApiManagerImpl>(MakeApiManager (
313
+ std::move (env), " " , kServerConfigWithNoServiceConfig )));
314
+
315
+ EXPECT_TRUE (api_manager);
316
+ EXPECT_FALSE (api_manager->Enabled ());
317
+
318
+ api_manager->Init ();
319
+
320
+ EXPECT_FALSE (api_manager->Enabled ());
321
+ }
322
+
193
323
} // namespace
194
324
195
325
} // namespace api_manager
0 commit comments