Fix the infeasible examples support
This commit is contained in:
@@ -26,11 +26,19 @@ Getter = Callable[[gym.Env, Dict[str, Any]], Any]
|
|||||||
|
|
||||||
|
|
||||||
def _execute_command(command: List[str]) -> None:
|
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 = subprocess.Popen(command)
|
||||||
p.wait()
|
p.wait()
|
||||||
else:
|
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:
|
if result.returncode != 0:
|
||||||
raise Exception("\033[91m" + result.stdout + result.stderr + "\033[0m")
|
raise Exception("\033[91m" + result.stdout + result.stderr + "\033[0m")
|
||||||
return result.stdout
|
return result.stdout
|
||||||
@@ -132,7 +140,8 @@ class DesktopEnv(gym.Env):
|
|||||||
output = _execute_command(["vmrun", "-T", "ws", "getGuestIPAddress", self.path_to_vm]).strip()
|
output = _execute_command(["vmrun", "-T", "ws", "getGuestIPAddress", self.path_to_vm]).strip()
|
||||||
logger.info(f"IP address: {output}")
|
logger.info(f"IP address: {output}")
|
||||||
return output
|
return output
|
||||||
except:
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
logger.info("Retrying...")
|
logger.info("Retrying...")
|
||||||
raise Exception("Failed to get VM IP address!")
|
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
|
# 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.evaluator = task_config["evaluator"]
|
||||||
self.metric: Metric = [getattr(metrics, func) for func in self.evaluator["func"]] \
|
self.metric: Metric = [getattr(metrics, func) for func in self.evaluator["func"]] \
|
||||||
if isinstance(self.evaluator["func"], list) \
|
if isinstance(self.evaluator["func"], list) \
|
||||||
else getattr(metrics, self.evaluator["func"])
|
else getattr(metrics, self.evaluator["func"])
|
||||||
self.metric_conj: str = self.evaluator.get("conj", "and") # take conjunction of multiple metrics
|
self.metric_conj: str = self.evaluator.get("conj", "and") # take conjunction of multiple metrics
|
||||||
if "result" in self.evaluator:
|
if "result" in self.evaluator:
|
||||||
self.result_getter: Getter = [getattr(getters, "get_{:}".format(res["type"])) for res in
|
self.result_getter: Getter = [getattr(getters, "get_{:}".format(res["type"])) for res in
|
||||||
self.evaluator["result"]] \
|
self.evaluator["result"]] \
|
||||||
if isinstance(self.evaluator["result"], list) \
|
if isinstance(self.evaluator["result"], list) \
|
||||||
else getattr(getters, "get_{:}".format(self.evaluator["result"]["type"]))
|
else getattr(getters, "get_{:}".format(self.evaluator["result"]["type"]))
|
||||||
else:
|
else:
|
||||||
self.result_getter = [None] * len(self.metric) \
|
self.result_getter = [None] * len(self.metric) \
|
||||||
if isinstance(self.metric, list) \
|
if isinstance(self.metric, list) \
|
||||||
@@ -302,8 +311,8 @@ class DesktopEnv(gym.Env):
|
|||||||
|
|
||||||
self.setup_controller.setup(self.evaluator.get("postconfig", []))
|
self.setup_controller.setup(self.evaluator.get("postconfig", []))
|
||||||
|
|
||||||
if self.metric == "infeasible":
|
if self.evaluator['func'] == "infeasible":
|
||||||
if self.action_history[-1] == "FAIL":
|
if len(self.action_history) > 0 and self.action_history[-1] == "FAIL":
|
||||||
return 1
|
return 1
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -121,3 +121,7 @@ from .vscode import (
|
|||||||
check_json_settings,
|
check_json_settings,
|
||||||
check_json_keybindings
|
check_json_keybindings
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def infeasible():
|
||||||
|
pass
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
"chrome"
|
"chrome"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
"chrome"
|
"chrome"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
"chrome"
|
"chrome"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,10 +21,6 @@
|
|||||||
"gimp"
|
"gimp"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
"gimp"
|
"gimp"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,10 +21,6 @@
|
|||||||
"gimp"
|
"gimp"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
"gimp"
|
"gimp"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
"gimp"
|
"gimp"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,8 +27,6 @@
|
|||||||
"libreoffice_writer"
|
"libreoffice_writer"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -27,10 +27,6 @@
|
|||||||
"os"
|
"os"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,10 +27,6 @@
|
|||||||
"os"
|
"os"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,6 @@
|
|||||||
"os"
|
"os"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,10 +8,6 @@
|
|||||||
"os"
|
"os"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,10 +10,6 @@
|
|||||||
"os"
|
"os"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,10 +43,6 @@
|
|||||||
"thunderbird"
|
"thunderbird"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,6 @@
|
|||||||
"vlc"
|
"vlc"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,6 @@
|
|||||||
"vlc"
|
"vlc"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,6 @@
|
|||||||
"vlc"
|
"vlc"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,10 +36,6 @@
|
|||||||
"vscode"
|
"vscode"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,10 +24,6 @@
|
|||||||
"vscode"
|
"vscode"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,10 +59,6 @@
|
|||||||
"vscode"
|
"vscode"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,10 +24,6 @@
|
|||||||
"vscode"
|
"vscode"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,10 +24,6 @@
|
|||||||
"vscode"
|
"vscode"
|
||||||
],
|
],
|
||||||
"evaluator": {
|
"evaluator": {
|
||||||
"func": "infeasible",
|
"func": "infeasible"
|
||||||
"result": {
|
|
||||||
},
|
|
||||||
"expected": {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user