Ema has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/275779

Change subject: Add basic support for varnishtest
......................................................................

Add basic support for varnishtest

Add wikimedia-common_${vcl}.vcl and wikimedia_${vcl}.vcl under
/usr/share/varnish/tests to allow running VTC tests.

Change-Id: I76c38e3b47817388dab67ff6370f7c8eaa9ba862
---
A modules/varnish/files/tests/maps/01-basic-caching.vtc
M modules/varnish/manifests/common/vcl.pp
M modules/varnish/manifests/instance.pp
M modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
M modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
M modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
6 files changed, 68 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/79/275779/1

diff --git a/modules/varnish/files/tests/maps/01-basic-caching.vtc 
b/modules/varnish/files/tests/maps/01-basic-caching.vtc
new file mode 100644
index 0000000..fa6db9e
--- /dev/null
+++ b/modules/varnish/files/tests/maps/01-basic-caching.vtc
@@ -0,0 +1,26 @@
+varnishtest "Maps backend basic caching"
+
+server s1 {
+    rxreq
+    txresp
+} -start
+
+varnish v1 -arg "-p vcc_err_unref=false" -vcl+backend {
+    backend kartotherian {
+        .host = "${s1_addr}"; .port = "${s1_port}";
+    }
+
+    include "/usr/share/varnish/tests/wikimedia_maps-backend.vcl";
+} -start
+
+client c1 {
+    txreq -url "/?foo=bar"
+    rxresp
+    expect resp.status == 200
+
+    delay 1
+
+    txreq -url "/?foo=bar"
+    rxresp
+    expect resp.http.age == 1
+} -run
diff --git a/modules/varnish/manifests/common/vcl.pp 
b/modules/varnish/manifests/common/vcl.pp
index 0bc0645..1c6828d 100644
--- a/modules/varnish/manifests/common/vcl.pp
+++ b/modules/varnish/manifests/common/vcl.pp
@@ -29,4 +29,10 @@
         mode   => '0555',
         source => 'puppet:///modules/varnish/varnish-test-geoip',
     }
+
+    # VTC tests
+    file { '/usr/share/varnish/tests/':
+        source  => 'puppet:///modules/varnish/tests',
+        recurse => true,
+    }
 }
diff --git a/modules/varnish/manifests/instance.pp 
b/modules/varnish/manifests/instance.pp
index cf1f0a0..f523aa0 100644
--- a/modules/varnish/manifests/instance.pp
+++ b/modules/varnish/manifests/instance.pp
@@ -1,3 +1,16 @@
+define varnish::wikimedia_vcl($varnish_testing, $template_path) {
+    if $varnish_testing  {
+        $varnish_include_path = '/usr/share/varnish/tests/'
+    }
+
+    file { $title:
+        owner   => 'root',
+        group   => 'root',
+        mode    => '0444',
+        content => template($template_path),
+    }
+}
+
 define varnish::instance(
     $layer,
     $vcl_config,
@@ -77,6 +90,23 @@
         content => template("${module_name}/vcl/wikimedia-${layer}.vcl.erb"),
     }
 
+    # These versions of wikimedia-common_${vcl}.vcl and wikimedia_${vcl}.vcl
+    # are exactly the same as those under /etc/varnish but without any
+    # backends defined. The goal is to make it possible to run the VTC test
+    # files under /usr/share/varnish/tests without having to modify any VCL
+    # file by hand.
+    varnish::wikimedia_vcl { 
"/usr/share/varnish/tests/wikimedia-common_${vcl}.inc.vcl":
+        require         => File['/usr/share/varnish/tests'],
+        varnish_testing => true,
+        template_path   => "${module_name}/vcl/wikimedia-common.inc.vcl.erb",
+    }
+
+    varnish::wikimedia_vcl { "/usr/share/varnish/tests/wikimedia_${vcl}.vcl":
+        require         => File['/usr/share/varnish/tests'],
+        varnish_testing => true,
+        template_path   => "${module_name}/vcl/wikimedia-${layer}.vcl.erb",
+    }
+
     file { "/etc/varnish/${vcl}.inc.vcl":
         owner   => 'root',
         group   => 'root',
diff --git a/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
index 01826d3..466d31e 100644
--- a/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-backend.vcl.erb
@@ -1,5 +1,5 @@
 // common backend code for all clusters
-include "wikimedia-common_<%= @vcl %>.inc.vcl";
+include "<%= @varnish_include_path %>wikimedia-common_<%= @vcl %>.inc.vcl";
 
 /* Include the VCL file for this role */
 include "<%= @vcl %>.inc.vcl";
diff --git a/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
index 55b5acd..6a83235 100644
--- a/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-common.inc.vcl.erb
@@ -105,6 +105,10 @@
 
 # Puppet-generated the Backend host definitions, regardless of 'dynamic'
 
+if @varnish_testing
+       @varnish_directors = {}
+end
+
 be_seen = {}
 @varnish_directors.keys.sort.each do |director_name|
        director = @varnish_directors[director_name]
diff --git a/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb 
b/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
index 3780911..7800087 100644
--- a/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
+++ b/modules/varnish/templates/vcl/wikimedia-frontend.vcl.erb
@@ -4,7 +4,7 @@
 import netmapper;
 import ipcast;
 
-include "wikimedia-common_<%= @vcl %>.inc.vcl";
+include "<%= @varnish_include_path %>wikimedia-common_<%= @vcl %>.inc.vcl";
 include "analytics.inc.vcl";
 
 /* Include the VCL file for this role */

-- 
To view, visit https://gerrit.wikimedia.org/r/275779
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I76c38e3b47817388dab67ff6370f7c8eaa9ba862
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ema <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to