def test_build_options(self):
        task = Task()
        id = task.add_path(__file__, options={"free": "yes"})
        task.load_from_db(id)
        a = abstracts.AnalysisManager(
            FakeMachine(), mock.MagicMock(), mock.MagicMock()
        )
        a.set_task(task)

        expected = {
            "clock": task.clock,
            "enforce_timeout": False,
            "id": task.id,
            "package": "",
            "target": None,
            "terminate_processes": False,
            "ip": "192.168.56.1",
            "port": 4242,
            "timeout": 120,
            "options": "free=yes"
        }

        assert a.options == {}
        a.build_options()
        assert a.options == expected
        a.build_options({
            "file_name": "doge.py",
            "options": {"doges": "many"},
            "category": "file"
        })
        assert a.options["options"] == "doges=many,free=yes"
        assert a.options["file_name"] == "doge.py"
        assert a.options["category"] == "file"
    def test_get_analysis_status(self):
        a = abstracts.AnalysisManager(
            FakeMachine(), mock.MagicMock(), mock.MagicMock()
        )
        a.analysis = mock.MagicMock()
        a.analysis.get_status = mock.MagicMock(return_value="starting")

        assert a.get_analysis_status() == "starting"
 def test_set_target(self):
     task = Task()
     id = task.add_path(__file__)
     task.load_from_db(id)
     a = abstracts.AnalysisManager(
         FakeMachine(), mock.MagicMock(), mock.MagicMock()
     )
     with pytest.raises(NotImplementedError):
         a.set_target(task.targets)
    def test_release_machine_lock(self):
        a = abstracts.AnalysisManager(
            FakeMachine(), mock.MagicMock(), mock.MagicMock()
        )
        a.init(self.db)

        a.release_machine_lock()

        a.machine_lock.release.assert_called_once()
        assert a.lock_released
    def test_action_requested(self):
        a = abstracts.AnalysisManager(
            FakeMachine(), mock.MagicMock(), mock.MagicMock()
        )
        a.analysis = mock.MagicMock()
        a.action_lock = mock.MagicMock()
        a.action_lock.locked = mock.MagicMock(return_value=True)
        a.analysis.changed = True

        assert a.action_requested()
    def test_set_analysis_status(self):
        a = abstracts.AnalysisManager(
            FakeMachine(), mock.MagicMock(), mock.MagicMock()
        )
        a.analysis = mock.MagicMock()
        a.request_scheduler_action = mock.MagicMock()
        a.set_analysis_status("starting")

        a.analysis.set_status.assert_called_once_with("starting")
        a.request_scheduler_action.assert_not_called()
 def test_wait_finish(self, mts):
     task = Task()
     id = task.add_url("http://example.com/42")
     task.load_from_db(id)
     a = abstracts.AnalysisManager(
         FakeMachine(), mock.MagicMock(), mock.MagicMock()
     )
     a.set_task(task)
     a.analysis.status = "stoppped"
     a.wait_finish()
     mts.assert_not_called()
    def test_set_task(self):
        task = Task()
        id = task.add_path(__file__)
        task.load_from_db(id)
        a = abstracts.AnalysisManager(
            FakeMachine(), mock.MagicMock(), mock.MagicMock()
        )

        a.set_task(task)

        assert a.task == task
        assert isinstance(a.analysis, Analysis)
        assert a.name == "task_%s_AnalysisManager" % task.id
    def test_request_scheduler_action(self):
        task = Task()
        id = task.add_url("http://example.com/42")
        task.load_from_db(id)
        a = abstracts.AnalysisManager(
            FakeMachine(), mock.MagicMock(), mock.MagicMock()
        )
        a.set_task(task)
        a.action_lock = mock.MagicMock()
        a.action_lock.locked = mock.MagicMock(return_value=False)

        a.request_scheduler_action()

        a.action_lock.acquire.assert_has_calls([
            mock.call(False),
            mock.call(True)
        ])
        a.action_lock.release.assert_called_once()
        assert a.override_status is None
 def test_run(self):
     a = abstracts.AnalysisManager(
         FakeMachine(), mock.MagicMock(), mock.MagicMock()
     )
     with pytest.raises(NotImplementedError):
         a.run()
    def test_init(self):
        a = abstracts.AnalysisManager(
            FakeMachine(), mock.MagicMock(), mock.MagicMock()
        )

        assert a.init(self.db)