def testFillEdgeLegacyConfigs(self): # Test edge cases: legacy configs which specify workers but not head # or vice-versa. no_head = load_test_config("test_no_head.yaml") aws_defaults = _get_default_config(no_head["provider"]) head_prepared = prepare_config(no_head) assert head_prepared["available_node_types"][ "ray-legacy-head-node-type"]["node_config"] ==\ aws_defaults["available_node_types"][ "ray.head.default"]["node_config"] assert head_prepared["head_node"] == {} # Custom worker config preserved node_types = head_prepared["available_node_types"] worker_type = node_types["ray-legacy-worker-node-type"] assert worker_type["node_config"] == head_prepared["worker_nodes"] == { "foo": "bar" } no_workers = load_test_config("test_no_workers.yaml") workers_prepared = prepare_config(no_workers) assert workers_prepared["available_node_types"][ "ray-legacy-worker-node-type"]["node_config"] ==\ aws_defaults["available_node_types"][ "ray.worker.default"]["node_config"] assert workers_prepared["worker_nodes"] == {} # Custom head config preserved node_types = workers_prepared["available_node_types"] head_type = node_types["ray-legacy-head-node-type"] assert head_type["node_config"] == workers_prepared["head_node"] == { "baz": "qux" }
def testMaxWorkerDefault(self): # Load config, call prepare config, check that default max_workers # is filled correctly for node types that don't specify it. # Check that max_workers is untouched for node types # that do specify it. config = load_test_config("test_multi_node.yaml") node_types = config["available_node_types"] # Max workers initially absent for this node type. assert "max_workers" not in node_types["worker_node_max_unspecified"] # Max workers specified for this node type. assert "max_workers" in node_types["worker_node_max_specified"] prepared_config = prepare_config(config) prepared_node_types = prepared_config["available_node_types"] # Max workers unchanged. assert node_types["worker_node_max_specified"]["max_workers"] ==\ prepared_node_types["worker_node_max_specified"][ "max_workers"] == 3 # Max workers auto-filled with specified cluster-wide value of 5. assert config["max_workers"] ==\ prepared_node_types["worker_node_max_unspecified"]["max_workers"]\ == 5 # Repeat with a config that doesn't specify global max workers. # Default value of 2 should be pulled in for global max workers. config = load_test_config("test_multi_node.yaml") # Delete global max_workers so it can be autofilled with default of 2. del config["max_workers"] node_types = config["available_node_types"] # Max workers initially absent for this node type. assert "max_workers" not in node_types["worker_node_max_unspecified"] # Max workers specified for this node type. assert "max_workers" in node_types["worker_node_max_specified"] prepared_config = prepare_config(config) prepared_node_types = prepared_config["available_node_types"] # Max workers unchanged. assert node_types["worker_node_max_specified"]["max_workers"] ==\ prepared_node_types["worker_node_max_specified"][ "max_workers"] == 3 # Max workers auto-filled with default cluster-wide value of 2. assert prepared_config["max_workers"] ==\ prepared_node_types["worker_node_max_unspecified"]["max_workers"]\ == 2