Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions sdk/package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ tests:
AsyncCompletionSpec,
DurationSpec,
IntegrationSpec,
IntegrationSpec.FetchHistory,
IntegrationSpec.HangingWorkflow,
IntegrationSpec.NoOpWorkflow,
IntegrationSpec.TimeoutsInWorkflows,
Expand Down
2 changes: 1 addition & 1 deletion sdk/temporal-sdk.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ test-suite temporal-sdk-tests
type: exitcode-stdio-1.0
main-is: Main.hs
other-modules:
Spec, ConcurrentAccessSpec, AsyncCompletionSpec, DurationSpec, IntegrationSpec, IntegrationSpec.HangingWorkflow, IntegrationSpec.NoOpWorkflow, IntegrationSpec.TimeoutsInWorkflows, IntegrationSpec.Updates, MockActivityEnvironmentSpec, IntegrationSpec.TimeSkipping, Common, RegisterWorkflowsSpec, THCompiles
Spec, ConcurrentAccessSpec, AsyncCompletionSpec, DurationSpec, IntegrationSpec, IntegrationSpec.FetchHistory, IntegrationSpec.HangingWorkflow, IntegrationSpec.NoOpWorkflow, IntegrationSpec.TimeoutsInWorkflows, IntegrationSpec.Updates, MockActivityEnvironmentSpec, IntegrationSpec.TimeSkipping, Common, RegisterWorkflowsSpec, THCompiles
hs-source-dirs:
test
default-extensions:
Expand Down
15 changes: 15 additions & 0 deletions sdk/test/IntegrationSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import Data.Int
import Data.Map.Strict (Map)
import qualified Data.Map.Strict as Map
import Data.Maybe (fromJust, isJust)
import Data.ProtoLens.Field (field)
import Data.Text (Text)
import qualified Data.Text as Text
import Data.Time (Day (ModifiedJulianDay), diffUTCTime, getCurrentTime)
Expand All @@ -47,6 +48,7 @@ import qualified Data.Vector as V
import DiscoverInstances (discoverInstances)
import GHC.Generics
import GHC.Stack (SrcLoc (..), callStack, fromCallSiteList)
import IntegrationSpec.FetchHistory (NoopActivity (..), NoopWorkflow (..))
import IntegrationSpec.HangingWorkflow
import IntegrationSpec.NoOpWorkflow
import IntegrationSpec.Signals
Expand Down Expand Up @@ -1077,6 +1079,19 @@ needsClient = do
specify "fail" $ const pending
specify "async fail signal?" $ const pending
specify "always delivered" $ const pending

describe "fetchHistory" do
it "correctly paginates workflow history" \TestEnv {..} -> do
let defns = (workflowDefinition NoopWorkflow, activityDefinition NoopActivity)
conf = configure () defns $ baseConf
withWorker conf $ do
let opts = C.startWorkflowOptions taskQueue
wfHandle <- useClient $ C.start NoopWorkflow "fetchhistory-test" opts
res <- C.waitWorkflowResult wfHandle
history <- C.fetchHistory wfHandle
(length $ view (field @"vec'events") history)
`shouldBe` 399

describe "Query" $ do
specify "works" $ \TestEnv {..} -> do
tp <- getGlobalTracerProvider
Expand Down
36 changes: 36 additions & 0 deletions sdk/test/IntegrationSpec/FetchHistory.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE NumericUnderscores #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeApplications #-}

module IntegrationSpec.FetchHistory where

import Data.ProtoLens.Field ()
import RequireCallStack (provideCallStack)
import Data.Foldable (for_)
import Temporal.Activity (Activity)
import Temporal.Duration (seconds)
import qualified Temporal.TH as TH
import Temporal.Workflow (Workflow, StartToClose(..))
import qualified Temporal.Workflow as Workflow

noopActivity :: Activity () ()
noopActivity = pure ()

TH.registerActivity 'noopActivity

noopWorkflow :: Workflow ()
noopWorkflow = provideCallStack do
for_ [(1 :: Int)..200] \_ ->
Workflow.executeActivity NoopActivity $ Workflow.defaultStartActivityOptions $ StartToClose $ seconds 1

TH.registerWorkflow 'noopWorkflow
Loading