def METHOD_NAME(self):
    task_manager = create_task_manager()
    dataset_name = "test"
    task_manager.get_dataset_task(NodeType.WORKER, 0, dataset_name)
    task_manager.get_dataset_task(NodeType.WORKER, 0, dataset_name)
    checkpoint: DatasetShardCheckpoint = (
        task_manager.get_dataset_checkpoint(dataset_name)
    )
    self.assertEqual(checkpoint.dataset_name, dataset_name)
    self.assertListEqual(checkpoint.doing, [[0, 100], [100, 200]])
    self.assertEqual(len(checkpoint.todo), 8)
    self.assertEqual(checkpoint.epoch, 1)
    checkpoint_str = checkpoint.to_json()
    checkpoint_dict = json.loads(checkpoint_str)
    print(checkpoint_dict)
    self.assertDictEqual(
        checkpoint_dict,
        {
            "dataset_name": "test",
            "todo": [
                [200, 300],
                [300, 400],
                [400, 500],
                [500, 600],
                [600, 700],
                [700, 800],
                [800, 900],
                [900, 1000],
            ],
            "doing": [[0, 100], [100, 200]],
            "epoch": 1,
            "splitter": None,
        },
    )
    dataset = task_manager.get_dataset(dataset_name)
    task_manager.get_dataset_task(NodeType.WORKER, 0, dataset_name)
    self.assertEqual(len(dataset.todo), 7)
    task_manager.restore_dataset_from_checkpoint(checkpoint_str)
    self.assertEqual(dataset.todo[1].shard.start, 100)
    self.assertEqual(len(dataset.todo), 10)