/VSharp-bench

Primary LanguagePythonApache License 2.0Apache-2.0

V# benchmarks

This repository contains various built .NET projects used for V# symbolic execution engine performance testing. It is structured as follows: subdirectories in the root directory correspond to different test suites. For each suite there are standalone binaries on which V# can be run.

How to run:

Requirements

  • powershell (tested on Windows)
  • environment variables VS_BENCH_PATH and VS_PATH set to this repository path and to the V# path respectively
  • dotcover global tool installed
  • dotnet installed

There is a powershell script cover.ps1 in \runner dir. It has the following parameters

param (
    [Parameter(Mandatory=$true)]$suite, # name of the suite directory (i.e. jb_lifetimes)
    [Parameter(Mandatory=$true)]$dll, # name of the dll file without extension
    $namespace, # name of the namespace to cover
    $class, # name of the type to cover
    $method, # name of the method to cover
    $output, # output directory (default is <script dir>\outputs)
    $searchers = "BFS", # different searchers to run V# with (can be separated with whitespaces)
    $timeouts = "-1", # different timeouts to run V# with (can be separated with whitespaces)
    [switch]$drawCharts = $false, # if true, coverage and statistics charts for diffetent timeouts and searchers are drawn and saved to output
    [switch]$renderTests = $false # if true, tests are also rendered and run
)

If namespace, method and class are not specified, all methods in dll are covered

Example:

.\cover.ps1 -suite jb_lifetimes -dll JetBrains.Lifetimes -namespace JetBrains.Collections -t "20" -renderTests

Test suites:

PR-s with new benchmarks are welcomed!