Ejemplo n.º 1
0
    def test_numa_req_less_mem_than_available(self, mock_execlp):
        argv = [
            "docker",
            "run",
            "--env=PIN_TO_NUMA_NODE=1",
            "--env=MARATHON_APP_RESOURCE_CPUS=2",
            "--env=MARATHON_APP_RESOURCE_MEM=20000.0",
        ]
        with self._patch_docker_wrapper_dependencies(
            is_numa_enabled=True,
            node_mem=32000,
            cpu_info=[
                "physical id    : 0",
                "physical id    : 1",
                "physical id    : 0",
                "physical id    : 1",
            ],
        ):
            docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                "docker",
                "docker",
                "run",
                "--cpuset-mems=1",
                "--cpuset-cpus=1,3",
                "--env=PIN_TO_NUMA_NODE=1",
                "--env=MARATHON_APP_RESOURCE_CPUS=2",
                "--env=MARATHON_APP_RESOURCE_MEM=20000.0",
            )
        ]
Ejemplo n.º 2
0
    def test_numa_req_exact_amount_of_cores(self, mock_execlp):
        argv = [
            'docker',
            'run',
            '--env=PIN_TO_NUMA_NODE=1',
            '--env=MARATHON_APP_RESOURCE_CPUS=2',
        ]
        with self._patch_docker_wrapper_dependencies(
                is_numa_enabled=True,
                node_mem=32000,
                cpu_info=[
                    'physical id    : 0',
                    'physical id    : 1',
                    'physical id    : 0',
                    'physical id    : 1',
                ],
        ):
            docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                'docker',
                'docker',
                'run',
                '--cpuset-mems=1',
                '--cpuset-cpus=1,3',
                '--env=PIN_TO_NUMA_NODE=1',
                '--env=MARATHON_APP_RESOURCE_CPUS=2',
            )
        ]
Ejemplo n.º 3
0
    def test_cpuset_already_set(self, mock_execlp):
        argv = [
            "docker",
            "run",
            "--cpuset-cpus=0,2",
            "--env=PIN_TO_NUMA_NODE=1",
            "--env=MARATHON_APP_RESOURCE_CPUS=1.5",
        ]
        with self._patch_docker_wrapper_dependencies(
            is_numa_enabled=True,
            node_mem=32000,
            cpu_info=[
                "physical id    : 0",
                "physical id    : 1",
                "physical id    : 0",
                "physical id    : 1",
            ],
        ):
            docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                "docker",
                "docker",
                "run",
                "--cpuset-cpus=0,2",
                "--env=PIN_TO_NUMA_NODE=1",
                "--env=MARATHON_APP_RESOURCE_CPUS=1.5",
            )
        ]
Ejemplo n.º 4
0
 def test_not_run(self, mock_execlp):
     argv = ["docker", "ps", "--env=MESOS_TASK_ID=my-mesos-task-id"]
     docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call("docker", "docker", "ps",
                   "--env=MESOS_TASK_ID=my-mesos-task-id")
     ]
Ejemplo n.º 5
0
    def test_numa_too_many_cores_requested(self, mock_execlp):
        argv = [
            'docker',
            'run',
            '--env=PIN_TO_NUMA_NODE=1',
            '--env=MARATHON_APP_RESOURCE_CPUS=3.0',
        ]
        with self._patch_docker_wrapper_dependencies(
                is_numa_enabled=True,
                node_mem=32000,
                cpu_info=[
                    'physical id    : 0',
                    'physical id    : 1',
                    'physical id    : 0',
                    'physical id    : 1',
                ],
        ):
            docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                'docker',
                'docker',
                'run',
                '--env=PIN_TO_NUMA_NODE=1',
                '--env=MARATHON_APP_RESOURCE_CPUS=3.0',
            )
        ]
Ejemplo n.º 6
0
 def test_numa_string_value(self, mock_execlp):
     argv = ["docker", "run", '--env=PIN_TO_NUMA_NODE="true"']
     docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call("docker", "docker", "run",
                   '--env=PIN_TO_NUMA_NODE="true"')
     ]
