mirror of
https://github.com/vale981/ray
synced 2025-03-08 11:31:40 -05:00
[Autoscaler] Add tests around docker run options (#14713)
This commit is contained in:
parent
c781197755
commit
10250d737f
2 changed files with 23 additions and 8 deletions
|
@ -444,7 +444,12 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
|
|
||||||
@unittest.skipIf(sys.platform == "win32", "Failing on Windows.")
|
@unittest.skipIf(sys.platform == "win32", "Failing on Windows.")
|
||||||
def testGetOrCreateHeadNode(self):
|
def testGetOrCreateHeadNode(self):
|
||||||
config_path = self.write_config(SMALL_CLUSTER)
|
config = copy.deepcopy(SMALL_CLUSTER)
|
||||||
|
head_run_option = "--kernel-memory=10g"
|
||||||
|
standard_run_option = "--memory-swap=5g"
|
||||||
|
config["docker"]["head_run_options"] = [head_run_option]
|
||||||
|
config["docker"]["run_options"] = [standard_run_option]
|
||||||
|
config_path = self.write_config(config)
|
||||||
self.provider = MockProvider()
|
self.provider = MockProvider()
|
||||||
runner = MockProcessRunner()
|
runner = MockProcessRunner()
|
||||||
runner.respond_to_call("json .Mounts", ["[]"])
|
runner.respond_to_call("json .Mounts", ["[]"])
|
||||||
|
@ -477,7 +482,7 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
|
|
||||||
self.provider.create_node = _create_node
|
self.provider.create_node = _create_node
|
||||||
commands.get_or_create_head_node(
|
commands.get_or_create_head_node(
|
||||||
SMALL_CLUSTER,
|
config,
|
||||||
printable_config_file=config_path,
|
printable_config_file=config_path,
|
||||||
no_restart=False,
|
no_restart=False,
|
||||||
restart_only=False,
|
restart_only=False,
|
||||||
|
@ -491,6 +496,8 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
runner.assert_has_call("1.2.3.4", "start_ray_head")
|
runner.assert_has_call("1.2.3.4", "start_ray_head")
|
||||||
self.assertEqual(self.provider.mock_nodes[0].node_type, None)
|
self.assertEqual(self.provider.mock_nodes[0].node_type, None)
|
||||||
runner.assert_has_call("1.2.3.4", pattern="docker run")
|
runner.assert_has_call("1.2.3.4", pattern="docker run")
|
||||||
|
runner.assert_has_call("1.2.3.4", pattern=head_run_option)
|
||||||
|
runner.assert_has_call("1.2.3.4", pattern=standard_run_option)
|
||||||
|
|
||||||
docker_mount_prefix = get_docker_host_mount_location(
|
docker_mount_prefix = get_docker_host_mount_location(
|
||||||
SMALL_CLUSTER["cluster_name"])
|
SMALL_CLUSTER["cluster_name"])
|
||||||
|
@ -503,6 +510,7 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
pattern_to_assert = \
|
pattern_to_assert = \
|
||||||
f"docker cp {docker_mount_prefix}/~/ray_bootstrap_config.yaml"
|
f"docker cp {docker_mount_prefix}/~/ray_bootstrap_config.yaml"
|
||||||
runner.assert_has_call("1.2.3.4", pattern=pattern_to_assert)
|
runner.assert_has_call("1.2.3.4", pattern=pattern_to_assert)
|
||||||
|
return config
|
||||||
|
|
||||||
@unittest.skipIf(sys.platform == "win32", "Failing on Windows.")
|
@unittest.skipIf(sys.platform == "win32", "Failing on Windows.")
|
||||||
def testGetOrCreateHeadNodePodman(self):
|
def testGetOrCreateHeadNodePodman(self):
|
||||||
|
@ -553,12 +561,12 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
|
|
||||||
@unittest.skipIf(sys.platform == "win32", "Failing on Windows.")
|
@unittest.skipIf(sys.platform == "win32", "Failing on Windows.")
|
||||||
def testGetOrCreateHeadNodeFromStopped(self):
|
def testGetOrCreateHeadNodeFromStopped(self):
|
||||||
self.testGetOrCreateHeadNode()
|
config = self.testGetOrCreateHeadNode()
|
||||||
self.provider.cache_stopped = True
|
self.provider.cache_stopped = True
|
||||||
existing_nodes = self.provider.non_terminated_nodes({})
|
existing_nodes = self.provider.non_terminated_nodes({})
|
||||||
assert len(existing_nodes) == 1
|
assert len(existing_nodes) == 1
|
||||||
self.provider.terminate_node(existing_nodes[0])
|
self.provider.terminate_node(existing_nodes[0])
|
||||||
config_path = self.write_config(SMALL_CLUSTER)
|
config_path = self.write_config(config)
|
||||||
runner = MockProcessRunner()
|
runner = MockProcessRunner()
|
||||||
runner.respond_to_call("json .Mounts", ["[]"])
|
runner.respond_to_call("json .Mounts", ["[]"])
|
||||||
# Two initial calls to docker cp, + 2 more calls during run_init
|
# Two initial calls to docker cp, + 2 more calls during run_init
|
||||||
|
@ -566,7 +574,7 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
["false", "false", "false", "false"])
|
["false", "false", "false", "false"])
|
||||||
runner.respond_to_call("json .Config.Env", ["[]"])
|
runner.respond_to_call("json .Config.Env", ["[]"])
|
||||||
commands.get_or_create_head_node(
|
commands.get_or_create_head_node(
|
||||||
SMALL_CLUSTER,
|
config,
|
||||||
printable_config_file=config_path,
|
printable_config_file=config_path,
|
||||||
no_restart=False,
|
no_restart=False,
|
||||||
restart_only=False,
|
restart_only=False,
|
||||||
|
@ -619,12 +627,12 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
assert first_rsync < first_cp
|
assert first_rsync < first_cp
|
||||||
|
|
||||||
def testGetOrCreateHeadNodeFromStoppedRestartOnly(self):
|
def testGetOrCreateHeadNodeFromStoppedRestartOnly(self):
|
||||||
self.testGetOrCreateHeadNode()
|
config = self.testGetOrCreateHeadNode()
|
||||||
self.provider.cache_stopped = True
|
self.provider.cache_stopped = True
|
||||||
existing_nodes = self.provider.non_terminated_nodes({})
|
existing_nodes = self.provider.non_terminated_nodes({})
|
||||||
assert len(existing_nodes) == 1
|
assert len(existing_nodes) == 1
|
||||||
self.provider.terminate_node(existing_nodes[0])
|
self.provider.terminate_node(existing_nodes[0])
|
||||||
config_path = self.write_config(SMALL_CLUSTER)
|
config_path = self.write_config(config)
|
||||||
runner = MockProcessRunner()
|
runner = MockProcessRunner()
|
||||||
runner.respond_to_call("json .Mounts", ["[]"])
|
runner.respond_to_call("json .Mounts", ["[]"])
|
||||||
# Two initial calls to docker cp, + 2 more calls during run_init
|
# Two initial calls to docker cp, + 2 more calls during run_init
|
||||||
|
@ -632,7 +640,7 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
["false", "false", "false", "false"])
|
["false", "false", "false", "false"])
|
||||||
runner.respond_to_call("json .Config.Env", ["[]"])
|
runner.respond_to_call("json .Config.Env", ["[]"])
|
||||||
commands.get_or_create_head_node(
|
commands.get_or_create_head_node(
|
||||||
SMALL_CLUSTER,
|
config,
|
||||||
printable_config_file=config_path,
|
printable_config_file=config_path,
|
||||||
no_restart=False,
|
no_restart=False,
|
||||||
restart_only=True,
|
restart_only=True,
|
||||||
|
|
|
@ -1934,6 +1934,7 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
config["available_node_types"]["p2.xlarge"]["docker"] = {
|
config["available_node_types"]["p2.xlarge"]["docker"] = {
|
||||||
"worker_image": "p2x_image:nightly"
|
"worker_image": "p2x_image:nightly"
|
||||||
}
|
}
|
||||||
|
config["docker"]["run_options"] = ["head-and-worker-run-options"]
|
||||||
config["docker"]["worker_run_options"] = ["standard-run-options"]
|
config["docker"]["worker_run_options"] = ["standard-run-options"]
|
||||||
config["docker"]["image"] = "default-image:nightly"
|
config["docker"]["image"] = "default-image:nightly"
|
||||||
config["docker"]["worker_image"] = "default-image:nightly"
|
config["docker"]["worker_image"] = "default-image:nightly"
|
||||||
|
@ -1988,6 +1989,8 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
sleep(0.1)
|
sleep(0.1)
|
||||||
runner.assert_has_call(self.provider.mock_nodes[2].internal_ip,
|
runner.assert_has_call(self.provider.mock_nodes[2].internal_ip,
|
||||||
"p2.8x-run-options")
|
"p2.8x-run-options")
|
||||||
|
runner.assert_has_call(self.provider.mock_nodes[2].internal_ip,
|
||||||
|
"head-and-worker-run-options")
|
||||||
runner.assert_has_call(self.provider.mock_nodes[2].internal_ip,
|
runner.assert_has_call(self.provider.mock_nodes[2].internal_ip,
|
||||||
"p2.8x_image:latest")
|
"p2.8x_image:latest")
|
||||||
runner.assert_not_has_call(self.provider.mock_nodes[2].internal_ip,
|
runner.assert_not_has_call(self.provider.mock_nodes[2].internal_ip,
|
||||||
|
@ -1999,6 +2002,8 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
"p2x_image:nightly")
|
"p2x_image:nightly")
|
||||||
runner.assert_has_call(self.provider.mock_nodes[3].internal_ip,
|
runner.assert_has_call(self.provider.mock_nodes[3].internal_ip,
|
||||||
"standard-run-options")
|
"standard-run-options")
|
||||||
|
runner.assert_has_call(self.provider.mock_nodes[3].internal_ip,
|
||||||
|
"head-and-worker-run-options")
|
||||||
runner.assert_not_has_call(self.provider.mock_nodes[3].internal_ip,
|
runner.assert_not_has_call(self.provider.mock_nodes[3].internal_ip,
|
||||||
"p2.8x-run-options")
|
"p2.8x-run-options")
|
||||||
|
|
||||||
|
@ -2006,6 +2011,8 @@ class AutoscalingTest(unittest.TestCase):
|
||||||
"default-image:nightly")
|
"default-image:nightly")
|
||||||
runner.assert_has_call(self.provider.mock_nodes[4].internal_ip,
|
runner.assert_has_call(self.provider.mock_nodes[4].internal_ip,
|
||||||
"standard-run-options")
|
"standard-run-options")
|
||||||
|
runner.assert_has_call(self.provider.mock_nodes[4].internal_ip,
|
||||||
|
"head-and-worker-run-options")
|
||||||
runner.assert_not_has_call(self.provider.mock_nodes[4].internal_ip,
|
runner.assert_not_has_call(self.provider.mock_nodes[4].internal_ip,
|
||||||
"p2.8x-run-options")
|
"p2.8x-run-options")
|
||||||
runner.assert_not_has_call(self.provider.mock_nodes[4].internal_ip,
|
runner.assert_not_has_call(self.provider.mock_nodes[4].internal_ip,
|
||||||
|
|
Loading…
Add table
Reference in a new issue