daml-assistant: Add daml sandbox-next. (#5045)

* daml-assistant: Add `daml sandbox-next`.

CHANGELOG_BEGIN
- [DAML Assistant] You can now run a pre-release version of Sandbox with
  ``daml sandbox-next`` so you can test it out and verify everything is
  working as expected. Running this will launch Sandbox rebuilt on a
  more modern architecture. An upcoming release of DAML will switch over
  to the new implementation by default.
CHANGELOG_END

* daml-assistant: Explain that sandbox-next is experimental.

Co-Authored-By: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>

* daml-assistant: Copy-pasta an integration test for `daml sandbox-next`.

Co-authored-by: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>
This commit is contained in:
Samir Talwar 2020-03-18 09:25:08 +01:00 committed by GitHub
parent cbeeb5aafc
commit 7510d0d404
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 4 deletions

View File

@ -2,14 +2,15 @@
// SPDX-License-Identifier: Apache-2.0
package com.digitalasset.daml.sdk
import com.digitalasset.daml.lf.engine.trigger.{RunnerMain => Trigger}
import com.digitalasset.daml.lf.engine.script.{RunnerMain => Script}
import com.digitalasset.daml.lf.engine.script.{TestMain => TestScript}
import com.digitalasset.codegen.{CodegenMain => Codegen}
import com.digitalasset.daml.lf.engine.script.{RunnerMain => Script, TestMain => TestScript}
import com.digitalasset.daml.lf.engine.trigger.{RunnerMain => Trigger}
import com.digitalasset.extractor.{Main => Extractor}
import com.digitalasset.http.{Main => JsonApi}
import com.digitalasset.navigator.{NavigatorBackend => Navigator}
import com.digitalasset.platform.sandbox.{SandboxMain => Sandbox}
import com.digitalasset.platform.sandboxnext.{Main => SandboxNext}
object SdkMain {
def main(args: Array[String]): Unit = {
@ -24,6 +25,7 @@ object SdkMain {
case "json-api" => JsonApi.main(rest)
case "navigator" => Navigator.main(rest)
case "sandbox" => Sandbox.main(rest)
case "sandbox-next" => SandboxNext.main(rest)
case _ => sys.exit(1)
}
}

View File

@ -327,7 +327,7 @@ quickstartTests quickstartDir mvnDir = testGroup "quickstart"
callCommandQuiet "daml damlc test --files daml/Main.daml"
, testCase "daml damlc visual-web" $ withCurrentDirectory quickstartDir $
callCommandQuiet $ unwords ["daml damlc visual-web .daml/dist/quickstart-0.0.1.dar -o visual.html -b"]
, testCase "sandbox startup" $
, testCase "Sandbox startup" $
withCurrentDirectory quickstartDir $
withDevNull $ \devNull -> do
p :: Int <- fromIntegral <$> getFreePort
@ -345,6 +345,24 @@ quickstartTests quickstartDir mvnDir = testGroup "quickstart"
(\s -> connect s (addrAddress addr))
-- waitForProcess' will block on Windows so we explicitly kill the process.
terminateProcess ph
, testCase "Sandbox Next startup" $
withCurrentDirectory quickstartDir $
withDevNull $ \devNull -> do
p :: Int <- fromIntegral <$> getFreePort
let sandboxProc = (shell $ unwords ["daml", "sandbox-next", "--port", show p, ".daml/dist/quickstart-0.0.1.dar"]) { std_out = UseHandle devNull, std_in = CreatePipe }
withCreateProcess sandboxProc $
\_ _ _ ph -> race_ (waitForProcess' sandboxProc ph) $ do
waitForConnectionOnPort (threadDelay 100000) p
addr : _ <- getAddrInfo
(Just socketHints)
(Just "127.0.0.1")
(Just $ show p)
bracket
(socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr))
close
(\s -> connect s (addrAddress addr))
-- waitForProcess' will block on Windows so we explicitly kill the process.
terminateProcess ph
, testCase "Navigator startup" $
-- This test just checks that navigator starts up and returns a 200 response.
-- Nevertheless this would have caught a few issues on rules_nodejs upgrades

View File

@ -43,6 +43,10 @@ commands:
path: daml-helper/daml-helper
desc: "Launch the Sandbox"
args: ["run-jar", "--logback-config=daml-sdk/sandbox-logback.xml", "daml-sdk/daml-sdk.jar", "sandbox"]
- name: sandbox-next
path: daml-helper/daml-helper
desc: "Launch the Sandbox's upcoming implementation (experimental, for testing purposes)"
args: ["run-jar", "--logback-config=daml-sdk/sandbox-logback.xml", "daml-sdk/daml-sdk.jar", "sandbox-next"]
- name: navigator
path: daml-helper/daml-helper
desc: "Launch the Navigator"