from __future__ import print_function, division, absolute_import

from time import sleep

import pytest
pytest.importorskip('paramiko')

from distributed import Client
from distributed.deploy.ssh import SSHCluster
from distributed.metrics import time
from distributed.utils_test import loop  # noqa: F401


@pytest.mark.avoid_travis
def test_cluster(loop):
    with SSHCluster(scheduler_addr='127.0.0.1',
                    scheduler_port=7437,
                    worker_addrs=['127.0.0.1', '127.0.0.1']) as c:
        with Client(c, loop=loop) as e:
            start = time()
            while len(e.ncores()) != 2:
                sleep(0.01)
                assert time() < start + 5

            c.add_worker('127.0.0.1')

            start = time()
            while len(e.ncores()) != 3:
                sleep(0.01)
                assert time() < start + 5
