Unit tests for HAproxy dual stack
authorEmilien Macchi <emilien@redhat.com>
Mon, 25 Jul 2016 17:28:12 +0000 (13:28 -0400)
committerEmilien Macchi <emilien@redhat.com>
Mon, 25 Jul 2016 17:28:12 +0000 (13:28 -0400)
Change-Id: I6a959609523bd7fa681cd86522a56fff7c92352b

.fixtures.yml
spec/defines/tripleo_haproxy_endpoint_spec.rb [new file with mode: 0644]

index 69512da..9e8eb3b 100644 (file)
@@ -2,6 +2,8 @@ fixtures:
   repositories:
     'firewall': 'git://github.com/puppetlabs/puppetlabs-firewall.git'
     'stdlib': 'git://github.com/puppetlabs/puppetlabs-stdlib.git'
+    'haproxy': 'git://github.com/puppetlabs/puppetlabs-haproxy.git'
+    'concat': 'git://github.com/puppetlabs/puppetlabs-concat.git'
     'midonet':
       repo: 'git://github.com/midonet/puppet-midonet.git'
       ref: 'v2015.06.7'
diff --git a/spec/defines/tripleo_haproxy_endpoint_spec.rb b/spec/defines/tripleo_haproxy_endpoint_spec.rb
new file mode 100644 (file)
index 0000000..72d1619
--- /dev/null
@@ -0,0 +1,72 @@
+require 'spec_helper'
+
+describe 'tripleo::haproxy::endpoint' do
+
+  let(:title) { 'neutron' }
+
+  let :pre_condition do
+    'include ::haproxy'
+  end
+
+  let :params do {
+    :public_virtual_ip         => '192.168.0.1',
+    :internal_ip               => '10.0.0.1',
+    :service_port              => 9696,
+    :ip_addresses              => ['10.0.0.2', '10.0.0.3', '10.0.0.4'],
+    :server_names              => ['controller1', 'controller2', 'controller3'],
+    :public_ssl_port           => 19696,
+    :member_options            => [ 'check', 'inter 2000', 'rise 2', 'fall 5' ],
+    :haproxy_listen_bind_param => ['transparent'],
+  }
+  end
+
+  shared_examples_for 'tripleo haproxy endpoint' do
+    context 'with basic parameters to configure neutron binding' do
+      it 'should configure haproxy' do
+        is_expected.to contain_haproxy__listen('neutron').with(
+          :collect_exported => false,
+          :bind             => [
+            ['10.0.0.1:9696', ['transparent']],
+            ['192.168.0.1:9696', ['transparent']]
+          ]
+        )
+      end
+    end
+
+    context 'with dual-stack' do
+      before :each do
+        params.merge!({
+          :public_virtual_ip => ['fd00:fd00:fd00:2000::14', '192.168.0.1'],
+        })
+      end
+      it 'should configure haproxy' do
+        is_expected.to contain_haproxy__listen('neutron').with(
+          :collect_exported => false,
+          :bind             => [
+            ['10.0.0.1:9696', ['transparent']],
+            ['fd00:fd00:fd00:2000::14:9696', ['transparent']],
+            ['192.168.0.1:9696', ['transparent']]
+          ]
+        )
+      end
+   end
+  end
+
+  context 'on Debian platforms' do
+    let :facts do
+      { :osfamily => 'Debian',
+        :hostname => 'myhost' }
+    end
+
+    it_configures 'tripleo haproxy endpoint'
+  end
+
+  context 'on RedHat platforms' do
+    let :facts do
+      { :osfamily => 'RedHat',
+        :hostname => 'myhost' }
+    end
+
+    it_configures 'tripleo haproxy endpoint'
+  end
+end