#1275 sync_koji_build_tags poller update
Merged 4 years ago by jkaluza. Opened 4 years ago by vmaljulin.
vmaljulin/fm-orchestrator FACTORY-4588  into  master

@@ -427,7 +427,11 @@ 

  

          koji_session = KojiModuleBuilder.get_session(conf, login=False)

  

-         module_builds = models.ModuleBuild.by_state(session, "build")

+         threshold = datetime.utcnow() - timedelta(minutes=10)

+         module_builds = session.query(models.ModuleBuild).filter(

+             models.ModuleBuild.time_modified < threshold,

+             models.ModuleBuild.state == models.BUILD_STATES["build"]

+         ).all()

          for module_build in module_builds:

              complete_components = module_build.current_batch(koji.BUILD_STATES["COMPLETE"])

              for c in complete_components:

@@ -573,16 +573,20 @@ 

          assert len(module) == 1

          assert module[0].id == 2

  

-     @pytest.mark.parametrize("tagged, tagged_in_final", ([True, False], [True, False]))

+     @pytest.mark.parametrize("tagged", (True, False))

+     @pytest.mark.parametrize("tagged_in_final", (True, False))

+     @pytest.mark.parametrize("btime", (True, False))

      @patch("module_build_service.builder.KojiModuleBuilder.KojiClientSession")

      def test_sync_koji_build_tags(

-         self, ClientSession, create_builder, global_consumer, dbg, tagged, tagged_in_final

+         self, ClientSession, create_builder, global_consumer, dbg, tagged, tagged_in_final, btime

      ):

          module_build_2 = models.ModuleBuild.query.filter_by(id=2).one()

  

          # Only module build 1's build target should be deleted.

          module_build_2.koji_tag = "module-tag1"

          module_build_2.state = models.BUILD_STATES["build"]

+         if btime:

+             module_build_2.time_modified = datetime.utcnow() - timedelta(minutes=12)

          c = module_build_2.current_batch()[0]

          c.state = koji.BUILD_STATES["COMPLETE"]

          c.tagged_in_final = False
@@ -594,10 +598,11 @@ 

          # No created module build has any of these tags.

          ret = []

  

-         if tagged:

-             ret.append({"id": 1, "name": module_build_2.koji_tag + "-build"})

-         if tagged_in_final:

-             ret.append({"id": 2, "name": module_build_2.koji_tag})

+         if btime:

+             if tagged:

+                 ret.append({"id": 1, "name": module_build_2.koji_tag + "-build"})

+             if tagged_in_final:

+                 ret.append({"id": 2, "name": module_build_2.koji_tag})

          koji_session.listTags.return_value = ret

  

          consumer = mock.MagicMock()
@@ -608,13 +613,14 @@ 

  

          assert consumer.incoming.qsize() == 0

          poller.sync_koji_build_tags(conf, db.session)

-         assert consumer.incoming.qsize() == 2 - len(ret)

+         assert consumer.incoming.qsize() == len(ret)

  

          expected_msg_tags = []

-         if tagged:

-             expected_msg_tags.append(module_build_2.koji_tag + "-build")

-         if tagged_in_final:

-             expected_msg_tags.append(module_build_2.koji_tag)

+         if btime:

+             if tagged:

+                 expected_msg_tags.append(module_build_2.koji_tag + "-build")

+             if tagged_in_final:

+                 expected_msg_tags.append(module_build_2.koji_tag)

  

          assert len(expected_msg_tags) == consumer.incoming.qsize()

  

  • Make sync_koji_build_tags poller working only with the builds that are in build state for some time
  • Fix for test_sync_koji_build_tags
    This fixes #1271

Pull-Request has been merged by jkaluza

4 years ago