Fix karaf log rotation
[integration/packaging/puppet-opendaylight.git] / spec / classes / opendaylight_spec.rb
index f05ac7313374bc6d4e6dc1ad32f62ad715f47ad9..7013d2204f992616e1742ad517cd2f4deeb0bf50 100644 (file)
@@ -11,7 +11,7 @@ describe 'opendaylight' do
         operatingsystem = 'Fedora'
 
         # All tests for supported versions of Fedora
-        ['22', '23'].each do |operatingsystemmajrelease|
+        ['25', '26'].each do |operatingsystemmajrelease|
           context "#{operatingsystemmajrelease}" do
             let(:facts) {{
               :osfamily => osfamily,
@@ -42,20 +42,20 @@ describe 'opendaylight' do
             # Note that this function is defined in spec_helper
             log_level_tests
 
-            # Run tests that specialize in checking ODL OVSDB L3 config
-            # NB: Only testing defaults here, specialized enabling L3 tests elsewhere
-            # Note that this function is defined in spec_helper
-            enable_l3_tests
-
             # Run tests that specialize in checking ODL OVSDB HA config
             # NB: Only testing defaults here, specialized enabling HA tests elsewhere
             # Note that this function is defined in spec_helper
             enable_ha_tests
+
+            # Run tests that specialize in checking log file settings
+            # NB: Only testing defaults here, specialized log file settings tests elsewhere
+            # Note that this function is defined in spec_helper
+            log_settings
           end
         end
 
         # All tests for unsupported versions of Fedora
-        ['21'].each do |operatingsystemmajrelease|
+        ['23'].each do |operatingsystemmajrelease|
           context "#{operatingsystemmajrelease}" do
             let(:facts) {{
               :osfamily => osfamily,
@@ -106,15 +106,15 @@ describe 'opendaylight' do
             # Note that this function is defined in spec_helper
             log_level_tests
 
-            # Run tests that specialize in checking ODL OVSDB L3 config
-            # NB: Only testing defaults here, specialized enabling L3 tests elsewhere
-            # Note that this function is defined in spec_helper
-            enable_l3_tests
-
             # Run tests that specialize in checking ODL OVSDB HA config
             # NB: Only testing defaults here, specialized enabling HA tests elsewhere
             # Note that this function is defined in spec_helper
             enable_ha_tests
+
+            # Run tests that specialize in checking log file settings
+            # NB: Only testing defaults here, specialized log file settings tests elsewhere
+            # Note that this function is defined in spec_helper
+            log_settings
           end
         end
 
@@ -139,37 +139,31 @@ describe 'opendaylight' do
     describe 'OS family Debian' do
       osfamily = 'Debian'
 
-      # All tests for Ubuntu 14.04
+      # All tests for Ubuntu 16.04
       describe 'Ubuntu' do
         operatingsystem = 'Ubuntu'
 
         # All tests for supported versions of Ubuntu
-        ['14.04'].each do |operatingsystemmajrelease|
-          context "#{operatingsystemmajrelease}" do
+        ['16.04'].each do |operatingsystemrelease|
+          context "#{operatingsystemrelease}" do
             let(:facts) {{
               :osfamily => osfamily,
               :operatingsystem => operatingsystem,
-              :operatingsystemmajrelease => operatingsystemmajrelease,
-              # TODO: Do more elegantly. Java mod uses codenames to ID version.
-              :lsbdistcodename => 'trusty',
-              :architecture => 'x86_64',
+              :operatingsystemrelease => operatingsystemrelease,
+              :lsbdistid => operatingsystem,
+              :lsbdistrelease => operatingsystemrelease,
+              :lsbdistcodename => 'xenial',
+              :puppetversion => '4.9.0',
               :path => ['/usr/local/bin', '/usr/bin', '/bin'],
             }}
 
-            # NB: Only tarball installs are supported for Debian family OSs
-            let(:params) {{
-              :install_method => 'tarball',
-            }}
-
             # Run shared tests applicable to all supported OSs
             # Note that this function is defined in spec_helper
             generic_tests
 
-            # Run test that specialize in checking tarball-based installs
-            # NB: Only testing defaults here, specialized tarball tests elsewhere
-            # Passing osfamily required to do upstart vs systemd (default) checks
+            # Run test that specialize in checking deb-based installs
             # Note that this function is defined in spec_helper
-            tarball_install_tests(osfamily: osfamily)
+            deb_install_tests
 
             # Run test that specialize in checking Karaf feature installs
             # NB: Only testing defaults here, specialized Karaf tests elsewhere
@@ -186,29 +180,33 @@ describe 'opendaylight' do
             # Note that this function is defined in spec_helper
             log_level_tests
 
-            # Run tests that specialize in checking ODL OVSDB L3 config
-            # NB: Only testing defaults here, specialized enabling L3 tests elsewhere
-            # Note that this function is defined in spec_helper
-            enable_l3_tests
-
             # Run tests that specialize in checking ODL OVSDB HA config
             # NB: Only testing defaults here, specialized enabling HA tests elsewhere
             # Note that this function is defined in spec_helper
             enable_ha_tests
+
+            # Run tests that specialize in checking log file settings
+            # NB: Only testing defaults here, specialized log file settings tests elsewhere
+            # Note that this function is defined in spec_helper
+            log_settings
           end
         end
 
         # All tests for unsupported versions of Ubuntu
-        ['12.04', '15.10'].each do |operatingsystemmajrelease|
-          context "#{operatingsystemmajrelease}" do
+        ['12.04', '14.04', '15.10'].each do |operatingsystemrelease|
+          context "#{operatingsystemrelease}" do
             let(:facts) {{
               :osfamily => osfamily,
               :operatingsystem => operatingsystem,
-              :operatingsystemmajrelease => operatingsystemmajrelease,
+              :operatingsystemrelease => operatingsystemrelease,
+              :lsbdistid => operatingsystem,
+              :lsbdistrelease => operatingsystemrelease,
+              :lsbdistcodename => 'xenial',
+              :puppetversion => '4.9.0',
             }}
             # Run shared tests applicable to all unsupported OSs
             # Note that this function is defined in spec_helper
-            expected_msg = "Unsupported OS: #{operatingsystem} #{operatingsystemmajrelease}"
+            expected_msg = "Unsupported OS: #{operatingsystem} #{operatingsystemrelease}"
             unsupported_os_tests(expected_msg: expected_msg)
           end
         end
@@ -327,8 +325,8 @@ describe 'opendaylight' do
     end
   end
 
-  # All ODL REST port tests
-  describe 'REST port tests' do
+  # All ODL IP/REST port tests
+  describe 'IP and REST port tests' do
     # Non-OS-type tests assume CentOS 7
     #   See issue #43 for reasoning:
     #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
@@ -353,7 +351,7 @@ describe 'opendaylight' do
       odl_rest_port_tests
     end
 
-    context 'overriding default REST port' do
+    context 'overriding default REST and IP port' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
@@ -362,6 +360,7 @@ describe 'opendaylight' do
 
       let(:params) {{
         :odl_rest_port => 7777,
+        :odl_bind_ip => '127.0.0.1'
       }}
 
       # Run shared tests applicable to all supported OSs
@@ -370,7 +369,7 @@ describe 'opendaylight' do
 
       # Run test that specialize in checking ODL REST port config
       # Note that this function is defined in spec_helper
-      odl_rest_port_tests(odl_rest_port: 7777)
+      odl_rest_port_tests(odl_rest_port: 7777, odl_bind_ip: '127.0.0.1')
     end
   end
 
@@ -446,15 +445,16 @@ describe 'opendaylight' do
     end
   end
 
-  # All OVSDB L3 enable/disable tests
-  describe 'OVSDB L3 enable/disable tests' do
+  describe 'log mechanism settings' do
     # Non-OS-type tests assume CentOS 7
     #   See issue #43 for reasoning:
     #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
     osfamily = 'RedHat'
     operatingsystem = 'CentOS'
     operatingsystemmajrelease = '7'
-    context 'using enable_l3 default' do
+
+    # All custom log file size and rollover tests
+    context 'log to file using default size and rollover' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
@@ -467,12 +467,11 @@ describe 'opendaylight' do
       # Note that this function is defined in spec_helper
       generic_tests
 
-      # Run test that specialize in checking ODL OVSDB L3 config
-      # Note that this function is defined in spec_helper
-      enable_l3_tests
+      # Run test specific to log settings
+      log_settings
     end
 
-    context 'using "no" for enable_l3' do
+    context 'log to file customizing size' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
@@ -480,19 +479,18 @@ describe 'opendaylight' do
       }}
 
       let(:params) {{
-        :enable_l3 => 'no',
+        :log_max_size => '1GB',
       }}
 
       # Run shared tests applicable to all supported OSs
       # Note that this function is defined in spec_helper
       generic_tests
 
-      # Run test that specialize in checking ODL OVSDB L3 config
-      # Note that this function is defined in spec_helper
-      enable_l3_tests(enable_l3: 'no')
+      # Run test specific to log settings
+      log_settings(log_max_size: '1GB')
     end
 
-    context 'using "yes" for enable_l3' do
+    context 'log to file customizing rollover' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
@@ -500,19 +498,18 @@ describe 'opendaylight' do
       }}
 
       let(:params) {{
-        :enable_l3 => 'yes',
+        :log_max_rollover => 3,
       }}
 
       # Run shared tests applicable to all supported OSs
       # Note that this function is defined in spec_helper
       generic_tests
 
