diff --git a/frameworks/Julia/Http.jl/server.jl b/frameworks/Julia/Http.jl/server.jl index 74b0dba052d..706049563d0 100644 --- a/frameworks/Julia/Http.jl/server.jl +++ b/frameworks/Julia/Http.jl/server.jl @@ -25,4 +25,4 @@ HTTP.listen("0.0.0.0", 8080, reuseaddr=true) do http startwrite(http) write(http, "Not Found") end -end +end \ No newline at end of file diff --git a/frameworks/Julia/Oxygen.jl/Manifest.toml b/frameworks/Julia/Oxygen.jl/Manifest.toml new file mode 100644 index 00000000000..61d7ea9a686 --- /dev/null +++ b/frameworks/Julia/Oxygen.jl/Manifest.toml @@ -0,0 +1,196 @@ +# This file is machine-generated - editing it directly is not advised + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[BitFlags]] +git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.7" + +[[CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "9c209fb7536406834aa938fb149964b985de6c83" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.1" + +[[ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "96d823b94ba8d187a6d8f0826e731195a74b90e9" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.2.0" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "41f7dfb2b20e7e8bf64f6b6fae98f4d2df027b06" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.9.4" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.4.1" + +[[JSON3]] +deps = ["Dates", "Mmap", "Parsers", "SnoopPrecompile", "StructTypes", "UUIDs"] +git-tree-sha1 = "84b10656a41ef564c39d2d477d7236966d2b5683" +uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +version = "1.12.0" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "cedb76b37bc5a6c702ade66be44f831fa23c681e" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.0.0" + +[[MIMEs]] +git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" +uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" +version = "0.1.4" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] +git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.7" + +[[MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+0" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2022.10.11" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.1" + +[[OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6cc6366a14dbe47e5fc8f3cbe2816b1185ef5fc4" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.0.8+0" + +[[Oxygen]] +deps = ["Dates", "HTTP", "JSON3", "MIMEs", "Sockets"] +git-tree-sha1 = "638db9ad1e71ed972e7e4dd2ee4346e6ed66a3b6" +uuid = "df9a0d86-3283-4920-82dc-4555fc0d1d8b" +version = "1.1.8" + +[[Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "7302075e5e06da7d000d9bfa055013e3e85578ca" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.5.9" + +[[PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "259e206946c293698122f63e2b513a7c99a244e8" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.1.1" + +[[Preferences]] +deps = ["TOML"] +git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.0" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[Random]] +deps = ["SHA", "Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[SimpleBufferStream]] +git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.1.0" + +[[SnoopPrecompile]] +deps = ["Preferences"] +git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" +uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" +version = "1.0.3" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.10.0" + +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[TranscodingStreams]] +deps = ["Random", "Test"] +git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.9.13" + +[[URIs]] +git-tree-sha1 = "074f993b0ca030848b897beff716d93aca60f06a" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.4.2" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+0" diff --git a/frameworks/Julia/Oxygen.jl/Project.toml b/frameworks/Julia/Oxygen.jl/Project.toml new file mode 100644 index 00000000000..c42c1152417 --- /dev/null +++ b/frameworks/Julia/Oxygen.jl/Project.toml @@ -0,0 +1,4 @@ +[deps] +HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" +JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" +Oxygen = "df9a0d86-3283-4920-82dc-4555fc0d1d8b" diff --git a/frameworks/Julia/Oxygen.jl/README.md b/frameworks/Julia/Oxygen.jl/README.md new file mode 100644 index 00000000000..7f3e653ebe0 --- /dev/null +++ b/frameworks/Julia/Oxygen.jl/README.md @@ -0,0 +1,5 @@ +An implementation using the [Oxygen.jl](https://github.com/ndortega/Oxygen.jl) package available for Julia + +For JSON support, the [JSON3.jl](https://github.com/quinnj/JSON3.jl) is used + +Currently only the /json and /plaintext endpoints have been implemented diff --git a/frameworks/Julia/Oxygen.jl/benchmark_config.json b/frameworks/Julia/Oxygen.jl/benchmark_config.json new file mode 100644 index 00000000000..932b26598e3 --- /dev/null +++ b/frameworks/Julia/Oxygen.jl/benchmark_config.json @@ -0,0 +1,26 @@ +{ + "framework": "oxygen-jl", + "tests": [ + { + "default": { + "json_url": "/json", + "plaintext_url": "/plaintext", + "port": 8080, + "approach": "Realistic", + "classification": "None", + "database": "None", + "framework": "Oxygen.jl", + "language": "Julia", + "orm": "None", + "platform": "None", + "webserver": "Oxygen.jl", + "os": "Linux", + "database_os": "Linux", + "display_name": "Oxygen.jl", + "notes": "", + "versus": "", + "tags": [] + } + } + ] +} \ No newline at end of file diff --git a/frameworks/Julia/Oxygen.jl/config.toml b/frameworks/Julia/Oxygen.jl/config.toml new file mode 100644 index 00000000000..e6df76cf2c0 --- /dev/null +++ b/frameworks/Julia/Oxygen.jl/config.toml @@ -0,0 +1,15 @@ +[framework] +name = "oxygen.jl" + +[main] +urls.plaintext = "/plaintext" +urls.json = "/json" +approach = "Realistic" +classification = "None" +database = "None" +database_os = "Linux" +os = "Linux" +orm = "None" +platform = "None" +webserver = "Oxygen.jl" +versus = "" diff --git a/frameworks/Julia/Oxygen.jl/oxygen-jl.dockerfile b/frameworks/Julia/Oxygen.jl/oxygen-jl.dockerfile new file mode 100644 index 00000000000..808b529321d --- /dev/null +++ b/frameworks/Julia/Oxygen.jl/oxygen-jl.dockerfile @@ -0,0 +1,36 @@ +FROM ubuntu:20.04 + +ENV IROOT=/installs +ENV JULIA_VER=1.9.0 + +ENV DEBIAN_FRONTEND noninteractive +RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections + +RUN apt update -yqq && apt-get install -y --reinstall ca-certificates +RUN apt-get update -y && apt-get install -y --no-install-recommends wget + +RUN mkdir /usr/local/share/ca-certificates/cacert.org +RUN wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt +RUN update-ca-certificates +#RUN git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt + +WORKDIR ${IROOT} + +RUN wget -q https://julialang-s3.julialang.org/bin/linux/x64/1.9/julia-${JULIA_VER}-linux-x86_64.tar.gz +RUN tar -xzf julia-${JULIA_VER}-linux-x86_64.tar.gz +RUN mv julia-${JULIA_VER} /opt/ +RUN rm -f julia-${JULIA_VER}-linux-x86_64.tar.gz +ENV PATH="/opt/julia-${JULIA_VER}/bin:${PATH}" + +COPY *.toml ${IROOT}/ + +RUN julia -e 'import Pkg; Pkg.activate(@__DIR__); Pkg.instantiate()' && \ + julia -e 'import Pkg; Pkg.activate(@__DIR__); Pkg.precompile()' + +COPY server.jl ${IROOT}/ +COPY run.sh ${IROOT}/ +RUN chmod +x run.sh + +EXPOSE 8080 + +CMD ./run.sh diff --git a/frameworks/Julia/Oxygen.jl/run.sh b/frameworks/Julia/Oxygen.jl/run.sh new file mode 100644 index 00000000000..80baafe0969 --- /dev/null +++ b/frameworks/Julia/Oxygen.jl/run.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +julia --threads auto server.jl +while : ; do sleep 1 ; done diff --git a/frameworks/Julia/Oxygen.jl/server.jl b/frameworks/Julia/Oxygen.jl/server.jl new file mode 100644 index 00000000000..d6925ef3c7b --- /dev/null +++ b/frameworks/Julia/Oxygen.jl/server.jl @@ -0,0 +1,33 @@ +using Pkg + +Pkg.activate(@__DIR__) + +using Oxygen +using HTTP +import JSON3 +using Dates + +@info "starting listener" + +@get "/json" function (req::HTTP.Request) + return Dict("message" => "Hello, World!") +end + +@get "/plaintext" function (req::HTTP.Request) + return "Hello, World!" +end + +function headerMod(handle) + function (req) + try + response = handle(req) + return HTTP.Response(200, ["Server" => "Julia-HTTP", "Date" => Dates.format(Dates.now(), Dates.RFC1123Format) * " GMT"], body=text(response)) + catch error + @error "ERROR: " exception = (error, catch_backtrace()) + return HTTP.Response(500, "The Server encountered a problem") + end + end +end + + +serveparallel(middleware=[headerMod], access_log=nothing, port=8080) \ No newline at end of file