def test_dispatch(): assert dispatch(return_value, (1,)) == 1 assert dispatch(return_value, ("foo",)) == "foo" assert dispatch(sleep2, (2,)) == 2 assert dispatch(sleep2, (2,), timeout=1) is None with pytest.raises(RuntimeError): dispatch(None, args=None) with pytest.raises(RuntimeError): dispatch(None, kwargs=None) with pytest.raises(RuntimeError): dispatch(None, process=False)
def run(self): """Run analysis. @return: results dict. """ self.key = "static" static = {} if self.task["category"] == "file": if not os.path.exists(self.file_path): return f = File(self.file_path) filename = os.path.basename(self.task["target"]) elif self.task["category"] == "archive": if not os.path.exists(self.file_path): return f = Archive(self.file_path).get_file( self.task["options"]["filename"] ) filename = os.path.basename(self.task["options"]["filename"]) else: return if filename: ext = filename.split(os.path.extsep)[-1].lower() else: ext = None package = self.task.get("package") if package == "generic" and (ext == "elf" or "ELF" in f.get_type()): static["elf"] = ELF(f.file_path).run() static["keys"] = f.get_keys() if package == "exe" or ext == "exe" or "PE32" in f.get_type(): static.update(PortableExecutable(f.file_path).run()) static["keys"] = f.get_keys() if package == "wsf" or ext == "wsf": static["wsf"] = WindowsScriptFile(f.file_path).run() if package in ("doc", "ppt", "xls") or ext in self.office_ext: static["office"] = OfficeDocument(f.file_path, self.task["id"]).run() if package == "pdf" or ext == "pdf": if f.get_content_type() == "application/pdf": static["pdf"] = dispatch( _pdf_worker, (f.file_path,), timeout=self.options.pdf_timeout ) or [] else: static["pdf"] = [] if package == "generic" or ext == "lnk": static["lnk"] = LnkShortcut(f.file_path).run() return static