-      # Run test that specialize in checking ODL OVSDB L3 config
-      # Note that this function is defined in spec_helper
-      enable_l3_tests(enable_l3: 'yes')
+      # Run test specific to log settings
+      log_settings(log_max_rollover: 3)
     end
 
-    context 'using false for enable_l3' do
+    context 'log to file customizing size and rollover' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
@@ -520,19 +517,22 @@ describe 'opendaylight' do
       }}
 
       let(:params) {{
-        :enable_l3 => false,
+        :log_max_size => '1GB',
+        :log_max_rollover => 3,
+        :log_rollover_fileindex => 'min'
       }}
 
       # Run shared tests applicable to all supported OSs
       # Note that this function is defined in spec_helper
       generic_tests
 
-      # Run test that specialize in checking ODL OVSDB L3 config
-      # Note that this function is defined in spec_helper
-      enable_l3_tests(enable_l3: false)
+      # Run test specific to log settings
+      log_settings(log_max_size: '1GB',
+                   log_max_rollover: 3,
+                   log_rollover_fileindex: 'min')
     end
 
-    context 'using true for enable_l3' do
+    context 'log to console' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
@@ -540,16 +540,15 @@ describe 'opendaylight' do
       }}
 
       let(:params) {{
-        :enable_l3 => true,
+        :log_mechanism => 'console',
       }}
 
       # Run shared tests applicable to all supported OSs
       # Note that this function is defined in spec_helper
       generic_tests
 
