From e8231d2546496d3ac00c6a88d35b6b9127779d91 Mon Sep 17 00:00:00 2001
From: Benjamin Blanc <benjamin.blanc@tiolive.com>
Date: Fri, 7 Jun 2013 13:04:32 +0000
Subject: [PATCH] Add scalability test support

Add new variables used in testnode software.
Add new rules to httpd, in order to make depositories accessible
by obfuscation.
---
 slapos/recipe/erp5testnode/__init__.py        | 10 +++--
 .../erp5testnode/template/erp5testnode.cfg.in |  5 +++
 .../erp5testnode/template/httpd.conf.in       | 40 +++++++++++++++----
 software/erp5testnode/instance-default.cfg    |  6 ++-
 software/erp5testnode/software.cfg            |  2 +-
 5 files changed, 51 insertions(+), 12 deletions(-)

diff --git a/slapos/recipe/erp5testnode/__init__.py b/slapos/recipe/erp5testnode/__init__.py
index 95fa1da52..9a798a2f4 100644
--- a/slapos/recipe/erp5testnode/__init__.py
+++ b/slapos/recipe/erp5testnode/__init__.py
@@ -54,8 +54,9 @@ class Recipe(GenericBaseRecipe):
     if software_path_list:
       CONFIG["software_path_list"] = "[software_list]"
       CONFIG["software_path_list"] += \
