Bung 4 سال پیش
والد
کامیت
ae98bce748

+ 7 - 0
frameworks/Nim/scorper/.gitignore

@@ -0,0 +1,7 @@
+# Binaries
+*
+!*.*
+!*/
+*.out
+nimbledeps
+.DS_Store

+ 20 - 0
frameworks/Nim/scorper/README.md

@@ -0,0 +1,20 @@
+# scorper Benchmarking Test
+
+### Test Type Implementation Source Code
+
+* [JSON](./scorper_bench.nim)
+* [PLAINTEXT](./scorper_bench.nim)
+
+## Important Libraries
+The tests were run with:
+* [Software](https://github.com/bung87/scorper)
+* [Example](https://github.com/bung87/scorper/tree/devel/examples)
+
+## Test URLs
+### JSON
+
+http://localhost:8080/json
+
+### PLAINTEXT
+
+http://localhost:8080/plaintext

+ 26 - 0
frameworks/Nim/scorper/benchmark_config.json

@@ -0,0 +1,26 @@
+{
+  "framework": "scorper",
+  "tests": [
+    {
+      "default": {
+        "json_url": "/json",
+        "plaintext_url": "/plaintext",
+        "port": 8080,
+        "approach": "Realistic",
+        "classification": "Micro",
+        "database": "None",
+        "framework": "scorper",
+        "language": "Nim",
+        "flavor": "None",
+        "orm": "None",
+        "platform": "None",
+        "webserver": "None",
+        "os": "Linux",
+        "database_os": "Linux",
+        "display_name": "scorper",
+        "notes": "",
+        "versus": "httpbeast"
+      }
+    }
+  ]
+}

+ 0 - 0
frameworks/Nim/scorper/config.nims


+ 15 - 0
frameworks/Nim/scorper/config.toml

@@ -0,0 +1,15 @@
+[framework]
+name = "scorper"
+
+[main]
+urls.plaintext = "/plaintext"
+urls.json = "/json"
+approach = "Realistic"
+classification = "Micro"
+database = "None"
+database_os = "Linux"
+os = "Linux"
+orm = "None"
+platform = "None"
+webserver = "None"
+versus = "httpbeast"

+ 13 - 0
frameworks/Nim/scorper/scorper.dockerfile

@@ -0,0 +1,13 @@
+FROM nimlang/nim:alpine
+
+ENV PATH $PATH:/root/.nimble/bin
+
+ADD ./ /scorper
+WORKDIR /scorper
+
+RUN nimble install -d -y
+RUN nimble c -d:ChronosAsync -d:release --opt:speed -d:danger -o:scorper_bench_bin ./scorper_bench.nim
+
+EXPOSE 8080
+
+CMD ./scorper_bench_bin

+ 27 - 0
frameworks/Nim/scorper/scorper_bench.nim

@@ -0,0 +1,27 @@
+import std / [macros, exitprocs]
+import scorper
+
+
+type AsyncCallback = proc (request: Request): Future[void] {.closure, gcsafe,
+    raises: [].}
+
+proc jsonHandler(req: Request) {.route("get", "/json"), async.} =
+  let headers = {"Content-type": "application/json"}
+  await req.resp("""{"message":"Hello, World!"}""", headers.newHttpHeaders())
+
+proc plaintextHandler(req: Request) {.route("get", "/plaintext"), async.} =
+  let headers = {"Content-type": "text/plain"}
+  await req.resp("Hello, World!", headers.newHttpHeaders())
+
+when isMainModule:
+
+  let address = "0.0.0.0:8080"
+  let flags = {ReuseAddr}
+  let r = newRouter[AsyncCallback]()
+  r.addRoute(jsonHandler)
+  r.addRoute(plaintextHandler)
+  var server = newScorper(address, r, flags)
+  exitprocs.addExitProc proc() = waitFor server.closeWait()
+  server.start()
+
+  waitFor server.join()

+ 15 - 0
frameworks/Nim/scorper/scorper_bench.nimble

@@ -0,0 +1,15 @@
+# Package
+
+version       = "0.1.0"
+author        = "bung87"
+description   = "A new awesome scorper package"
+license       = "MIT"
+srcDir        = "."
+bin           = @["scorper_bench"]
+
+backend       = "c"
+
+# Dependencies
+
+requires "nim >= 1.2.0"
+requires "scorper >= 1.0.6"