diff --git a/doc/source/index.rst b/doc/source/index.rst
index 37c1b14..f739467 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -21,6 +21,7 @@ Contents
introduction.rst
methodologies/index.rst
test_plans/index.rst
+ test_results/index.rst
labs/index.rst
test_results/index
diff --git a/doc/source/test_results/container_repositories/artifactory/Network_Scheme.png b/doc/source/test_results/container_repositories/artifactory/Network_Scheme.png
new file mode 100644
index 0000000..d1f295a
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/Network_Scheme.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/configs/artifactory_etc.tar.gz b/doc/source/test_results/container_repositories/artifactory/configs/artifactory_etc.tar.gz
new file mode 100644
index 0000000..11511cb
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/configs/artifactory_etc.tar.gz differ
diff --git a/doc/source/test_results/container_repositories/artifactory/configs/config_descriptor.xml b/doc/source/test_results/container_repositories/artifactory/configs/config_descriptor.xml
new file mode 100644
index 0000000..c6beea6
--- /dev/null
+++ b/doc/source/test_results/container_repositories/artifactory/configs/config_descriptor.xml
@@ -0,0 +1,587 @@
+
+
+ false
+ true
+ 100
+ dd-MM-yy HH:mm:ss z
+
+ true
+ 1457516661046
+
+
+ true
+ false
+ false
+
+ supported
+
+ false
+ 60
+ true
+
+
+
+
+
+ false
+ 5
+
+
+
+
+ backup-daily
+ true
+ 0 0 2 ? * MON-FRI
+ 0
+ false
+
+ true
+ false
+ false
+
+
+ backup-weekly
+ false
+ 0 0 2 ? * SAT
+ 336
+ false
+
+ true
+ false
+ false
+
+
+
+ false
+ 0 23 5 * * ?
+
+
+
+ docker-local
+ docker
+ **/*
+ simple-default
+ V2
+ false
+ false
+ false
+ true
+ true
+ 0
+ true
+
+ artifactory
+
+ true
+ unique
+ client-checksums
+ false
+ 0
+ false
+
+
+
+
+
+
+
+ nginx
+ nginx
+ artifactory
+ artifactory
+ 172.20.9.16
+
+
+
+ portPerRepo
+ false
+ true
+ 443
+ 80
+
+
+ docker-local
+ 172.20.9.16
+ 5000
+
+
+ 172.20.9.16
+ artifactory
+ 8081
+
+
+
+
+ artifactory
+ false
+
+
+ licenses
+ true
+ true
+
+
+ AFL-3.0
+ false
+
+
+ AGPL-V3
+ false
+
+
+ APL-1.0
+ false
+
+
+ Apache-2.0
+ false
+
+
+ Apache-1.0
+ false
+
+
+ Apache-1.1
+ false
+
+
+ APSL-2.0
+ false
+
+
+ Artistic-License-2.0
+ false
+
+
+ Attribution
+ false
+
+
+ BSL-1.0
+ false
+
+
+ CA-TOSL-1.1
+ false
+
+
+ CDDL-1.0
+ false
+
+
+ CDDL-1.0.1
+ false
+
+
+ CDDL-1.1
+ false
+
+
+ Codehaus
+ false
+
+
+ CCAG-2.5
+ false
+
+
+ CPAL-1.0
+ false
+
+
+ CUAOFFICE-1.0
+ false
+
+
+ Day
+ false
+
+
+ Day-Addendum
+ false
+
+
+ Bouncy-Castle
+ false
+
+
+ EUDATAGRID
+ false
+
+
+ Enovi
+ false
+
+
+ CPL-1.0
+ false
+
+
+ LGPL-2.1
+ false
+
+
+ LGPL-3.0
+ false
+
+
+ Historical
+ false
+
+
+ HSQLDB
+ false
+
+
+ IBMPL-1.0
+ false
+
+
+ IPAFont-1.0
+ false
+
+
+ ISC
+ false
+
+
+ Lucent-1.02
+ false
+
+
+ MirOS
+ false
+
+
+ MS-PL
+ false
+
+
+ MS-RL
+ false
+
+
+ JA-SIG
+ false
+
+
+ BSD
+ false
+
+
+ MIT
+ false
+
+
+ JSON
+ false
+
+
+ Motosoto-0.9.1
+ false
+
+
+ Eclipse-1.0
+ false
+
+
+ ECL2
+ false
+
+
+ Eiffel-2.0
+ false
+
+
+ JTidy
+ false
+
+
+ JTA-Specification-1.0.1B
+ false
+
+
+ Entessa-1.0
+ false
+
+
+ EUPL-1.1
+ false
+
+
+ Fair
+ false
+
+
+ Frameworx-1.0
+ false
+
+
+ GPL-2.0
+ false
+
+
+ GPL-2.0+CE
+ false
+
+
+ GPL-3.0
+ false
+
+
+ Mozilla-1.1
+ false
+
+
+ Multics
+ false
+
+
+ NASA-1.3
+ false
+
+
+ NTP
+ false
+
+
+ NAUMEN
+ false
+
+
+ Nethack
+ false
+
+
+ Nokia-1.0a
+ false
+
+
+ NOSL-3.0
+ false
+
+
+ OCLC-2.0
+ false
+
+
+ Openfont-1.1
+ false
+
+
+ Opengroup
+ false
+
+
+ OpenSymphony
+ false
+
+
+ OSL-3.0
+ false
+
+
+ PHP-3.0
+ false
+
+
+ PostgreSQL
+ false
+
+
+ Public Domain
+ false
+
+
+ Public Domain - SUN
+ false
+
+
+ PythonPL
+ false
+
+
+ PythonSoftFoundation
+ false
+
+
+ QTPL-1.0
+ false
+
+
+ Real-1.0
+ false
+
+
+ RPL-1.5
+ false
+
+
+ RicohPL
+ false
+
+
+ SimPL-2.0
+ false
+
+
+ Sleepycat
+ false
+
+
+ SUNPublic-1.0
+ false
+
+
+ Sybase-1.0
+ false
+
+
+ TMate
+ false
+
+
+ UoI-NCSA
+ false
+
+
+ IU-Extreme-1.1.1
+ false
+
+
+ VovidaPL-1.0
+ false
+
+
+ W3C
+ false
+
+
+ wxWindows
+ false
+
+
+ Xnet
+ false
+
+
+ ZPL-2.0
+ false
+
+
+ ZLIB
+ false
+
+
+ TPL
+ false
+
+
+ Not Searched
+ false
+
+
+
+
+
+
+
+
+ maven-2-default
+ [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]
+ true
+ [orgPath]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).pom
+ SNAPSHOT
+ SNAPSHOT|(?:(?:[0-9]{8}.[0-9]{6})-(?:[0-9]+))
+
+
+ ivy-default
+ [org]/[module]/[baseRev](-[folderItegRev])/[type]s/[module](-[classifier])-[baseRev](-[fileItegRev]).[ext]
+ true
+ [org]/[module]/[baseRev](-[folderItegRev])/[type]s/ivy-[baseRev](-[fileItegRev]).xml
+ \d{14}
+ \d{14}
+
+
+ gradle-default
+ [org]/[module]/[baseRev](-[folderItegRev])/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]
+ true
+ [org]/[module]/ivy-[baseRev](-[fileItegRev]).xml
+ \d{14}
+ \d{14}
+
+
+ maven-1-default
+ [org]/[type]s/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]
+ true
+ [org]/[type]s/[module]-[baseRev](-[fileItegRev]).pom
+ .+
+ .+
+
+
+ nuget-default
+ [orgPath]/[module]/[module].[baseRev](-[fileItegRev]).nupkg
+ false
+ .*
+ .*
+
+
+ npm-default
+ [orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).tgz
+ false
+ .*
+ .*
+
+
+ bower-default
+ [orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).[ext]
+ false
+ .*
+ .*
+
+
+ vcs-default
+ [orgPath]/[module]/[refs<tags|branches>]/[baseRev]/[module]-[baseRev](-[fileItegRev])(-[classifier]).[ext]
+ false
+ .*
+ [a-zA-Z0-9]{40}
+
+
+ sbt-default
+ [org]/[module]/(scala_[scalaVersion<.+>])/(sbt_[sbtVersion<.+>])/[baseRev]/[type]s/[module](-[classifier]).[ext]
+ true
+ [org]/[module]/(scala_[scalaVersion<.+>])/(sbt_[sbtVersion<.+>])/[baseRev]/[type]s/ivy.xml
+ \d{14}
+ \d{14}
+
+
+ simple-default
+ [orgPath]/[module]/[module]-[baseRev](-[fileItegRev]).[ext]
+ false
+ .*
+ .*
+
+
+
+
+
+ 0 0 /4 * * ?
+
+
+ 0 12 5 * * ?
+
+
+ 0 12 0 * * ?
+
+
+ false
+ 1024
+ 5000
+ 10
+
+
+ true
+ false
+ 14
+
+
diff --git a/doc/source/test_results/container_repositories/artifactory/configs/nginx.conf b/doc/source/test_results/container_repositories/artifactory/configs/nginx.conf
new file mode 100644
index 0000000..6e65205
--- /dev/null
+++ b/doc/source/test_results/container_repositories/artifactory/configs/nginx.conf
@@ -0,0 +1,85 @@
+user www-data;
+worker_processes 30;
+pid /run/nginx.pid;
+
+events {
+ worker_connections 768;
+ # multi_accept on;
+}
+
+http {
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 65;
+ types_hash_max_size 2048;
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ access_log /var/log/nginx/access.log;
+ error_log /var/log/nginx/error.log;
+
+ gzip on;
+ gzip_disable "msie6";
+
+ include /etc/nginx/conf.d/*.conf;
+ include /etc/nginx/sites-enabled/*;
+
+## server configuration
+server {
+
+ listen 80 ;
+
+ server_name 172.20.9.16;
+ if ($http_x_forwarded_proto = '') {
+ set $http_x_forwarded_proto $scheme;
+ }
+ ## Application specific logs
+ ## access_log /var/log/nginx/172.20.9.16-access.log timing;
+ ## error_log /var/log/nginx/172.20.9.16-error.log;
+ rewrite ^/$ /artifactory/webapp/ redirect;
+ rewrite ^/artifactory/?(/webapp)?$ /artifactory/webapp/ redirect;
+ location /artifactory/ {
+ proxy_read_timeout 900;
+ proxy_pass_header Server;
+ proxy_cookie_path ~*^/.* /;
+ proxy_pass http://172.20.9.16:8081/artifactory/;
+ proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/artifactory;
+ proxy_set_header X-Forwarded-Port $server_port;
+ proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ }
+}
+
+## server configuration
+server {
+ listen 5000;
+
+
+ server_name 172.20.9.16;
+ if ($http_x_forwarded_proto = '') {
+ set $http_x_forwarded_proto $scheme;
+ }
+ ## Application specific logs
+ ## access_log /var/log/nginx/172.20.9.16-access.log timing;
+ ## error_log /var/log/nginx/172.20.9.16-error.log;
+ rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/docker-local/$1/$2;
+ client_max_body_size 0;
+ chunked_transfer_encoding on;
+ location /artifactory/ {
+ proxy_read_timeout 900;
+ proxy_pass_header Server;
+ proxy_cookie_path ~*^/.* /;
+ proxy_pass http://172.20.9.16:8081/artifactory/;
+ proxy_set_header X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port/artifactory;
+ proxy_set_header X-Forwarded-Port $server_port;
+ proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ }
+}
+
+
+}
diff --git a/doc/source/test_results/container_repositories/artifactory/configs/security_descriptor.xml b/doc/source/test_results/container_repositories/artifactory/configs/security_descriptor.xml
new file mode 100644
index 0000000..68bf2ff
--- /dev/null
+++ b/doc/source/test_results/container_repositories/artifactory/configs/security_descriptor.xml
@@ -0,0 +1,107 @@
+
+
+
+
+ anonymous
+ d41d8cd98f00b204e9800998ecf8427e
+ false
+ true
+ false
+ true
+ false
+ true
+ true
+ false
+
+
+
+ passwordCreated
+ 1457516661467
+
+
+ 0
+ 0
+ false
+
+
+ admin
+ 1f70548d73baca61aab8660733c7de81
+ CAFEBABEEBABEFAC
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ internal
+ false
+
+
+
+ passwordCreated
+ 1457516661448
+
+
+ 1458541070096
+ 172.20.8.3
+ 0
+ false
+
+
+
+
+ readers
+ A group for read-only users
+ true
+ artifactory
+
+
+
+
+
+ Any Remote
+
+ ANY REMOTE
+
+
+ **
+
+
+
+
+
+ anonymous
+ false
+ 3
+
+
+ _system_
+
+
+
+ Anything
+
+ ANY
+
+
+ **
+
+
+
+
+
+ readers
+ true
+ 1
+
+
+ anonymous
+ false
+ 31
+
+
+ _system_
+
+
+
diff --git a/doc/source/test_results/container_repositories/artifactory/configs/server_description_of_728997-comp-disk-228.tar.gz b/doc/source/test_results/container_repositories/artifactory/configs/server_description_of_728997-comp-disk-228.tar.gz
new file mode 100644
index 0000000..4b5db86
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/configs/server_description_of_728997-comp-disk-228.tar.gz differ
diff --git a/doc/source/test_results/container_repositories/artifactory/configs/server_description_of_728998-comp-disk-227.tar.gz b/doc/source/test_results/container_repositories/artifactory/configs/server_description_of_728998-comp-disk-227.tar.gz
new file mode 100644
index 0000000..22752df
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/configs/server_description_of_728998-comp-disk-227.tar.gz differ
diff --git a/doc/source/test_results/container_repositories/artifactory/index.rst b/doc/source/test_results/container_repositories/artifactory/index.rst
new file mode 100644
index 0000000..73e2c4d
--- /dev/null
+++ b/doc/source/test_results/container_repositories/artifactory/index.rst
@@ -0,0 +1,347 @@
+
+.. _Measuring_performance_of_JFrog_Artifactory_Pro:
+
+*********************************************************
+Results of measuring performance of JFrog Artifactory Pro
+*********************************************************
+
+:Abstract:
+
+ This document includes performance test results of `JFrog Artifactory Pro`_
+ service as a repository of docker images. All test have been performed
+ regarding :ref:`Measuring_performance_of_container_repositories`
+
+
+Environment description
+=======================
+Hardware configuration of each server
+-------------------------------------
+
+.. table:: Description of servers hardware
+
+ +-------+----------------+------------------------+------------------------+
+ |server |name |728998-comp-disk-228 |728998-comp-disk-227 |
+ | +----------------+------------------------+------------------------+
+ | |role |test_tool |artifactory |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
+ | +----------------+------------------------+------------------------+
+ | |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
+ | | | | Ubuntu-trusty | | Ubuntu-trusty |
+ | | | | x86_64 | | x86_64 |
+ +-------+----------------+------------------------+------------------------+
+ |CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
+ | +----------------+------------------------+------------------------+
+ | |processor_count |2 |2 |
+ | +----------------+------------------------+------------------------+
+ | |core_count |12 |12 |
+ | +----------------+------------------------+------------------------+
+ | |frequency_MHz |2500 |2500 |
+ +-------+----------------+------------------------+------------------------+
+ |RAM |vendor,model |HP,752369-081 |HP,752369-081 |
+ | +----------------+------------------------+------------------------+
+ | |amount_MB |262144 |262144 |
+ +-------+----------------+------------------------+------------------------+
+ |NETWORK|interface_name |p1p1 |p1p1 |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
+ | +----------------+------------------------+------------------------+
+ | |bandwidth |10G |10G |
+ +-------+----------------+------------------------+------------------------+
+ |STORAGE|dev_name |/dev/sda |/dev/sda |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
+ | | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
+ | +----------------+------------------------+------------------------+
+ | |SSD/HDD |HDD |HDD |
+ | +----------------+------------------------+------------------------+
+ | |size | 3,6TB | 3,6TB |
+ +-------+----------------+------------------------+------------------------+
+
+Network scheme and part of configuration of hardware network switches
+---------------------------------------------------------------------
+Network scheme of the environment:
+
+.. image:: Network_Scheme.png
+ :alt: Network Scheme of the environment
+
+Here is the part of switch configuration for each switch port which connected to
+p1p1 interface of a server:
+
+.. code:: bash
+
+ switchport mode trunk
+ switchport trunk native vlan 600
+ switchport trunk allowed vlan 600-602,630-649
+ spanning-tree port type edge trunk
+ spanning-tree bpduguard enable
+ no snmp trap link-status
+
+Software configuration of the Artifactory service
+-------------------------------------------------
+Installation of Artifactory:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. code:: bash
+
+ # Install Java
+ apt-get install software-properties-common
+ sudo add-apt-repository ppa:webupd8team/java
+ apt-get update
+ sudo apt-get install oracle-java8-installer # Interactive java installer
+ # Install ArtifactoryPro
+ echo "deb https://jfrog.bintray.com/artifactory-pro-debs trusty main" > /etc/apt/sources.list.d/artifactory.list
+ apt-get update
+ apt-get install jfrog-artifactory-pro
+ # Install Nginx as a reverse proxy
+ # https://www.jfrog.com/confluence/display/RTF/Configuring+NGINX
+ apt-get install nginx
+
+You can find nginx configuration file here
+:download:`nginx.conf `
+
+Here is the all config files of Artifactory
+:download:`artifactory_etc.tar.gz `
+
+After installation all default repositories was removed from Artifactory and
+"docker-local" hosted repository was created. You can find full configuration of
+the Artifactory installation here:
+:download:`config_descriptor.xml `
+:download:`security_descriptor.xml `
+
+.. table:: Versions of some software
+
+ +-----------+------------------+
+ |Software |Version |
+ +===========+==================+
+ |Ubuntu |Ubuntu 14.04.3 LTS|
+ +-----------+------------------+
+ |Artifactory|4.5.2 rev 40121 |
+ +-----------+------------------+
+
+Operating system configuration:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+You can find outputs of some commands and /etc folder in the following archive:
+:download:`server_description_of_728998-comp-disk-227.tar.gz `
+
+Software configuration of the node with test tool
+-------------------------------------------------
+Test tool:
+^^^^^^^^^^
+Firstly we need to install docker-engine:
+
+.. code:: bash
+
+ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
+ apt-get update && apt-get -y install docker-engine
+ echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
+ service docker restart
+
+We use Python2.7 and
+:ref:`Script for collecting performance metrics of docker repository` with
+:ref:`Proposed docker file` to perform the tests. The image size is a sum of
+layers:
+
+.. code:: bash
+
+ IMAGE CREATED CREATED BY SIZE COMMENT
+ 93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
+ 35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
+ 3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
+ 97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
+ 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
+ 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
+ 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
+
+It means that DATA_SIZE=206.13 MB
+
+.. table:: Versions of some software
+
+ +-----------+------------------+
+ |Software |Version |
+ +===========+==================+
+ |Ubuntu |Ubuntu 14.04.3 LTS|
+ +-----------+------------------+
+ |Docker |1.10 |
+ +-----------+------------------+
+
+Operating system:
+^^^^^^^^^^^^^^^^^
+You can find outputs of some commands and /etc folder in the following archive:
+:download:`server_description_of_728997-comp-disk-228.tar.gz `
+
+Testing process
+===============
+1.
+ Artifactory was installed on top of 728998-comp-disk-227 server as described in
+ `Installation of Artifactory:`_ section.
+
+2.
+ The values of the variables in test-repo.py script was changed:
+ iterations = 1000
+ concurrency = 1
+ repo_address = "172.20.9.16:5000"
+
+3.
+ The following command was executed to perform the tests:
+
+ .. code:: bash
+
+ sudo python test-repo.py
+
+4.
+ push_results.csv and pull_results.csv was saved in persistent folder.
+
+5. Clean up docker repository in Artifactory via Web UI
+
+6.
+ The steps from 2 to 5 was repeated with the following values of the
+ concurrency parameters: 1,10,30,50,100
+
+Results
+=======
+Push action results
+-------------------
+PUSH_TIME(ITERATION)
+^^^^^^^^^^^^^^^^^^^^
+After simple processing results the following plots for push action in depend on
+iteration number created (click to expand an image):
+
++----------------+-------------------------------------------------------------+
+|Function |Plot |
++================+=============================================================+
+|PUSH_TIME |.. image:: results/artifactory-1000-1/push-1000-1.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
+|CONCURRENCY=1) | :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PUSH_TIME |.. image:: results/artifactory-1000-10/push-1000-10.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
+|CONCURRENCY=10) | :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PUSH_TIME |.. image:: results/artifactory-1000-30/push-1000-30.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
+|CONCURRENCY=30) | :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PUSH_TIME |.. image:: results/artifactory-1000-50/push-1000-50.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
+|CONCURRENCY=50) | :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PUSH_TIME |.. image:: results/artifactory-1000-100/push-1000-100.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
+|CONCURRENCY=100)| :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PUSH_TIME |.. image:: results/artifactory-push-1000-1_10_30_50_100.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100} |
+|CONCURRENCY={1, | :scale: 20 |
+|10,30,50,100} | |
++----------------+-------------------------------------------------------------+
+
+PUSH_TIME(CONCURRENCY)
+^^^^^^^^^^^^^^^^^^^^^^
+The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
+parameter.
+
+.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
+ depend on CONCURRENCY parameter.
+
+ +-----------+-----------+-----------+-----------+--------------+
+ |Concurrency|Maximum |Minimum |Average |Percentile 90%|
+ +===========+===========+===========+===========+==============+
+ +-----------+-----------+-----------+-----------+--------------+
+ |1 |20.45173717|18.13562512|18.45595757|18.70360937 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |10 |52.81749606|21.4737699 |47.39192888|47.92230422 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |30 |147.2520959|21.35128784|140.8133277|143.3592351 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |50 |242.0436599|21.53936005|232.1077632|238.6817375 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |100 |474.1983588|21.41779709|447.7350837|471.5060248 |
+ +-----------+-----------+-----------+-----------+--------------+
+
+.. image:: results/artifactory-push.png
+ :alt: PUSH_TIME
+ :scale: 100
+
+Pull action results
+-------------------
+PULL_TIME(ITERATION)
+^^^^^^^^^^^^^^^^^^^^
+After simple processing results the following plots for pull action in depend on
+iteration number created (click to expand an image):
+
++----------------+-------------------------------------------------------------+
+|Function |Plot |
++================+=============================================================+
+|PULL_TIME |.. image:: results/artifactory-1000-1/pull-1000-1.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
+|CONCURRENCY=1) | :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PULL_TIME |.. image:: results/artifactory-1000-10/pull-1000-10.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
+|CONCURRENCY=10) | :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PULL_TIME |.. image:: results/artifactory-1000-30/pull-1000-30.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
+|CONCURRENCY=30) | :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PULL_TIME |.. image:: results/artifactory-1000-50/pull-1000-50.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
+|CONCURRENCY=50) | :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PULL_TIME |.. image:: results/artifactory-1000-100/pull-1000-100.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
+|CONCURRENCY=100)| :scale: 20 |
++----------------+-------------------------------------------------------------+
+|PULL_TIME |.. image:: results/artifactory-pull-1000-1_10_30_50_100.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100} |
+|CONCURRENCY={1, | :scale: 20 |
+|10,30,50,100} | |
++----------------+-------------------------------------------------------------+
+
+PULL_TIME(CONCURRENCY)
+^^^^^^^^^^^^^^^^^^^^^^
+The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
+parameter.
+
+.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
+ depend on CONCURRENCY parameter.
+
+ +-----------+------------+-------------+------------+--------------+
+ |Concurrency|Maximum |Minimum |Average |Percentile 90%|
+ +===========+============+=============+============+==============+
+ |1 |1.023168087 |0.09103393555|0.7067174957|0.7760614157 |
+ +-----------+------------+-------------+------------+--------------+
+ |10 |1.87360692 |0.08845591545|1.127708118 |1.361271906 |
+ +-----------+------------+-------------+------------+--------------+
+ |30 |4.27976203 |0.1920921803 |2.644113734 |2.870757174 |
+ +-----------+------------+-------------+------------+--------------+
+ |50 |6.287320852 |0.2292528152 |4.416184656 |4.711911416 |
+ +-----------+------------+-------------+------------+--------------+
+ |100 |10.30138803 |0.167137146 |8.50843117 |9.09850688 |
+ +-----------+------------+-------------+------------+--------------+
+
+.. image:: results/artifactory-pull.png
+ :alt: PULL_TIME
+ :scale: 100
+
+Issues which have been found during the tests
+=============================================
+
+.. table:: Issues which have been found during the tests
+
+ +-------------------------------+---------------------------------------------+
+ |Issue description |Root cause, Link |
+ +===============================+=============================================+
+ || Artifactory allows re-pushing|https://www.jfrog.com/jira/browse/RTFACT-9591|
+ || existed docker layers instead| |
+ || of answer with | |
+ || "already exists" message | |
+ +-------------------------------+---------------------------------------------+
+ || only 5 images can be uploaded|| Root cause of the issue haven't found yet |
+ || to Artifactory at the || |
+ || same time || |
+ +-------------------------------+---------------------------------------------+
+
+.. references:
+
+.. _JFrog Artifactory Pro: https://www.jfrog.com/artifactory
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-1/pull-1000-1.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-1/pull-1000-1.png
new file mode 100644
index 0000000..108cdfa
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-1/pull-1000-1.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-1/push-1000-1.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-1/push-1000-1.png
new file mode 100644
index 0000000..af691ea
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-1/push-1000-1.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-10/pull-1000-10.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-10/pull-1000-10.png
new file mode 100644
index 0000000..72702c3
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-10/pull-1000-10.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-10/push-1000-10.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-10/push-1000-10.png
new file mode 100644
index 0000000..938a9a6
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-10/push-1000-10.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-100/pull-1000-100.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-100/pull-1000-100.png
new file mode 100644
index 0000000..bdeee77
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-100/pull-1000-100.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-100/push-1000-100.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-100/push-1000-100.png
new file mode 100644
index 0000000..ca44530
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-100/push-1000-100.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-30/pull-1000-30.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-30/pull-1000-30.png
new file mode 100644
index 0000000..fb1c316
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-30/pull-1000-30.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-30/push-1000-30.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-30/push-1000-30.png
new file mode 100644
index 0000000..c118582
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-30/push-1000-30.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-50/pull-1000-50.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-50/pull-1000-50.png
new file mode 100644
index 0000000..1deff98
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-50/pull-1000-50.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-50/push-1000-50.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-50/push-1000-50.png
new file mode 100644
index 0000000..7611885
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-1000-50/push-1000-50.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-pull-1000-1_10_30_50_100.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-pull-1000-1_10_30_50_100.png
new file mode 100644
index 0000000..2bfd274
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-pull-1000-1_10_30_50_100.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-pull.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-pull.png
new file mode 100644
index 0000000..84b1e5a
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-pull.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-push-1000-1_10_30_50_100.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-push-1000-1_10_30_50_100.png
new file mode 100644
index 0000000..18a9d7b
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-push-1000-1_10_30_50_100.png differ
diff --git a/doc/source/test_results/container_repositories/artifactory/results/artifactory-push.png b/doc/source/test_results/container_repositories/artifactory/results/artifactory-push.png
new file mode 100644
index 0000000..1a77de9
Binary files /dev/null and b/doc/source/test_results/container_repositories/artifactory/results/artifactory-push.png differ
diff --git a/doc/source/test_results/container_repositories/index.rst b/doc/source/test_results/container_repositories/index.rst
new file mode 100644
index 0000000..ffbf616
--- /dev/null
+++ b/doc/source/test_results/container_repositories/index.rst
@@ -0,0 +1,10 @@
+Container repositories test results
+***********************************
+
+.. toctree::
+ :numbered:
+ :maxdepth: 3
+
+ registry2/index
+ artifactory/index
+ nexus/index
diff --git a/doc/source/test_results/container_repositories/nexus/Network_Scheme.png b/doc/source/test_results/container_repositories/nexus/Network_Scheme.png
new file mode 100644
index 0000000..cf7975c
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/Network_Scheme.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/configs/server_description_of_728997-comp-disk-228.tar.gz b/doc/source/test_results/container_repositories/nexus/configs/server_description_of_728997-comp-disk-228.tar.gz
new file mode 100644
index 0000000..4b5db86
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/configs/server_description_of_728997-comp-disk-228.tar.gz differ
diff --git a/doc/source/test_results/container_repositories/nexus/configs/server_description_of_728998-comp-disk-227.tar.gz b/doc/source/test_results/container_repositories/nexus/configs/server_description_of_728998-comp-disk-227.tar.gz
new file mode 100644
index 0000000..6ce674b
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/configs/server_description_of_728998-comp-disk-227.tar.gz differ
diff --git a/doc/source/test_results/container_repositories/nexus/configs/support.zip b/doc/source/test_results/container_repositories/nexus/configs/support.zip
new file mode 100644
index 0000000..6f369e1
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/configs/support.zip differ
diff --git a/doc/source/test_results/container_repositories/nexus/index.rst b/doc/source/test_results/container_repositories/nexus/index.rst
new file mode 100644
index 0000000..f5932d4
--- /dev/null
+++ b/doc/source/test_results/container_repositories/nexus/index.rst
@@ -0,0 +1,356 @@
+
+.. _Measuring_performance_of_Sonatype_Nexus:
+
+**************************************************
+Results of measuring performance of Sonatype Nexus
+**************************************************
+
+:Abstract:
+
+ This document includes performance test results of `Sonatype Nexus`_ service
+ as a repository of docker images. All test have been performed regarding
+ :ref:`Measuring_performance_of_container_repositories`
+
+
+Environment description
+=======================
+Hardware configuration of each server
+-------------------------------------
+
+.. table:: Description of servers hardware
+
+ +-------+----------------+------------------------+------------------------+
+ |server |name |728998-comp-disk-228 |728998-comp-disk-227 |
+ | +----------------+------------------------+------------------------+
+ | |role |test_tool |Nexus |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
+ | +----------------+------------------------+------------------------+
+ | |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
+ | | | | Ubuntu-trusty | | Ubuntu-trusty |
+ | | | | x86_64 | | x86_64 |
+ +-------+----------------+------------------------+------------------------+
+ |CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
+ | +----------------+------------------------+------------------------+
+ | |processor_count |2 |2 |
+ | +----------------+------------------------+------------------------+
+ | |core_count |12 |12 |
+ | +----------------+------------------------+------------------------+
+ | |frequency_MHz |2500 |2500 |
+ +-------+----------------+------------------------+------------------------+
+ |RAM |vendor,model |HP,752369-081 |HP,752369-081 |
+ | +----------------+------------------------+------------------------+
+ | |amount_MB |262144 |262144 |
+ +-------+----------------+------------------------+------------------------+
+ |NETWORK|interface_name |p1p1 |p1p1 |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
+ | +----------------+------------------------+------------------------+
+ | |bandwidth |10G |10G |
+ +-------+----------------+------------------------+------------------------+
+ |STORAGE|dev_name |/dev/sda |/dev/sda |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
+ | | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
+ | +----------------+------------------------+------------------------+
+ | |SSD/HDD |HDD |HDD |
+ | +----------------+------------------------+------------------------+
+ | |size | 3,6TB | 3,6TB |
+ +-------+----------------+------------------------+------------------------+
+
+Network scheme and part of configuration of hardware network switches
+---------------------------------------------------------------------
+Network scheme of the environment:
+
+.. image:: Network_Scheme.png
+ :alt: Network Scheme of the environment
+
+Here is the part of switch configuration for each switch port which connected to
+p1p1 interface of a server:
+
+.. code:: bash
+
+ switchport mode trunk
+ switchport trunk native vlan 600
+ switchport trunk allowed vlan 600-602,630-649
+ spanning-tree port type edge trunk
+ spanning-tree bpduguard enable
+ no snmp trap link-status
+
+Software configuration of the Nexus service
+----------------------------------------------------
+Installation of Nexus:
+^^^^^^^^^^^^^^^^^^^^^^
+.. code:: bash
+
+ # Install Java
+ apt-get install software-properties-common
+ sudo add-apt-repository ppa:webupd8team/java
+ apt-get update
+ sudo apt-get install oracle-java8-installer # Interactive java installer
+ # Install Nexus
+ wget http://download.sonatype.com/nexus/3/nexus-3.0.0-m7-unix.sh
+ chmod +x nexus-3.0.0-m7-unix.sh
+ echo "o
+ 1
+
+
+
+
+
+
+
+
+ n
+ y
+
+
+
+
+
+ 1
+ 1
+ " | ./nexus-3.0.0-m7-unix.sh -c
+ service nexus restart
+ update-rc.d nexus defaults
+
+After installation all default repositories was removed from Nexus and
+"docker-local" hosted repository was created. You can find full configuration of
+the Nexus installation in the support file created after configuration:
+:download:`support.zip `
+
+.. table:: Versions of some software
+
+ +-----------+------------------+
+ |Software |Version |
+ +===========+==================+
+ |Ubuntu |Ubuntu 14.04.3 LTS|
+ +-----------+------------------+
+ |NexusOSS |3m7 |
+ +-----------+------------------+
+
+Operating system configuration:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+You can find outputs of some commands and /etc folder in the following archive:
+:download:`server_description_of_728998-comp-disk-227.tar.gz `
+
+Software configuration of the node with test tool
+-------------------------------------------------
+Test tool:
+^^^^^^^^^^
+Firstly we need to install docker-engine:
+
+.. code:: bash
+
+ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
+ apt-get update && apt-get -y install docker-engine
+ echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
+ service docker restart
+
+We use Python2.7 and
+:ref:`Script for collecting performance metrics of docker repository` with
+:ref:`Proposed docker file` to perform the tests. The image size is a sum of
+layers:
+
+.. code:: bash
+
+ IMAGE CREATED CREATED BY SIZE COMMENT
+ 93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
+ 35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
+ 3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
+ 97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
+ 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
+ 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
+ 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
+
+It means that DATA_SIZE=206.13 MB
+
+.. table:: Versions of some software
+
+ +-----------+------------------+
+ |Software |Version |
+ +===========+==================+
+ |Ubuntu |Ubuntu 14.04.3 LTS|
+ +-----------+------------------+
+ |Docker |1.10 |
+ +-----------+------------------+
+
+Operating system:
+^^^^^^^^^^^^^^^^^
+You can find outputs of some commands and /etc folder in the following archive:
+:download:`server_description_of_728997-comp-disk-228.tar.gz `
+
+Testing process
+===============
+1.
+ Nexus was installed on top of 728998-comp-disk-227 server as described in
+ `Installation of Nexus:`_ section.
+
+2.
+ The values of the variables in test-repo.py script was changed:
+ iterations = 1000
+ concurrency = 1
+ repo_address = "172.20.9.16:5000"
+
+3.
+ The following command was executed to perform the tests:
+
+ .. code:: bash
+
+ sudo docker login -u jenkins -p jenkins -e jenkins@example.com
+ sudo python test-repo.py
+
+4.
+ push_results.csv and pull_results.csv was saved in persistent folder.
+
+5.
+ The steps from 1 to 4 was repeated with the following values of the
+ concurrency parameters: 1,10,30,50,100
+
+Results
+=======
+Push action results
+-------------------
+PUSH_TIME(ITERATION)
+^^^^^^^^^^^^^^^^^^^^
+After simple processing results the following plots for push action in depend on
+iteration number created (click to expand an image):
+
++----------------+----------------------------------------------------------+
+|Function |Plot |
++================+==========================================================+
+|PUSH_TIME |.. image:: results/nexus-1000-1/push-1000-1.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
+|CONCURRENCY=1) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/nexus-1000-10/push-1000-10.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
+|CONCURRENCY=10) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/nexus-1000-30/push-1000-30.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
+|CONCURRENCY=30) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/nexus-1000-50/push-1000-50.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
+|CONCURRENCY=50) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/nexus-1000-100/push-1000-100.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
+|CONCURRENCY=100)| :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/nexus-push-1000-1_10_30_50_100.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
+|CONCURRENCY={1, | :scale: 20 |
+|10,30,50,100} | |
++----------------+----------------------------------------------------------+
+
+PUSH_TIME(CONCURRENCY)
+^^^^^^^^^^^^^^^^^^^^^^
+The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
+parameter.
+
+.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
+ depend on CONCURRENCY parameter.
+
+ +-----------+-----------+-----------+-----------+--------------+
+ |Concurrency|Maximum |Minimum |Average |Percentile 90%|
+ +===========+===========+===========+===========+==============+
+ |1 |19.54624987|18.28802991|18.60292332|18.85230837 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |10 |158.930537 |21.7508142 |45.62607854|48.32535088 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |30 |260.8910789|21.95701599|140.7167748|156.5025718 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |50 |295.4358571|21.76140809|220.7136473|235.8214025 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |100 |507.6230781|42.87186408|425.6215228|458.9536175 |
+ +-----------+-----------+-----------+-----------+--------------+
+
+.. image:: results/nexus-push.png
+ :alt: PUSH_TIME
+ :scale: 100
+
+Pull action results
+-------------------
+PULL_TIME(ITERATION)
+^^^^^^^^^^^^^^^^^^^^
+After simple processing results the following plots for pull action in depend on
+iteration number created (click to expand an image):
+
++----------------+----------------------------------------------------------+
+|Function |Plot |
++================+==========================================================+
+|PULL_TIME |.. image:: results/nexus-1000-1/pull-1000-1.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
+|CONCURRENCY=1) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/nexus-1000-10/pull-1000-10.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
+|CONCURRENCY=10) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/nexus-1000-30/pull-1000-30.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
+|CONCURRENCY=30) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/nexus-1000-50/pull-1000-50.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
+|CONCURRENCY=50) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/nexus-1000-100/pull-1000-100.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
+|CONCURRENCY=100)| :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/nexus-pull-1000-1_10_30_50_100.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
+|CONCURRENCY={1, | :scale: 20 |
+|10,30,50,100} | |
++----------------+----------------------------------------------------------+
+
+PULL_TIME(CONCURRENCY)
+^^^^^^^^^^^^^^^^^^^^^^
+The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
+parameter.
+
+.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
+ depend on CONCURRENCY parameter.
+
+ +-----------+------------+-------------+------------+--------------+
+ |Concurrency|Maximum |Minimum |Average |Percentile 90%|
+ +===========+============+=============+============+==============+
+ |1 |0.7448480129|0.04781007767|0.6843045886|0.7085263491 |
+ +-----------+------------+-------------+------------+--------------+
+ |10 |1.598811865 |0.07142710686|1.180489622 |1.346029782 |
+ +-----------+------------+-------------+------------+--------------+
+ |30 |4.289592028 |0.1032390594 |2.841079599 |3.127129436 |
+ +-----------+------------+-------------+------------+--------------+
+ |50 |6.079101086 |0.1912419796 |4.465888512 |4.781247687 |
+ +-----------+------------+-------------+------------+--------------+
+ |100 |10.95208812 |0.194712162 |9.210462797 |10.03164272 |
+ +-----------+------------+-------------+------------+--------------+
+
+.. image:: results/nexus-pull.png
+ :alt: PULL_TIME
+ :scale: 100
+
+Issues which have been found during the tests
+=============================================
+
+.. table:: Issues which have been found during the tests
+
+ +-------------------------------+---------------------------------------------+
+ |Issue description |Root cause, Link |
+ +===============================+=============================================+
+ || Nexus allows re-pushing || Docker 1.10 is known not to work with |
+ || existed docker layers instead|| Nexus 3.0m7 (1.10 was released after the |
+ || of answer with || 3.0m7 release) |
+ || "already exists" message || |
+ +-------------------------------+---------------------------------------------+
+ || only 5 images can be uploaded|| Root cause of the issue haven't found yet |
+ || to Nexus at the || |
+ || same time || |
+ +-------------------------------+---------------------------------------------+
+
+.. references:
+
+.. _Sonatype Nexus: http://www.sonatype.com/nexus/solution-overview/nexus-repository
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-1/pull-1000-1.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-1/pull-1000-1.png
new file mode 100644
index 0000000..9e70900
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-1/pull-1000-1.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-1/push-1000-1.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-1/push-1000-1.png
new file mode 100644
index 0000000..c6a0094
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-1/push-1000-1.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-10/pull-1000-10.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-10/pull-1000-10.png
new file mode 100644
index 0000000..0be976c
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-10/pull-1000-10.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-10/push-1000-10.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-10/push-1000-10.png
new file mode 100644
index 0000000..1e6e1f1
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-10/push-1000-10.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-100/pull-1000-100.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-100/pull-1000-100.png
new file mode 100644
index 0000000..1e71aa6
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-100/pull-1000-100.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-100/push-1000-100.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-100/push-1000-100.png
new file mode 100644
index 0000000..6f5fca2
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-100/push-1000-100.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-30/pull-1000-30.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-30/pull-1000-30.png
new file mode 100644
index 0000000..6c53783
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-30/pull-1000-30.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-30/push-1000-30.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-30/push-1000-30.png
new file mode 100644
index 0000000..b6a7d89
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-30/push-1000-30.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-50/pull-1000-50.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-50/pull-1000-50.png
new file mode 100644
index 0000000..07b1c00
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-50/pull-1000-50.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-1000-50/push-1000-50.png b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-50/push-1000-50.png
new file mode 100644
index 0000000..c800926
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-1000-50/push-1000-50.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-pull-1000-1_10_30_50_100.png b/doc/source/test_results/container_repositories/nexus/results/nexus-pull-1000-1_10_30_50_100.png
new file mode 100644
index 0000000..39ed5a0
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-pull-1000-1_10_30_50_100.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-pull.png b/doc/source/test_results/container_repositories/nexus/results/nexus-pull.png
new file mode 100644
index 0000000..4df4026
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-pull.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-push-1000-1_10_30_50_100.png b/doc/source/test_results/container_repositories/nexus/results/nexus-push-1000-1_10_30_50_100.png
new file mode 100644
index 0000000..3f7beda
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-push-1000-1_10_30_50_100.png differ
diff --git a/doc/source/test_results/container_repositories/nexus/results/nexus-push.png b/doc/source/test_results/container_repositories/nexus/results/nexus-push.png
new file mode 100644
index 0000000..e1e6e44
Binary files /dev/null and b/doc/source/test_results/container_repositories/nexus/results/nexus-push.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/Network_Scheme.png b/doc/source/test_results/container_repositories/registry2/Network_Scheme.png
new file mode 100644
index 0000000..0125cd5
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/Network_Scheme.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/configs/server_description_of_728997-comp-disk-228.tar.gz b/doc/source/test_results/container_repositories/registry2/configs/server_description_of_728997-comp-disk-228.tar.gz
new file mode 100644
index 0000000..4b5db86
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/configs/server_description_of_728997-comp-disk-228.tar.gz differ
diff --git a/doc/source/test_results/container_repositories/registry2/configs/server_description_of_728998-comp-disk-227.tar.gz b/doc/source/test_results/container_repositories/registry2/configs/server_description_of_728998-comp-disk-227.tar.gz
new file mode 100644
index 0000000..0265d18
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/configs/server_description_of_728998-comp-disk-227.tar.gz differ
diff --git a/doc/source/test_results/container_repositories/registry2/index.rst b/doc/source/test_results/container_repositories/registry2/index.rst
new file mode 100644
index 0000000..dcc2ed6
--- /dev/null
+++ b/doc/source/test_results/container_repositories/registry2/index.rst
@@ -0,0 +1,320 @@
+
+.. _Measuring_performance_of_docker_registry:
+
+***************************************************
+Results of measuring performance of Docker Registry
+***************************************************
+
+:Abstract:
+
+ This document includes performance test results of `Docker Registry2`_ service
+ as a repository of docker images. All test have been performed regarding
+ :ref:`Measuring_performance_of_container_repositories`
+
+
+Environment description
+=======================
+Hardware configuration of each server
+-------------------------------------
+
+.. table:: Description of servers hardware
+
+ +-------+----------------+------------------------+------------------------+
+ |server |name |728998-comp-disk-228 |728998-comp-disk-227 |
+ | +----------------+------------------------+------------------------+
+ | |role |test_tool |registry |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model |HP,DL380 Gen9 |HP,DL380 Gen9 |
+ | +----------------+------------------------+------------------------+
+ | |operating_system| | 3.13.0-76-generic | | 3.13.0-76-generic |
+ | | | | Ubuntu-trusty | | Ubuntu-trusty |
+ | | | | x86_64 | | x86_64 |
+ +-------+----------------+------------------------+------------------------+
+ |CPU |vendor,model |Intel,E5-2680 v3 |Intel,E5-2680 v3 |
+ | +----------------+------------------------+------------------------+
+ | |processor_count |2 |2 |
+ | +----------------+------------------------+------------------------+
+ | |core_count |12 |12 |
+ | +----------------+------------------------+------------------------+
+ | |frequency_MHz |2500 |2500 |
+ +-------+----------------+------------------------+------------------------+
+ |RAM |vendor,model |HP,752369-081 |HP,752369-081 |
+ | +----------------+------------------------+------------------------+
+ | |amount_MB |262144 |262144 |
+ +-------+----------------+------------------------+------------------------+
+ |NETWORK|interface_name |p1p1 |p1p1 |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model |Intel,X710 Dual Port |Intel,X710 Dual Port |
+ | +----------------+------------------------+------------------------+
+ | |bandwidth |10G |10G |
+ +-------+----------------+------------------------+------------------------+
+ |STORAGE|dev_name |/dev/sda |/dev/sda |
+ | +----------------+------------------------+------------------------+
+ | |vendor,model | | raid10 - HP P840 | | raid10 - HP P840 |
+ | | | | 12 disks EH0600JEDHE | | 12 disks EH0600JEDHE |
+ | +----------------+------------------------+------------------------+
+ | |SSD/HDD |HDD |HDD |
+ | +----------------+------------------------+------------------------+
+ | |size | 3,6TB | 3,6TB |
+ +-------+----------------+------------------------+------------------------+
+
+Network scheme and part of configuration of hardware network switches
+---------------------------------------------------------------------
+Network scheme of the environment:
+
+.. image:: Network_Scheme.png
+ :alt: Network Scheme of the environment
+
+Here is the part of switch configuration for each switch port which connected to
+p1p1 interface of a server:
+
+.. code:: bash
+
+ switchport mode trunk
+ switchport trunk native vlan 600
+ switchport trunk allowed vlan 600-602,630-649
+ spanning-tree port type edge trunk
+ spanning-tree bpduguard enable
+ no snmp trap link-status
+
+Software configuration of the DockerRegistry service
+----------------------------------------------------
+Installation of Registry2:
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+.. code:: bash
+
+ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
+ apt-get update && apt-get -y install docker-engine
+ service docker restart
+ docker run -d -p 5000:5000 --name registry registry:2
+
+.. table:: Versions of some software
+
+ +-----------+------------------+
+ |Software |Version |
+ +===========+==================+
+ |Ubuntu |Ubuntu 14.04.3 LTS|
+ +-----------+------------------+
+ |Registry | |
+ +-----------+------------------+
+
+Operating system configuration:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+You can find outputs of some commands and /etc folder in the following archive:
+
+:download:`server_description_of_728998-comp-disk-227.tar.gz `
+
+Software configuration of the node with test tool
+-------------------------------------------------
+Test tool:
+^^^^^^^^^^
+Firstly we need to install docker-engine:
+
+.. code:: bash
+
+ echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" > /etc/apt/sources.list.d/docker.list
+ apt-get update && apt-get -y install docker-engine
+ echo DOCKER_OPTS=\"--insecure-registry 172.20.9.16:5000\" >> /etc/default/docker
+ service docker restart
+
+We use Python2.7 and
+:ref:`Script for collecting performance metrics of docker repository` with
+:ref:`Proposed docker file` to perform the tests. The image size is a sum of
+layers:
+
+.. code:: bash
+
+ IMAGE CREATED CREATED BY SIZE COMMENT
+ 93333b8ed564 About a minute ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/usr/s 0 B
+ 35d8142196c0 About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
+ 3a63f30ab247 About a minute ago /bin/sh -c apt-get install -y nginx 18.14 MB
+ 97434d46f197 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
+ 2 days ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 1.895 kB
+ 2 days ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 194.5 kB
+ 2 days ago /bin/sh -c #(nop) ADD file:e01d51d39ea04c8efb 187.8 MB
+
+It means that DATA_SIZE=206.13 MB
+
+.. table:: Versions of some software
+
+ +-----------+------------------+
+ |Software |Version |
+ +===========+==================+
+ |Ubuntu |Ubuntu 14.04.3 LTS|
+ +-----------+------------------+
+ |Docker |1.10 |
+ +-----------+------------------+
+
+Operating system:
+^^^^^^^^^^^^^^^^^
+You can find outputs of some commands and /etc folder in the following archive:
+:download:`server_description_of_728997-comp-disk-228.tar.gz `
+
+Testing process
+===============
+1.
+ Registry2 was installed on top of 728998-comp-disk-227 server as described in
+ `Installation of Registry2:`_ section.
+
+2.
+ The values of the variables in test-repo.py script was changed:
+ iterations = 1000
+ concurrency = 1
+ repo_address = "172.20.9.16:5000"
+
+3.
+ The following command was executed to perform the tests:
+
+ .. code:: bash
+
+ sudo python test-repo.py
+
+4.
+ push_results.csv and pull_results.csv was saved in persistent folder.
+
+5.
+ The steps from 1 to 4 was repeated with the following values of the
+ concurrency parameters: 1,10,30,50,100
+
+Results
+=======
+Push action results
+-------------------
+PUSH_TIME(ITERATION)
+^^^^^^^^^^^^^^^^^^^^
+After simple processing results the following plots for push action in depend on
+iteration number created (click to expand an image):
+
++----------------+----------------------------------------------------------+
+|Function |Plot |
++================+==========================================================+
+|PUSH_TIME |.. image:: results/registry-1000-1/push-1000-1.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=1) |
+|CONCURRENCY=1) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/registry-1000-10/push-1000-10.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=10) |
+|CONCURRENCY=10) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/registry-1000-30/push-1000-30.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=30) |
+|CONCURRENCY=30) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/registry-1000-50/push-1000-50.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=50) |
+|CONCURRENCY=50) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/registry-1000-100/push-1000-100.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY=100) |
+|CONCURRENCY=100)| :scale: 20 |
++----------------+----------------------------------------------------------+
+|PUSH_TIME |.. image:: results/registry-push-1000-1_10_30_50_100.png |
+|(ITERATION, | :alt: PUSH_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
+|CONCURRENCY={1, | :scale: 20 |
+|10,30,50,100} | |
++----------------+----------------------------------------------------------+
+
+PUSH_TIME(CONCURRENCY)
+^^^^^^^^^^^^^^^^^^^^^^
+The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
+parameter.
+
+.. table:: Maximum, Minimum, Average and Percentile 90% of PUSH_TIME values in
+ depend on CONCURRENCY parameter.
+
+ +-----------+-----------+-----------+-----------+--------------+
+ |Concurrency|Maximum |Minimum |Average |Percentile 90%|
+ +===========+===========+===========+===========+==============+
+ |1 |18.23183703|2.014497995|2.852927562|2.120845795 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |10 |51.36455989|4.625913858|6.886669915|4.924576068 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |30 |143.376904 |14.23889208|20.4385057 |14.57682798 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |50 |45.15124679|21.27197409|24.59056571|24.24201851 |
+ +-----------+-----------+-----------+-----------+--------------+
+ |100 |254.9175169|20.78799295|66.44495539|133.36117 |
+ +-----------+-----------+-----------+-----------+--------------+
+
+.. image:: results/registry-push.png
+ :alt: PUSH_TIME
+ :scale: 100
+
+Pull action results
+-------------------
+PULL_TIME(ITERATION)
+^^^^^^^^^^^^^^^^^^^^
+After simple processing results the following plots for pull action in depend on
+iteration number created (click to expand an image):
+
++----------------+----------------------------------------------------------+
+|Function |Plot |
++================+==========================================================+
+|PULL_TIME |.. image:: results/registry-1000-1/pull-1000-1.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=1) |
+|CONCURRENCY=1) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/registry-1000-10/pull-1000-10.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=10) |
+|CONCURRENCY=10) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/registry-1000-30/pull-1000-30.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=30) |
+|CONCURRENCY=30) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/registry-1000-50/pull-1000-50.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=50) |
+|CONCURRENCY=50) | :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/registry-1000-100/pull-1000-100.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY=100) |
+|CONCURRENCY=100)| :scale: 20 |
++----------------+----------------------------------------------------------+
+|PULL_TIME |.. image:: results/registry-pull-1000-1_10_30_50_100.png |
+|(ITERATION, | :alt: PULL_TIME(ITERATION, CONCURRENCY={1,10,30,50,100}|
+|CONCURRENCY={1, | :scale: 20 |
+|10,30,50,100} | |
++----------------+----------------------------------------------------------+
+
+PULL_TIME(CONCURRENCY)
+^^^^^^^^^^^^^^^^^^^^^^
+The following table and graph show how PUSH_TIME parameter depend on CONCURRENCY
+parameter.
+
+.. table:: Maximum, Minimum, Average and Percentile 90% of PULL_TIME values in
+ depend on CONCURRENCY parameter.
+
+ +-----------+------------+-------------+------------+--------------+
+ |Concurrency|Maximum |Minimum |Average |Percentile 90%|
+ +===========+============+=============+============+==============+
+ |1 |0.7883470058|0.05074381828|0.6775195916|0.7058973074 |
+ +-----------+------------+-------------+------------+--------------+
+ |10 |1.59649086 |0.05712890625|1.113002464 |1.204397488 |
+ +-----------+------------+-------------+------------+--------------+
+ |30 |4.239136934 |0.1007189751 |2.70093091 |2.899113488 |
+ +-----------+------------+-------------+------------+--------------+
+ |50 |6.978290081 |0.131428957 |4.493998793 |4.860594058 |
+ +-----------+------------+-------------+------------+--------------+
+ |100 |13.00426912 |0.152477026 |8.819601912 |9.696622682 |
+ +-----------+------------+-------------+------------+--------------+
+
+.. image:: results/registry-pull.png
+ :alt: PULL_TIME
+ :scale: 100
+
+Issues which have been found during the tests
+=============================================
+
+.. table:: Issues which have been found during the tests
+
+ +-------------------------------+---------------------------------------------+
+ |Issue description |Root cause, Link |
+ +===============================+=============================================+
+ || only 5 images can be uploaded|| Root cause of the issue haven't found yet |
+ || to Registry at the || |
+ || same time || |
+ +-------------------------------+---------------------------------------------+
+
+.. references:
+
+.. _Docker Registry2: https://docs.docker.com/registry
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-1/pull-1000-1.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-1/pull-1000-1.png
new file mode 100644
index 0000000..69ecffd
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-1/pull-1000-1.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-1/push-1000-1.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-1/push-1000-1.png
new file mode 100644
index 0000000..f10cc5e
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-1/push-1000-1.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-10/pull-1000-10.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-10/pull-1000-10.png
new file mode 100644
index 0000000..f00b296
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-10/pull-1000-10.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-10/push-1000-10.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-10/push-1000-10.png
new file mode 100644
index 0000000..5134236
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-10/push-1000-10.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-100/pull-1000-100.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-100/pull-1000-100.png
new file mode 100644
index 0000000..730cc84
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-100/pull-1000-100.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-100/push-1000-100.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-100/push-1000-100.png
new file mode 100644
index 0000000..77214ad
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-100/push-1000-100.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-30/pull-1000-30.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-30/pull-1000-30.png
new file mode 100644
index 0000000..ae8d5fe
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-30/pull-1000-30.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-30/push-1000-30.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-30/push-1000-30.png
new file mode 100644
index 0000000..119fd0d
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-30/push-1000-30.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-50/pull-1000-50.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-50/pull-1000-50.png
new file mode 100644
index 0000000..e5bc842
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-50/pull-1000-50.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-1000-50/push-1000-50.png b/doc/source/test_results/container_repositories/registry2/results/registry-1000-50/push-1000-50.png
new file mode 100644
index 0000000..2e478a8
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-1000-50/push-1000-50.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-pull-1000-1_10_30_50_100.png b/doc/source/test_results/container_repositories/registry2/results/registry-pull-1000-1_10_30_50_100.png
new file mode 100644
index 0000000..7f86633
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-pull-1000-1_10_30_50_100.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-pull.png b/doc/source/test_results/container_repositories/registry2/results/registry-pull.png
new file mode 100644
index 0000000..f8a8e51
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-pull.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-push-1000-1_10_30_50_100.png b/doc/source/test_results/container_repositories/registry2/results/registry-push-1000-1_10_30_50_100.png
new file mode 100644
index 0000000..d8a2acc
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-push-1000-1_10_30_50_100.png differ
diff --git a/doc/source/test_results/container_repositories/registry2/results/registry-push.png b/doc/source/test_results/container_repositories/registry2/results/registry-push.png
new file mode 100644
index 0000000..e009fdd
Binary files /dev/null and b/doc/source/test_results/container_repositories/registry2/results/registry-push.png differ
diff --git a/doc/source/test_results/index.rst b/doc/source/test_results/index.rst
index fcd6f39..caef5fa 100644
--- a/doc/source/test_results/index.rst
+++ b/doc/source/test_results/index.rst
@@ -10,3 +10,4 @@ Test Results
:maxdepth: 2
mq_ha/index
+ container_repositories/index