Skip to content

Generating all linearizable executions is very slow #2

Closed
@elizarov

Description

@elizarov

LinkChecker.checkImpl method generates all possible executions and then uses executeActors(linEx) on each one. It is very slow, because it does TestThreadExecutionGenerator.create every time, defining new classes for each execution (instead of defining them just once and reusing). Because of this lincheck does not really scale to complex tests. In my case it "hangs" trying to produce executions for this schenario with four threads (4/4/4/2 operations):

Actors per thread:
[removeFirst()[w], removeFirst()[w], addLastIfPrevDiff(2)[w], removeFirstOrPeekIf(1)[w]]
[removeFirst()[w], addFirstIfEmpty(1)[w], addFirstIfEmpty(2)[w], addFirstIfEmpty(3)[w]]
[addLast(1)[w], addLastIfPrevDiff(3)[w], addFirst(2)[w], addLast(1)[w]]
[removeFirstOrPeekIf(2)[w], removeFirst()[w]]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions