示例#1
0
def test_no_default_session():
    raw = np.random.RandomState(0).rand(10, 10)
    a = mt.tensor(raw, chunk_size=5)
    b = a + 1

    with pytest.warns(Warning):
        execute(b, show_progress=False)

    np.testing.assert_array_equal(fetch(b), raw + 1)
    assert get_default_async_session() is not None
    stop_server()
    assert get_default_async_session() is None
示例#2
0
async def test_rerun_subtask(fault_cluster, fault_config):
    fault_type, fault_count, expect_raises = fault_config
    name = await create_fault_injection_manager(
        session_id=fault_cluster.session.session_id,
        address=fault_cluster.session.address,
        fault_count=fault_count,
        fault_type=fault_type)
    extra_config = {ExtraConfigKey.FAULT_INJECTION_MANAGER_NAME: name}
    session = get_default_async_session()

    raw = np.random.RandomState(0).rand(10, 10)
    a = mt.tensor(raw, chunk_size=5)
    b = a + 1

    info = await session.execute(b, extra_config=extra_config)
    await info
    assert info.result() is None
    assert info.exception() is None

    r = await session.fetch(b)
    np.testing.assert_array_equal(r, raw + 1)

    fault_injection_manager = await session.get_remote_object(
        fault_cluster.session.session_id, name)
    await fault_injection_manager.set_fault_count(
        {FaultPosition.ON_EXECUTE_OPERAND: 1})

    # the extra config overwrites the default config.
    extra_config['subtask_max_retries'] = 0
    info = await session.execute(b, extra_config=extra_config)
    with expect_raises:
        await info
示例#3
0
def test_sync_execute():
    session = new_session(n_cpu=2, web=False, use_uvloop=False)

    # web not started
    assert session._session.client.web_address is None
    assert session.get_web_endpoint() is None

    with session:
        raw = np.random.RandomState(0).rand(10, 5)
        a = mt.tensor(raw, chunk_size=5).sum(axis=1)
        b = a.execute(show_progress=False)
        assert b is a
        result = a.fetch()
        np.testing.assert_array_equal(result, raw.sum(axis=1))

        c = b + 1
        c.execute(show_progress=False)
        result = c.fetch()
        np.testing.assert_array_equal(result, raw.sum(axis=1) + 1)

        c = mt.tensor(raw, chunk_size=5).sum()
        d = session.execute(c)
        assert d is c
        assert abs(session.fetch(d) - raw.sum()) < 0.001

        with tempfile.TemporaryDirectory() as tempdir:
            file_path = os.path.join(tempdir, 'test.csv')
            pdf = pd.DataFrame(np.random.RandomState(0).rand(100, 10),
                               columns=[f'col{i}' for i in range(10)])
            pdf.to_csv(file_path, index=False)

            df = md.read_csv(file_path,
                             chunk_bytes=os.stat(file_path).st_size / 5)
            result = df.sum(axis=1).execute().fetch()
            expected = pd.read_csv(file_path).sum(axis=1)
            pd.testing.assert_series_equal(result, expected)

            df = md.read_csv(file_path,
                             chunk_bytes=os.stat(file_path).st_size / 5)
            result = df.head(10).execute().fetch()
            expected = pd.read_csv(file_path).head(10)
            pd.testing.assert_frame_equal(result, expected)

    for worker_pool in session._session.client._cluster._worker_pools:
        _assert_storage_cleaned(session.session_id,
                                worker_pool.external_address,
                                StorageLevel.MEMORY)

    session.stop_server()
    assert get_default_async_session() is None
示例#4
0
async def test_execute_describe(create_cluster):
    s = np.random.RandomState(0)
    raw = pd.DataFrame(s.rand(100, 4), columns=list('abcd'))
    df = md.DataFrame(raw, chunk_size=30)

    session = get_default_async_session()
    r = df.describe()
    info = await session.execute(r)
    await info
    assert info.result() is None
    assert info.exception() is None
    assert info.progress() == 1
    res = await session.fetch(r)
    pd.testing.assert_frame_equal(res, raw.describe())
示例#5
0
async def test_iterative_tiling(create_cluster):
    session = get_default_async_session()

    raw = np.random.RandomState(0).rand(30, 5)
    raw_df = pd.DataFrame(raw, index=np.arange(1, 31))

    df = md.DataFrame(raw_df, chunk_size=10)
    df = df[df[0] < .7]
    df2 = df.shift(2)

    info = await session.execute(df2)
    await info
    assert info.result() is None
    result = await session.fetch(df2)

    expected = raw_df[raw_df[0] < .7].shift(2)
    pd.testing.assert_frame_equal(result, expected)

    # test meta
    assert df2.index_value.min_val >= 1
    assert df2.index_value.max_val <= 30
示例#6
0
async def test_execute(create_cluster):
    session = get_default_async_session()
    assert session.address is not None
    assert session.session_id is not None

    raw = np.random.RandomState(0).rand(10, 10)
    a = mt.tensor(raw, chunk_size=5)
    b = a + 1

    info = await session.execute(b)
    await info
    assert info.result() is None
    assert info.exception() is None
    assert info.progress() == 1
    np.testing.assert_equal(raw + 1, await session.fetch(b))

    with pytest.raises(ValueError):
        await session.fetch(b + 1)

    with pytest.raises(ValueError):
        await session.fetch(b[b < 0.6])

    del a, b