@@ -404,6 +404,80 @@ def test_delete_error(self, mock_docker_client, mock_container):
404404 container .get_container .assert_called_once_with (client = mock_docker_client , id = "job123" )
405405 mock_container .remove .assert_called_once_with (force = True )
406406
407+ @patch ("nemo_run.core.execution.docker.ensure_network" )
408+ def test_run_with_short_container_name (self , mock_ensure_network , mock_docker_client ):
409+ """Test run method with container name <= 32 characters."""
410+ executor = DockerExecutor (container_image = "test:latest" )
411+ executor .experiment_id = "exp123"
412+
413+ container = DockerContainer (
414+ name = "short-name" ,
415+ command = ["python" , "script.py" ],
416+ executor = executor ,
417+ extra_env = {},
418+ )
419+
420+ mock_docker_client .containers .run .return_value = MagicMock ()
421+
422+ container .run (mock_docker_client , "job123" )
423+
424+ # Verify hostname is set to the full name
425+ call_kwargs = mock_docker_client .containers .run .call_args [1 ]
426+ assert call_kwargs ["hostname" ] == "short-name"
427+ assert len (call_kwargs ["hostname" ]) <= 32
428+
429+ @patch ("nemo_run.core.execution.docker.ensure_network" )
430+ def test_run_with_long_container_name (self , mock_ensure_network , mock_docker_client ):
431+ """Test run method with container name > 32 characters."""
432+ executor = DockerExecutor (container_image = "test:latest" )
433+ executor .experiment_id = "exp123"
434+
435+ # Create a name that's longer than 32 characters
436+ long_name = "this-is-a-very-long-container-name-that-exceeds-thirty-two-characters"
437+ assert len (long_name ) > 32
438+
439+ container = DockerContainer (
440+ name = long_name ,
441+ command = ["python" , "script.py" ],
442+ executor = executor ,
443+ extra_env = {},
444+ )
445+
446+ mock_docker_client .containers .run .return_value = MagicMock ()
447+
448+ container .run (mock_docker_client , "job123" )
449+
450+ # Verify hostname is truncated to last 32 characters
451+ call_kwargs = mock_docker_client .containers .run .call_args [1 ]
452+ assert call_kwargs ["hostname" ] == long_name [- 32 :]
453+ assert len (call_kwargs ["hostname" ]) == 32
454+
455+ @patch ("nemo_run.core.execution.docker.ensure_network" )
456+ def test_run_with_exactly_32_char_name (self , mock_ensure_network , mock_docker_client ):
457+ """Test run method with container name exactly 32 characters."""
458+ executor = DockerExecutor (container_image = "test:latest" )
459+ executor .experiment_id = "exp123"
460+
461+ # Create a name that's exactly 32 characters
462+ exact_name = "a" * 32
463+ assert len (exact_name ) == 32
464+
465+ container = DockerContainer (
466+ name = exact_name ,
467+ command = ["python" , "script.py" ],
468+ executor = executor ,
469+ extra_env = {},
470+ )
471+
472+ mock_docker_client .containers .run .return_value = MagicMock ()
473+
474+ container .run (mock_docker_client , "job123" )
475+
476+ # Verify hostname is set to the full name
477+ call_kwargs = mock_docker_client .containers .run .call_args [1 ]
478+ assert call_kwargs ["hostname" ] == exact_name
479+ assert len (call_kwargs ["hostname" ]) == 32
480+
407481
408482class TestDockerJobRequest :
409483 def test_init (self , docker_executor ):
0 commit comments