-      # Run test that specialize in checking ODL OVSDB L3 config
-      # Note that this function is defined in spec_helper
-      enable_l3_tests(enable_l3: true)
+      # Run test specific to log settings
+      log_settings(log_mechanism: 'console')
     end
   end
 
@@ -620,33 +619,52 @@ describe 'opendaylight' do
         # Note that this function is defined in spec_helper
         enable_ha_tests(enable_ha: true, ha_node_ips: ['0.0.0.0', '127.0.0.1'])
       end
+
+      context 'using custom modules for sharding' do
+        let(:facts) {{
+          :osfamily => osfamily,
+          :operatingsystem => operatingsystem,
+          :operatingsystemmajrelease => operatingsystemmajrelease,
+        }}
+
+        let(:params) {{
+          :enable_ha => true,
+          :ha_node_ips => ['0.0.0.0', '127.0.0.1'],
+          :ha_db_modules => {'default' => false, 'topology' => 'urn:opendaylight:topology'}
+        }}
+
+        # Run shared tests applicable to all supported OSs
+        # Note that this function is defined in spec_helper
+        generic_tests
+
+        # Run test that specialize in checking ODL OVSDB HA config
+        # Note that this function is defined in spec_helper
+        enable_ha_tests(enable_ha: true, ha_node_ips: ['0.0.0.0', '127.0.0.1'])
+      end
     end
   end
 
 
   # All install method tests
   describe 'install method tests' do
