def test_wrapped_set_benchmark(env: LlvmEnv, wrapper_type):
    """Test that the benchmark attribute can be set on wrapped classes."""
    class MyWrapper(wrapper_type):
        def observation(self, observation):
            return observation  # pass thru

    env = MyWrapper(env)

    # Set the benchmark attribute and check that it propagates.
    env.benchmark = "benchmark://cbench-v1/dijkstra"
    env.reset()
    assert env.benchmark == "benchmark://cbench-v1/dijkstra"

    # Repeat again for a different benchmark.
    env.benchmark = "benchmark://cbench-v1/crc32"
    env.reset()
    assert env.benchmark == "benchmark://cbench-v1/crc32"
Exemplo n.º 2
0
def test_unset_forced_benchmark(env: LlvmEnv):
    """Test that setting benchmark "unsets" the previous benchmark."""
    env.reset(benchmark="benchmark://cbench-v1/dijkstra")

    with pytest.warns(
        UserWarning,
        match=r"Changing the benchmark has no effect until reset\(\) is called",
    ):
        env.benchmark = "benchmark://cbench-v1/crc32"
    env.reset()
    assert env.benchmark == "benchmark://cbench-v1/crc32"
Exemplo n.º 3
0
def test_wrapped_set_benchmark(env: LlvmEnv, wrapper_type):
    """Test that the benchmark attribute can be set on wrapped classes."""
    class MyWrapper(wrapper_type):
        def convert_observation(self, observation):
            return observation  # pass thru

    env = MyWrapper(env)

    # Set the benchmark attribute and check that it propagates.
    env.benchmark = "benchmark://cbench-v1/dijkstra"
    env.reset()
    assert env.benchmark == "benchmark://cbench-v1/dijkstra"

    # Repeat again for a different benchmark.
    with warns(
            UserWarning,
            match=
            r"Changing the benchmark has no effect until reset\(\) is called",
    ):
        env.benchmark = "benchmark://cbench-v1/crc32"
    env.reset()
    assert env.benchmark == "benchmark://cbench-v1/crc32"
Exemplo n.º 4
0
def test_change_benchmark_mid_episode(env: LlvmEnv):
    """Test that changing the benchmark while in an episode has no effect until
    the next call to reset()."""
    env.reset(benchmark="benchmark://cbench-v1/crc32")
    assert env.benchmark == "benchmark://cbench-v1/crc32"
    with pytest.warns(
        UserWarning,
        match=r"Changing the benchmark has no effect until reset\(\) is called",
    ):
        env.benchmark = "benchmark://cbench-v1/dijkstra"
    assert env.benchmark == "benchmark://cbench-v1/crc32"
    env.reset()
    assert env.benchmark == "benchmark://cbench-v1/dijkstra"
Exemplo n.º 5
0
def test_benchmark_setter(env: LlvmEnv):
    env.benchmark = "benchmark://cbench-v1/dijkstra"
    assert env.benchmark != "benchmark://cbench-v1/dijkstra"
    env.reset()
    assert env.benchmark == "benchmark://cbench-v1/dijkstra"
Exemplo n.º 6
0
def test_set_benchmark_invalid_type(env: LlvmEnv):
    with pytest.raises(TypeError) as ctx:
        env.benchmark = 10
    assert str(ctx.value) == "Expected a Benchmark or str, received: 'int'"