Browse Source

Update to version 8.5.5 | Read HISTORY.md

Former-commit-id: dced7d472e
tags/v12.0.0
kataras 3 years ago
parent
commit
15feaf0237
100 changed files with 13338 additions and 13155 deletions
  1. +3
    -3
      .gitattributes
  2. +2
    -2
      .github/CODEOWNERS
  3. +4
    -4
      .github/ISSUE_TEMPLATE.md
  4. +4
    -4
      .github/PULL_REQUEST_TEMPLATE.md
  5. +24
    -24
      .travis.yml
  6. +4
    -4
      AUTHORS
  7. +73
    -73
      CODE_OF_CONDUCT.md
  8. +73
    -73
      CONTRIBUTING.md
  9. +4
    -4
      Dockerfile
  10. +11
    -11
      Dockerfile.build
  11. +315
    -315
      Gopkg.lock
  12. +103
    -103
      Gopkg.toml
  13. +1792
    -1779
      HISTORY.md
  14. +26
    -26
      LICENSE
  15. +1056
    -1058
      README.md
  16. +1
    -1
      VERSION
  17. +353
    -353
      _benchmarks/README.md
  18. +25
    -25
      _benchmarks/expressjs-sessions/app.js
  19. +13
    -13
      _benchmarks/expressjs/app.js
  20. +4
    -4
      _benchmarks/iris-mvc-templates/views/about.html
  21. +14
    -14
      _benchmarks/iris-mvc-templates/views/contact.html
  22. +104
    -104
      _benchmarks/iris-mvc-templates/views/index.html
  23. +3
    -3
      _benchmarks/iris-mvc-templates/views/shared/error.html
  24. +49
    -49
      _benchmarks/iris-mvc-templates/views/shared/layout.html
  25. +37
    -37
      _benchmarks/netcore-mvc-templates/Controllers/HomeController.cs
  26. +9
    -9
      _benchmarks/netcore-mvc-templates/Models/ErrorViewModel.cs
  27. +25
    -25
      _benchmarks/netcore-mvc-templates/Program.cs
  28. +46
    -46
      _benchmarks/netcore-mvc-templates/Startup.cs
  29. +7
    -7
      _benchmarks/netcore-mvc-templates/Views/Home/About.cshtml
  30. +17
    -17
      _benchmarks/netcore-mvc-templates/Views/Home/Contact.cshtml
  31. +108
    -108
      _benchmarks/netcore-mvc-templates/Views/Home/Index.cshtml
  32. +8
    -8
      _benchmarks/netcore-mvc-templates/Views/Shared/Error.cshtml
  33. +45
    -45
      _benchmarks/netcore-mvc-templates/Views/Shared/_Layout.cshtml
  34. +3
    -3
      _benchmarks/netcore-mvc-templates/Views/_ViewImports.cshtml
  35. +3
    -3
      _benchmarks/netcore-mvc-templates/Views/_ViewStart.cshtml
  36. +8
    -8
      _benchmarks/netcore-mvc-templates/appsettings.json
  37. +15
    -15
      _benchmarks/netcore-mvc-templates/netcore-mvc-templates.csproj
  38. +44
    -44
      _benchmarks/netcore-mvc-templates/wwwroot/lib/bootstrap/.bower.json
  39. +587
    -587
      _benchmarks/netcore-mvc-templates/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.css
  40. +5
    -5
      _benchmarks/netcore-mvc-templates/wwwroot/lib/bootstrap/dist/css/bootstrap-theme.min.css
  41. +6757
    -6757
      _benchmarks/netcore-mvc-templates/wwwroot/lib/bootstrap/dist/css/bootstrap.css
  42. +5
    -5
      _benchmarks/netcore-mvc-templates/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css
  43. +43
    -43
      _benchmarks/netcore-mvc-templates/wwwroot/lib/jquery-validation-unobtrusive/.bower.json
  44. +39
    -39
      _benchmarks/netcore-mvc-templates/wwwroot/lib/jquery-validation/.bower.json
  45. +24
    -24
      _benchmarks/netcore-mvc-templates/wwwroot/lib/jquery/.bower.json
  46. +36
    -36
      _benchmarks/netcore-mvc-templates/wwwroot/lib/jquery/LICENSE.txt
  47. +33
    -33
      _benchmarks/netcore-mvc/Controllers/ValuesController.cs
  48. +25
    -25
      _benchmarks/netcore-mvc/Program.cs
  49. +35
    -35
      _benchmarks/netcore-mvc/Startup.cs
  50. +15
    -15
      _benchmarks/netcore-mvc/appsettings.json
  51. +19
    -19
      _benchmarks/netcore-mvc/netcore-mvc.csproj
  52. +25
    -25
      _benchmarks/netcore-sessions/Program.cs
  53. +82
    -82
      _benchmarks/netcore-sessions/Startup.cs
  54. +8
    -8
      _benchmarks/netcore-sessions/appsettings.json
  55. +15
    -15
      _benchmarks/netcore-sessions/netcore-sessions.csproj
  56. +25
    -25
      _benchmarks/netcore/Program.cs
  57. +38
    -38
      _benchmarks/netcore/Startup.cs
  58. +8
    -8
      _benchmarks/netcore/appsettings.json
  59. +15
    -15
      _benchmarks/netcore/netcore.csproj
  60. +4
    -4
      cache/AUTHORS
  61. +26
    -26
      cache/LICENSE
  62. +21
    -18
      configuration.go
  63. +1
    -1
      context/context.go
  64. +76
    -0
      core/host/interrupt.go
  65. +0
    -2
      core/host/supervisor.go
  66. +0
    -61
      core/host/world.go
  67. +93
    -0
      core/maintenance/authenticate.go
  68. +41
    -0
      core/maintenance/client/client.go
  69. +33
    -0
      core/maintenance/encoding/unmarshaler.go
  70. +6
    -0
      core/maintenance/maintenance.go
  71. +83
    -0
      core/maintenance/version.go
  72. +59
    -0
      core/maintenance/version/fetch.go
  73. +64
    -0
      core/maintenance/version/version.go
  74. +35
    -0
      core/router/macro/interpreter/ast/ast.go
  75. +1
    -1
      core/router/mime.go
  76. +16
    -5
      core/router/node/node.go
  77. +3
    -3
      doc.go
  78. +0
    -81
      faq.md
  79. +2
    -1
      httptest/httptest.go
  80. +7
    -7
      iris.go
  81. +50
    -50
      middleware/README.md
  82. +4
    -4
      sessions/AUTHORS
  83. +26
    -26
      sessions/LICENSE
  84. +4
    -10
      sessions/sessiondb/badger/database.go
  85. +4
    -10
      sessions/sessiondb/boltdb/database.go
  86. +6
    -20
      sessions/sessiondb/file/database.go
  87. +3
    -9
      sessions/sessiondb/leveldb/database.go
  88. +3
    -9
      sessions/sessiondb/redis/database.go
  89. +4
    -4
      typescript/AUTHORS
  90. +26
    -26
      typescript/LICENSE
  91. +8
    -8
      typescript/README.md
  92. +8
    -8
      typescript/_examples/editor/www/index.html
  93. +16
    -16
      typescript/_examples/editor/www/scripts/app.ts
  94. +22
    -22
      typescript/_examples/editor/www/scripts/tsconfig.json
  95. +8
    -8
      typescript/_examples/typescript/www/index.html
  96. +16
    -16
      typescript/_examples/typescript/www/scripts/app.ts
  97. +0
    -151
      version.go
  98. +4
    -4
      websocket/AUTHORS
  99. +26
    -26
      websocket/LICENSE
  100. +255
    -255
      websocket/client.ts

+ 3
- 3
.gitattributes View File