-    # Non-OS-type tests assume CentOS 7
-    #   See issue #43 for reasoning:
-    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
-    osfamily = 'RedHat'
-    operatingsystem = 'CentOS'
-    operatingsystemrelease = '7.0'
-    operatingsystemmajrelease = '7'
 
     # All tests for RPM install method
     describe 'RPM' do
-      context 'installing default RPM' do
+      # Non-OS-type tests assume CentOS 7
+      #   See issue #43 for reasoning:
+      #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+      osfamily = 'RedHat'
+      operatingsystem = 'CentOS'
+      operatingsystemrelease = '7.0'
+      operatingsystemmajrelease = '7'
+
+      context 'installing from default repo' do
         let(:facts) {{
           :osfamily => osfamily,
           :operatingsystem => operatingsystem,
           :operatingsystemmajrelease => operatingsystemmajrelease,
         }}
 
-        let(:params) {{
-          :install_method => 'rpm',
-        }}
-
         # Run shared tests applicable to all supported OSs
         # Note that this function is defined in spec_helper
         generic_tests
@@ -656,8 +674,8 @@ describe 'opendaylight' do
         rpm_install_tests
       end
 
-      context 'installing Beryllium RPM' do
-        rpm_repo = 'opendaylight-40-release'
+      context 'installing from Nexus repo' do
+        rpm_repo = 'https://nexus.opendaylight.org/content/repositories/opendaylight-fluorine-epel-7-$basearch-devel'
         let(:facts) {{
           :osfamily => osfamily,
           :operatingsystem => operatingsystem,
@@ -665,7 +683,6 @@ describe 'opendaylight' do
         }}
 
         let(:params) {{
-          :install_method => 'rpm',
           :rpm_repo => rpm_repo,
         }}
 
@@ -679,135 +696,82 @@ describe 'opendaylight' do
       end
     end
 
-    # All tests for tarball install method
-    describe 'tarball' do
-      describe 'using default tarball_url' do
-        context 'using default unitfile_url' do
-          let(:facts) {{
-            :osfamily => osfamily,
-            :operatingsystem => operatingsystem,
-            :operatingsystemrelease => operatingsystemrelease,
-            :operatingsystemmajrelease => operatingsystemmajrelease,
-            :architecture => 'x86_64',
-            :path => ['/usr/local/bin', '/usr/bin', '/bin'],
-          }}
-
-          let(:params) {{
-            :install_method => 'tarball',
-          }}
-
-          # Run shared tests applicable to all supported OSs
-          # Note that this function is defined in spec_helper
-          generic_tests
-
-          # Run test that specialize in checking tarball-based installs
-          # Note that this function is defined in spec_helper
-          tarball_install_tests
-        end
+    # All tests for Deb install method
+    describe 'Deb' do
+      osfamily = 'Debian'
+      operatingsystem = 'Ubuntu'
+      operatingsystemrelease = '16.04'
+      operatingsystemmajrelease = '16'
+      lsbdistcodename = 'xenial'
 
-        context 'overriding default unitfile_url' do
-          # Doesn't matter if this is valid, just that it honors what we pass
-          unitfile_url = 'fake_unitfile'
-          let(:facts) {{
-            :osfamily => osfamily,
-            :operatingsystem => operatingsystem,
-            :operatingsystemrelease => operatingsystemrelease,
-            :operatingsystemmajrelease => operatingsystemmajrelease,
-            :architecture => 'x86_64',
-            :path => ['/usr/local/bin', '/usr/bin', '/bin'],
-          }}
-
-          let(:params) {{
-            :install_method => 'tarball',
-            :unitfile_url => unitfile_url,
-          }}
-
-          # Run shared tests applicable to all supported OSs
-          # Note that this function is defined in spec_helper
-          generic_tests
-
-          # Run test that specialize in checking tarball-based installs
-          # Note that this function is defined in spec_helper
-          tarball_install_tests(unitfile_url: unitfile_url)
-        end
+      context 'installing Deb' do
+        let(:facts) {{
+          :osfamily => osfamily,
+          :operatingsystem => operatingsystem,
+          :operatingsystemrelease => operatingsystemrelease,
+          :operatingsystemmajrelease => operatingsystemmajrelease,
+          :lsbdistid => operatingsystem,
+          :lsbdistrelease => operatingsystemrelease,
+          :lsbmajdistrelease => operatingsystemmajrelease,
+          :lsbdistcodename => lsbdistcodename,
+          :puppetversion => Puppet.version,
+        }}
+
+        # Run shared tests applicable to all supported OSs
+        # Note that this function is defined in spec_helper
+        generic_tests
+
+        # Run test that specialize in checking RPM-based installs
+        # Note that this function is defined in spec_helper
+        deb_install_tests
       end
 
