mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 01:07:18 +03:00
Move Maven database to a separate rule (#527)
* Move Maven database to a separate rule This should make sure that we get a cached version far more often and thereby speed up the integration tests.
This commit is contained in:
parent
a790a0d60d
commit
ac5bdc3a5d
@ -2,22 +2,71 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
load("//bazel_tools:haskell.bzl", "da_haskell_test")
|
||||
|
||||
genrule(
|
||||
name = "integration-tests-mvn",
|
||||
srcs = [
|
||||
"@mvn_nix//:bin/mvn",
|
||||
"//:component-version",
|
||||
"//daml-lf/archive:daml_lf_archive_java.jar",
|
||||
"//daml-lf/archive:daml_lf_archive_java_pom.xml",
|
||||
"//language-support/java/bindings:libbindings-java.jar",
|
||||
"//language-support/java/bindings:bindings-java_pom.xml",
|
||||
"//language-support/java/bindings-rxjava:libbindings-rxjava.jar",
|
||||
"//language-support/java/bindings-rxjava:bindings-rxjava_pom.xml",
|
||||
"//language-support/java/codegen:shaded_binary.jar",
|
||||
"//language-support/java/codegen:shaded_binary_pom.xml",
|
||||
"//ledger-api/rs-grpc-bridge:librs-grpc-bridge.jar",
|
||||
"//ledger-api/rs-grpc-bridge:rs-grpc-bridge_pom.xml",
|
||||
"//docs:quickstart-java.tar.gz",
|
||||
],
|
||||
outs = ["integration-tests-mvn.tar"],
|
||||
cmd = """
|
||||
set -euxo pipefail
|
||||
TMP_DIR=$$(mktemp -d)
|
||||
MVN_DB="$$TMP_DIR/m2"
|
||||
VERSION=$$(cat $(location //:component-version))
|
||||
install_mvn() {
|
||||
$(location @mvn_nix//:bin/mvn) -q install:install-file \
|
||||
-Dmaven.repo.local=$$MVN_DB \
|
||||
"-DgroupId=$$1" \
|
||||
"-DartifactId=$$2" \
|
||||
"-Dfile=$$3" \
|
||||
"-DpomFile=$$4" \
|
||||
-Dpackaging=jar \
|
||||
-Dversion=$$VERSION
|
||||
}
|
||||
tar xf $(location //docs:quickstart-java.tar.gz) -C "$$TMP_DIR"
|
||||
install_mvn \
|
||||
"com.digitalasset" "daml-lf-archive" \
|
||||
$(location //daml-lf/archive:daml_lf_archive_java.jar) \
|
||||
$(location //daml-lf/archive:daml_lf_archive_java_pom.xml)
|
||||
install_mvn \
|
||||
"com.daml.ledger" "bindings-java" \
|
||||
$(location //language-support/java/bindings:libbindings-java.jar) \
|
||||
$(location //language-support/java/bindings:bindings-java_pom.xml)
|
||||
install_mvn \
|
||||
"com.daml.ledger" "bindings-rxjava" \
|
||||
$(location //language-support/java/bindings-rxjava:libbindings-rxjava.jar) \
|
||||
$(location //language-support/java/bindings-rxjava:bindings-rxjava_pom.xml)
|
||||
install_mvn \
|
||||
"com.daml.java" "codegen" \
|
||||
$(location //language-support/java/codegen:shaded_binary.jar) \
|
||||
$(location //language-support/java/codegen:shaded_binary_pom.xml)
|
||||
install_mvn \
|
||||
"com.digitalasset.ledger-api" "rs-grpc-bridge" \
|
||||
$(location //ledger-api/rs-grpc-bridge:librs-grpc-bridge.jar) \
|
||||
$(location //ledger-api/rs-grpc-bridge:rs-grpc-bridge_pom.xml)
|
||||
$(location @mvn_nix//:bin/mvn) -q -Dmaven.repo.local=$$MVN_DB -f "$$TMP_DIR/quickstart-java/pom.xml" dependency:resolve dependency:resolve-plugins
|
||||
tar cf $(location integration-tests-mvn.tar) -C $$(dirname $$MVN_DB) $$(basename $$MVN_DB)
|
||||
""",
|
||||
)
|
||||
|
||||
da_haskell_test(
|
||||
name = "integration-tests",
|
||||
timeout = "long",
|
||||
srcs = ["src/Main.hs"],
|
||||
data = [
|
||||
"//:component-version",
|
||||
"//daml-lf/archive:daml_lf_archive_java.jar",
|
||||
"//daml-lf/archive:daml_lf_archive_java_pom.xml",
|
||||
"//language-support/java/bindings:bindings-java",
|
||||
"//language-support/java/bindings:bindings-java_pom.xml",
|
||||
"//language-support/java/bindings-rxjava",
|
||||
"//language-support/java/bindings-rxjava:bindings-rxjava_pom.xml",
|
||||
"//language-support/java/codegen:shaded_binary.jar",
|
||||
"//language-support/java/codegen:shaded_binary_pom.xml",
|
||||
"//ledger-api/rs-grpc-bridge:librs-grpc-bridge.jar",
|
||||
"//ledger-api/rs-grpc-bridge:rs-grpc-bridge_pom.xml",
|
||||
":integration-tests-mvn",
|
||||
"//release:sdk-release-tarball",
|
||||
"@local_jdk//:bin/java",
|
||||
"@mvn_nix//:bin/mvn",
|
||||
@ -35,6 +84,7 @@ da_haskell_test(
|
||||
"main-tester",
|
||||
"network",
|
||||
"process",
|
||||
"tar",
|
||||
"tasty",
|
||||
"tasty-hunit",
|
||||
"text",
|
||||
|
@ -3,11 +3,11 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
module Main (main) where
|
||||
|
||||
import qualified Codec.Archive.Tar as Tar
|
||||
import Control.Concurrent
|
||||
import Control.Concurrent.Async
|
||||
import Control.Exception
|
||||
import Control.Monad
|
||||
import qualified Data.Text as T
|
||||
import Data.Typeable
|
||||
import Network.HTTP.Client
|
||||
import Network.HTTP.Types
|
||||
@ -27,8 +27,6 @@ import DamlHelper
|
||||
main :: IO ()
|
||||
main =
|
||||
withTempDir $ \tmpDir -> do
|
||||
compVersionFile <- locateRunfiles (mainWorkspace </> "COMPONENT-VERSION")
|
||||
compVersion <- T.unpack . T.strip . T.pack <$> readFileUTF8 compVersionFile
|
||||
-- We manipulate global state via the working directory and
|
||||
-- the environment so running tests in parallel will cause trouble.
|
||||
setEnv "TASTY_NUM_THREADS" "1"
|
||||
@ -39,10 +37,10 @@ main =
|
||||
withEnv
|
||||
[ ("DAML_HOME", Just damlDir)
|
||||
, ("PATH", Just $ (damlDir </> "bin") <> ":" <> javaPath <> ":" <> mvnPath <> ":" <> oldPath)
|
||||
] $ defaultMain (tests compVersion tmpDir)
|
||||
] $ defaultMain (tests tmpDir)
|
||||
|
||||
tests :: String -> FilePath -> TestTree
|
||||
tests compVersion tmpDir = testGroup "Integration tests"
|
||||
tests :: FilePath -> TestTree
|
||||
tests tmpDir = testGroup "Integration tests"
|
||||
[ testCase "install" $ do
|
||||
releaseTarball <- locateRunfiles (mainWorkspace </> "release" </> "sdk-release-tarball.tar.gz")
|
||||
createDirectory tarballDir
|
||||
@ -51,14 +49,14 @@ tests compVersion tmpDir = testGroup "Integration tests"
|
||||
, testCase "daml version" $ callProcessQuiet "daml" ["version"]
|
||||
, testCase "daml --help" $ callProcessQuiet "daml" ["--help"]
|
||||
, testCase "daml new --list" $ callProcessQuiet "daml" ["new", "--list"]
|
||||
, quickstartTests compVersion quickstartDir mvnDir
|
||||
, quickstartTests quickstartDir mvnDir
|
||||
]
|
||||
where quickstartDir = tmpDir </> "quickstart"
|
||||
mvnDir = tmpDir </> "m2"
|
||||
tarballDir = tmpDir </> "tarball"
|
||||
|
||||
quickstartTests :: String -> FilePath -> FilePath -> TestTree
|
||||
quickstartTests compVersion quickstartDir mvnDir = testGroup "quickstart"
|
||||
quickstartTests :: FilePath -> FilePath -> TestTree
|
||||
quickstartTests quickstartDir mvnDir = testGroup "quickstart"
|
||||
[ testCase "daml new" $
|
||||
callProcessQuiet "daml" ["new", quickstartDir]
|
||||
, testCase "daml init" $ withCurrentDirectory quickstartDir $
|
||||
@ -87,31 +85,8 @@ quickstartTests compVersion quickstartDir mvnDir = testGroup "quickstart"
|
||||
(\s -> connect s (addrAddress addr))
|
||||
, testCase "mvn compile" $
|
||||
withCurrentDirectory quickstartDir $ do
|
||||
installMvn
|
||||
("daml-lf" </> "archive" </> "daml_lf_archive_java.jar")
|
||||
("daml-lf" </> "archive" </> "daml_lf_archive_java_pom.xml")
|
||||
"com.digitalasset"
|
||||
"daml-lf-archive"
|
||||
installMvn
|
||||
("language-support" </> "java" </> "bindings" </> "libbindings-java.jar")
|
||||
("language-support" </> "java" </> "bindings" </> "bindings-java_pom.xml")
|
||||
"com.daml.ledger"
|
||||
"bindings-java"
|
||||
installMvn
|
||||
("language-support" </> "java" </> "bindings-rxjava" </> "libbindings-rxjava.jar")
|
||||
("language-support" </> "java" </> "bindings-rxjava" </> "bindings-rxjava_pom.xml")
|
||||
"com.daml.ledger"
|
||||
"bindings-rxjava"
|
||||
installMvn
|
||||
("language-support" </> "java" </> "codegen" </> "shaded_binary.jar")
|
||||
("language-support" </> "java" </> "codegen" </> "shaded_binary_pom.xml")
|
||||
"com.daml.java"
|
||||
"codegen"
|
||||
installMvn
|
||||
("ledger-api" </> "rs-grpc-bridge" </> "librs-grpc-bridge.jar")
|
||||
("ledger-api" </> "rs-grpc-bridge" </> "rs-grpc-bridge_pom.xml")
|
||||
"com.digitalasset.ledger-api"
|
||||
"rs-grpc-bridge"
|
||||
mvnDbTarball <- locateRunfiles (mainWorkspace </> "daml-assistant" </> "integration-tests" </> "integration-tests-mvn.tar")
|
||||
Tar.extract (takeDirectory mvnDir) mvnDbTarball
|
||||
callProcess "mvn" [mvnRepoFlag, "-q", "compile"]
|
||||
, testCase "mvn exec:java@run-quickstart" $
|
||||
withCurrentDirectory quickstartDir $
|
||||
@ -136,21 +111,6 @@ quickstartTests compVersion quickstartDir mvnDir = testGroup "quickstart"
|
||||
]
|
||||
where
|
||||
mvnRepoFlag = "-Dmaven.repo.local=" <> mvnDir
|
||||
installMvn jarPath pomPath groupId artifactId = do
|
||||
jar <- locateRunfiles (mainWorkspace </> jarPath)
|
||||
pom <- locateRunfiles (mainWorkspace </> pomPath)
|
||||
callProcess "mvn"
|
||||
[ "install:install-file",
|
||||
mvnRepoFlag
|
||||
, "-q"
|
||||
, "-Dfile=" <> jar
|
||||
, "-DpomFile=" <> pom
|
||||
, "-DgroupId=" <> groupId
|
||||
, "-DartifactId=" <> artifactId
|
||||
, "-Dpackaging=jar"
|
||||
, "-Dversion=" <> compVersion
|
||||
]
|
||||
|
||||
|
||||
-- | Like call process but hides stdout.
|
||||
callProcessQuiet :: FilePath -> [String] -> IO ()
|
||||
|
Loading…
Reference in New Issue
Block a user