Ejemplo n.º 7
0
    def test_prepare_new_container_error(
        self,
        mock_prepare_new_container,
        mock_firewall_flock,
        capsys,
        mock_mac_address,
        mock_execlp,
        mock_firewall_env_args,
    ):
        argv = [
            'docker',
            'run',
        ] + mock_firewall_env_args
        docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                'docker',
                'docker',
                'run',
                '--mac-address=00:00:00:00:00:00',
                *mock_firewall_env_args,
            )
        ]
        _, err = capsys.readouterr()
        assert err.startswith('Unable to add firewall rules: Oh noes')
Ejemplo n.º 8
0
    def test_numa_enabled_unknown_cpu_requirement_skips_cpusets(
            self, mock_execlp):
        argv = [
            'docker',
            'run',
            '--env=PIN_TO_NUMA_NODE=1',
        ]
        with self._patch_docker_wrapper_dependencies(
                is_numa_enabled=True,
                node_mem=32000,
                cpu_info=[
                    'physical id    : 0',
                    'physical id    : 1',
                    'physical id    : 0',
                    'physical id    : 1',
                ],
        ):
            docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                'docker',
                'docker',
                'run',
                '--cpuset-mems=1',
                '--cpuset-cpus=1,3',
                '--env=PIN_TO_NUMA_NODE=1',
            )
        ]
Ejemplo n.º 9
0
    def test_numa_wrong_cpu(self, mock_execlp):
        argv = [
            'docker',
            'run',
            '--env=PIN_TO_NUMA_NODE=2',
        ]
        with self._patch_docker_wrapper_dependencies(
                is_numa_enabled=True,
                node_mem=32000,
                cpu_info=[
                    'physical id    : 0',
                    'physical id    : 1',
                    'physical id    : 0',
                    'physical id    : 1',
                ],
        ):
            docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                'docker',
                'docker',
                'run',
                '--env=PIN_TO_NUMA_NODE=2',
            )
        ]
Ejemplo n.º 10
0
    def test_mac_address(
        self,
        mock_prepare_new_container,
        mock_firewall_flock,
        mock_mac_address,
        mock_execlp,
        mock_firewall_env_args,
    ):
        argv = ["docker", "run"] + mock_firewall_env_args
        docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                "docker",
                "docker",
                "run",
                "--mac-address=00:00:00:00:00:00",
                *mock_firewall_env_args,
            )
        ]

        assert mock_firewall_flock.return_value.__enter__.called is True

        assert mock_prepare_new_container.mock_calls == [
            mock.call(
                docker_wrapper.DEFAULT_SOA_DIR,
                docker_wrapper.DEFAULT_SYNAPSE_SERVICE_DIR,
                "myservice",
                "myinstance",
                "00:00:00:00:00:00",
            )
        ]
Ejemplo n.º 11
0
    def test_mac_address_not_run(self, mock_mac_address, mock_execlp,
                                 mock_firewall_env_args):
        argv = ["docker", "inspect"] + mock_firewall_env_args
        docker_wrapper.main(argv)

        assert mock_mac_address.call_count == 0
        assert mock_execlp.mock_calls == [
            mock.call("docker", "docker", "inspect", *mock_firewall_env_args)
        ]
Ejemplo n.º 12
0
 def test_env_not_present(self, mock_execlp):
     argv = [
         'docker',
         'run',
         'foobar',
     ]
     docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call('docker', 'docker', 'run', 'foobar')
     ]
Ejemplo n.º 13
0
 def test_numa_bogus_node(self, mock_execlp):
     argv = [
         'docker',
         'run',
         '--env=PIN_TO_NUMA_NODE=True',
     ]
     docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call('docker', 'docker', 'run', '--env=PIN_TO_NUMA_NODE=True')
     ]
Ejemplo n.º 14
0
 def test_not_run(self, mock_execlp):
     argv = [
         'docker',
         'ps',
         '--env=MESOS_TASK_ID=my-mesos-task-id',
     ]
     docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call('docker', 'docker', 'ps',
                   '--env=MESOS_TASK_ID=my-mesos-task-id')
     ]
Ejemplo n.º 15
0
 def test_numa_string_value(self, mock_execlp):
     argv = [
         'docker',
         'run',
         '--env=PIN_TO_NUMA_NODE="true"',
     ]
     docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call('docker', 'docker', 'run',
                   '--env=PIN_TO_NUMA_NODE="true"')
     ]
