summaryrefslogtreecommitdiffstats
path: root/Bombs/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'Bombs/cpu')
-rw-r--r--Bombs/cpu/Dockerfile8
-rw-r--r--Bombs/cpu/README.md69
-rw-r--r--Bombs/cpu/bomb.sh5
-rw-r--r--Bombs/cpu/docker-compose.yml8
-rw-r--r--Bombs/cpu/sx.sh65
5 files changed, 155 insertions, 0 deletions
diff --git a/Bombs/cpu/Dockerfile b/Bombs/cpu/Dockerfile
new file mode 100644
index 0000000..2a37769
--- /dev/null
+++ b/Bombs/cpu/Dockerfile
@@ -0,0 +1,8 @@
+FROM centos/s2i-core-centos7:latest
+MAINTAINER Christophe LARUE <dev@startx.fr>
+
+COPY sx.sh /bin/sx
+COPY bomb.sh /bin/bomb
+RUN chmod 775 /bin/sx /bin/bomb
+
+CMD [ "/bin/sx" ]
diff --git a/Bombs/cpu/README.md b/Bombs/cpu/README.md
new file mode 100644
index 0000000..1b7358d
--- /dev/null
+++ b/Bombs/cpu/README.md
@@ -0,0 +1,69 @@
+# Docker Bomb Images : CPU
+
+Simple container used to bomb cpu usage for crash testing. !!! WARNING, starting this container will start flooding your CPU by default for 10sec.
+
+You can find information on this image and how to use it by visiting the [Dockerhub registry](https://github.com/startxfr/docker-images)
+
+| [![Build Status](https://travis-ci.org/startxfr/docker-images.svg?branch=openshift)](https://travis-ci.org/startxfr/docker-images) | [Dockerhub Registry](https://hub.docker.com/r/startx/openshift-bomb-cpu) | [Sources](https://github.com/startxfr/docker-images/Bombs/) | [STARTX Profile](https://github.com/startxfr) |
+|-------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|----------------------------------------------------------------------|-----------------------------------------------|
+
+## Running from dockerhub registry
+
+* with `docker` you can run `docker run -it --name="centos" startx/openshift-bomb-cpu` from any docker host
+* with `docker-compose` you can create a docker-compose.yml file with the following content
+```
+fedora:
+ image: startx/openshift-bomb-cpu:latest
+ container_name: "os-ocp-bomb-cpu"
+ environment:
+ CONTAINER_TYPE: "bomb"
+ CONTAINER_SERVICE: "cpu"
+ CONTAINER_INSTANCE: "os-ocp-bomb-cpu"
+```
+
+## Using this image in your own container
+
+You can use this Dockerfile template to start a new personalized container based on this container
+ ```
+FROM startx/openshift-bomb-cpu:latest
+#... your container specifications
+CMD ["/bin/sx"]
+```
+
+## Environment variable
+
+| Variable | Type | Mandatory | Description |
+|---------------------------|----------|-----------|--------------------------------------------------------------------------|
+| CONTAINER_INSTANCE | `string` | `yes` | Container name. Should be uning to get fine grained log and application reporting
+| CONTAINER_TYPE | `string` | `no` | Container family (os, service, application. could be enhanced
+| CONTAINER_SERVICE | `string` | `no` | Define the type of service or application provided
+| HOSTNAME | `auto` | `auto` | Container unique id automatically assigned by docker daemon at startup
+| TEST_DURATION | `seconds`| `auto` | Running test duration (defautl = 10sec)
+
+
+## For advanced users
+
+You you want to use this container and code to build and create locally this container. You can follow theses instructions to setup and working environment.
+
+This section will help you if you want to :
+* Get latest version of this container Bombs
+* Enhance container content by adding instruction in Dockefile before build step
+
+You must have a working environment with the source code of this repository. Read and follow [how to setup your working environment](https://github.com/startxfr/docker-images#setup-your-working-environment-mandatory) to get a working directory. The following instructions assume you are at the top level of your working directory.
+
+### Build & run a container using `docker`
+
+1. Jump into the container directory with `cd Bombs/cpu`
+2. Build the container using `docker build -t bomb-cpu .`
+3. Run this container
+ 1. Interactively with `docker run -it bomb-cpu`. If you add a last parameter (like `/bin/bash`) to will run this command instead of the default entrypoint. Usefull to interact with this container (ex: `/bin/bash`, `/bin/ps -a`, `/bin/df -h`,...)
+ 2. As a daemon with `docker run -d bomb-cpu`
+
+
+### Build & run a container using `docker-compose`
+
+1. Jump into the container directory with `cd Bombs/cpu`
+2. Run this container
+ 1. Interactively with `docker-compose up` Startup logs appears and escaping this command stop the container
+ 2. As a daemon with `docker-compose up -d`. Container startup logs can be read using `docker-compose logs`
+
diff --git a/Bombs/cpu/bomb.sh b/Bombs/cpu/bomb.sh
new file mode 100644
index 0000000..b6f3050
--- /dev/null
+++ b/Bombs/cpu/bomb.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+while true
+do
+ echo 'boum! '
+done \ No newline at end of file
diff --git a/Bombs/cpu/docker-compose.yml b/Bombs/cpu/docker-compose.yml
new file mode 100644
index 0000000..f0f9b2e
--- /dev/null
+++ b/Bombs/cpu/docker-compose.yml
@@ -0,0 +1,8 @@
+bomb-cpu:
+ build: ./
+ container_name: "os-ocp-bomb-cpu"
+ environment:
+ CONTAINER_TYPE: "bomb"
+ CONTAINER_SERVICE: "cpu"
+ CONTAINER_INSTANCE: "os-ocp-bomb-cpu"
+ TEST_DURATION: 8 \ No newline at end of file
diff --git a/Bombs/cpu/sx.sh b/Bombs/cpu/sx.sh
new file mode 100644
index 0000000..2f2607a
--- /dev/null
+++ b/Bombs/cpu/sx.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+export TERM=xterm
+pid=0
+
+function check_environment {
+ if [ ! -v CONTAINER_TYPE ]; then
+ CONTAINER_TYPE="unknown"
+ export CONTAINER_TYPE
+ echo "! WARNING : environment var CONTAINER_TYPE is missing..."
+ echo "! WARNING : auto-assigned value : $CONTAINER_TYPE"
+ fi
+ if [ ! -v CONTAINER_SERVICE ]; then
+ CONTAINER_SERVICE=$CONTAINER_TYPE;
+ export CONTAINER_SERVICE;
+ echo "! WARNING : environment var CONTAINER_SERVICE is missing..."
+ echo "! WARNING : auto-assigned value : $CONTAINER_SERVICE"
+ fi
+ if [ ! -v CONTAINER_INSTANCE ]; then
+ CONTAINER_INSTANCE=$CONTAINER_TYPE "_" $CONTAINER_SERVICE;
+ export CONTAINER_INSTANCE;
+ echo "! WARNING : environment var CONTAINER_INSTANCE is missing..."
+ echo "! WARNING : auto-assigned value : $CONTAINER_INSTANCE"
+ fi
+}
+
+function display_container_header {
+ echo "+====================================================="
+ echo "| Container : $HOSTNAME"
+ echo "| OS : $(</etc/redhat-release)"
+ if [ -v CONTAINER_TYPE ]; then
+ echo "| Type : $CONTAINER_TYPE"
+ fi
+ if [ -v CONTAINER_SERVICE ]; then
+ echo "| Service : $CONTAINER_SERVICE"
+ fi
+ if [ -v CONTAINER_INSTANCE ]; then
+ echo "| Instance : $CONTAINER_INSTANCE"
+ fi
+ echo "+====================================================="
+}
+
+function start_service {
+ if [ ! -v TEST_DURATION ]; then
+ TEST_DURATION=10;
+ export TEST_DURATION;
+ fi
+ if echo $TEST_DURATION | egrep -q '^[0-9]+$'; then
+ echo "" > /dev/null &
+ else
+ TEST_DURATION=10;
+ fi
+ echo "+====================================================="
+ echo "| Container $HOSTNAME is now bombing CPU for $TEST_DURATION sec"
+ echo "+====================================================="
+ /bin/bomb > /dev/null &
+ TASK_PID=$!
+ sleep $TEST_DURATION
+ kill $TASK_PID
+ exit 0
+}
+
+
+check_environment
+display_container_header
+start_service \ No newline at end of file