Esempio n. 1
0
def test_lists():
    sampler = ScenicSampler.fromScenicCode(
        'ego = Object with foo [1, -1, 3.3]', maxIterations=1)
    sample = sampler.nextSample()
    foo = sample.objects.object0.foo
    assert type(foo) is tuple
    assert foo == pytest.approx((1, -1, 3.3))
def main():

    # path = '../Scenic-devel/examples/carla/pedestrian.scenic'
    path = 'fullScenario.scenic'
    sampler = ScenicSampler.fromScenario(path)
    falsifier_params = DotMap(
        n_iters=1,
        save_error_table=True,
        save_safe_table=True,
        error_table_path="failures_file.txt",
    )
    falsifier_params.fal_thres = 4
    # falsifier_params.fal_thres = 7
    server_options = DotMap(maxSteps=800, verbosity=0)
    falsifier = generic_falsifier(sampler=sampler,
                                  falsifier_params=falsifier_params,
                                  server_class=ScenicServer,
                                  server_options=server_options,
                                  monitor=specification_monitor(specification))
    t0 = time.time()
    falsifier.run_falsifier()
    t = time.time() - t0
    print(
        f'Generated {len(falsifier.samples)} samples in {t} seconds with 1 worker'
    )
    print(f'Number of counterexamples: {len(falsifier.error_table.table)}')
Esempio n. 3
0
def test_webots_road(pathToLocalFile):
    path = pathToLocalFile('scenic_road.scenic')
    sampler = ScenicSampler.fromScenario(path)

    for i in range(3):
        sample = sampler.nextSample()
        print(f'Sample #{i}:')
        print(sample)
Esempio n. 4
0
def test_quoted_param():
    sampler = ScenicSampler.fromScenicCode(
        'param "x/y" = (3, 5)\n'
        'ego = Object', maxIterations=1)
    sample = sampler.nextSample()
    v = sampler.paramDictForSample(sample)['x/y']
    assert type(v) is float
    assert 3 <= v <= 5
Esempio n. 5
0
def test_params():
    sampler = ScenicSampler.fromScenicCode('param x = (3, 5)\n'
                                           'ego = Object',
                                           maxIterations=1)
    sample = sampler.nextSample()
    x = sample.params.x
    assert type(x) is float
    assert 3 <= x <= 5
Esempio n. 6
0
def test_objects():
    sampler = ScenicSampler.fromScenicCode('ego = Object at 4 @ 9',
                                           maxIterations=1)
    sample = sampler.nextSample()
    objects = sample.objects
    assert len(objects) == 1
    pos = objects.object0.position
    assert type(pos) is tuple
    assert pos == (4, 9)
Esempio n. 7
0
def test_object_order():
    sampler = ScenicSampler.fromScenicCode(
        'ego = Object at 0 @ 0\n'
        'for i in range(1, 11):\n'
        '    Object at 2*i @ 0',
        maxIterations=1)
    sample = sampler.nextSample()
    objects = sample.objects
    assert len(objects) == 11
    for i, obj in enumerate(objects):
        assert obj.position == pytest.approx((2 * i, 0))
Esempio n. 8
0
def test_driving_dynamic(pathToLocalFile):
    path = pathToLocalFile('scenic_driving.scenic')
    sampler = ScenicSampler.fromScenario(path)
    falsifier_params = DotMap(
        n_iters=3,
        save_error_table=False,
        save_safe_table=False,
    )
    server_options = DotMap(maxSteps=2, verbosity=3)
    falsifier = generic_falsifier(sampler=sampler,
                                  falsifier_params=falsifier_params,
                                  server_class=ScenicServer,
                                  server_options=server_options)
    falsifier.run_falsifier()
Esempio n. 9
0
def test_active_sampling():
    sampler = ScenicSampler.fromScenicCode(
        'from dotmap import DotMap\n'
        'param verifaiSamplerType = "ce"\n'
        'ce_params = DotMap(alpha=0.9)\n'
        'ce_params.cont.buckets = 2\n'
        'param verifaiSamplerParams = ce_params\n'
        'ego = Object at VerifaiRange(-1, 1) @ 0',
        maxIterations=1)

    def f(sample):
        return -1 if sample.objects.object0.position[0] < 0 else 1

    samples = sampleWithFeedback(sampler, 120, f)
    xs = [sample.objects.object0.position[0] for sample in samples]
    assert all(-1 <= x <= 1 for x in xs)
    assert any(x > 0 for x in xs)
    assert 66 <= sum(x < 0 for x in xs[50:])
Esempio n. 10
0
from verifai.samplers.scenic_sampler import ScenicSampler
from dotmap import DotMap
from verifai.falsifier import generic_falsifier

path_to_scenic_file = 'lane_cones.sc'
sampler = ScenicSampler.fromScenario(path_to_scenic_file)

MAX_ITERS = 20
PORT = 8888
MAXREQS = 5
BUFSIZE = 4096

falsifier_params = DotMap()
falsifier_params.port = PORT
falsifier_params.n_iters = MAX_ITERS
falsifier_params.maxreqs = MAXREQS
falsifier_params.bufsize = BUFSIZE
falsifier_params.save_error_table = False
falsifier_params.save_good_samples = False

falsifier = generic_falsifier(sampler=sampler,
                              sampler_type='scenic',
                              falsifier_params=falsifier_params)

falsifier.run_falsifier()

print("Scenic Samples")
for i in falsifier.samples.keys():
    print("Sample: ", i)
    print(falsifier.samples[i])
Esempio n. 11
0
def test_active_save_restore(tmpdir):
    sampler = ScenicSampler.fromScenicCode(
        'param verifaiSamplerType = "halton"\n'
        'ego = Object at VerifaiRange(-1, 1) @ 0',
        maxIterations=1)
    checkSaveRestore(sampler, tmpdir)
Esempio n. 12
0
def test_save_restore(tmpdir):
    sampler = ScenicSampler.fromScenicCode('ego = Object at (-1, 1) @ 0',
                                           maxIterations=1)
    checkSaveRestore(sampler, tmpdir)
Esempio n. 13
0
def test_driving(pathToLocalFile):
    path = pathToLocalFile('scenic_driving.scenic')
    sampler = ScenicSampler.fromScenario(path)
    runSampler(sampler)
Esempio n. 14
0
def test_webots_road(pathToLocalFile):
    path = pathToLocalFile('scenic_road.scenic')
    sampler = ScenicSampler.fromScenario(path)
    runSampler(sampler)