Ejemplo n.º 16
0
    def test_numa_single_cpu_doesnt_bother_with_cpusets(self, mock_execlp):
        argv = ["docker", "run", "--env=PIN_TO_NUMA_NODE=1"]
        with self._patch_docker_wrapper_dependencies(
            is_numa_enabled=True,
            node_mem=32000,
            cpu_info=["physical id    : 0", "physical id    : 0"],
        ):
            docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call("docker", "docker", "run", "--env=PIN_TO_NUMA_NODE=1")
        ]
Ejemplo n.º 17
0
    def test_mac_address_not_run(self, mock_mac_address, mock_execlp, mock_firewall_env_args):
        argv = [
            'docker',
            'inspect',
        ] + mock_firewall_env_args
        docker_wrapper.main(argv)

        assert mock_mac_address.call_count == 0
        assert mock_execlp.mock_calls == [mock.call(
            'docker',
            'docker',
            'inspect',
            *mock_firewall_env_args,
        )]
Ejemplo n.º 18
0
 def test_already_has_hostname(self, mock_execlp):
     argv = [
         'docker',
         'run',
         '--env=MESOS_TASK_ID=my-mesos-task-id',
         '--hostname=somehostname',
     ]
     with mock.patch.object(socket, 'getfqdn', return_value='myhostname'):
         docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call('docker', 'docker', 'run',
                   '--env=MESOS_TASK_ID=my-mesos-task-id',
                   '--hostname=somehostname')
     ]
Ejemplo n.º 19
0
    def test_mac_address_already_set(self, mock_mac_address, mock_execlp,
                                     mock_firewall_env_args):
        argv = [
            'docker',
            'run',
            '--mac-address=12:34:56:78:90:ab',
        ] + mock_firewall_env_args
        docker_wrapper.main(argv)

        assert mock_mac_address.call_count == 0
        assert mock_execlp.mock_calls == [
            mock.call('docker', 'docker', 'run',
                      '--mac-address=12:34:56:78:90:ab',
                      *mock_firewall_env_args)
        ]
Ejemplo n.º 20
0
 def test_chronos(self, mock_execlp):
     argv = [
         'docker',
         'run',
         '--env=mesos_task_id=ct:1487804100000:0:thirdparty_feeds thirdparty_feeds-cloudflare-all:',
     ]
     with mock.patch.object(socket, 'getfqdn', return_value='myhostname'):
         docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call(
             'docker', 'docker', 'run',
             '--hostname=myhostname-ct-1487804100000-0-thirdparty-feeds-thirdparty-feeds',
             '--env=mesos_task_id=ct:1487804100000:0:thirdparty_feeds thirdparty_feeds-cloudflare-all:'
         )
     ]
Ejemplo n.º 21
0
 def test_marathon(self, mock_execlp):
     argv = [
         'docker',
         'run',
         '--env=MESOS_TASK_ID=paasta--canary.main.git332d4a22.config458863b1.0126a188-f944-11e6-bdfb-12abac3adf8c',
     ]
     with mock.patch.object(socket, 'getfqdn', return_value='myhostname'):
         docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call(
             'docker', 'docker', 'run',
             '--hostname=myhostname-0126a188-f944-11e6-bdfb-12abac3adf8c',
             '--env=MESOS_TASK_ID=paasta--canary.main.git332d4a22.config458863b1.0126a188-f944-11e6-bdfb-12abac3adf8c'
         )
     ]
Ejemplo n.º 22
0
    def test_mac_address_no_lockdir(
        self, capsys, mock_execlp, tmpdir, mock_firewall_env_args
    ):
        nonexistent = tmpdir.join("nonexistent")
        with mock.patch.object(docker_wrapper, "LOCK_DIRECTORY", str(nonexistent)):
            argv = ["docker", "run"] + mock_firewall_env_args
            docker_wrapper.main(argv)

            assert mock_execlp.mock_calls == [
                mock.call("docker", "docker", "run", *mock_firewall_env_args)
            ]
            _, err = capsys.readouterr()
            assert err.startswith(
                "Unable to add mac address: [Errno 2] No such file or directory"
            )
Ejemplo n.º 23
0
    def test_mac_address(self, mock_mac_address, mock_execlp):
        argv = [
            'docker',
            'run',
            '--env=PAASTA_FIREWALL=1',
        ]
        docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call(
                'docker',
                'docker',
                'run',
                '--mac-address=00:00:00:00:00:00',
                '--env=PAASTA_FIREWALL=1',
            )
        ]
