hycdong commented on code in PR #1150:
URL: https://github.com/apache/incubator-pegasus/pull/1150#discussion_r976084409


##########
src/rdsn/src/replica/backup/test/replica_backup_manager_test.cpp:
##########
@@ -120,7 +143,178 @@ class replica_backup_manager_test : public 
replica_test_base
     std::unique_ptr<replica_backup_manager> _backup_mgr;
 };
 
-// TODO(heyuchen): add unit test for on_backup after implement all status
+TEST_F(replica_backup_manager_test, on_backup_test)
+{
+    fail::cfg("replica_backup_start_checkpointing", "return()");
+    fail::cfg("replica_backup_start_uploading", "return()");
+    fail::cfg("replica_backup_upload_completed", "return()");
+    fail::cfg("replica_backup_clear_context", "return()");
+
+    struct test_struct
+    {
+        backup_status::type local_status;
+        backup_status::type request_status;
+        error_code expected_err;
+        backup_status::type expected_status;
+    } tests[]{
+        // request_status = UNINITIALIZED
+        {backup_status::UNINITIALIZED,
+         backup_status::UNINITIALIZED,
+         ERR_INVALID_STATE,
+         backup_status::UNINITIALIZED},
+        {backup_status::CHECKPOINTING,
+         backup_status::UNINITIALIZED,
+         ERR_INVALID_STATE,
+         backup_status::CHECKPOINTING},
+        {backup_status::CHECKPOINTED,
+         backup_status::UNINITIALIZED,
+         ERR_INVALID_STATE,
+         backup_status::CHECKPOINTED},
+        {backup_status::UPLOADING,
+         backup_status::UNINITIALIZED,
+         ERR_INVALID_STATE,
+         backup_status::UPLOADING},
+        {backup_status::SUCCEED,
+         backup_status::UNINITIALIZED,
+         ERR_INVALID_STATE,
+         backup_status::SUCCEED},
+        {backup_status::FAILED,
+         backup_status::UNINITIALIZED,
+         ERR_INVALID_STATE,
+         backup_status::FAILED},
+        {backup_status::CANCELED,
+         backup_status::UNINITIALIZED,
+         ERR_INVALID_STATE,
+         backup_status::CANCELED},
+        // request_status = CHECKPOINTING
+        {backup_status::UNINITIALIZED,
+         backup_status::CHECKPOINTING,
+         ERR_OK,
+         backup_status::CHECKPOINTING},
+        {backup_status::CHECKPOINTING,
+         backup_status::CHECKPOINTING,
+         ERR_OK,
+         backup_status::CHECKPOINTING},
+        {backup_status::CHECKPOINTED,
+         backup_status::CHECKPOINTING,
+         ERR_OK,
+         backup_status::CHECKPOINTED},
+        {backup_status::UPLOADING,
+         backup_status::CHECKPOINTING,
+         ERR_INVALID_STATE,
+         backup_status::UPLOADING},
+        {backup_status::SUCCEED,
+         backup_status::CHECKPOINTING,
+         ERR_INVALID_STATE,
+         backup_status::SUCCEED},
+        {backup_status::FAILED,
+         backup_status::CHECKPOINTING,
+         ERR_INVALID_STATE,
+         backup_status::FAILED},
+        {backup_status::CANCELED,
+         backup_status::CHECKPOINTING,
+         ERR_INVALID_STATE,
+         backup_status::CANCELED},
+        // request_status = CHECKPOINTED
+        {backup_status::UNINITIALIZED,
+         backup_status::CHECKPOINTED,
+         ERR_INVALID_STATE,
+         backup_status::UNINITIALIZED},
+        {backup_status::CHECKPOINTING,
+         backup_status::CHECKPOINTED,
+         ERR_INVALID_STATE,
+         backup_status::CHECKPOINTING},
+        {backup_status::CHECKPOINTED,
+         backup_status::CHECKPOINTED,
+         ERR_INVALID_STATE,
+         backup_status::CHECKPOINTED},
+        {backup_status::UPLOADING,
+         backup_status::CHECKPOINTED,
+         ERR_INVALID_STATE,
+         backup_status::UPLOADING},
+        {backup_status::SUCCEED,
+         backup_status::CHECKPOINTED,
+         ERR_INVALID_STATE,
+         backup_status::SUCCEED},
+        {backup_status::FAILED,
+         backup_status::CHECKPOINTED,
+         ERR_INVALID_STATE,
+         backup_status::FAILED},
+        {backup_status::CANCELED,
+         backup_status::CHECKPOINTED,
+         ERR_INVALID_STATE,
+         backup_status::CANCELED},
+        // request_status = UPLOADING
+        {backup_status::UNINITIALIZED,
+         backup_status::UPLOADING,
+         ERR_INVALID_STATE,
+         backup_status::UNINITIALIZED},
+        {backup_status::CHECKPOINTING,
+         backup_status::UPLOADING,
+         ERR_INVALID_STATE,
+         backup_status::CHECKPOINTING},
+        {backup_status::CHECKPOINTED, backup_status::UPLOADING, ERR_OK, 
backup_status::UPLOADING},
+        {backup_status::UPLOADING, backup_status::UPLOADING, ERR_OK, 
backup_status::UPLOADING},
+        {backup_status::SUCCEED, backup_status::UPLOADING, ERR_OK, 
backup_status::SUCCEED},
+        {backup_status::FAILED, backup_status::UPLOADING, ERR_INVALID_STATE, 
backup_status::FAILED},
+        {backup_status::CANCELED,
+         backup_status::UPLOADING,
+         ERR_INVALID_STATE,
+         backup_status::CANCELED},
+        // request_status = SUCCEED
+        {backup_status::UNINITIALIZED,
+         backup_status::SUCCEED,
+         ERR_INVALID_STATE,
+         backup_status::UNINITIALIZED},
+        {backup_status::CHECKPOINTING,
+         backup_status::SUCCEED,
+         ERR_INVALID_STATE,
+         backup_status::CHECKPOINTING},
+        {backup_status::CHECKPOINTED,
+         backup_status::SUCCEED,
+         ERR_INVALID_STATE,
+         backup_status::CHECKPOINTED},
+        {backup_status::UPLOADING,
+         backup_status::SUCCEED,
+         ERR_INVALID_STATE,
+         backup_status::UPLOADING},
+        {backup_status::SUCCEED, backup_status::SUCCEED, ERR_INVALID_STATE, 
backup_status::SUCCEED},
+        {backup_status::FAILED, backup_status::SUCCEED, ERR_INVALID_STATE, 
backup_status::FAILED},
+        {backup_status::CANCELED,
+         backup_status::SUCCEED,
+         ERR_INVALID_STATE,
+         backup_status::CANCELED},
+        // request_status = FAILED
+        {backup_status::UNINITIALIZED, backup_status::FAILED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::CHECKPOINTING, backup_status::FAILED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::CHECKPOINTED, backup_status::FAILED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::UPLOADING, backup_status::FAILED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::SUCCEED, backup_status::FAILED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::FAILED, backup_status::FAILED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::CANCELED, backup_status::FAILED, ERR_OK, 
backup_status::UNINITIALIZED},
+        // request_status = CANCELED
+        {backup_status::UNINITIALIZED,
+         backup_status::CANCELED,
+         ERR_OK,
+         backup_status::UNINITIALIZED},
+        {backup_status::CHECKPOINTING,
+         backup_status::CANCELED,
+         ERR_OK,
+         backup_status::UNINITIALIZED},
+        {backup_status::CHECKPOINTED,
+         backup_status::CANCELED,
+         ERR_OK,
+         backup_status::UNINITIALIZED},
+        {backup_status::UPLOADING, backup_status::CANCELED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::SUCCEED, backup_status::CANCELED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::FAILED, backup_status::CANCELED, ERR_OK, 
backup_status::UNINITIALIZED},
+        {backup_status::CANCELED, backup_status::CANCELED, ERR_OK, 
backup_status::UNINITIALIZED}};
+
+    for (const auto &test : tests) {
+        ASSERT_EQ(on_backup(test.local_status, test.request_status), 
test.expected_err);

Review Comment:
   I have to admit that it is only be shown by unit test log.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to