-      describe 'overriding default tarball_url' do
-        # Doesn't matter if this is valid, just that it honors what we pass
-        tarball_url = 'fake_tarball'
-        context 'using default unitfile_url' do
-          unitfile_url = 'https://github.com/dfarrell07/opendaylight-systemd/archive/master/opendaylight-unitfile.tar.gz'
-          let(:facts) {{
-            :osfamily => osfamily,
-            :operatingsystem => operatingsystem,
-            :operatingsystemrelease => operatingsystemrelease,
-            :operatingsystemmajrelease => operatingsystemmajrelease,
-            :architecture => 'x86_64',
-            :path => ['/usr/local/bin', '/usr/bin', '/bin'],
-          }}
-
-          let(:params) {{
-            :install_method => 'tarball',
-            :tarball_url => tarball_url,
-          }}
-
-          # Run shared tests applicable to all supported OSs
-          # Note that this function is defined in spec_helper
-          generic_tests
-
-          # Run test that specialize in checking tarball-based installs
-          # Note that this function is defined in spec_helper
-          tarball_install_tests(tarball_url: tarball_url)
-        end
+      context 'installing Nitrogen Deb' do
+        deb_repo = 'ppa:odl-team/nitrogen'
+        let(:facts) {{
+          :osfamily => osfamily,
+          :operatingsystem => operatingsystem,
+          :operatingsystemrelease => operatingsystemrelease,
+          :operatingsystemmajrelease => operatingsystemmajrelease,
+          :lsbdistid => operatingsystem,
+          :lsbdistrelease => operatingsystemrelease,
+          :lsbmajdistrelease => operatingsystemmajrelease,
+          :lsbdistcodename => lsbdistcodename,
+          :puppetversion => Puppet.version,
+        }}
 
-        context 'overriding default unitfile_url' do
-          # Doesn't matter if this is valid, just that it honors what we pass
-          unitfile_url = 'fake_unitfile'
-          let(:facts) {{
-            :osfamily => osfamily,
-            :operatingsystem => operatingsystem,
-            :operatingsystemrelease => operatingsystemrelease,
-            :operatingsystemmajrelease => operatingsystemmajrelease,
-            :architecture => 'x86_64',
-            :path => ['/usr/local/bin', '/usr/bin', '/bin'],
-          }}
-
-          let(:params) {{
-            :install_method => 'tarball',
-            :tarball_url => tarball_url,
-            :unitfile_url => unitfile_url,
-          }}
-
-          # Run shared tests applicable to all supported OSs
-          # Note that this function is defined in spec_helper
-          generic_tests
-
-          # Run test that specialize in checking tarball-based installs
-          # Note that this function is defined in spec_helper
-          tarball_install_tests(tarball_url: tarball_url, unitfile_url: unitfile_url)
-        end
+        let(:params) {{
+          :deb_repo => deb_repo,
+        }}
+
+        # Run shared tests applicable to all supported OSs
+        # Note that this function is defined in spec_helper
+        generic_tests
+
+        # Run test that specialize in checking RPM-based installs
+        # Note that this function is defined in spec_helper
+        deb_install_tests(deb_repo: deb_repo)
       end
     end
   end
-  # Security Group Tests
-  describe 'security group tests' do
+
+  # SNAT Mechanism tests
+  describe 'SNAT mechanism tests' do
     # Non-OS-type tests assume CentOS 7
     #   See issue #43 for reasoning:
     #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
     osfamily = 'RedHat'
     operatingsystem = 'CentOS'
     operatingsystemmajrelease = '7'
