summaryrefslogtreecommitdiff
path: root/testing/hstox/toxcore-sut.hs
blob: 73bdb702590668ed18667c661bdb41642f56b59d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
module Main (main) where

import           Control.Concurrent  (threadDelay)
import           System.Environment  (getArgs, withArgs)
import           System.Process      (createProcess, proc, terminateProcess)

import           Network.Tox.Testing (serve)
import qualified ToxTestSuite


foreign import ccall test_main :: IO ()


main :: IO ()
main = do
  args <- getArgs
  case args of
    ["--sut"] -> test_main
    self : testArgs -> do
      -- Start a toxcore SUT (System Under Test) process that will listen on
      -- port 1234. We call ourselves here, so the branch above is taken.
      (_, _, _, sut) <- createProcess $ proc self ["--sut"]
      -- 100ms delay to give the SUT time to set up its socket before we try to
      -- build connections in the test runner.
      threadDelay $ 100 * 1000
      -- ToxTestSuite (the test runner) makes connections to port 1234 to
      -- communicate with the SUT.
      withArgs (["--print-cpu-time", "--color"] ++ testArgs) ToxTestSuite.main
      terminateProcess sut
    _ ->
      fail "Usage: toxcore-sut <path-to-toxcore-sut> [test-args...]"