예제 #1
0
def test_neg_set_ioclass_name(pyocf_ctx):
    """
    Test whether it is possible to add ioclass with invaild name
    :param pyocf_ctx: basic pyocf context fixture
    :return:
    """
    invalid_chars = [
        chr(c) for c in range(256) if chr(c) not in string.printable
    ]
    invalid_chars += [",", '"']

    # Start cache device
    cache_device = Volume(S.from_MiB(30))
    cache = Cache.start_on_device(cache_device,
                                  cache_mode=CacheMode.WT,
                                  cache_line_size=CacheLineSize.LINE_4KiB)

    # Set invalid name and check if failed
    for name in RandomStringGenerator(len_range=Range(0, 1024),
                                      count=10000,
                                      extra_chars=invalid_chars):
        if not any(c for c in invalid_chars if c in name):
            continue
        with pytest.raises(OcfError, match="Error adding partition to cache"):
            cache.configure_partition(part_id=1,
                                      name=name,
                                      max_size=100,
                                      priority=1)
            print(f"\n{name}")
예제 #2
0
def test_neg_set_ioclass_name_len(pyocf_ctx):
    """
    Test whether it is possible to add ioclass with too long name
    :param pyocf_ctx: basic pyocf context fixture
    :return:
    """

    # Start cache device
    cache_device = Volume(S.from_MiB(30))
    cache = Cache.start_on_device(cache_device,
                                  cache_mode=CacheMode.WT,
                                  cache_line_size=CacheLineSize.LINE_4KiB)

    # Set invalid name and check if failed
    for name in RandomStringGenerator(len_range=Range(1025, 4096),
                                      count=10000):
        with pytest.raises(OcfError, match="Error adding partition to cache"):
            cache.configure_partition(part_id=1,
                                      name=name,
                                      max_size=100,
                                      priority=1)
            print(f"\n{name}")
예제 #3
0
@pytest.fixture(params=RandomGenerator(DefaultRanges.UINT64))
def c_uint64_randomize(request):
    return request.param


@pytest.fixture(params=RandomGenerator(DefaultRanges.INT))
def c_int_randomize(request):
    return request.param


@pytest.fixture(params=RandomGenerator(DefaultRanges.INT))
def c_int_sector_randomize(request):
    return request.param // 512 * 512


@pytest.fixture(params=RandomStringGenerator())
def string_randomize(request):
    return request.param


@pytest.fixture(params=RandomGenerator(DefaultRanges.UINT32).exclude_range(
    enum_range(CacheMode)))
def not_cache_mode_randomize(request):
    return request.param


@pytest.fixture(params=RandomGenerator(DefaultRanges.UINT32).exclude_range(
    enum_range(CacheLineSize)))
def not_cache_line_size_randomize(request):
    return request.param