Fix the infeasible examples support

This commit is contained in:
Timothyxxx
2024-02-21 21:22:12 +08:00
parent adf49cd574
commit e1cf8da4e0
25 changed files with 46 additions and 123 deletions

View File

@@ -26,11 +26,19 @@ Getter = Callable[[gym.Env, Dict[str, Any]], Any]
def _execute_command(command: List[str]) -> None:
if command[:4] == ["vmrun", "-T", "ws", "start"]:
def _is_contained_in(a, b):
for v in set(a):
if a.count(v) > b.count(v):
return False
return True
# Specially handled for the `vmrun` command in Windows
if _is_contained_in(["vmrun", "-T", "ws", "start"], command):
p = subprocess.Popen(command)
p.wait()
else:
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=60, text=True, encoding="utf-8")
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=60, text=True,
encoding="utf-8")
if result.returncode != 0:
raise Exception("\033[91m" + result.stdout + result.stderr + "\033[0m")
return result.stdout
@@ -132,7 +140,8 @@ class DesktopEnv(gym.Env):
output = _execute_command(["vmrun", "-T", "ws", "getGuestIPAddress", self.path_to_vm]).strip()
logger.info(f"IP address: {output}")
return output
except:
except Exception as e:
print(e)
time.sleep(5)
logger.info("Retrying...")
raise Exception("Failed to get VM IP address!")
@@ -175,14 +184,14 @@ class DesktopEnv(gym.Env):
# even if one of the metrics does not need expected or options field, it should be included in the list with None
self.evaluator = task_config["evaluator"]
self.metric: Metric = [getattr(metrics, func) for func in self.evaluator["func"]] \
if isinstance(self.evaluator["func"], list) \
else getattr(metrics, self.evaluator["func"])
if isinstance(self.evaluator["func"], list) \
else getattr(metrics, self.evaluator["func"])
self.metric_conj: str = self.evaluator.get("conj", "and") # take conjunction of multiple metrics
if "result" in self.evaluator:
self.result_getter: Getter = [getattr(getters, "get_{:}".format(res["type"])) for res in
self.evaluator["result"]] \
if isinstance(self.evaluator["result"], list) \
else getattr(getters, "get_{:}".format(self.evaluator["result"]["type"]))
self.evaluator["result"]] \
if isinstance(self.evaluator["result"], list) \
else getattr(getters, "get_{:}".format(self.evaluator["result"]["type"]))
else:
self.result_getter = [None] * len(self.metric) \
if isinstance(self.metric, list) \
@@ -302,8 +311,8 @@ class DesktopEnv(gym.Env):
self.setup_controller.setup(self.evaluator.get("postconfig", []))
if self.metric == "infeasible":
if self.action_history[-1] == "FAIL":
if self.evaluator['func'] == "infeasible":
if len(self.action_history) > 0 and self.action_history[-1] == "FAIL":
return 1
else:
return 0

View File

@@ -121,3 +121,7 @@ from .vscode import (
check_json_settings,
check_json_keybindings
)
def infeasible():
pass

View File

@@ -10,10 +10,6 @@
"chrome"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -10,10 +10,6 @@
"chrome"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -10,10 +10,6 @@
"chrome"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -21,10 +21,6 @@
"gimp"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -10,10 +10,6 @@
"gimp"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -21,10 +21,6 @@
"gimp"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -10,10 +10,6 @@
"gimp"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -10,10 +10,6 @@
"gimp"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -27,8 +27,6 @@
"libreoffice_writer"
],
"evaluator": {
"func": "infeasible",
"result": {
}
"func": "infeasible"
}
}

View File

@@ -27,10 +27,6 @@
"os"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -27,10 +27,6 @@
"os"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -9,10 +9,6 @@
"os"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -8,10 +8,6 @@
"os"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -10,10 +10,6 @@
"os"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -43,10 +43,6 @@
"thunderbird"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -16,10 +16,6 @@
"vlc"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -16,10 +16,6 @@
"vlc"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -16,10 +16,6 @@
"vlc"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -36,10 +36,6 @@
"vscode"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -24,10 +24,6 @@
"vscode"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -59,10 +59,6 @@
"vscode"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -24,10 +24,6 @@
"vscode"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}

View File

@@ -24,10 +24,6 @@
"vscode"
],
"evaluator": {
"func": "infeasible",
"result": {
},
"expected": {
}
"func": "infeasible"
}
}