-    context 'using supported stateful' do
+    context 'using controller' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
         :operatingsystemmajrelease => operatingsystemmajrelease,
-        :operatingsystemrelease => '7.3',
       }}
 
       let(:params) {{
-        :security_group_mode => 'stateful',
-        :extra_features      => ['odl-netvirt-openstack'],
+        :extra_features => ['odl-netvirt-openstack'],
       }}
 
       # Run shared tests applicable to all supported OSs
@@ -816,20 +780,19 @@ describe 'opendaylight' do
 
       # Run test that specialize in checking security groups
       # Note that this function is defined in spec_helper
-      enable_sg_tests('stateful', '7.3')
+      snat_mechanism_tests
     end
 
-    context 'using unsupported stateful' do
+    context 'using conntrack' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
         :operatingsystemmajrelease => operatingsystemmajrelease,
-        :operatingsystemrelease => '7.2.1511',
       }}
 
       let(:params) {{
-        :security_group_mode => 'stateful',
-        :extra_features      => ['odl-netvirt-openstack'],
+        :snat_mechanism => 'conntrack',
+        :extra_features => ['odl-netvirt-openstack'],
       }}
 
       # Run shared tests applicable to all supported OSs
@@ -838,29 +801,376 @@ describe 'opendaylight' do
 
       # Run test that specialize in checking security groups
       # Note that this function is defined in spec_helper
-      enable_sg_tests('stateful', '7.2.1511')
+      snat_mechanism_tests('conntrack')
     end
+  end
 
-    context 'using transparent with unsupported stateful' do
+  # SFC tests
+  describe 'SFC tests' do
+    # Non-OS-type tests assume CentOS 7
+    #   See issue #43 for reasoning:
+    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+    osfamily = 'RedHat'
+    operatingsystem = 'CentOS'
+    operatingsystemmajrelease = '7'
+    context 'not using odl-netvirt-sfc feature' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{ }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking security groups
+      # Note that this function is defined in spec_helper
+      sfc_tests
+    end
+
+    context 'using odl-netvirt-sfc feature' do
       let(:facts) {{
         :osfamily => osfamily,
         :operatingsystem => operatingsystem,
         :operatingsystemmajrelease => operatingsystemmajrelease,
-        :operatingsystemrelease => '7.2.1511',
       }}
 
       let(:params) {{
-        :security_group_mode => 'transparent',
-        :extra_features      => ['odl-netvirt-openstack'],
+        :extra_features => ['odl-netvirt-sfc'],
+      }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking security groups
+      # Note that this function is defined in spec_helper
+      sfc_tests(extra_features: ['odl-netvirt-sfc'])
+    end
+  end
+
+  # DSCP marking tests
+  describe 'DSCP marking tests' do
+    # Non-OS-type tests assume CentOS 7
+    #   See issue #43 for reasoning:
+    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+    osfamily = 'RedHat'
+    operatingsystem = 'CentOS'
+    operatingsystemmajrelease = '7'
+    context 'use default value' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
       }}
 
+      let(:params) {{ }}
+
       # Run shared tests applicable to all supported OSs
       # Note that this function is defined in spec_helper
       generic_tests
 
       # Run test that specialize in checking security groups
       # Note that this function is defined in spec_helper