Ejemplo n.º 24
0
    def test_mac_address_not_run(self, mock_mac_address, mock_execlp):
        argv = [
            'docker',
            'inspect',
            '--env=PAASTA_FIREWALL=1',
        ]
        docker_wrapper.main(argv)

        assert mock_mac_address.call_count == 0
        assert mock_execlp.mock_calls == [
            mock.call(
                'docker',
                'docker',
                'inspect',
                '--env=PAASTA_FIREWALL=1',
            )
        ]
Ejemplo n.º 25
0
 def test_marathon(self, mock_execlp):
     argv = [
         "docker",
         "run",
         "--env=MESOS_TASK_ID=paasta--canary.main.git332d4a22.config458863b1.0126a188-f944-11e6-bdfb-12abac3adf8c",
     ]
     with mock.patch.object(socket, "getfqdn", return_value="myhostname"):
         docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call(
             "docker",
             "docker",
             "run",
             "--hostname=myhostname-0126a188-f944-11e6-bdfb-12abac3adf8c",
             "--env=MESOS_TASK_ID=paasta--canary.main.git332d4a22.config458863b1.0126a188-f944-11e6-bdfb-12abac3adf8c",
         )
     ]
Ejemplo n.º 26
0
 def test_chronos(self, mock_execlp):
     argv = [
         "docker",
         "run",
         "--env=mesos_task_id=ct:1487804100000:0:thirdparty_feeds thirdparty_feeds-cloudflare-all:",
     ]
     with mock.patch.object(socket, "getfqdn", return_value="myhostname"):
         docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call(
             "docker",
             "docker",
             "run",
             "--hostname=myhostname-ct-1487804100000-0-thirdparty-feeds-thirdparty-fe",
             "--env=mesos_task_id=ct:1487804100000:0:thirdparty_feeds thirdparty_feeds-cloudflare-all:",
         )
     ]
Ejemplo n.º 27
0
    def test_numa_wrong_cpu(self, mock_execlp):
        argv = ["docker", "run", "--env=PIN_TO_NUMA_NODE=2"]
        with self._patch_docker_wrapper_dependencies(
            is_numa_enabled=True,
            node_mem=32000,
            cpu_info=[
                "physical id    : 0",
                "physical id    : 1",
                "physical id    : 0",
                "physical id    : 1",
            ],
        ):
            docker_wrapper.main(argv)

        assert mock_execlp.mock_calls == [
            mock.call("docker", "docker", "run", "--env=PIN_TO_NUMA_NODE=2")
        ]
Ejemplo n.º 28
0
    def test_mac_address_no_lockdir(self, capsys, mock_execlp, tmpdir, mock_firewall_env_args):
        nonexistent = tmpdir.join('nonexistent')
        with mock.patch.object(docker_wrapper, 'LOCK_DIRECTORY', str(nonexistent)):
            argv = [
                'docker',
                'run',
            ] + mock_firewall_env_args
            docker_wrapper.main(argv)

            assert mock_execlp.mock_calls == [mock.call(
                'docker',
                'docker',
                'run',
                *mock_firewall_env_args,
            )]
            _, err = capsys.readouterr()
            assert err.startswith('Unable to add mac address: [Errno 2] No such file or directory')
Ejemplo n.º 29
0
 def test_already_has_hostname(self, mock_execlp):
     argv = [
         "docker",
         "run",
         "--env=MESOS_TASK_ID=my-mesos-task-id",
         "--hostname=somehostname",
     ]
     with mock.patch.object(socket, "getfqdn", return_value="myhostname"):
         docker_wrapper.main(argv)
     assert mock_execlp.mock_calls == [
         mock.call(
             "docker",
             "docker",
             "run",
             "--env=MESOS_TASK_ID=my-mesos-task-id",
             "--hostname=somehostname",
         )
     ]
Ejemplo n.º 30
0
    def test_mac_address_already_set(self, mock_mac_address, mock_execlp,
                                     mock_firewall_env_args):
        argv = [
            "docker",
            "run",
            "--mac-address=12:34:56:78:90:ab",
        ] + mock_firewall_env_args
        docker_wrapper.main(argv)

        assert mock_mac_address.call_count == 0
        assert mock_execlp.mock_calls == [
            mock.call(
                "docker",
                "docker",
                "run",
                "--mac-address=12:34:56:78:90:ab",
                *mock_firewall_env_args,
            )
        ]