Browse Source

Add silverlining (#7161)

* Add silverlining

* Fix Bind Addr

* Bump silverlining to bf5c59e512d5

* Bump silverlining to 885f34de2350
lemon-mint 3 years ago
parent
commit
79fb7e8411

+ 8 - 0
frameworks/Go/silverlining/README.md

@@ -0,0 +1,8 @@
+# [silverlining](https://github.com/go-www/silverlining) (GoLang) Benchmarking Test
+
+Silverlining is a low-level HTTP Framework for Go Programming Language.
+
+## Test URLs
+
+    http://localhost:8080/plaintext
+    http://localhost:8080/json

+ 26 - 0
frameworks/Go/silverlining/benchmark_config.json

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

+ 15 - 0
frameworks/Go/silverlining/config.toml

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

+ 11 - 0
frameworks/Go/silverlining/silverlining.dockerfile

@@ -0,0 +1,11 @@
+FROM golang:1.17
+
+WORKDIR /silverlining
+
+COPY ./src /silverlining
+
+RUN go build -ldflags="-s -w" -o app .
+
+EXPOSE 8080
+
+CMD ./app

+ 15 - 0
frameworks/Go/silverlining/src/go.mod

@@ -0,0 +1,15 @@
+module silverlining/src
+
+go 1.17
+
+require github.com/go-www/silverlining v0.0.0-20220304111112-885f34de2350
+
+require (
+	github.com/go-www/h1 v0.0.0-20220301151111-bd1d18e71e25 // indirect
+	github.com/gobwas/httphead v0.1.0 // indirect
+	github.com/gobwas/pool v0.2.1 // indirect
+	github.com/gobwas/ws v1.1.0 // indirect
+	github.com/json-iterator/go v1.1.12 // indirect
+	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+	github.com/modern-go/reflect2 v1.0.2 // indirect
+)

+ 30 - 0
frameworks/Go/silverlining/src/go.sum

@@ -0,0 +1,30 @@
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/go-www/h1 v0.0.0-20220301132724-fb526c8bf224/go.mod h1:pFiXMva/K5c/blSpJXy+p37srAPG8YjbHObQ8oMZzms=
+github.com/go-www/h1 v0.0.0-20220301151111-bd1d18e71e25 h1:Twrwyh1h+gvgAMZpgrWU5jKLlsr1Ry3qUvNR5TnxAVQ=
+github.com/go-www/h1 v0.0.0-20220301151111-bd1d18e71e25/go.mod h1:pFiXMva/K5c/blSpJXy+p37srAPG8YjbHObQ8oMZzms=
+github.com/go-www/silverlining v0.0.0-20220304111112-885f34de2350 h1:QYBd6x1eDiDBVoOH6TR5NZ/KpIU8yfyAXtWNn2awLt0=
+github.com/go-www/silverlining v0.0.0-20220304111112-885f34de2350/go.mod h1:HkvBw1pdYuutXGehi2OgApGPWx0khfn4TxmNr6dIgJg=
+github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU=
+github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
+github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og=
+github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
+github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA=
+github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/lemon-mint/envaddr v0.0.0-20220115112619-b1acf77f317e/go.mod h1:kzf0S/z9swcXpeo2+e1fY63g5/ZfIop37MgBmXLmDL0=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

+ 51 - 0
frameworks/Go/silverlining/src/main.go

@@ -0,0 +1,51 @@
+package main
+
+import (
+	"flag"
+	"log"
+	"net"
+
+	"github.com/go-www/silverlining"
+)
+
+var BindAddr string
+
+func init() {
+	flag.StringVar(&BindAddr, "bind", ":8080", "set bind host")
+	flag.Parse()
+}
+
+func main() {
+	ln, err := net.Listen("tcp", BindAddr)
+	if err != nil {
+		log.Fatal(err)
+	}
+	log.Printf("Listening on http://localhost%s", BindAddr)
+
+	defer ln.Close()
+
+	srv := silverlining.Server{
+		//ReadTimeout: time.Minute,
+	}
+
+	srv.Handler = func(r *silverlining.Context) {
+		switch string(r.Path()) {
+		case "/plaintext":
+			r.ResponseHeaders().Set("Content-Type", "text/plain")
+			r.WriteFullBodyString(200, "Hello, World!")
+		case "/json":
+			type Message struct {
+				Message string `json:"message"`
+			}
+			msg := Message{Message: "Hello, World!"}
+			r.WriteJSON(200, msg)
+		default:
+			r.WriteFullBody(404, nil)
+		}
+	}
+
+	err = srv.Serve(ln)
+	if err != nil {
+		log.Fatal(err)
+	}
+}