@@ -1,4 +1,4 @@
*.go linguist-language=Go
vendor/* linguist-vendored
_examples/* linguist-documentation
*.go linguist-language=Go
vendor/* linguist-vendored
_examples/* linguist-documentation
_benchmarks/* linguist-documentation

+ 2
- 2
.github/CODEOWNERS View File

@@ -1,2 +1,2 @@
# These owners will be the default owners for everything in the repo.
* @kataras
# These owners will be the default owners for everything in the repo.
* @kataras

+ 4
- 4
.github/ISSUE_TEMPLATE.md View File

@@ -1,5 +1,5 @@
Documentation for the Iris project can be found at
<https://github.com/kataras/iris#learn>.
Want to contribute to the Iris project?
Documentation for the Iris project can be found at
<https://github.com/kataras/iris#learn>.
Want to contribute to the Iris project?
<https://github.com/kataras/blob/master/CONTRIBUTING.md>

+ 4
- 4
.github/PULL_REQUEST_TEMPLATE.md View File

@@ -1,5 +1,5 @@
# We'd love to see more contributions
Read how you can [contribute to the project](https://github.com/kataras/blob/master/CONTRIBUTING.md).
# We'd love to see more contributions
Read how you can [contribute to the project](https://github.com/kataras/blob/master/CONTRIBUTING.md).
> Please attach an [issue](https://github.com/kataras/iris/issues) link which your PR solves otherwise your work may be rejected.

+ 24
- 24
.travis.yml View File

@@ -1,25 +1,25 @@
language: go
os:
- linux
- osx
go:
# - go1.8 works of course but
# we must encourage users to update to the latest go version,
# so examples are running on go 1.9 mode.
- go1.9
# - tip
go_import_path: github.com/kataras/iris
install:
- go get ./... # for iris-contrib/httpexpect, kataras/golog, boltdb/bolt(sessiondb, optional)
script:
- go test -v -cover ./...
after_script:
# examples
- cd ./_examples
- go get ./...
- go test -v -cover ./...
- cd ../
# typescript examples
- cd ./typescript/_examples
- go get ./...
language: go
os:
- linux
- osx
go:
# - go1.8 works of course but
# we must encourage users to update to the latest go version,
# so examples are running on go 1.9 mode.
- go1.9
# - tip
go_import_path: github.com/kataras/iris
install:
- go get ./... # for iris-contrib/httpexpect, kataras/golog, kataras/signal
script:
- go test -v -cover ./...
after_script:
# examples
- cd ./_examples
- go get ./...
- go test -v -cover ./...
- cd ../
# typescript examples
- cd ./typescript/_examples
- go get ./...
- go test -v -cover ./...

+ 4
- 4
AUTHORS View File

@@ -1,4 +1,4 @@
# This is the official list of Iris authors for copyright
# purposes.
Gerasimos Maropoulos <kataras2006@hotmail.com>
# This is the official list of Iris authors for copyright
# purposes.
Gerasimos Maropoulos <kataras2006@hotmail.com>

+ 73
- 73
CODE_OF_CONDUCT.md View File

@@ -1,74 +1,74 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at kataras2006@hotmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at kataras2006@hotmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

+ 73
- 73
CONTRIBUTING.md View File

@@ -1,74 +1,74 @@
# Contributing
First of all read our [Code of Conduct](https://github.com/kataras/iris/tree/master/CODE_OF_CONDUCT.md).
## PR
1. Open a new [issue](https://github.com/kataras/iris/issues/new)
* Write version of your local Iris.
* Write version of your local Go programming language.
* Describe your problem, what did you expect to see and what you see instead.
* If it's a feature request, describe your idea as better as you can
* optionally, navigate to the [chat](https://kataras.rocket.chat/channel/iris) to push other members to participate and share their thoughts about your brilliant idea.
2. Fork the [repository](https://github.com/kataras/iris).
3. Make your changes.
4. Compare & Push the PR from [here](https://github.com/kataras/iris/compare).
## Donate
Help this project to continue deliver awesome and unique features with the higher code quality as possible by donating any amount via [PayPal](https://www.paypal.me/kataras) or [BTC](https://iris-go.com/v8/donate)!
| Name | Amount | Membership |
| -----------|--------|--------|
| [Juan Sebastián Suárez Valencia](https://github.com/Juanses) | 20 EUR | Bronze |
| [Bob Lee](https://github.com/li3p) | 20 EUR | Bronze |
| [Celso Luiz](https://github.com/celsosz) | 50 EUR | **Silver** |
| [Ankur Srivastava](https://github.com/ansrivas) | 20 EUR | Bronze |
| [Damon Zhao](https://github.com/se77en) | 20 EUR | Bronze |
| [Exponity - Tech Company](https://github.com/exponity) | 30 EUR | Bronze |
| [Thomas Fritz](https://github.com/thomasfr) | 25 EUR | Bronze |
| [Thanos V.](http://mykonosbiennale.com/) | 20 EUR | Bronze |
| [George Opritescu](https://github.com/International) | 20 EUR | Bronze |
| [Lex Tang](https://github.com/lexrus) | 20 EUR | Bronze |
| [Bill Q.](https://github.com/hiveminded) | 600 EUR | **Gold** |
| [Conrad Steenberg](https://github.com/hengestone) | 25 EUR | Bronze |
## Translate
We need your help with translations into your native language.
Iris needs your help, please think about contributing to the translation of the [README](README.md) and https://iris-go.com, you will be rewarded.
Instructions can be found at: https://github.com/kataras/iris/issues/796
## Share
### Writing
Write an article about Iris in https://medium.com , https://dev.to or if you're being a hackathon at https://hackernoon.com, some examples:
* [How to build a file upload form using DropzoneJS and Go](https://hackernoon.com/how-to-build-a-file-upload-form-using-dropzonejs-and-go-8fb9f258a991)
* [How to display existing files on server using DropzoneJS and Go](https://hackernoon.com/how-to-display-existing-files-on-server-using-dropzonejs-and-go-53e24b57ba19)
* [Iris Go vs .NET Core Kestrel in terms of HTTP performance](https://hackernoon.com/iris-go-vs-net-core-kestrel-in-terms-of-http-performance-806195dc93d5)
* [Go vs .NET Core in terms of HTTP performance](https://medium.com/@kataras/go-vs-net-core-in-terms-of-http-performance-7535a61b67b8)
* [Iris, a modular web framework](https://medium.com/@corebreaker/iris-web-cd684b4685c7)
* [How to Turn an Android Device into a Web Server](https://twitter.com/ThePracticalDev/status/892022594031017988)
* [A URL Shortener Service using Go, Iris and Bolt](https://medium.com/@kataras/a-url-shortener-service-using-go-iris-and-bolt-4182f0b00ae7)
### Social networks
If you're part of any social network, do a post(or tweet if twitter) about Iris and what you love about it, many examples can be found, the most recent one is [that](https://www.facebook.com/eliaswalyba/posts/1462004807202379).
### Work
Convince your colleagues to try the Iris web framework at dev environment and if they choose to proceed on production, contact with [us](mailto:kataras2006@hotmail.com?subject=Iris%20Production) for further instructions, if you need any help.
Many young people are choosing Iris for their postgraduate studies as well.
## Documentation
We're preparing the new version of the [Build A Better Web, Together](https://github.com/kataras/build-a-better-web-together) Go book, which is a type of documentation of Iris web framework as well.
If you want to be part of this and you've time for collaboration, please open a new [issue](https://github.com/kataras/build-a-better-web-together/issues/new) and write some words about yourself and your overall experience at tech. At the end of the day you will be granded with `write access` in order to push your sections without our approval at all.
# Contributing
First of all read our [Code of Conduct](https://github.com/kataras/iris/tree/master/CODE_OF_CONDUCT.md).
## PR
1. Open a new [issue](https://github.com/kataras/iris/issues/new)
* Write version of your local Iris.
* Write version of your local Go programming language.
* Describe your problem, what did you expect to see and what you see instead.
* If it's a feature request, describe your idea as better as you can
* optionally, navigate to the [chat](https://kataras.rocket.chat/channel/iris) to push other members to participate and share their thoughts about your brilliant idea.
2. Fork the [repository](https://github.com/kataras/iris).
3. Make your changes.
4. Compare & Push the PR from [here](https://github.com/kataras/iris/compare).
## Donate
Help this project to continue deliver awesome and unique features with the higher code quality as possible by donating any amount via [PayPal](https://www.paypal.me/kataras) or [BTC](https://iris-go.com/v8/donate)!
| Name | Amount | Membership |
| -----------|--------|--------|
| [Juan Sebastián Suárez Valencia](https://github.com/Juanses) | 20 EUR | Bronze |
| [Bob Lee](https://github.com/li3p) | 20 EUR | Bronze |
| [Celso Luiz](https://github.com/celsosz) | 50 EUR | **Silver** |
| [Ankur Srivastava](https://github.com/ansrivas) | 20 EUR | Bronze |
| [Damon Zhao](https://github.com/se77en) | 20 EUR | Bronze |
| [Exponity - Tech Company](https://github.com/exponity) | 30 EUR | Bronze |
| [Thomas Fritz](https://github.com/thomasfr) | 25 EUR | Bronze |
| [Thanos V.](http://mykonosbiennale.com/) | 20 EUR | Bronze |
| [George Opritescu](https://github.com/International) | 20 EUR | Bronze |
| [Lex Tang](https://github.com/lexrus) | 20 EUR | Bronze |
| [Bill Q.](https://github.com/hiveminded) | 600 EUR | **Gold** |
| [Conrad Steenberg](https://github.com/hengestone) | 25 EUR | Bronze |
## Translate
We need your help with translations into your native language.
Iris needs your help, please think about contributing to the translation of the [README](README.md) and https://iris-go.com, you will be rewarded.
Instructions can be found at: https://github.com/kataras/iris/issues/796
## Share
### Writing
Write an article about Iris in https://medium.com , https://dev.to or if you're being a hackathon at https://hackernoon.com, some examples:
* [How to build a file upload form using DropzoneJS and Go](https://hackernoon.com/how-to-build-a-file-upload-form-using-dropzonejs-and-go-8fb9f258a991)
* [How to display existing files on server using DropzoneJS and Go](https://hackernoon.com/how-to-display-existing-files-on-server-using-dropzonejs-and-go-53e24b57ba19)
* [Iris Go vs .NET Core Kestrel in terms of HTTP performance](https://hackernoon.com/iris-go-vs-net-core-kestrel-in-terms-of-http-performance-806195dc93d5)
* [Go vs .NET Core in terms of HTTP performance](https://medium.com/@kataras/go-vs-net-core-in-terms-of-http-performance-7535a61b67b8)
* [Iris, a modular web framework](https://medium.com/@corebreaker/iris-web-cd684b4685c7)
* [How to Turn an Android Device into a Web Server](https://twitter.com/ThePracticalDev/status/892022594031017988)
* [A URL Shortener Service using Go, Iris and Bolt](https://medium.com/@kataras/a-url-shortener-service-using-go-iris-and-bolt-4182f0b00ae7)
### Social networks
If you're part of any social network, do a post(or tweet if twitter) about Iris and what you love about it, many examples can be found, the most recent one is [that](https://www.facebook.com/eliaswalyba/posts/1462004807202379).
### Work
Convince your colleagues to try the Iris web framework at dev environment and if they choose to proceed on production, contact with [us](mailto:kataras2006@hotmail.com?subject=Iris%20Production) for further instructions, if you need any help.
Many young people are choosing Iris for their postgraduate studies as well.
## Documentation
We're preparing the new version of the [Build A Better Web, Together](https://github.com/kataras/build-a-better-web-together) Go book, which is a type of documentation of Iris web framework as well.
If you want to be part of this and you've time for collaboration, please open a new [issue](https://github.com/kataras/build-a-better-web-together/issues/new) and write some words about yourself and your overall experience at tech. At the end of the day you will be granded with `write access` in order to push your sections without our approval at all.
All new contributors of that book will receive prizes!

+ 4
- 4
Dockerfile View File

@@ -1,5 +1,5 @@
FROM irisgo/cloud-native-go:latest
ENV APPSOURCES /go/src/github.com/iris-contrib/cloud-native-go
FROM irisgo/cloud-native-go:latest
ENV APPSOURCES /go/src/github.com/iris-contrib/cloud-native-go
RUN ${APPSOURCES}/cloud-native-go

+ 11
- 11
Dockerfile.build View File

@@ -1,12 +1,12 @@
FROM golang:1.9-alpine
RUN apk update && apk upgrade && apk add --no-cache bash git
RUN go get github.com/iris-contrib/cloud-native-go
ENV SOURCES /go/src/github.com/iris-contrib/cloud-native-go
# COPY . ${SOURCES}
RUN cd ${SOURCES} $$ CGO_ENABLED=0 go build
ENTRYPOINT cloud-native-go
FROM golang:1.9-alpine
RUN apk update && apk upgrade && apk add --no-cache bash git
RUN go get github.com/iris-contrib/cloud-native-go
ENV SOURCES /go/src/github.com/iris-contrib/cloud-native-go
# COPY . ${SOURCES}
RUN cd ${SOURCES} $$ CGO_ENABLED=0 go build
ENTRYPOINT cloud-native-go
EXPOSE 8080

+ 315
- 315
Gopkg.lock View File

@@ -1,315 +1,315 @@
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
[[projects]]
name = "github.com/BurntSushi/toml"
packages = ["."]
revision = "b26d9c308763d68093482582cea63d69be07a0f0"
version = "v0.3.0"
[[projects]]
branch = "master"
name = "github.com/Joker/jade"
packages = ["."]
revision = "35b3f5bdbcc920cd31f4870536dbc63be8530541"
[[projects]]
branch = "master"
name = "github.com/iris-contrib/i18n"
packages = ["."]
revision = "976ad7f3463c8f0b8fd949cf5e78a73a1828c96d"
[[projects]]
name = "github.com/ajg/form"
packages = ["."]
revision = "cc2954064ec9ea8d93917f0f87456e11d7b881ad"
version = "v1.5"
[[projects]]
branch = "master"
name = "github.com/aymerick/raymond"
packages = [".","ast","lexer","parser"]
revision = "72acac2207479d21dd45898c2a4264246c818148"
[[projects]]
name = "github.com/boltdb/bolt"
packages = ["."]
revision = "2f1ce7a837dcb8da3ec595b1dac9d0632f0f99e8"
version = "v1.3.1"
[[projects]]
branch = "master"
name = "github.com/dgraph-io/badger"
packages = ["."]
revision = "d8b951787ebe5c42286475df8a3dea25045bda1a"
[[projects]]
name = "github.com/davecgh/go-spew"
packages = ["spew"]
revision = "346938d642f2ec3594ed81d874461961cd0faa76"
version = "v1.1.0"
[[projects]]
branch = "master"
name = "github.com/eknkc/amber"
packages = [".","parser"]
revision = "b8bd8b03e4f747e33f092617225e9fa8076c0448"
[[projects]]
name = "github.com/fatih/structs"
packages = ["."]
revision = "a720dfa8df582c51dee1b36feabb906bde1588bd"
version = "v1.0"
[[projects]]
branch = "master"
name = "github.com/flosch/pongo2"
packages = ["."]
revision = "58f1f3387f7c57843ff829d92a759d08abe5a63f"
[[projects]]
branch = "master"
name = "github.com/garyburd/redigo"
packages = ["internal","redis"]
revision = "b925df3cc15d8646e9b5b333ebaf3011385aba11"
[[projects]]
branch = "master"
name = "github.com/gavv/monotime"
packages = ["."]
revision = "47d58efa69556a936a3c15eb2ed42706d968ab01"
[[projects]]
branch = "master"
name = "github.com/golang/snappy"
packages = ["."]
revision = "553a641470496b2327abcac10b36396bd98e45c9"
[[projects]]
branch = "master"
name = "github.com/google/go-querystring"
packages = ["query"]
revision = "53e6ce116135b80d037921a7fdd5138cf32d7a8a"
[[projects]]
name = "github.com/gorilla/websocket"
packages = ["."]
revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
version = "v1.2.0"
[[projects]]
name = "github.com/imkira/go-interpol"
packages = ["."]
revision = "5accad8134979a6ac504d456a6c7f1c53da237ca"
version = "v1.1.0"
[[projects]]
branch = "master"
name = "github.com/iris-contrib/formBinder"
packages = ["."]
revision = "ad9fb86c356f971f30319c40ddbdcf72129a2791"
[[projects]]
branch = "master"
name = "github.com/iris-contrib/httpexpect"
packages = ["."]
revision = "65e93247e7071782e760f82086e8b677cca0c78a"
[[projects]]
branch = "master"
name = "github.com/json-iterator/go"
packages = ["."]
revision = "2dc0031b26575ddf5dab09ab7795105a05575473"
[[projects]]
branch = "master"
name = "github.com/juju/errors"
packages = ["."]
revision = "c7d06af17c68cd34c835053720b21f6549d9b0ee"
[[projects]]
branch = "master"
name = "github.com/kataras/golog"
packages = ["."]
revision = "2ed680e7b1f34147164fa8073373e14fce02ac30"
[[projects]]
branch = "master"
name = "github.com/kataras/pio"
packages = [".","terminal"]
revision = "825e39f34365e7db2c9fbc3692c16220e3bd7418"
[[projects]]
branch = "master"
name = "github.com/kataras/survey"
packages = ["."]
revision = "20e139a6d2469769ae88e0a3579ba5df71839ca7"
[[projects]]
branch = "master"
name = "github.com/skratchdot/open-golang"
packages = ["."]
revision = "75fb7ed4208cf72d323d7d02fd1a5964a7a9073c"
[[projects]]
name = "github.com/klauspost/compress"
packages = ["flate","gzip"]
revision = "6c8db69c4b49dd4df1fff66996cf556176d0b9bf"
version = "v1.2.1"
[[projects]]
name = "github.com/klauspost/cpuid"
packages = ["."]
revision = "ae7887de9fa5d2db4eaa8174a7eff2c1ac00f2da"
version = "v1.1"
[[projects]]
name = "github.com/klauspost/crc32"
packages = ["."]
revision = "cb6bfca970f6908083f26f39a79009d608efd5cd"
version = "v1.1"
[[projects]]
branch = "master"
name = "github.com/microcosm-cc/bluemonday"
packages = ["."]
revision = "1c44c0b45a213b21569d6dbf440c47191652566f"
[[projects]]
branch = "master"
name = "github.com/moul/http2curl"
packages = ["."]
revision = "4e24498b31dba4683efb9d35c1c8a91e2eda28c8"
[[projects]]
name = "github.com/pmezard/go-difflib"
packages = ["difflib"]
revision = "792786c7400a136282c1664665ae0a8db921c6c2"
version = "v1.0.0"
[[projects]]
name = "github.com/russross/blackfriday"
packages = ["."]
revision = "cadec560ec52d93835bf2f15bd794700d3a2473b"
version = "v2.0.0"
[[projects]]
branch = "master"
name = "github.com/ryanuber/columnize"
packages = ["."]
revision = "abc90934186a77966e2beeac62ed966aac0561d5"
[[projects]]
branch = "master"
name = "github.com/satori/go.uuid"
packages = ["."]
revision = "5bf94b69c6b68ee1b541973bb8e1144db23a194b"
[[projects]]
branch = "master"
name = "github.com/sergi/go-diff"
packages = ["diffmatchpatch"]
revision = "feef008d51ad2b3778f85d387ccf91735543008d"
[[projects]]
branch = "master"
name = "github.com/shurcooL/sanitized_anchor_name"
packages = ["."]
revision = "541ff5ee47f1dddf6a5281af78307d921524bcb5"
[[projects]]
name = "github.com/stretchr/testify"
packages = ["assert","require"]
revision = "69483b4bd14f5845b5a1e55bca19e954e827f1d0"
version = "v1.1.4"
[[projects]]
branch = "master"
name = "github.com/syndtr/goleveldb"
packages = ["leveldb","leveldb/cache","leveldb/comparer","leveldb/errors","leveldb/filter","leveldb/iterator","leveldb/journal","leveldb/memdb","leveldb/opt","leveldb/storage","leveldb/table","leveldb/util"]
revision = "b89cc31ef7977104127d34c1bd31ebd1a9db2199"
[[projects]]
branch = "master"
name = "github.com/valyala/bytebufferpool"
packages = ["."]
revision = "e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7"
[[projects]]
branch = "master"
name = "github.com/xeipuuv/gojsonpointer"
packages = ["."]
revision = "6fe8760cad3569743d51ddbb243b26f8456742dc"
[[projects]]
branch = "master"
name = "github.com/xeipuuv/gojsonreference"
packages = ["."]
revision = "e02fc20de94c78484cd5ffb007f8af96be030a45"
[[projects]]
branch = "master"
name = "github.com/xeipuuv/gojsonschema"
packages = ["."]
revision = "0c8571ac0ce161a5feb57375a9cdf148c98c0f70"
[[projects]]
branch = "master"
name = "github.com/yalp/jsonpath"
packages = ["."]
revision = "31a79c7593bb93eb10b163650d4a3e6ca190e4dc"
[[projects]]
name = "github.com/yudai/gojsondiff"
packages = [".","formatter"]
revision = "7b1b7adf999dab73a6eb02669c3d82dbb27a3dd6"
version = "1.0.0"
[[projects]]
branch = "master"
name = "github.com/yudai/golcs"
packages = ["."]
revision = "ecda9a501e8220fae3b4b600c3db4b0ba22cfc68"
[[projects]]
branch = "master"
name = "golang.org/x/crypto"
packages = ["acme","acme/autocert"]
revision = "81e90905daefcd6fd217b62423c0908922eadb30"
[[projects]]
branch = "master"
name = "golang.org/x/net"
packages = ["html","html/atom","idna","publicsuffix"]
revision = "66aacef3dd8a676686c7ae3716979581e8b03c47"
[[projects]]
branch = "master"
name = "golang.org/x/sys"
packages = ["unix"]
revision = "2d6f6f883a06fc0d5f4b14a81e4c28705ea64c15"
[[projects]]
branch = "master"
name = "golang.org/x/text"
packages = ["internal/gen","internal/triegen","internal/ucd","secure/bidirule","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable"]
revision = "de984aaade05b6b868d6ad3a063e045ed3609f20"
[[projects]]
name = "gopkg.in/ini.v1"
packages = ["."]
revision = "20b96f641a5ea98f2f8619ff4f3e061cff4833bd"
version = "v1.28.2"
[[projects]]
branch = "v2"
name = "gopkg.in/yaml.v2"
packages = ["."]
revision = "eb3733d160e74a9c7e442f435eb3bea458e1d19f"
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "9669ba685c3ec1b0c93329b8457e8567e67cd9c11fd5ca1ecc1cc6e145775f60"
solver-name = "gps-cdcl"
solver-version = 1
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
[[projects]]
name = "github.com/BurntSushi/toml"
packages = ["."]
revision = "b26d9c308763d68093482582cea63d69be07a0f0"
version = "v0.3.0"
[[projects]]
branch = "master"
name = "github.com/Joker/jade"
packages = ["."]
revision = "35b3f5bdbcc920cd31f4870536dbc63be8530541"
[[projects]]
branch = "master"
name = "github.com/iris-contrib/i18n"
packages = ["."]
revision = "976ad7f3463c8f0b8fd949cf5e78a73a1828c96d"
[[projects]]
name = "github.com/ajg/form"
packages = ["."]
revision = "cc2954064ec9ea8d93917f0f87456e11d7b881ad"
version = "v1.5"
[[projects]]
branch = "master"
name = "github.com/aymerick/raymond"
packages = [".","ast","lexer","parser"]
revision = "72acac2207479d21dd45898c2a4264246c818148"
[[projects]]
name = "github.com/boltdb/bolt"
packages = ["."]
revision = "2f1ce7a837dcb8da3ec595b1dac9d0632f0f99e8"
version = "v1.3.1"
[[projects]]
branch = "master"
name = "github.com/dgraph-io/badger"
packages = ["."]
revision = "d8b951787ebe5c42286475df8a3dea25045bda1a"
[[projects]]
name = "github.com/davecgh/go-spew"
packages = ["spew"]
revision = "346938d642f2ec3594ed81d874461961cd0faa76"
version = "v1.1.0"
[[projects]]
branch = "master"
name = "github.com/eknkc/amber"
packages = [".","parser"]
revision = "b8bd8b03e4f747e33f092617225e9fa8076c0448"
[[projects]]
name = "github.com/fatih/structs"
packages = ["."]
revision = "a720dfa8df582c51dee1b36feabb906bde1588bd"
version = "v1.0"
[[projects]]
branch = "master"
name = "github.com/flosch/pongo2"
packages = ["."]
revision = "58f1f3387f7c57843ff829d92a759d08abe5a63f"
[[projects]]
branch = "master"
name = "github.com/garyburd/redigo"
packages = ["internal","redis"]
revision = "b925df3cc15d8646e9b5b333ebaf3011385aba11"
[[projects]]
branch = "master"
name = "github.com/gavv/monotime"
packages = ["."]
revision = "47d58efa69556a936a3c15eb2ed42706d968ab01"
[[projects]]
branch = "master"
name = "github.com/golang/snappy"
packages = ["."]
revision = "553a641470496b2327abcac10b36396bd98e45c9"
[[projects]]
branch = "master"
name = "github.com/google/go-querystring"
packages = ["query"]
revision = "53e6ce116135b80d037921a7fdd5138cf32d7a8a"
[[projects]]
name = "github.com/gorilla/websocket"
packages = ["."]
revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
version = "v1.2.0"
[[projects]]
name = "github.com/imkira/go-interpol"
packages = ["."]
revision = "5accad8134979a6ac504d456a6c7f1c53da237ca"
version = "v1.1.0"
[[projects]]
branch = "master"
name = "github.com/iris-contrib/formBinder"
packages = ["."]
revision = "ad9fb86c356f971f30319c40ddbdcf72129a2791"
[[projects]]
branch = "master"
name = "github.com/iris-contrib/httpexpect"
packages = ["."]
revision = "65e93247e7071782e760f82086e8b677cca0c78a"
[[projects]]
branch = "master"
name = "github.com/json-iterator/go"
packages = ["."]
revision = "2dc0031b26575ddf5dab09ab7795105a05575473"
[[projects]]
branch = "master"
name = "github.com/juju/errors"
packages = ["."]
revision = "c7d06af17c68cd34c835053720b21f6549d9b0ee"
[[projects]]
branch = "master"
name = "github.com/kataras/golog"
packages = ["."]
revision = "2ed680e7b1f34147164fa8073373e14fce02ac30"
[[projects]]
branch = "master"
name = "github.com/kataras/pio"
packages = [".","terminal"]
revision = "825e39f34365e7db2c9fbc3692c16220e3bd7418"
[[projects]]
branch = "master"
name = "github.com/kataras/survey"
packages = ["."]
revision = "20e139a6d2469769ae88e0a3579ba5df71839ca7"
[[projects]]
branch = "master"
name = "github.com/skratchdot/open-golang"
packages = ["."]
revision = "75fb7ed4208cf72d323d7d02fd1a5964a7a9073c"
[[projects]]
name = "github.com/klauspost/compress"
packages = ["flate","gzip"]
revision = "6c8db69c4b49dd4df1fff66996cf556176d0b9bf"
version = "v1.2.1"
[[projects]]
name = "github.com/klauspost/cpuid"
packages = ["."]
revision = "ae7887de9fa5d2db4eaa8174a7eff2c1ac00f2da"
version = "v1.1"
[[projects]]
name = "github.com/klauspost/crc32"
packages = ["."]
revision = "cb6bfca970f6908083f26f39a79009d608efd5cd"
version = "v1.1"
[[projects]]
branch = "master"
name = "github.com/microcosm-cc/bluemonday"
packages = ["."]
revision = "1c44c0b45a213b21569d6dbf440c47191652566f"
[[projects]]
branch = "master"
name = "github.com/moul/http2curl"
packages = ["."]
revision = "4e24498b31dba4683efb9d35c1c8a91e2eda28c8"
[[projects]]
name = "github.com/pmezard/go-difflib"
packages = ["difflib"]
revision = "792786c7400a136282c1664665ae0a8db921c6c2"
version = "v1.0.0"
[[projects]]
name = "github.com/russross/blackfriday"
packages = ["."]
revision = "cadec560ec52d93835bf2f15bd794700d3a2473b"
version = "v2.0.0"
[[projects]]
branch = "master"
name = "github.com/ryanuber/columnize"
packages = ["."]
revision = "abc90934186a77966e2beeac62ed966aac0561d5"
[[projects]]
branch = "master"
name = "github.com/satori/go.uuid"
packages = ["."]
revision = "5bf94b69c6b68ee1b541973bb8e1144db23a194b"
[[projects]]
branch = "master"
name = "github.com/sergi/go-diff"
packages = ["diffmatchpatch"]
revision = "feef008d51ad2b3778f85d387ccf91735543008d"
[[projects]]
branch = "master"
name = "github.com/shurcooL/sanitized_anchor_name"
packages = ["."]
revision = "541ff5ee47f1dddf6a5281af78307d921524bcb5"
[[projects]]
name = "github.com/stretchr/testify"
packages = ["assert","require"]
revision = "69483b4bd14f5845b5a1e55bca19e954e827f1d0"
version = "v1.1.4"
[[projects]]
branch = "master"
name = "github.com/syndtr/goleveldb"
packages = ["leveldb","leveldb/cache","leveldb/comparer","leveldb/errors","leveldb/filter","leveldb/iterator","leveldb/journal","leveldb/memdb","leveldb/opt","leveldb/storage","leveldb/table","leveldb/util"]
revision = "b89cc31ef7977104127d34c1bd31ebd1a9db2199"
[[projects]]
branch = "master"
name = "github.com/valyala/bytebufferpool"
packages = ["."]
revision = "e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7"
[[projects]]
branch = "master"
name = "github.com/xeipuuv/gojsonpointer"
packages = ["."]
revision = "6fe8760cad3569743d51ddbb243b26f8456742dc"
[[projects]]
branch = "master"
name = "github.com/xeipuuv/gojsonreference"
packages = ["."]
revision = "e02fc20de94c78484cd5ffb007f8af96be030a45"
[[projects]]
branch = "master"
name = "github.com/xeipuuv/gojsonschema"
packages = ["."]
revision = "0c8571ac0ce161a5feb57375a9cdf148c98c0f70"
[[projects]]
branch = "master"
name = "github.com/yalp/jsonpath"
packages = ["."]
revision = "31a79c7593bb93eb10b163650d4a3e6ca190e4dc"
[[projects]]
name = "github.com/yudai/gojsondiff"
packages = [".","formatter"]
revision = "7b1b7adf999dab73a6eb02669c3d82dbb27a3dd6"
version = "1.0.0"
[[projects]]
branch = "master"
name = "github.com/yudai/golcs"
packages = ["."]
revision = "ecda9a501e8220fae3b4b600c3db4b0ba22cfc68"
[[projects]]
branch = "master"
name = "golang.org/x/crypto"
packages = ["acme","acme/autocert"]
revision = "81e90905daefcd6fd217b62423c0908922eadb30"
[[projects]]
branch = "master"
name = "golang.org/x/net"
packages = ["html","html/atom","idna","publicsuffix"]
revision = "66aacef3dd8a676686c7ae3716979581e8b03c47"
[[projects]]
branch = "master"
name = "golang.org/x/sys"
packages = ["unix"]
revision = "2d6f6f883a06fc0d5f4b14a81e4c28705ea64c15"
[[projects]]
branch = "master"
name = "golang.org/x/text"
packages = ["internal/gen","internal/triegen","internal/ucd","secure/bidirule","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable"]
revision = "de984aaade05b6b868d6ad3a063e045ed3609f20"
[[projects]]
name = "gopkg.in/ini.v1"
packages = ["."]
revision = "20b96f641a5ea98f2f8619ff4f3e061cff4833bd"
version = "v1.28.2"
[[projects]]
branch = "v2"
name = "gopkg.in/yaml.v2"
packages = ["."]
revision = "eb3733d160e74a9c7e442f435eb3bea458e1d19f"
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "9669ba685c3ec1b0c93329b8457e8567e67cd9c11fd5ca1ecc1cc6e145775f60"
solver-name = "gps-cdcl"
solver-version = 1

+ 103
- 103
Gopkg.toml View File

@@ -1,103 +1,103 @@
[[constraint]]
name = "github.com/BurntSushi/toml"
version = "0.3.0"
[[constraint]]
branch = "master"
name = "github.com/Joker/jade"
[[constraint]]
branch = "master"
name = "github.com/iris-contrib/i18n"
[[constraint]]
branch = "master"
name = "github.com/aymerick/raymond"
[[constraint]]
branch = "master"
name = "github.com/boltdb/bolt"
[[constraint]]
branch = "master"
name = "github.com/dgraph-io/badger"
[[constraint]]
branch = "master"
name = "github.com/eknkc/amber"
[[constraint]]
name = "github.com/fatih/structs"
version = "1.0.0"
[[constraint]]
branch = "master"
name = "github.com/flosch/pongo2"
[[constraint]]
branch = "master"
name = "github.com/garyburd/redigo"
[[constraint]]
name = "github.com/gorilla/websocket"
version = "1.2.0"
[[constraint]]
branch = "master"
name = "github.com/iris-contrib/formBinder"
[[constraint]]
branch = "master"
name = "github.com/iris-contrib/httpexpect"
[[constraint]]
branch = "master"
name = "github.com/json-iterator/go"
[[constraint]]
branch = "master"
name = "github.com/kataras/golog"
[[constraint]]
branch = "master"
name = "github.com/kataras/survey"
[[constraint]]
branch = "master"
name = "github.com/skratchdot/open-golang"
[[constraint]]
name = "github.com/klauspost/compress"
version = "1.2.1"
[[constraint]]
branch = "master"
name = "github.com/microcosm-cc/bluemonday"
[[constraint]]
name = "github.com/russross/blackfriday"
version = "2.0.0"
[[constraint]]
branch = "master"
name = "github.com/ryanuber/columnize"
[[constraint]]
branch = "master"
name = "github.com/satori/go.uuid"
[[constraint]]
branch = "master"
name = "github.com/syndtr/goleveldb"
[[constraint]]
branch = "master"
name = "github.com/valyala/bytebufferpool"
[[constraint]]
branch = "master"
name = "golang.org/x/crypto"
[[constraint]]
branch = "v2"
name = "gopkg.in/yaml.v2"
[[constraint]]
name = "github.com/BurntSushi/toml"
version = "0.3.0"
[[constraint]]
branch = "master"
name = "github.com/Joker/jade"
[[constraint]]
branch = "master"
name = "github.com/iris-contrib/i18n"
[[constraint]]
branch = "master"
name = "github.com/aymerick/raymond"
[[constraint]]
branch = "master"
name = "github.com/boltdb/bolt"
[[constraint]]
branch = "master"
name = "github.com/dgraph-io/badger"
[[constraint]]
branch = "master"
name = "github.com/eknkc/amber"
[[constraint]]
name = "github.com/fatih/structs"
version = "1.0.0"
[[constraint]]
branch = "master"
name = "github.com/flosch/pongo2"
[[constraint]]
branch = "master"
name = "github.com/garyburd/redigo"
[[constraint]]
name = "github.com/gorilla/websocket"
version = "1.2.0"
[[constraint]]
branch = "master"
name = "github.com/iris-contrib/formBinder"
[[constraint]]
branch = "master"
name = "github.com/iris-contrib/httpexpect"
[[constraint]]
branch = "master"
name = "github.com/json-iterator/go"
[[constraint]]
branch = "master"
name = "github.com/kataras/golog"
[[constraint]]
branch = "master"
name = "github.com/kataras/survey"
[[constraint]]
branch = "master"
name = "github.com/skratchdot/open-golang"
[[constraint]]
name = "github.com/klauspost/compress"
version = "1.2.1"
[[constraint]]
branch = "master"
name = "github.com/microcosm-cc/bluemonday"
[[constraint]]
name = "github.com/russross/blackfriday"
version = "2.0.0"
[[constraint]]
branch = "master"
name = "github.com/ryanuber/columnize"
[[constraint]]
branch = "master"
name = "github.com/satori/go.uuid"
[[constraint]]
branch = "master"
name = "github.com/syndtr/goleveldb"
[[constraint]]
branch = "master"
name = "github.com/valyala/bytebufferpool"
[[constraint]]
branch = "master"
name = "golang.org/x/crypto"
[[constraint]]
branch = "v2"
name = "gopkg.in/yaml.v2"

+ 1792
- 1779
HISTORY.md
File diff suppressed because it is too large
View File


+ 26
- 26
LICENSE View File

@@ -1,27 +1,27 @@
Copyright (c) 2017 The Iris Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Iris nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Copyright (c) 2017 The Iris Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Iris nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+ 1056
- 1058
README.md
File diff suppressed because it is too large
View File


+ 1
- 1
VERSION View File

@@ -1 +1 @@
8.5.4:https://github.com/kataras/iris/blob/master/HISTORY.md#th-26-october-2017--v854
8.5.5:https://github.com/kataras/iris/blob/master/HISTORY.md#tu-02-november-2017--v855

+ 353
- 353
_benchmarks/README.md View File

@@ -1,354 +1,354 @@
## Hardware
* Processor: Intel(R) Core(TM) **i7-4710HQ** CPU @ 2.50GHz 2.50GHz
* RAM: **8.00 GB**
## Software
* OS: Microsoft **Windows** [Version **10**.0.15063], power plan is "High performance"
* HTTP Benchmark Tool: https://github.com/codesenberg/bombardier, latest version **1.1**
* **.NET Core**: https://www.microsoft.com/net/core, latest version **2.0**
* **Iris**: https://github.com/kataras/iris, latest version **8.3** built with [go1.8.3](https://golang.org)
# .NET Core MVC vs Iris MVC
The first test will contain a simple application with a text response and the second will render templates + a layout.
## Simple
We will compare two identical things here, in terms of application, the expected response and the stability of their run times, so we will not try to put more things in the game like `JSON` or `XML` encoders and decoders, just a simple text message. To achieve a fair comparison we will use the MVC architecture pattern on both sides, Go and .NET Core.
### .NET Core MVC
```bash
$ cd netcore-mvc
$ dotnet run -c Release
Hosting environment: Production
Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-mvc
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
```
```bash
$ bombardier -c 125 -n 5000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 5000000 requests using 125 connections
5000000 / 5000000 [=====================================================================================] 100.00% 2m3s
Done!
Statistics Avg Stdev Max
Reqs/sec 40226.03 8724.30 161919
Latency 3.09ms 1.40ms 169.12ms
HTTP codes:
1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 8.91MB/s
```
### Iris MVC
```bash
$ cd iris-mvc
$ go run main.go
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 5000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 5000000 requests using 125 connections
5000000 / 5000000 [======================================================================================] 100.00% 47s
Done!
Statistics Avg Stdev Max
Reqs/sec 105643.81 7687.79 122564
Latency 1.18ms 366.55us 22.01ms
HTTP codes:
1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 19.65MB/s
```
Click [here](screens) to navigate to the screenshots.
### Summary
* Time to complete the `5000000 requests` - smaller is better.
* Reqs/sec - bigger is better.
* Latency - smaller is better
* Throughput - bigger is better.
* Memory usage - smaller is better.
* LOC (Lines Of Code) - smaller is better.
.NET Core MVC Application, written using 86 lines of code, ran for **2 minutes and 3 seconds** serving **40226.03** requests per second within **3.09ms** latency in average and **169.12ms** max, the memory usage of all these was ~123MB (without the dotnet host).
Iris MVC Application, written using 27 lines of code, ran for **47 seconds** serving **105643.71** requests per second within **1.18ms** latency in average and **22.01ms** max, the memory usage of all these was ~12MB.
#### Update: 20 August 2017
As [Josh Clark](https://twitter.com/clarkis117) and [Scott Hanselman‏](https://twitter.com/shanselman)‏ pointed out [on this status](https://twitter.com/shanselman/status/899005786826788865), on .NET Core MVC `Startup.cs` file the line with `services.AddMvc();` can be replaced with `services.AddMvcCore();`. I followed their helpful instructions and re-run the benchmarks. The article now contains the latest benchmark output for the .NET Core application with the change both Josh and Scott noted.
The twitter conversion: https://twitter.com/MakisMaropoulos/status/899113215895982080
For those who want to compare with the standard services.AddMvc(); you can see the old output by pressing [here](screens/5m_requests_netcore-mvc.png).
## MVC + Templates
Let’s run one more benchmark, spawn `1000000 requests` but this time we expect HTML generated by templates via the view engine.
### .NET Core MVC with Templates
```bash
$ cd netcore-mvc-templates
$ dotnet run -c Release
Hosting environment: Production
Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-mvc-templates
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000
Bombarding http://localhost:5000 with 1000000 requests using 125 connections
1000000 / 1000000 [=====================================================================================] 100.00% 1m20s
Done!
Statistics Avg Stdev Max
Reqs/sec 11738.60 7741.36 125887
Latency 10.10ms 22.10ms 1.97s
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 89.03MB/s
```
### Iris MVC with Templates
```bash
$ cd iris-mvc-templates
$ go run main.go
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000
Bombarding http://localhost:5000 with 1000000 requests using 125 connections
1000000 / 1000000 [======================================================================================] 100.00% 37s
Done!
Statistics Avg Stdev Max
Reqs/sec 26656.76 1944.73 31188
Latency 4.69ms 1.20ms 22.52ms
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 192.51MB/s
```
### Summary
* Time to complete the `1000000 requests` - smaller is better.
* Reqs/sec - bigger is better.
* Latency - smaller is better
* Memory usage - smaller is better.
* Throughput - bigger is better.
.NET Core MVC with Templates Application ran for **1 minute and 20 seconds** serving **11738.60** requests per second with **89.03MB/s** within **10.10ms** latency in average and **1.97s** max, the memory usage of all these was ~193MB (without the dotnet host).
Iris MVC with Templates Application ran for **37 seconds** serving **26656.76** requests per second with **192.51MB/s** within **1.18ms** latency in average and **22.52ms** max, the memory usage of all these was ~17MB.
# .NET Core (Kestrel) vs Iris
_Monday, 21 August 2017_
This time we will compare the speed of the “low-level” .NET Core’s server implementation named Kestrel and Iris’ “low-level” handlers, we will test two simple applications, the first will be the same as our previous application but written using handlers and the second test will contain a single route which sets and gets a session value(string) based on a key(string).
## Simple
Spawn `1000000 requests` with 125 different "threads", targeting to a dynamic registered route path, responds with a simple "value" text.
### .NET Core (Kestrel)
```bash
$ cd netcore
$ dotnet run -c Release
Hosting environment: Production
Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections
1000000 / 1000000 [======================================================================================] 100.00% 10s
Done!
Statistics Avg Stdev Max
Reqs/sec 97884.57 8699.94 110509
Latency 1.28ms 682.63us 61.04ms
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 17.73MB/s
```
### Iris
```bash
$ cd iris
$ go run main.go
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections
1000000 / 1000000 [=======================================================================================] 100.00% 8s
Done!
Statistics Avg Stdev Max
Reqs/sec 117917.79 4437.04 125614
Latency 1.06ms 278.12us 19.03ms
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 21.93MB/s
```
### Node.js (Express)
```bash
$ cd expressjs
$ npm install
$ node app.js
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections
1000000 / 1000000 [=======================================================================================] 100.00% 1m25s
Done!
Statistics Avg Stdev Max
Reqs/sec 11665.30 628.41 21978
Latency 10.72ms 1.45ms 112.10ms
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 3.14MB/s
```
### Summary
* Time to complete the `1000000 requests` - smaller is better.
* Reqs/sec - bigger is better.
* Latency - smaller is better
* Throughput - bigger is better.
* LOC (Lines Of Code) - smaller is better.
.NET Core (Kestrel) Application written using **63 code of lines** ran for **10 seconds** serving **97884.57** requests per second with **17.73MB/s** within **1.28ms** latency in average and **61.04ms** max.
Iris Application written using **14 code of lines** ran for **8 seconds** serving **117917.79** requests per second with **21.93MB/s** within **1.06ms** latency in average and **19.03ms** max.
Node.js (Express) Application written using **12 code of lines** ran for **1 minute and 25 seconds** serving **11665.30** requests per second with **3.14MB/s** within **10.72ms** latency in average and **112.10ms** max.
## Sessions
Spawn `5000000 requests` with 125 different "threads" targeting a static request path, sets and gets a session based on the name `"key"` and string value `"value"` and write that session value to the response stream.
### .NET Core (Kestrel) with Sessions
```bash
$ cd netcore-sessions
$ dotnet run -c Release
Hosting environment: Production
Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-sessions
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
```
```bash
$ bombardier -c 125 -n 5000000 http://localhost:5000/setget
Bombarding http://localhost:5000/setget with 5000000 requests using 125 connections
5000000 / 5000000 [====================================================================================] 100.00% 2m40s
Done!
Statistics Avg Stdev Max
Reqs/sec 31844.77 13856.19 253746
Latency 4.02ms 15.57ms 0.96s
HTTP codes:
1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 14.51MB/s
```
### Iris with Sessions
```bash
$ cd iris-sessions
$ go run main.go
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 5000000 http://localhost:5000/setget
Bombarding http://localhost:5000/setget with 5000000 requests using 125 connections
5000000 / 5000000 [====================================================================================] 100.00% 1m15s
Done!
Statistics Avg Stdev Max
Reqs/sec 66749.70 32110.67 110445
Latency 1.88ms 9.13ms 1.94s
HTTP codes:
1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 20.65MB/s
```
### Node.js (Express) with Sessions
```bash
$ cd expressjs-sessions
$ npm install
$ node app.js
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 5000000 http://localhost:5000/setget
Bombarding http://localhost:5000/setget with 5000000 requests using 125 connections
5000000 / 5000000 [====================================================================================] 100.00% 15m47s
Done!
Statistics Avg Stdev Max
Reqs/sec 5634.27 2317.30 9945
Latency 22.17ms 8.19ms 119.08ms
HTTP codes:
1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 1.48MB/s
```
### Summary
* Time to complete the `5000000 requests` - smaller is better.
* Reqs/sec - bigger is better.
* Latency - smaller is better
* Throughput - bigger is better.
.NET Core with Sessions Application ran for **2 minutes and 40 seconds** serving **31844.77** requests per second with **14.51MB/s** within **4.02ms** latency in average and **0.96s** max.
Iris with Sessions Application ran for **1 minute and 15 seconds** serving **66749.70** requests per second with **20.65MB/s** within **1.88ms** latency in average and **1.94s** max.
Node.js (Express) with Sessions Application ran for **15 minutes and 47 seconds** serving **5634.27** requests per second with **1.48MB/s** within **22.17ms** latency in average and **119.08ms** max.
> Click [here](screens) to navigate to the screenshots.
### Articles
**Go vs .NET Core in terms of HTTP performance (Sa, 19 August 2017)**
- https://medium.com/@kataras/go-vs-net-core-in-terms-of-http-performance-7535a61b67b8
- https://dev.to/kataras/go-vsnet-core-in-terms-of-http-performance
**Iris Go vs .NET Core Kestrel in terms of HTTP performance (Mo, 21 August 2017)**
- https://medium.com/@kataras/iris-go-vs-net-core-kestrel-in-terms-of-http-performance-806195dc93d5
## Hardware
* Processor: Intel(R) Core(TM) **i7-4710HQ** CPU @ 2.50GHz 2.50GHz
* RAM: **8.00 GB**
## Software
* OS: Microsoft **Windows** [Version **10**.0.15063], power plan is "High performance"
* HTTP Benchmark Tool: https://github.com/codesenberg/bombardier, latest version **1.1**
* **.NET Core**: https://www.microsoft.com/net/core, latest version **2.0**
* **Iris**: https://github.com/kataras/iris, latest version **8.3** built with [go1.8.3](https://golang.org)
# .NET Core MVC vs Iris MVC
The first test will contain a simple application with a text response and the second will render templates + a layout.
## Simple
We will compare two identical things here, in terms of application, the expected response and the stability of their run times, so we will not try to put more things in the game like `JSON` or `XML` encoders and decoders, just a simple text message. To achieve a fair comparison we will use the MVC architecture pattern on both sides, Go and .NET Core.
### .NET Core MVC
```bash
$ cd netcore-mvc
$ dotnet run -c Release
Hosting environment: Production
Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-mvc
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
```
```bash
$ bombardier -c 125 -n 5000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 5000000 requests using 125 connections
5000000 / 5000000 [=====================================================================================] 100.00% 2m3s
Done!
Statistics Avg Stdev Max
Reqs/sec 40226.03 8724.30 161919
Latency 3.09ms 1.40ms 169.12ms
HTTP codes:
1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 8.91MB/s
```
### Iris MVC
```bash
$ cd iris-mvc
$ go run main.go
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 5000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 5000000 requests using 125 connections
5000000 / 5000000 [======================================================================================] 100.00% 47s
Done!
Statistics Avg Stdev Max
Reqs/sec 105643.81 7687.79 122564
Latency 1.18ms 366.55us 22.01ms
HTTP codes:
1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 19.65MB/s
```
Click [here](screens) to navigate to the screenshots.
### Summary
* Time to complete the `5000000 requests` - smaller is better.
* Reqs/sec - bigger is better.
* Latency - smaller is better
* Throughput - bigger is better.
* Memory usage - smaller is better.
* LOC (Lines Of Code) - smaller is better.
.NET Core MVC Application, written using 86 lines of code, ran for **2 minutes and 3 seconds** serving **40226.03** requests per second within **3.09ms** latency in average and **169.12ms** max, the memory usage of all these was ~123MB (without the dotnet host).
Iris MVC Application, written using 27 lines of code, ran for **47 seconds** serving **105643.71** requests per second within **1.18ms** latency in average and **22.01ms** max, the memory usage of all these was ~12MB.
#### Update: 20 August 2017
As [Josh Clark](https://twitter.com/clarkis117) and [Scott Hanselman‏](https://twitter.com/shanselman)‏ pointed out [on this status](https://twitter.com/shanselman/status/899005786826788865), on .NET Core MVC `Startup.cs` file the line with `services.AddMvc();` can be replaced with `services.AddMvcCore();`. I followed their helpful instructions and re-run the benchmarks. The article now contains the latest benchmark output for the .NET Core application with the change both Josh and Scott noted.
The twitter conversion: https://twitter.com/MakisMaropoulos/status/899113215895982080
For those who want to compare with the standard services.AddMvc(); you can see the old output by pressing [here](screens/5m_requests_netcore-mvc.png).
## MVC + Templates
Let’s run one more benchmark, spawn `1000000 requests` but this time we expect HTML generated by templates via the view engine.
### .NET Core MVC with Templates
```bash
$ cd netcore-mvc-templates
$ dotnet run -c Release
Hosting environment: Production
Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-mvc-templates
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000
Bombarding http://localhost:5000 with 1000000 requests using 125 connections
1000000 / 1000000 [=====================================================================================] 100.00% 1m20s
Done!
Statistics Avg Stdev Max
Reqs/sec 11738.60 7741.36 125887
Latency 10.10ms 22.10ms 1.97s
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 89.03MB/s
```
### Iris MVC with Templates
```bash
$ cd iris-mvc-templates
$ go run main.go
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000
Bombarding http://localhost:5000 with 1000000 requests using 125 connections
1000000 / 1000000 [======================================================================================] 100.00% 37s
Done!
Statistics Avg Stdev Max
Reqs/sec 26656.76 1944.73 31188
Latency 4.69ms 1.20ms 22.52ms
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 192.51MB/s
```
### Summary
* Time to complete the `1000000 requests` - smaller is better.
* Reqs/sec - bigger is better.
* Latency - smaller is better
* Memory usage - smaller is better.
* Throughput - bigger is better.
.NET Core MVC with Templates Application ran for **1 minute and 20 seconds** serving **11738.60** requests per second with **89.03MB/s** within **10.10ms** latency in average and **1.97s** max, the memory usage of all these was ~193MB (without the dotnet host).
Iris MVC with Templates Application ran for **37 seconds** serving **26656.76** requests per second with **192.51MB/s** within **1.18ms** latency in average and **22.52ms** max, the memory usage of all these was ~17MB.
# .NET Core (Kestrel) vs Iris
_Monday, 21 August 2017_
This time we will compare the speed of the “low-level” .NET Core’s server implementation named Kestrel and Iris’ “low-level” handlers, we will test two simple applications, the first will be the same as our previous application but written using handlers and the second test will contain a single route which sets and gets a session value(string) based on a key(string).
## Simple
Spawn `1000000 requests` with 125 different "threads", targeting to a dynamic registered route path, responds with a simple "value" text.
### .NET Core (Kestrel)
```bash
$ cd netcore
$ dotnet run -c Release
Hosting environment: Production
Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections
1000000 / 1000000 [======================================================================================] 100.00% 10s
Done!
Statistics Avg Stdev Max
Reqs/sec 97884.57 8699.94 110509
Latency 1.28ms 682.63us 61.04ms
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 17.73MB/s
```
### Iris
```bash
$ cd iris
$ go run main.go
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections
1000000 / 1000000 [=======================================================================================] 100.00% 8s
Done!
Statistics Avg Stdev Max
Reqs/sec 117917.79 4437.04 125614
Latency 1.06ms 278.12us 19.03ms
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 21.93MB/s
```
### Node.js (Express)
```bash
$ cd expressjs
$ npm install
$ node app.js
Now listening on: http://localhost:5000
Application started. Press CTRL+C to shut down.
```
```bash
$ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5
Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections
1000000 / 1000000 [=======================================================================================] 100.00% 1m25s
Done!
Statistics Avg Stdev Max
Reqs/sec 11665.30 628.41 21978
Latency 10.72ms 1.45ms 112.10ms
HTTP codes:
1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 3.14MB/s
```
### Summary
* Time to complete the `1000000 requests` - smaller is better.
* Reqs/sec - bigger is better.
* Latency - smaller is better
* Throughput - bigger is better.
* LOC (Lines Of Code) - smaller is better.
.NET Core (Kestrel) Application written using **63 code of lines** ran for **10 seconds** serving **97884.57** requests per second with **17.73MB/s** within **1.28ms** latency in average and **61.04ms** max.
Iris Application written using **14 code of lines** ran for **8 seconds** serving **117917.79** requests per second with **21.93MB/s** within **1.06ms** latency in average and **19.03ms** max.
Node.js (Express) Application written using **12 code of lines** ran for **1 minute and 25 seconds** serving **11665.30** requests per second with **3.14MB/s** within **10.72ms** latency in average and **112.10ms** max.
## Sessions
Spawn `5000000 requests` with 125 different "threads" targeting a static request path, sets and gets a session based on the name `"key"` and string value `"value"` and write that session value to the response stream.
### .NET Core (Kestrel) with Sessions
```bash
$ cd netcore-sessions
$ dotnet run -c Release
Hosting environment: Production
Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-sessions
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
```
```bash
$ bombardier -c 125 -n 5000000 http://localhost:5000/setget