Skip to content
Simple Node.js app NOT responding to any TCP request (except for the HTTP maintenance endpoints).
JavaScript Dockerfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
.dockerignore
.gitignore
Dockerfile
LICENSE
README.md
package-lock.json
package.json
renovate.json
server.js

README.md

Actions Status

docker-nodejs-unresponsive-app

Simple Node.js app NOT responding to any TCP request (except for the HTTP maintenance endpoints).

This application is used as a system test helper for circuit breaker scenarios in real environments. Although it is meant as an HTTP application, unresponsitivity can as well be tested with any TCP-based protocol (requires Node v6 or higher).

Startup

Run docker with

docker run -p 8080:8095 docker.pkg.github.com/jforge/docker-nodejs-unresponsive-app/unresponsive-webapp:v-1572443441

The projects matches requirements for a Docker Hub Automated Build, e.g. https://hub.docker.com/r/eolio/docker-nodejs-unresponsive-app/

A corresponding Docker image can be used e.g. for a AWS EC2 Container deployment to get a public available "unresponsive" application very quickly, e.g. http://..compute.amazonaws.com/manage/health

API

Default behaviour is "unresponsive". The server then never responds except for the health checks and responsive switch.

HTTP-GET for the switch is just used for fast testing convenience and does not follow any REST-oriented approach (sorry).

Available HTTP Methods:

HTTP-Method Uri Response Description
GET /manage/health 200 Returns health and responsivity status
GET /api/health 200 Returns health and responsivity status
GET /manage/set_responsive 200 Sets the behaviour to "responsive"
GET /manage/set_unresponsive 200 Sets the behaviour to "unresponsive"
GET, POST /any/other/uri none (timeout) Server does not answer with (default) mode "unresponsive"
GET, POST /any/other/uri 200 Server returns always with 200 with mode "responsive"

"Unresponsive" := the server doesn't answer at all, if using arbitrary uris except these /api/health and the /manage methods.

Manage Response Payload

The above mentioned /manage methods answer with OK-health and the current (global) responsivity setting.

{ 
  "status": "OK",
  "responsivity": "unresponsive"
}

Response in "responsive" mode

If the server is set to "responsive", any Uri request but the above mentioned /api/health and /manage methods causes a HTTP 200-OK response together with a payload containing the requested resource.

{
  "status": "OK",
  "requestUri": "/any/other/uri"
}
You can’t perform that action at this time.