Пример #1
0
    def test_successful_idempotent_migration(self):
        pipeline = Pipeline("demo")
        pipeline.add_state(PipelineState("state1", {"attr1": True}), is_starting=True)
        pipeline.add_state(PipelineState("state2", {"attr2": True}))
        pipeline.add_state(PipelineState("state3", {"attr3": True}))
        self.content_store.append_multiple(
            [
                # belongs to state1
                {"attr1": True, "idem": 1},
                {"attr1": True, "idem": 2},
                {"attr1": True, "idem": 3},
                # belongs to state2
                {"attr2": True, "idem": 4},
                # belongs to state3
                {"attr3": True, "idem": 5},
            ],
            "idem",
        )
        pipeline.perform_state_migrations(self.content_store)

        # simulate a failed migration here
        self.content_store.update_many(
            filter_q={"attr1": True}, update_doc={"$unset": {"_state": ""}}
        )

        pipeline.perform_state_migrations(self.content_store)
        assert self.actual_documents_without_id() == [
            {"attr1": True, "idem": 1, "_state": "state1"},
            {"attr1": True, "idem": 2, "_state": "state1"},
            {"attr1": True, "idem": 3, "_state": "state1"},
            {"attr2": True, "idem": 4, "_state": "state2"},
            {"attr3": True, "idem": 5, "_state": "state3"},
        ]
Пример #2
0
 def test_successful_migration(self):
     pipeline = Pipeline("demo")
     pipeline.add_state(PipelineState("state1", {"attr1": True}), is_starting=True)
     pipeline.add_state(PipelineState("state2", {"attr2": True}))
     pipeline.add_state(PipelineState("state3", {"attr3": True}))
     self.content_store.append_multiple(
         [
             # belongs to state1
             {"attr1": True, "idem": 1},
             {"attr1": True, "idem": 2},
             {"attr1": True, "idem": 3},
             # belongs to state2
             {"attr2": True, "idem": 4},
             # belongs to state3
             {"attr3": True, "idem": 5},
         ],
         "idem",
     )
     pipeline.perform_state_migrations(self.content_store)
     assert self.actual_documents_without_id() == [
         {"attr1": True, "idem": 1, "_state": "state1"},
         {"attr1": True, "idem": 2, "_state": "state1"},
         {"attr1": True, "idem": 3, "_state": "state1"},
         {"attr2": True, "idem": 4, "_state": "state2"},
         {"attr3": True, "idem": 5, "_state": "state3"},
     ]