@@ -2056,19 +2056,15 @@ class HAServiceTest : public HATest {
2056
2056
// / up the status codes to be returned by the servers, verifying a response and
2057
2057
// / leases in the lease database.
2058
2058
// /
2059
+ // / @param config_storage test HA configuration.
2059
2060
// / @param [out] rsp pointer to the object where response will be stored.
2060
- void runProcessSynchronize4 (ConstElementPtr& rsp) {
2061
+ void runProcessSynchronize4 (HAConfigPtr config_storage, ConstElementPtr& rsp) {
2061
2062
// Create lease manager.
2062
2063
ASSERT_NO_THROW (LeaseMgrFactory::create (" universe=4 type=memfile persist=false" ));
2063
2064
2064
2065
// Create IPv4 leases which will be fetched from the other server.
2065
2066
ASSERT_NO_THROW (generateTestLeases4 ());
2066
2067
2067
- // Create HA configuration for 3 servers. This server is
2068
- // server 1.
2069
- HAConfigPtr config_storage = createValidConfiguration ();
2070
- setBasicAuth (config_storage);
2071
-
2072
2068
// Leases are fetched in pages, so the lease4-get-page should be
2073
2069
// sent multiple times. The server is configured to return leases
2074
2070
// in 3-element chunks.
@@ -2108,19 +2104,15 @@ class HAServiceTest : public HATest {
2108
2104
// / up the status codes to be returned by the servers, verifying a response and
2109
2105
// / leases in the lease database.
2110
2106
// /
2107
+ // / @param config_storage test HA configuration.
2111
2108
// / @param [out] rsp pointer to the object where response will be stored.
2112
- void runProcessSynchronize6 (ConstElementPtr& rsp) {
2109
+ void runProcessSynchronize6 (HAConfigPtr config_storage, ConstElementPtr& rsp) {
2113
2110
// Create lease manager.
2114
2111
ASSERT_NO_THROW (LeaseMgrFactory::create (" universe=6 type=memfile persist=false" ));
2115
2112
2116
2113
// Create IPv4 leases which will be fetched from the other server.
2117
2114
ASSERT_NO_THROW (generateTestLeases6 ());
2118
2115
2119
- // Create HA configuration for 3 servers. This server is
2120
- // server 1.
2121
- HAConfigPtr config_storage = createValidConfiguration ();
2122
- setBasicAuth (config_storage);
2123
-
2124
2116
// Leases are fetched in pages, so the lease6-get-page should be
2125
2117
// sent multiple times. The server is configured to return leases
2126
2118
// in 3-element chunks.
@@ -3962,9 +3954,47 @@ TEST_F(HAServiceTest, asyncSyncLeases6Hub) {
3962
3954
// DHCPv4 server.
3963
3955
TEST_F (HAServiceTest, processSynchronize4) {
3964
3956
3957
+ // Create HA configuration for 3 servers. This server is
3958
+ // server 1.
3959
+ HAConfigPtr config_storage = createValidConfiguration ();
3960
+ setBasicAuth (config_storage);
3961
+
3965
3962
// Run HAService::processSynchronize and gather a response.
3966
3963
ConstElementPtr rsp;
3967
- runProcessSynchronize4 (rsp);
3964
+ runProcessSynchronize4 (config_storage, rsp);
3965
+
3966
+ // The response should indicate success.
3967
+ ASSERT_TRUE (rsp);
3968
+ checkAnswer (rsp, CONTROL_RESULT_SUCCESS, " Lease database synchronization"
3969
+ " complete." );
3970
+
3971
+ // All leases should have been inserted into the database.
3972
+ for (size_t i = 0 ; i < leases4_.size (); ++i) {
3973
+ Lease4Ptr existing_lease = LeaseMgrFactory::instance ().getLease4 (leases4_[i]->addr_ );
3974
+ ASSERT_TRUE (existing_lease) << " lease " << leases4_[i]->addr_ .toText ()
3975
+ << " not in the lease database" ;
3976
+ }
3977
+
3978
+ // The following commands should have been sent to the server2: dhcp-disable,
3979
+ // lease4-get-page and ha-sync-complete-notify.
3980
+ EXPECT_TRUE (factory2_->getResponseCreator ()->findRequest (" dhcp-disable" ," 20" ));
3981
+ EXPECT_TRUE (factory2_->getResponseCreator ()->findRequest (" lease4-get-page" ," " ));
3982
+ EXPECT_TRUE (factory2_->getResponseCreator ()->findRequest (" ha-sync-complete-notify" , " " ));
3983
+ EXPECT_FALSE (factory2_->getResponseCreator ()->findRequest (" dhcp-enable" , " " ));
3984
+ }
3985
+
3986
+ // This test verifies that the ha-sync command is processed successfully for the
3987
+ // DHCPv4 server in the passive-backup configuration.
3988
+ TEST_F (HAServiceTest, processSynchronize4PassiveBackup) {
3989
+
3990
+ // Create passive-backup configuration for 3 servers.
3991
+ // This server is server 1.
3992
+ HAConfigPtr config_storage = createValidPassiveBackupConfiguration ();
3993
+ setBasicAuth (config_storage);
3994
+
3995
+ // Run HAService::processSynchronize and gather a response.
3996
+ ConstElementPtr rsp;
3997
+ runProcessSynchronize4 (config_storage, rsp);
3968
3998
3969
3999
// The response should indicate success.
3970
4000
ASSERT_TRUE (rsp);
@@ -3999,9 +4029,14 @@ TEST_F(HAServiceTest, processSynchronize4Authorized) {
3999
4029
factory2_->getResponseCreator ()->addBasicAuth (" foo" , " bar" );
4000
4030
factory3_->getResponseCreator ()->addBasicAuth (" test" , " 1234" );
4001
4031
4032
+ // Create HA configuration for 3 servers. This server is
4033
+ // server 1.
4034
+ HAConfigPtr config_storage = createValidConfiguration ();
4035
+ setBasicAuth (config_storage);
4036
+
4002
4037
// Run HAService::processSynchronize and gather a response.
4003
4038
ConstElementPtr rsp;
4004
- runProcessSynchronize4 (rsp);
4039
+ runProcessSynchronize4 (config_storage, rsp);
4005
4040
4006
4041
// The response should indicate success.
4007
4042
ASSERT_TRUE (rsp);
@@ -4030,9 +4065,14 @@ TEST_F(HAServiceTest, processSynchronizeDisableError) {
4030
4065
factory2_->getResponseCreator ()->setControlResult (" dhcp-disable" ,
4031
4066
CONTROL_RESULT_ERROR);
4032
4067
4068
+ // Create HA configuration for 3 servers. This server is
4069
+ // server 1.
4070
+ HAConfigPtr config_storage = createValidConfiguration ();
4071
+ setBasicAuth (config_storage);
4072
+
4033
4073
// Run HAService::processSynchronize and gather a response.
4034
4074
ConstElementPtr rsp;
4035
- runProcessSynchronize4 (rsp);
4075
+ runProcessSynchronize4 (config_storage, rsp);
4036
4076
4037
4077
// The response should indicate an error
4038
4078
ASSERT_TRUE (rsp);
@@ -4052,9 +4092,14 @@ TEST_F(HAServiceTest, processSynchronizeUnauthorized) {
4052
4092
// Instruct server2 to require authentication.
4053
4093
factory2_->getResponseCreator ()->addBasicAuth (" foo" , " bar" );
4054
4094
4095
+ // Create HA configuration for 3 servers. This server is
4096
+ // server 1.
4097
+ HAConfigPtr config_storage = createValidConfiguration ();
4098
+ setBasicAuth (config_storage);
4099
+
4055
4100
// Run HAService::processSynchronize and gather a response.
4056
4101
ConstElementPtr rsp;
4057
- runProcessSynchronize4 (rsp);
4102
+ runProcessSynchronize4 (config_storage, rsp);
4058
4103
4059
4104
// The response should indicate an error
4060
4105
ASSERT_TRUE (rsp);
@@ -4071,9 +4116,14 @@ TEST_F(HAServiceTest, processSynchronizeLease4GetPageError) {
4071
4116
factory2_->getResponseCreator ()->setControlResult (" lease4-get-page" ,
4072
4117
CONTROL_RESULT_ERROR);
4073
4118
4119
+ // Create HA configuration for 3 servers. This server is
4120
+ // server 1.
4121
+ HAConfigPtr config_storage = createValidConfiguration ();
4122
+ setBasicAuth (config_storage);
4123
+
4074
4124
// Run HAService::processSynchronize and gather a response.
4075
4125
ConstElementPtr rsp;
4076
- runProcessSynchronize4 (rsp);
4126
+ runProcessSynchronize4 (config_storage, rsp);
4077
4127
4078
4128
// The response should indicate an error
4079
4129
ASSERT_TRUE (rsp);
@@ -4103,9 +4153,14 @@ TEST_F(HAServiceTest, processSynchronizeEnableError) {
4103
4153
factory2_->getResponseCreator ()->setControlResult (" ha-sync-complete-notify" ,
4104
4154
CONTROL_RESULT_COMMAND_UNSUPPORTED);
4105
4155
4156
+ // Create HA configuration for 3 servers. This server is
4157
+ // server 1.
4158
+ HAConfigPtr config_storage = createValidConfiguration ();
4159
+ setBasicAuth (config_storage);
4160
+
4106
4161
// Run HAService::processSynchronize and gather a response.
4107
4162
ConstElementPtr rsp;
4108
- runProcessSynchronize4 (rsp);
4163
+ runProcessSynchronize4 (config_storage, rsp);
4109
4164
4110
4165
// The response should indicate an error
4111
4166
ASSERT_TRUE (rsp);
@@ -4146,9 +4201,14 @@ TEST_F(HAServiceTest, processSynchronizeNotifyError) {
4146
4201
factory2_->getResponseCreator ()->setControlResult (" ha-sync-complete-notify" ,
4147
4202
CONTROL_RESULT_ERROR);
4148
4203
4204
+ // Create HA configuration for 3 servers. This server is
4205
+ // server 1.
4206
+ HAConfigPtr config_storage = createValidConfiguration ();
4207
+ setBasicAuth (config_storage);
4208
+
4149
4209
// Run HAService::processSynchronize and gather a response.
4150
4210
ConstElementPtr rsp;
4151
- runProcessSynchronize4 (rsp);
4211
+ runProcessSynchronize4 (config_storage, rsp);
4152
4212
4153
4213
// The response should indicate an error
4154
4214
ASSERT_TRUE (rsp);
@@ -4182,9 +4242,47 @@ TEST_F(HAServiceTest, processSynchronizeNotifyError) {
4182
4242
// DHCPv6 server.
4183
4243
TEST_F (HAServiceTest, processSynchronize6) {
4184
4244
4245
+ // Create HA configuration for 3 servers. This server is
4246
+ // server 1.
4247
+ HAConfigPtr config_storage = createValidConfiguration ();
4248
+ setBasicAuth (config_storage);
4249
+
4185
4250
// Run HAService::processSynchronize and gather a response.
4186
4251
ConstElementPtr rsp;
4187
- runProcessSynchronize6 (rsp);
4252
+ runProcessSynchronize6 (config_storage, rsp);
4253
+
4254
+ // The response should indicate success.
4255
+ ASSERT_TRUE (rsp);
4256
+ checkAnswer (rsp, CONTROL_RESULT_SUCCESS, " Lease database synchronization"
4257
+ " complete." );
4258
+
4259
+ // All leases should have been inserted into the database.
4260
+ for (size_t i = 0 ; i < leases6_.size (); ++i) {
4261
+ Lease6Ptr existing_lease = LeaseMgrFactory::instance ().getLease6 (Lease::TYPE_NA,
4262
+ leases6_[i]->addr_ );
4263
+ ASSERT_TRUE (existing_lease) << " lease " << leases6_[i]->addr_ .toText ()
4264
+ << " not in the lease database" ;
4265
+ }
4266
+
4267
+ // The following commands should have been sent to the server2: dhcp-disable,
4268
+ // lease6-get-page and ha-sync-complete-notify.
4269
+ EXPECT_TRUE (factory2_->getResponseCreator ()->findRequest (" dhcp-disable" ," 20" ));
4270
+ EXPECT_TRUE (factory2_->getResponseCreator ()->findRequest (" lease6-get-page" ," " ));
4271
+ EXPECT_TRUE (factory2_->getResponseCreator ()->findRequest (" ha-sync-complete-notify" ," " ));
4272
+ }
4273
+
4274
+ // This test verifies that the ha-sync command is processed successfully for the
4275
+ // DHCPv6 server in the passive-backup configuration.
4276
+ TEST_F (HAServiceTest, processSynchronize6PassiveBackup) {
4277
+
4278
+ // Create HA configuration for 3 servers. This server is
4279
+ // server 1.
4280
+ HAConfigPtr config_storage = createValidPassiveBackupConfiguration ();
4281
+ setBasicAuth (config_storage);
4282
+
4283
+ // Run HAService::processSynchronize and gather a response.
4284
+ ConstElementPtr rsp;
4285
+ runProcessSynchronize6 (config_storage, rsp);
4188
4286
4189
4287
// The response should indicate success.
4190
4288
ASSERT_TRUE (rsp);
@@ -4219,9 +4317,14 @@ TEST_F(HAServiceTest, processSynchronize6Authorized) {
4219
4317
factory2_->getResponseCreator ()->addBasicAuth (" foo" , " bar" );
4220
4318
factory3_->getResponseCreator ()->addBasicAuth (" test" , " 1234" );
4221
4319
4320
+ // Create HA configuration for 3 servers. This server is
4321
+ // server 1.
4322
+ HAConfigPtr config_storage = createValidConfiguration ();
4323
+ setBasicAuth (config_storage);
4324
+
4222
4325
// Run HAService::processSynchronize and gather a response.
4223
4326
ConstElementPtr rsp;
4224
- runProcessSynchronize6 (rsp);
4327
+ runProcessSynchronize6 (config_storage, rsp);
4225
4328
4226
4329
// The response should indicate success.
4227
4330
ASSERT_TRUE (rsp);
@@ -4250,9 +4353,14 @@ TEST_F(HAServiceTest, processSynchronize6DisableError) {
4250
4353
factory2_->getResponseCreator ()->setControlResult (" dhcp-disable" ,
4251
4354
CONTROL_RESULT_ERROR);
4252
4355
4356
+ // Create HA configuration for 3 servers. This server is
4357
+ // server 1.
4358
+ HAConfigPtr config_storage = createValidConfiguration ();
4359
+ setBasicAuth (config_storage);
4360
+
4253
4361
// Run HAService::processSynchronize and gather a response.
4254
4362
ConstElementPtr rsp;
4255
- runProcessSynchronize6 (rsp);
4363
+ runProcessSynchronize6 (config_storage, rsp);
4256
4364
4257
4365
// The response should indicate an error
4258
4366
ASSERT_TRUE (rsp);
@@ -4271,9 +4379,14 @@ TEST_F(HAServiceTest, processSynchronize6Unauthorized) {
4271
4379
// Instruct server2 to require authentication.
4272
4380
factory2_->getResponseCreator ()->addBasicAuth (" foo" , " bar" );
4273
4381
4382
+ // Create HA configuration for 3 servers. This server is
4383
+ // server 1.
4384
+ HAConfigPtr config_storage = createValidConfiguration ();
4385
+ setBasicAuth (config_storage);
4386
+
4274
4387
// Run HAService::processSynchronize and gather a response.
4275
4388
ConstElementPtr rsp;
4276
- runProcessSynchronize6 (rsp);
4389
+ runProcessSynchronize6 (config_storage, rsp);
4277
4390
4278
4391
// The response should indicate an error
4279
4392
ASSERT_TRUE (rsp);
@@ -4290,9 +4403,14 @@ TEST_F(HAServiceTest, processSynchronizeLease6GetPageError) {
4290
4403
factory2_->getResponseCreator ()->setControlResult (" lease6-get-page" ,
4291
4404
CONTROL_RESULT_ERROR);
4292
4405
4406
+ // Create HA configuration for 3 servers. This server is
4407
+ // server 1.
4408
+ HAConfigPtr config_storage = createValidConfiguration ();
4409
+ setBasicAuth (config_storage);
4410
+
4293
4411
// Run HAService::processSynchronize and gather a response.
4294
4412
ConstElementPtr rsp;
4295
- runProcessSynchronize6 (rsp);
4413
+ runProcessSynchronize6 (config_storage, rsp);
4296
4414
4297
4415
// The response should indicate an error
4298
4416
ASSERT_TRUE (rsp);
@@ -4318,9 +4436,14 @@ TEST_F(HAServiceTest, processSynchronize6EnableError) {
4318
4436
factory2_->getResponseCreator ()->setControlResult (" ha-sync-complete-notify" ,
4319
4437
CONTROL_RESULT_COMMAND_UNSUPPORTED);
4320
4438
4439
+ // Create HA configuration for 3 servers. This server is
4440
+ // server 1.
4441
+ HAConfigPtr config_storage = createValidConfiguration ();
4442
+ setBasicAuth (config_storage);
4443
+
4321
4444
// Run HAService::processSynchronize and gather a response.
4322
4445
ConstElementPtr rsp;
4323
- runProcessSynchronize6 (rsp);
4446
+ runProcessSynchronize6 (config_storage, rsp);
4324
4447
4325
4448
// The response should indicate an error
4326
4449
ASSERT_TRUE (rsp);
@@ -4341,9 +4464,14 @@ TEST_F(HAServiceTest, processSynchronize6NotifyError) {
4341
4464
factory2_->getResponseCreator ()->setControlResult (" ha-sync-complete-notify" ,
4342
4465
CONTROL_RESULT_ERROR);
4343
4466
4467
+ // Create HA configuration for 3 servers. This server is
4468
+ // server 1.
4469
+ HAConfigPtr config_storage = createValidConfiguration ();
4470
+ setBasicAuth (config_storage);
4471
+
4344
4472
// Run HAService::processSynchronize and gather a response.
4345
4473
ConstElementPtr rsp;
4346
- runProcessSynchronize6 (rsp);
4474
+ runProcessSynchronize6 (config_storage, rsp);
4347
4475
4348
4476
// The response should indicate an error
4349
4477
ASSERT_TRUE (rsp);
0 commit comments