Skip to content

Commit

Permalink
chore(sipi): add comments (#1864)
Browse files Browse the repository at this point in the history
  • Loading branch information
subotic committed May 30, 2021
1 parent a08706e commit 06e8b0c
Show file tree
Hide file tree
Showing 13 changed files with 150 additions and 125 deletions.
203 changes: 102 additions & 101 deletions WORKSPACE
Expand Up @@ -3,7 +3,10 @@ workspace(name = "io_dasch_dsp_api")
# load http_archive method
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")

# bazel-skylib 1.0.2 released 2019.10.09 (https://github.com/bazelbuild/bazel-skylib/releases/tag/1.0.2)
#####################################
# Skylib #
#####################################
# 1.0.2 released 2019.10.09 (https://github.com/bazelbuild/bazel-skylib/releases/tag/1.0.2)
skylib_version = "1.0.2"

http_archive(
Expand All @@ -13,7 +16,82 @@ http_archive(
url = "https://github.com/bazelbuild/bazel-skylib/releases/download/{}/bazel-skylib-{}.tar.gz".format(skylib_version, skylib_version),
)

# download rules_scala repository
#####################################
# Docker #
#####################################

rules_docker_version = "0.17.0"

rules_docker_version_sha256 = "59d5b42ac315e7eadffa944e86e90c2990110a1c8075f1cd145f487e999d22b3"

http_archive(
name = "io_bazel_rules_docker",
sha256 = rules_docker_version_sha256,
strip_prefix = "rules_docker-%s" % rules_docker_version,
url = "https://github.com/bazelbuild/rules_docker/releases/download/v%s/rules_docker-v%s.tar.gz" % (rules_docker_version, rules_docker_version),
)

load(
"@io_bazel_rules_docker//repositories:repositories.bzl",
container_repositories = "repositories",
)

container_repositories()

load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps")

container_deps()

# load container_pull method
load(
"@io_bazel_rules_docker//container:container.bzl",
"container_pull",
)

# get distroless java
container_pull(
name = "java_base",
# 'tag' is also supported, but digest is encouraged for reproducibility.
digest = "sha256:deadbeef",
registry = "gcr.io",
repository = "distroless/java",
)

# get openjdk
container_pull(
name = "openjdk11",
digest = "sha256:0e51b455654bd162c485a6a6b5b120cc82db453d9265cc90f0c4fb5d14e2f62e",
registry = "docker.io",
repository = "adoptopenjdk",
tag = "11-jre-hotspot-bionic",
)

# get sipi
load("//third_party:versions.bzl", "SIPI_IMAGE_DIGEST", "SIPI_REPOSITORY", "SIPI_VERSION")

container_pull(
name = "sipi",
digest = SIPI_IMAGE_DIGEST,
registry = "docker.io",
repository = SIPI_REPOSITORY,
tag = SIPI_VERSION,
)

# get fuseki
load("//third_party:versions.bzl", "FUSEKI_IMAGE_DIGEST", "FUSEKI_REPOSITORY", "FUSEKI_VERSION")

container_pull(
name = "jenafuseki",
digest = FUSEKI_IMAGE_DIGEST,
registry = "docker.io",
repository = FUSEKI_REPOSITORY,
tag = FUSEKI_VERSION,
)

#####################################
# Scala #
#####################################

rules_scala_version = "0ac75d3a044b8e316d1b11b90a7d044685bd72e8" # 22.04.2021

rules_scala_version_sha256 = "7624c95c19b60df943dbde90c54d09ecad9aca9432b1211da8352f131776ac36"
Expand Down Expand Up @@ -52,9 +130,10 @@ scalatest_repositories()

scalatest_toolchain()

#
# Download the protobuf repository (needed by go and rules_scala_annex)
#
#####################################
# Protobuf (Scala Annex) #
#####################################

protobuf_tag = "3.12.3"

protobuf_sha256 = "e5265d552e12c1f39c72842fa91d84941726026fa056d914ea6a25cd58d7bbf8"
Expand All @@ -71,8 +150,10 @@ load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")

protobuf_deps()

#####################################
# JAR Dependencies #
#####################################
#
# download rules_jvm_external used for maven dependency resolution
# defined in the third_party sub-folder
#
rules_jvm_external_version = "4.0" # 6.01.2021
Expand All @@ -97,9 +178,9 @@ load("@maven//:defs.bzl", "pinned_maven_install")

pinned_maven_install()

#
# Load rules_scala_annex, required by rules_twirl
#
#####################################
# Scala Annex (Twirl dependency) #
#####################################
rules_scala_annex_version = "2503b72a166610c14170b117c51033b42a32e48b" # 29.06.2020

rules_scala_annex_sha256 = "52d677dc8205db25a49824aade45984e3ef1b79c3bf761efede35d921033c3a4"
Expand Down Expand Up @@ -147,9 +228,9 @@ bind(
actual = "@rules_scala_annex//src/main/scala:zinc_2_12_10",
)

#
# download the rules_twirl repository (needed to compile twirl templates)
#
#####################################
# Twirl templates #
#####################################
rules_twirl_version = "35389750d178f17f7ddd85b9335f7b8b8d662f78" # 29.04.2020

rules_twirl_version_sha256 = "d072049d0917b87e1eb677a4255509a7133ca71fc21c8de4b4536ca030eb3d3a"
Expand All @@ -170,9 +251,9 @@ load("@twirl//:defs.bzl", twirl_pinned_maven_install = "pinned_maven_install")

twirl_pinned_maven_install()

#
# Download the rules_go repository
#
#####################################
# Buildifier #
#####################################
# buildifier is written in Go and hence needs rules_go to be built.
# See https://github.com/bazelbuild/rules_go for the up to date setup instructions.
http_archive(
Expand Down Expand Up @@ -208,90 +289,11 @@ http_archive(
url = "https://github.com/bazelbuild/buildtools/archive/master.zip",
)

# legacy variant used by rules_docker. Remove after rules_docker was updated to
# newest rules_python
load("@rules_python//python:pip.bzl", "pip_import", "pip_repositories")

pip_repositories()

#
# Download the rules_docker repository at release v0.14.4
#
rules_docker_version = "0.14.4"

rules_docker_version_sha256 = "4521794f0fba2e20f3bf15846ab5e01d5332e587e9ce81629c7f96c793bb7036"

http_archive(
name = "io_bazel_rules_docker",
sha256 = rules_docker_version_sha256,
strip_prefix = "rules_docker-%s" % rules_docker_version,
url = "https://github.com/bazelbuild/rules_docker/releases/download/v%s/rules_docker-v%s.tar.gz" % (rules_docker_version, rules_docker_version),
)

load(
"@io_bazel_rules_docker//repositories:repositories.bzl",
container_repositories = "repositories",
)

container_repositories()

load("@io_bazel_rules_docker//repositories:deps.bzl", container_deps = "deps")

container_deps()

load("@io_bazel_rules_docker//repositories:pip_repositories.bzl", "pip_deps")

pip_deps()

# load container_pull method
load(
"@io_bazel_rules_docker//container:container.bzl",
"container_pull",
)

# get distroless java
container_pull(
name = "java_base",
# 'tag' is also supported, but digest is encouraged for reproducibility.
digest = "sha256:deadbeef",
registry = "gcr.io",
repository = "distroless/java",
)

# get openjdk
container_pull(
name = "openjdk11",
digest = "sha256:0e51b455654bd162c485a6a6b5b120cc82db453d9265cc90f0c4fb5d14e2f62e",
registry = "docker.io",
repository = "adoptopenjdk",
tag = "11-jre-hotspot-bionic",
)

# get sipi
load("//third_party:versions.bzl", "SIPI_IMAGE_DIGEST", "SIPI_REPOSITORY", "SIPI_VERSION")

container_pull(
name = "sipi",
digest = SIPI_IMAGE_DIGEST,
registry = "docker.io",
repository = SIPI_REPOSITORY,
tag = SIPI_VERSION,
)

# get fuseki
load("//third_party:versions.bzl", "FUSEKI_IMAGE_DIGEST", "FUSEKI_REPOSITORY", "FUSEKI_VERSION")

container_pull(
name = "jenafuseki",
digest = FUSEKI_IMAGE_DIGEST,
registry = "docker.io",
repository = FUSEKI_REPOSITORY,
tag = FUSEKI_VERSION,
)

#
# download rules_pkg - basic packaging rules
#
#####################################
# rules_pkg - basic packaging rules #
#####################################
rules_package_version = "0.2.4"

rules_package_version_sha256 = "4ba8f4ab0ff85f2484287ab06c0d871dcb31cc54d439457d28fd4ae14b18450a"
Expand All @@ -302,14 +304,13 @@ http_archive(
url = "https://github.com/bazelbuild/rules_pkg/releases/download/%s/rules_pkg-%s.tar.gz" % (rules_package_version, rules_package_version),
)

# load further dependencies of this rule
load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")

rules_pkg_dependencies()

#
# download rules_stamp - stamping helper
#
#####################################
# rules_stamp - stamping helper #
#####################################
http_archive(
name = "ecosia_rules_stamp",
sha256 = "36d7ea381bfb2520f9353299b162434b25c77365d3c9e9459195c536da5e837d",
Expand Down
24 changes: 23 additions & 1 deletion sipi/scripts/BUILD.bazel
Expand Up @@ -4,7 +4,29 @@ load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")

filegroup(
name = "scripts",
srcs = glob(["*.lua"]),
srcs = [
"admin_upload.lua",
"cache.lua",
"clean_temp_dir.lua",
"debug.lua",
"delete_temp_file.lua",
"exit.lua",
"file_info.lua",
"get_knora_session.lua",
"jwt.lua",
"send_response.lua",
"sipi.init-knora.lua",
"sipi.init-knora-no-auth.lua",
"sipi.init-knora-test.lua",
"store.lua",
"test1.lua",
"test2.lua",
"test_file_info.lua",
"test_functions.lua",
"test_knora_session_cookie.lua",
"upload.lua",
"util.lua",
],
)

pkg_tar(
Expand Down
17 changes: 6 additions & 11 deletions sipi/scripts/send_response.lua
Expand Up @@ -49,20 +49,15 @@ function send_error(status, msg)
msg_str = "Unknown error. Please report this as a possible bug in a Sipi route."
end

local result

-- If this is an internal server error, log the message, and return a generic message to the client.
-- If this is an internal server error, log the message.
if http_status // 100 == 5 then
server.log(msg_str, server.loglevel.LOG_ERR)

result = {
message = "Internal server error"
}
else
result = {
message = msg_str
}
end

local result
result = {
message = msg_str
}

success, error_msg = server.sendHeader("Content-Type", "application/json")
if not success then
Expand Down
11 changes: 7 additions & 4 deletions sipi/scripts/upload.lua
Expand Up @@ -38,7 +38,8 @@ end


-- Buffer the response (helps with error handling).
local success, error_msg = server.setBuffer()
local success, error_msg
success, error_msg = server.setBuffer()
if not success then
send_error(500, "server.setBuffer() failed: " .. error_msg)
return
Expand All @@ -54,12 +55,14 @@ end
local tmpFolder = config.imgroot .. '/tmp/'
local exists
success, exists = server.fs.exists(tmpFolder)
if not success then
if not success then -- tests server.fs.exists
-- fs.exist was not run successful. This does not mean, that the tmp folder is not there.
send_error(500, "server.fs.exists() failed: " .. exists)
return
end
if not exists then
local error_msg
if not exists then -- checks the response of server.fs.exists
-- tmp folder does not exist
server.log("temp folder missing: " .. tmpFolder, server.loglevel.LOG_ERR)
success, error_msg = server.fs.mkdir(tmpFolder, 511)
if not success then
send_error(500, "server.fs.mkdir() failed: " .. error_msg)
Expand Down
2 changes: 2 additions & 0 deletions webapi/src/test/resources/logback-test.xml
Expand Up @@ -51,6 +51,8 @@
<logger name="kamon.metric" level="ERROR"/>
<logger name="org.apache.http" level="INFO"/>
<logger name="org.apache.http.wire" level="INFO"/>
<logger name="org.testcontainers" level="INFO"/>
<logger name="com.github.dockerjava" level="WARN"/>

<!-- App -->
<logger name="org.knora.webapi.app.ApplicationActor" level="INFO"/>
Expand Down
3 changes: 1 addition & 2 deletions webapi/src/test/scala/org/knora/webapi/ITKnoraLiveSpec.scala
Expand Up @@ -244,9 +244,8 @@ class ITKnoraLiveSpec(_system: ActorSystem)
val sipiRequest = Post(s"$baseInternalSipiUrl/upload?token=$loginToken", sipiFormData)

val sipiUploadResponseJson: JsObject = getResponseJson(sipiRequest)
// println(sipiUploadResponseJson.prettyPrint)

val sipiUploadResponse: SipiUploadResponse = sipiUploadResponseJson.convertTo[SipiUploadResponse]
// println(s"sipiUploadResponse: $sipiUploadResponse")

// Request the temporary file from Sipi.
for (responseEntry <- sipiUploadResponse.uploadedFiles) {
Expand Down
3 changes: 1 addition & 2 deletions webapi/src/test/scala/org/knora/webapi/TestContainers.scala
Expand Up @@ -25,7 +25,7 @@ import com.typesafe.config.{Config, ConfigFactory}
import org.testcontainers.containers.{BindMode, GenericContainer}
import org.testcontainers.utility.DockerImageName

import scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

/**
* Provides all containers necessary for running tests.
Expand Down Expand Up @@ -69,7 +69,6 @@ object TestContainers {
RedisContainer.withExposedPorts(6379)
RedisContainer.start()

import scala.collection.JavaConverters._
private val portMap = Map(
"app.triplestore.fuseki.port" -> FusekiContainer.getFirstMappedPort,
"app.sipi.internal-host" -> sipiIp,
Expand Down

0 comments on commit 06e8b0c

Please sign in to comment.