ssm-lang / Scoria

This is an embedding of the Sparse Synchronous Model, in Haskell!
BSD 3-Clause "New" or "Revised" License
4 stars 0 forks source link

Failing test case #38

Closed Rewbert closed 3 years ago

Rewbert commented 3 years ago

This test case fails after 622 trace items, as the event queue in the C-code runs out of capacity before the interpreter does (it does it after 624 trace items). I am logging this here for now as I believe this will be easier to test once we can comfortably run tests with different queue sizes (issue #13), which I think Yalu is working on currently.

prettyprinted program:

entrypoint:
  fun1(ref6)

fun1(*int64 ref6) {
  *int v1 = var (-(130 * 198))
  after 1886 then ref6 = 1
  after 3617 then v1 = 49
  wait [ref6]
  fork [ fun1(ref6)
       , fun1(ref6)
       , fun1(ref6)
       , fun1(ref6)
       , fun1(ref6)
       ]
}

Haskell source file to run test again

module Regression.Test1625657491075Spec where

import Data.Map (fromList)
import SSM.Core.Syntax
import qualified Test.SSM.Prop as T
import qualified Test.Hspec as H
import qualified Test.Hspec.QuickCheck as H

p :: Program
p = Program {entry = "fun1", args = [Right ("ref6",Ref TInt64)], funs = fromList [("fun1",Procedure {name = "fun1", arguments = [("ref6",Ref TInt64)], body = [Skip,Skip,Skip,NewRef (Fresh "v1") (Ref TInt32) (UOpE TInt32 (BOp TInt32 (Lit TInt32 (LInt32 130)) (Lit TInt32 (LInt32 198)) OTimes) Neg),After (Lit TUInt64 (LUInt64 1886)) ("ref6",Ref TInt64) (Lit TInt64 (LInt64 1)),After (Lit TUInt64 (LUInt64 3617)) ("v1",Ref TInt32) (Lit TInt32 (LInt32 49)),Skip,Skip,Wait [("ref6",Ref TInt64)],Skip,Skip,Fork [("fun1",[Right ("ref6",Ref TInt64)]),("fun1",[Right ("ref6",Ref TInt64)]),("fun1",[Right ("ref6",Ref TInt64)]),("fun1",[Right ("ref6",Ref TInt64)]),("fun1",[Right ("ref6",Ref TInt64)])],Skip,Skip]})]}

spec :: H.Spec
spec = T.correctSpec "Test1625657491075" p