-          "\npath_list = %s" % ",".join(software_path_list)
-
+          "\npath_list = %s" % ",".join(software_path_list) 
+    CONFIG['computer_id'] = self.buildout['slap-connection']['computer-id']
+    CONFIG['server_url'] = self.buildout['slap-connection']['server-url']
     configuration_file = self.createFile(
       self.options['configuration-file'],
       self.substituteTemplate(
@@ -87,6 +88,8 @@ class Recipe(GenericBaseRecipe):
         lock_file=self.options['httpd-lock-file'],
         ip=self.options['httpd-ip'],
         port=self.options['httpd-port'],
+        software_access_port=self.options['httpd-software-access-port'],
+        testnode_srv_directory=self.options['srv-directory'],
         error_log=os.path.join(self.options['httpd-log-directory'],
                                'httpd-error.log'),
         access_log=os.path.join(self.options['httpd-log-directory'],
@@ -94,6 +97,7 @@ class Recipe(GenericBaseRecipe):
         certificate=self.options['httpd-cert-file'],
         key=self.options['httpd-key-file'],
         testnode_log_directory=self.options['log-directory'],
+        testnode_software_directory=self.options['software-directory'],
     )
     config_file = self.createFile(self.options['httpd-conf-file'],
        self.substituteTemplate(self.getTemplateFilename('httpd.conf.in'),
@@ -107,4 +111,4 @@ class Recipe(GenericBaseRecipe):
     # create empty html page to not allow listing of /
     page = open(os.path.join(self.options['log-directory'], "index.html"), "w")
     page.write("<html/>")
-    page.close()
\ No newline at end of file
+    page.close()
diff --git a/slapos/recipe/erp5testnode/template/erp5testnode.cfg.in b/slapos/recipe/erp5testnode/template/erp5testnode.cfg.in
index ab38d44c7..d06997b36 100644
--- a/slapos/recipe/erp5testnode/template/erp5testnode.cfg.in
+++ b/slapos/recipe/erp5testnode/template/erp5testnode.cfg.in
@@ -2,8 +2,10 @@
 slapos_directory = %(slapos_directory)s
 working_directory = %(working_directory)s
 test_suite_directory = %(test_suite_directory)s
+software_directory = %(software_directory)s
 log_directory = %(log_directory)s
 run_directory = %(run_directory)s
+srv_directory = %(srv_directory)s
 proxy_host = %(proxy_host)s
 proxy_port = %(proxy_port)s
 node_quantity = %(node_quantity)s
@@ -13,6 +15,9 @@ ipv6_address = %(ipv6_address)s
 test_suite_master_url = %(test_suite_master_url)s
 httpd_ip = %(httpd_ip)s
 httpd_port = %(httpd_port)s
+httpd_software_access_port = %(httpd_software_access_port)s
+computer_id = %(computer_id)s
+server_url = %(server_url)s
 
 # Binaries
 git_binary = %(git_binary)s
diff --git a/slapos/recipe/erp5testnode/template/httpd.conf.in b/slapos/recipe/erp5testnode/template/httpd.conf.in
index 9c75e683e..0bfcf0b7c 100644
--- a/slapos/recipe/erp5testnode/template/httpd.conf.in
+++ b/slapos/recipe/erp5testnode/template/httpd.conf.in
@@ -50,12 +50,38 @@ SSLHonorCipherOrder On
 SSLCipherSuite RC4-SHA:HIGH:!ADH
 SSLProxyEngine On
 
-DocumentRoot "%(testnode_log_directory)s"
 
+#DocumentRoot "%(testnode_log_directory)s"
 # Directory protection
-<Directory />
-    Options Indexes FollowSymLinks
-    IndexOptions FancyIndexing
-    order allow,deny
-    Allow from All
-</Directory>
\ No newline at end of file
+#<Directory />
+#    Options Indexes FollowSymLinks
+#    IndexOptions FancyIndexing
+#    order allow,deny
+#    Allow from All
+#</Directory>
+
+# Directory protection
+<VirtualHost *:%(port)s>
+    SSLEngine on
+    RewriteRule (.*) http://[%(ip)s]:%(port)s/VirtualHostBase/https/[%(ip)s]:%(port)s/VirtualHostRoot/$1 [L,P]
+    DocumentRoot "%(testnode_log_directory)s"
+    <Directory />
+        Options Indexes FollowSymLinks
+        IndexOptions FancyIndexing
+        order allow,deny
+        Allow from All
+    </Directory>
+</VirtualHost>
+
+Listen [%(ip)s]:%(software_access_port)s
+<VirtualHost *:%(software_access_port)s>
+    SSLEngine on
+    RewriteRule (.*) http://[%(ip)s]:%(software_access_port)s/VirtualHostBase/https/[%(ip)s]:%(software_access_port)s/VirtualHostRoot/$1 [L,P]
+    DocumentRoot "%(testnode_software_directory)s"
+    <Directory />
+        Options FollowSymLinks
+        IndexOptions FancyIndexing
+        order allow,deny
+        Allow from All
+   </Directory>
+</VirtualHost>
diff --git a/software/erp5testnode/instance-default.cfg b/software/erp5testnode/instance-default.cfg
index 8aae80e07..62590bb5b 100644
--- a/software/erp5testnode/instance-default.cfg
+++ b/software/erp5testnode/instance-default.cfg
@@ -26,13 +26,14 @@ pwgen-binary = ${pwgen:location}/bin/pwgen
 
 [testnode]
 recipe = slapos.cookbook:erp5testnode
-
 slapos-directory = $${directory:slapos}
 working-directory = $${directory:testnode}
 test-suite-directory = $${directory:test-suite}
 proxy-host = $${slap-network-information:global-ipv6}
 proxy-port = 5000
 log-directory = $${directory:log}
+srv-directory = $${rootdirectory:srv}
+software-directory = $${directory:software}
 run-directory = $${directory:run}
 test-node-title = $${slap-parameter:test-node-title}
 node-quantity = $${slap-parameter:node-quantity}
@@ -52,8 +53,10 @@ httpd-lock-file = $${basedirectory:run}/httpd.lock
 httpd-conf-file = $${rootdirectory:etc}/httpd.conf
 httpd-wrapper = $${rootdirectory:bin}/httpd
 httpd-port = 9080
+httpd-software-access-port = 9081
 httpd-ip = $${slap-network-information:global-ipv6}
 httpd-log-directory = $${basedirectory:log}
+httpd-software-directory = $${directory:software}
 httpd-cert-file = $${rootdirectory:etc}/httpd-public.crt
 httpd-key-file = $${rootdirectory:etc}/httpd-private.key
 
@@ -153,6 +156,7 @@ testnode = $${rootdirectory:srv}/testnode
 test-suite = $${rootdirectory:srv}/test_suite
 log = $${basedirectory:log}/testnode
 run = $${basedirectory:run}/testnode
+software = $${rootdirectory:srv}/software
 shellinabox = $${rootdirectory:srv}/shellinabox
 ca-dir = $${rootdirectory:srv}/ca
 
diff --git a/software/erp5testnode/software.cfg b/software/erp5testnode/software.cfg
index 3867d17b0..ccffad29a 100644
--- a/software/erp5testnode/software.cfg
+++ b/software/erp5testnode/software.cfg
@@ -79,7 +79,7 @@ recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance-default.cfg
 output = ${buildout:directory}/template-default.cfg
 mode = 0644
-md5sum = 9881aa4e567732e1c682dbe49c8f62df
+md5sum = 9858181c89a361ef93ede0eac8d56034
 
 [networkcache]
 # signature certificates of the following uploaders.
-- 
GitLab