-      enable_sg_tests('transparent', '7.2.1511')
+      dscp_tests
+    end
+
+    context 'inherit DSCP values' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+        :inherit_dscp_marking => :true,
+      }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking security groups
+      # Note that this function is defined in spec_helper
+      dscp_tests(inherit_dscp_marking: true)
+    end
+  end
+
+  # VPP routing node config tests
+  describe 'VPP routing node tests' do
+    # Non-OS-type tests assume CentOS 7
+    #   See issue #43 for reasoning:
+    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+    osfamily = 'RedHat'
+    operatingsystem = 'CentOS'
+    operatingsystemmajrelease = '7'
+    context 'using default - no routing node' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{ }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking routing-node config
+      # Note that this function is defined in spec_helper
+      vpp_routing_node_tests
+    end
+
+    context 'using node name for routing node' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+        :vpp_routing_node => 'test-node-1',
+      }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking routing-node config
+      # Note that this function is defined in spec_helper
+      vpp_routing_node_tests(routing_node: 'test-node-1')
+    end
+  end
+
+  # ODL username/password tests
+  describe 'ODL username/password tests' do
+    # Non-OS-type tests assume CentOS 7
+    #   See issue #43 for reasoning:
+    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+    osfamily = 'RedHat'
+    operatingsystem = 'CentOS'
+    operatingsystemmajrelease = '7'
+    context 'using default username/password' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{ }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking username/password config
+      # Note that this function is defined in spec_helper
+      username_password_tests('admin','admin')
+    end
+
+    context 'specifying non-default username/password' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+        :username => 'test',
+        :password => 'test'
+      }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking routing-node config
+      # Note that this function is defined in spec_helper
+      username_password_tests('test', 'test')
+    end
+  end
+
+  # websocket address tests
+  describe 'ODL websocket address tests' do
+    # Non-OS-type tests assume CentOS 7
+    #   See issue #43 for reasoning:
+    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+    osfamily = 'RedHat'
+    operatingsystem = 'CentOS'
+    operatingsystemmajrelease = '7'
+    context 'using default websocket address' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{ }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking websocket address
+      # Note that this function is defined in spec_helper
+      odl_websocket_address_tests
+    end
+
+    context 'overriding websocket address' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+       :odl_bind_ip => '127.0.0.1'
+       }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking websocket address
+      # Note that this function is defined in spec_helper
+      odl_websocket_address_tests(odl_bind_ip: '127.0.0.1')
+    end
+  end
+
+  # TLS tests
+  describe 'ODL TLS tests' do
+    # Non-OS-type tests assume CentOS 7
+    #   See issue #43 for reasoning:
+    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+    osfamily = 'RedHat'
+    operatingsystem = 'CentOS'
+    operatingsystemmajrelease = '7'
+    context 'enabling TLS without required keystore password (negative test)' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+       :enable_tls => :true
+       }}
+
+      # Run test that specialize in checking TLS
+      # Note that this function is defined in spec_helper
+      odl_tls_tests(enable_tls:true)
+    end
+    context 'enabling TLS with required params' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+       :enable_tls => true,
+       :tls_keystore_password => '123456',
+       }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test that specialize in checking TLS
+      # Note that this function is defined in spec_helper
+      odl_tls_tests(enable_tls:true, tls_keystore_password:'123456')
+    end
+  end
+
+  describe 'polling enablement settings' do
+    # Non-OS-type tests assume CentOS 7
+    #   See issue #43 for reasoning:
+    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+    osfamily = 'RedHat'
+    operatingsystem = 'CentOS'
+    operatingsystemmajrelease = '7'
+
+    # Default statistics polling off
+    context 'do not poll ovs statistics' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{ }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test specific to log settings
+      stats_polling_enablement_tests
+    end
+
+    # Default statistics polling on
+    context 'poll ovs statistics' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+       :stats_polling_enabled => true,
+       }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests
+
+      # Run test specific to log settings
+      stats_polling_enablement_tests(stats_polling_enabled:true)
+    end
+  end
+
+  describe 'Different IPv support tests' do
+    # Non-OS-type tests assume CentOS 7
+    #   See issue #43 for reasoning:
+    #   https://github.com/dfarrell07/puppet-opendaylight/issues/43#issue-57343159
+    osfamily = 'RedHat'
+    operatingsystem = 'CentOS'
+    operatingsystemmajrelease = '7'
+
+    context 'IPv6 deployment' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+        :odl_bind_ip => '::1'
+        }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests(odl_bind_ip:'::1')
+    end
+
+    context 'IPv4 deployment' do
+      let(:facts) {{
+        :osfamily => osfamily,
+        :operatingsystem => operatingsystem,
+        :operatingsystemmajrelease => operatingsystemmajrelease,
+      }}
+
+      let(:params) {{
+        :odl_bind_ip => '127.0.0.1'
+        }}
+
+      # Run shared tests applicable to all supported OSs
+      # Note that this function is defined in spec_helper
+      generic_tests(odl_bind_ip:'127.0.0.1')
     end
   end
 end