shrub/pkg/hs-vere/app/test/Main.hs

101 lines
2.3 KiB
Haskell
Raw Normal View History

module Main where
import ClassyPrelude
2019-07-16 03:01:45 +03:00
import Noun
import Vere.Pier.Types
2019-07-16 03:01:45 +03:00
import Vere.Pier
import Vere.Serf
2019-07-16 05:20:23 +03:00
import Control.Concurrent (threadDelay)
import System.Directory (removeFile)
import Text.Show.Pretty (pPrint)
import qualified Vere.Log as Log
import qualified Vere.Persist as Persist
import qualified Vere.Pier as Pier
--------------------------------------------------------------------------------
main :: IO ()
main = do
2019-07-17 02:14:46 +03:00
let pillPath = "/home/benjamin/r/urbit/bin/ivory.pill"
2019-07-16 05:20:23 +03:00
shipPath = "/home/benjamin/r/urbit/zod/"
ship = 0 -- zod
2019-07-16 03:01:45 +03:00
2019-07-16 05:20:23 +03:00
removeFile (shipPath <> ".urb/chk/north.bin")
removeFile (shipPath <> ".urb/chk/south.bin")
2019-07-16 05:20:23 +03:00
(s,l,e,m) <- Pier.boot pillPath shipPath ship
print (e,m)
threadDelay 500000
kill s
putStrLn "Booted!"
removeFile (shipPath <> ".urb/chk/north.bin")
removeFile (shipPath <> ".urb/chk/south.bin")
(s,l,e,m) <- Pier.resume shipPath
print (e,m)
putStrLn "Resumed!"
2019-07-16 03:01:45 +03:00
pure ()
--------------------------------------------------------------------------------
tryCopyLog :: IO ()
tryCopyLog = do
let logPath = "/Users/erg/src/urbit/zod/.urb/falselog/"
falselogPath = "/Users/erg/src/urbit/zod/.urb/falselog2/"
----------------------------------------
persistQ <- newTQueueIO
releaseQ <- newTQueueIO
log <- Log.open logPath
persist <- Persist.start log persistQ (writeTQueue releaseQ)
ident <- Log.readIdent log
----------------------------------------
lastEv <- Log.latestEventNumber log
events <- Log.readEvents log 1 3142
----------------------------------------
print ident
print lastEv
print (length events)
----------------------------------------
persistQ2 <- newTQueueIO
releaseQ2 <- newTQueueIO
log2 <- Log.open falselogPath
persist2 <- Persist.start log2 persistQ2 (writeTQueue releaseQ2)
----------------------------------------
Log.writeIdent log2 ident
let writs = events <&> \(id, a) ->
Writ id Nothing (Jam a) []
----------------------------------------
print "About to write"
for_ writs $ \w ->
atomically (writeTQueue persistQ2 w)
----------------------------------------
print "About to wait"
replicateM_ 100 $ do
atomically $ readTQueue releaseQ2
----------------------------------------
print "Done"