diff --git a/tests/pillar/queens/keystoneauth/_type_password.sls b/tests/pillar/queens/keystoneauth/_type_password.sls
new file mode 100644
index 0000000..d7bad0a
--- /dev/null
+++ b/tests/pillar/queens/keystoneauth/_type_password.sls
@@ -0,0 +1,25 @@
+_data:
+  host: localhost
+  port: 5000
+  default_domain_id: id
+  default_domain_name: name
+  domain_id: id
+  domain_name: name
+  password: password
+  project_domain_name: name
+  project_id: id
+  project_name: name
+  tenant_id: id
+  tenant_name: name
+  user_domain_name: name
+  user_id: id
+  user: user
+  version: v1
+  cache:
+    servers:
+      srv1:
+        port: 12345
+        enabled: true
+      srv2:
+        port: 12345
+        enabled: true
diff --git a/tests/pillar/queens/oslo/_cache.sls b/tests/pillar/queens/oslo/_cache.sls
new file mode 100644
index 0000000..3f2a44d
--- /dev/null
+++ b/tests/pillar/queens/oslo/_cache.sls
@@ -0,0 +1,8 @@
+_data:
+  servers:
+    srv1:
+      port: 12345
+      enabled: true
+    srv2:
+      port: 12345
+      enabled: true
diff --git a/tests/pillar/queens/oslo/_concurrency.sls b/tests/pillar/queens/oslo/_concurrency.sls
new file mode 100644
index 0000000..fe67aa2
--- /dev/null
+++ b/tests/pillar/queens/oslo/_concurrency.sls
@@ -0,0 +1,2 @@
+_data:
+  disable_process_locking: true
diff --git a/tests/pillar/queens/oslo/_cors.sls b/tests/pillar/queens/oslo/_cors.sls
new file mode 100644
index 0000000..71a3e26
--- /dev/null
+++ b/tests/pillar/queens/oslo/_cors.sls
@@ -0,0 +1,9 @@
+_data:
+  allowed_origin: origin
+  allow_credentials: abcde
+  expose_headers:
+   - h1
+   - h2
+  max_age: 12
+  allow_methods: all_methods
+  allow_headers: allow_headers
diff --git a/tests/pillar/queens/oslo/_database-ssl.sls b/tests/pillar/queens/oslo/_database-ssl.sls
new file mode 100644
index 0000000..2677990
--- /dev/null
+++ b/tests/pillar/queens/oslo/_database-ssl.sls
@@ -0,0 +1,9 @@
+_data:
+  engine: mysql
+  user: foo
+  password: bar
+  host: localhost
+  name: mydatabase
+  ssl:
+    enabled: true
+    cacert_file: //path/to/cacert.file
diff --git a/tests/pillar/queens/oslo/_database.sls b/tests/pillar/queens/oslo/_database.sls
new file mode 100644
index 0000000..865485e
--- /dev/null
+++ b/tests/pillar/queens/oslo/_database.sls
@@ -0,0 +1,6 @@
+_data:
+  engine: mysql
+  user: foo
+  password: bar
+  host: localhost
+  name: mydatabase
diff --git a/tests/pillar/queens/oslo/_healthcheck.sls b/tests/pillar/queens/oslo/_healthcheck.sls
new file mode 100644
index 0000000..10122af
--- /dev/null
+++ b/tests/pillar/queens/oslo/_healthcheck.sls
@@ -0,0 +1,2 @@
+_data:
+  path: /path/to
diff --git a/tests/pillar/queens/oslo/_log.sls b/tests/pillar/queens/oslo/_log.sls
new file mode 100644
index 0000000..ae30847
--- /dev/null
+++ b/tests/pillar/queens/oslo/_log.sls
@@ -0,0 +1,5 @@
+_data:
+  debug: false
+  log_file: /path/to/file
+  use_syslog: true
+  syslog_log_facility: INFO
diff --git a/tests/pillar/queens/oslo/_middleware.sls b/tests/pillar/queens/oslo/_middleware.sls
new file mode 100644
index 0000000..ed08e6d
--- /dev/null
+++ b/tests/pillar/queens/oslo/_middleware.sls
@@ -0,0 +1,3 @@
+_data:
+  max_request_body_size: 123
+  enable_proxy_headers_parsing: true
diff --git a/tests/pillar/queens/oslo/_osprofiler.sls b/tests/pillar/queens/oslo/_osprofiler.sls
new file mode 100644
index 0000000..4d19604
--- /dev/null
+++ b/tests/pillar/queens/oslo/_osprofiler.sls
@@ -0,0 +1,2 @@
+_data:
+  enabled: true
diff --git a/tests/pillar/queens/oslo/_policy.sls b/tests/pillar/queens/oslo/_policy.sls
new file mode 100644
index 0000000..693dc81
--- /dev/null
+++ b/tests/pillar/queens/oslo/_policy.sls
@@ -0,0 +1,2 @@
+_data:
+  policy_file: policy.json
diff --git a/tests/pillar/queens/oslo/messaging/_amqp.sls b/tests/pillar/queens/oslo/messaging/_amqp.sls
new file mode 100644
index 0000000..67d1dad
--- /dev/null
+++ b/tests/pillar/queens/oslo/messaging/_amqp.sls
@@ -0,0 +1,2 @@
+_data:
+  default_notification_exchange: abcde
diff --git a/tests/pillar/queens/oslo/messaging/_default.sls b/tests/pillar/queens/oslo/messaging/_default.sls
new file mode 100644
index 0000000..78db5b3
--- /dev/null
+++ b/tests/pillar/queens/oslo/messaging/_default.sls
@@ -0,0 +1,8 @@
+_data:
+  user: user
+  password: password
+  virtual_host: /
+  members:
+    - host: srv1
+      port: 5671
+    - host: srv2
diff --git a/tests/pillar/queens/oslo/messaging/_notifications.sls b/tests/pillar/queens/oslo/messaging/_notifications.sls
new file mode 100644
index 0000000..8955ccf
--- /dev/null
+++ b/tests/pillar/queens/oslo/messaging/_notifications.sls
@@ -0,0 +1,3 @@
+_data:
+  driver: messagingv2
+  topics: topics
diff --git a/tests/pillar/queens/oslo/messaging/_rabbit-ssl.sls b/tests/pillar/queens/oslo/messaging/_rabbit-ssl.sls
new file mode 100644
index 0000000..0695e42
--- /dev/null
+++ b/tests/pillar/queens/oslo/messaging/_rabbit-ssl.sls
@@ -0,0 +1,4 @@
+_data:
+  ssl:
+    enabled: true
+    cacert_file: /path/to/ca
diff --git a/tests/pillar/queens/oslo/messaging/_rabbit.sls b/tests/pillar/queens/oslo/messaging/_rabbit.sls
new file mode 100644
index 0000000..02d586e
--- /dev/null
+++ b/tests/pillar/queens/oslo/messaging/_rabbit.sls
@@ -0,0 +1,3 @@
+_data:
+  heartbeat_timeout_threshold: 1
+  heartbeat_rate: 3
diff --git a/tests/pillar/template_single.sls b/tests/pillar/template_single.sls
deleted file mode 100644
index 2c1deb3..0000000
--- a/tests/pillar/template_single.sls
+++ /dev/null
@@ -1,3 +0,0 @@
-oslo_templates:
-  template:
-    enabled: true
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index a348912..96cb9ad 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -1,35 +1,25 @@
 #!/usr/bin/env bash
 
-###
-# Script requirments:
-#apt-get install -y python-yaml virtualenv git
-
 set -e
 [ -n "$DEBUG" ] && set -x
 
 CURDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 METADATA=${CURDIR}/../metadata.yml
 FORMULA_NAME=$(cat $METADATA | python -c "import sys,yaml; print yaml.load(sys.stdin)['name']")
-FORMULA_META_DIR=${CURDIR}/../${FORMULA_NAME}/meta
 
 ## Overrideable parameters
 PILLARDIR=${PILLARDIR:-${CURDIR}/pillar}
 BUILDDIR=${BUILDDIR:-${CURDIR}/build}
 VENV_DIR=${VENV_DIR:-${BUILDDIR}/virtualenv}
-MOCK_BIN_DIR=${MOCK_BIN_DIR:-${CURDIR}/mock_bin}
 DEPSDIR=${BUILDDIR}/deps
-SCHEMARDIR=${SCHEMARDIR:-"${CURDIR}/../${FORMULA_NAME}/schemas/"}
 
 SALT_FILE_DIR=${SALT_FILE_DIR:-${BUILDDIR}/file_root}
 SALT_PILLAR_DIR=${SALT_PILLAR_DIR:-${BUILDDIR}/pillar_root}
 SALT_CONFIG_DIR=${SALT_CONFIG_DIR:-${BUILDDIR}/salt}
 SALT_CACHE_DIR=${SALT_CACHE_DIR:-${SALT_CONFIG_DIR}/cache}
-SALT_CACHE_EXTMODS_DIR=${SALT_CACHE_EXTMODS_DIR:-${SALT_CONFIG_DIR}/cache_master_extmods}
 
 SALT_OPTS="${SALT_OPTS} --retcode-passthrough --local -c ${SALT_CONFIG_DIR} --log-file=/dev/null"
 
-IGNORE_MODELVALIDATE_MASK=${IGNORE_MODELVALIDATE_MASK:-"novalidate"}
-
 if [ "x${SALT_VERSION}" != "x" ]; then
     PIP_SALT_VERSION="==${SALT_VERSION}"
 fi
@@ -45,31 +35,48 @@
 
 setup_virtualenv() {
     log_info "Setting up Python virtualenv"
-    dependency_check virtualenv
     virtualenv $VENV_DIR
     source ${VENV_DIR}/bin/activate
     python -m pip install salt${PIP_SALT_VERSION}
-    if [[ -f ${CURDIR}/test-requirements.txt ]]; then
-       python -m pip install -r ${CURDIR}/test-requirements.txt
-    fi
 }
 
-setup_mock_bin() {
-    # If some state requires a binary, a lightweight replacement for
-    # such binary can be put into MOCK_BIN_DIR for test purposes
-    if [ -d "${MOCK_BIN_DIR}" ]; then
-        PATH="${MOCK_BIN_DIR}:$PATH"
-        export PATH
-    fi
+setup_test_state() {
+  local template_path=$1
+  local state_name=$2
+
+  [ ! -d ${BUILDDIR}/tstates/ ] && mkdir ${BUILDDIR}/tstates/
+  [ ! -d ${BUILDDIR}/rfiles/ ] && mkdir ${BUILDDIR}/rfiles/
+
+  cat << EOF > ${BUILDDIR}/tstates/${state_name}.sls
+
+test_${state_name}_rendering:
+  file.managed:
+    - name: ${BUILDDIR}/rfiles/${state_name}.conf
+    - template: jinja
+    - source: ${template_path}
+    - context:
+      _data: {{ pillar.get("_data", {}) }}
+EOF
 }
 
 setup_pillar() {
     [ ! -d ${SALT_PILLAR_DIR} ] && mkdir -p ${SALT_PILLAR_DIR}
     echo "base:" > ${SALT_PILLAR_DIR}/top.sls
-    for pillar in ${PILLARDIR}/*; do
-        grep ${FORMULA_NAME}: ${pillar} &>/dev/null || continue
-        state_name=$(basename ${pillar%.sls})
-        echo -e "  ${state_name}:\n    - ${state_name}" >> ${SALT_PILLAR_DIR}/top.sls
+    local sdir
+    local state_name
+    local template_name
+    local pillar_name
+
+    pushd ${PILLARDIR}/
+    for spath in $(find ./ -type f -name '*.sls'); do
+        pillar_name=$(basename $spath | sed -e 's/.sls$//')
+        sdir=$(dirname $spath | sed -e 's/^.\///g')
+        template_name=$(echo $pillar_name | cut -d '-' -f 1)
+        state_name=$(echo ${sdir}_${pillar_name} | sed -e 's/\//_/g')
+        if ! echo $pillar_name |grep '-'; then
+          setup_test_state "salt://oslo_templates/files/$sdir/$template_name.conf" "$state_name"
+        fi
+        echo -e "  ${state_name}:\n    - ${sdir}/${pillar_name}" >> ${SALT_PILLAR_DIR}/top.sls
     done
 }
 
@@ -77,7 +84,6 @@
     [ ! -d ${SALT_FILE_DIR} ] && mkdir -p ${SALT_FILE_DIR}
     [ ! -d ${SALT_CONFIG_DIR} ] && mkdir -p ${SALT_CONFIG_DIR}
     [ ! -d ${SALT_CACHE_DIR} ] && mkdir -p ${SALT_CACHE_DIR}
-    [ ! -d ${SALT_CACHE_EXTMODS_DIR} ] && mkdir -p ${SALT_CACHE_EXTMODS_DIR}
 
     echo "base:" > ${SALT_FILE_DIR}/top.sls
     for pillar in ${PILLARDIR}/*.sls; do
@@ -89,7 +95,6 @@
     cat << EOF > ${SALT_CONFIG_DIR}/minion
 file_client: local
 cachedir: ${SALT_CACHE_DIR}
-extension_modules:  ${SALT_CACHE_EXTMODS_DIR}
 verify_env: False
 minion_id_caching: False
 
@@ -97,6 +102,8 @@
   base:
   - ${SALT_FILE_DIR}
   - ${CURDIR}/..
+  - ${BUILDDIR}/tstates/
+  - /usr/share/salt-formulas/env
 
 pillar_roots:
   base:
@@ -106,14 +113,13 @@
 }
 
 fetch_dependency() {
-    # example: fetch_dependency "linux:https://github.com/salt-formulas/salt-formula-linux"
     dep_name="$(echo $1|cut -d : -f 1)"
     dep_source="$(echo $1|cut -d : -f 2-)"
     dep_root="${DEPSDIR}/$(basename $dep_source .git)"
     dep_metadata="${dep_root}/metadata.yml"
 
-    dependency_check git
-    [ -d $dep_root ] && { log_info "Dependency $dep_name already fetched"; return 0; }
+    [ -d /usr/share/salt-formulas/env/${dep_name} ] && log_info "Dependency $dep_name already present in system-wide salt env" && return 0
+    [ -d $dep_root ] && log_info "Dependency $dep_name already fetched" && return 0
 
     log_info "Fetching dependency $dep_name"
     [ ! -d ${DEPSDIR} ] && mkdir -p ${DEPSDIR}
@@ -123,19 +129,6 @@
     METADATA="${dep_metadata}" install_dependencies
 }
 
-link_modules(){
-    # Link modules *.py files to temporary salt-root
-    local SALT_ROOT=${1:-$SALT_FILE_DIR}
-    local SALT_ENV=${2:-$DEPSDIR}
-
-    mkdir -p "${SALT_ROOT}/_modules/"
-    # from git, development versions
-    find ${SALT_ENV} -maxdepth 3 -mindepth 3 -path '*_modules*' -iname "*.py" -type f -print0 | while read -d $'\0' file; do
-      ln -fs $(readlink -e ${file}) "$SALT_ROOT"/_modules/$(basename ${file}) ;
-    done
-    salt_run saltutil.sync_all
-}
-
 install_dependencies() {
     grep -E "^dependencies:" ${METADATA} >/dev/null || return 0
     (python - | while read dep; do fetch_dependency "$dep"; done) << EOF
@@ -152,96 +145,36 @@
 
 salt_run() {
     [ -e ${VENV_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
-    python $(which salt-call) ${SALT_OPTS} $*
+    local cmd=''
+    cmd="python $(which salt-call) ${SALT_OPTS} $*"
+    log_info "$cmd"
+    $cmd
 }
 
 prepare() {
-    if [[ -f ${BUILDDIR}/.prepare_done ]]; then
-      log_info "${BUILDDIR}/.prepare_done exist, not rebuilding BUILDDIR"
-      return
-    fi
-    [[ -d ${BUILDDIR} ]] && mkdir -p ${BUILDDIR}
+    [ -d ${BUILDDIR} ] && mkdir -p ${BUILDDIR}
 
-    [[ ! -f "${VENV_DIR}/bin/activate" ]] && setup_virtualenv
-    setup_mock_bin
+    which salt-call || setup_virtualenv
     setup_pillar
     setup_salt
     install_dependencies
-    link_modules
-    touch ${BUILDDIR}/.prepare_done
-}
-
-lint_releasenotes() {
-    [[ ! -f "${VENV_DIR}/bin/activate" ]] && setup_virtualenv
-    source ${VENV_DIR}/bin/activate
-    reno lint ${CURDIR}/../
-}
-
-lint() {
-#    lint_releasenotes
-    log_err "TODO: lint_releasenotes"
 }
 
 run() {
-    for pillar in ${PILLARDIR}/*.sls; do
-        grep ${FORMULA_NAME}: ${pillar} &>/dev/null || continue
-        state_name=$(basename ${pillar%.sls})
-        salt_run grains.set 'noservices' False force=True
-
-        echo "Checking state ${FORMULA_NAME}.${state_name} ..."
-        salt_run --id=${state_name} state.show_sls ${FORMULA_NAME} || (log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1)
-
-        # Check that all files in 'meta' folder can be rendered using any valid pillar
-        for meta in `find ${FORMULA_META_DIR} -type f`; do
-            meta_name=$(basename ${meta})
-            echo "Checking meta ${meta_name} ..."
-            salt_run --out=quiet --id=${state_name} cp.get_template ${meta} ${SALT_CACHE_DIR}/${meta_name} \
-              || { log_err "Failed to render meta ${meta} using pillar ${FORMULA_NAME}.${state_name}"; exit 1; }
-            cat ${SALT_CACHE_DIR}/${meta_name}
-        done
+    pushd ${PILLARDIR}/
+    local sdir
+    local sname
+    local state_name
+    local pillar_name
+    for spath in $(find ./ -type f -name '*.sls'); do
+        sname=$(basename $spath | basename $spath | sed -e 's/.sls$//')
+        sdir=$(dirname $spath | sed -e 's/^.\///')
+        state_name=$(echo ${sdir}_${sname} | sed -e 's/\//_/g' | cut -d '-' -f 1)
+        pillar_name=$(echo ${sdir}_${sname} | sed -e 's/\//_/g')
+        salt_run --id=${pillar_name} state.show_sls ${state_name} || (log_err "Show state ${state_name} with pillar ${pillar_name} failed"; exit 1)
+        salt_run --id=${pillar_name} state.sls ${state_name} || (log_err "Execution of ${state_name} with_pillar ${pillar_name} failed"; exit 1)
     done
-}
-
-real_run() {
-    for pillar in ${PILLARDIR}/*.sls; do
-        state_name=$(basename ${pillar%.sls})
-        salt_run --id=${state_name} state.sls ${FORMULA_NAME} || { log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1; }
-    done
-}
-
-run_model_validate(){
-  # Run modelschema.model_validate validation.
-  # TEST iterateble, run for `each formula ROLE against each ROLE_PILLARNAME`
-  # Pillars should be named in conviend ROLE_XXX.sls or ROLE.sls
-  # Example:
-  # client.sls  client_auth.sls  server.sls  server_auth.sls
-  if [ -d ${SCHEMARDIR} ]; then
-    # model validator require py modules
-    fetch_dependency "salt:https://github.com/salt-formulas/salt-formula-salt"
-    link_modules
-    salt_run saltutil.clear_cache; salt_run saltutil.refresh_pillar; salt_run saltutil.sync_all;
-    for role in ${SCHEMARDIR}/*.yaml; do
-      role_name=$(basename "${role%*.yaml}")
-      for pillar in $(ls pillar/${role_name}*.sls | grep -v ${IGNORE_MODELVALIDATE_MASK} ); do
-        pillar_name=$(basename "${pillar%*.sls}")
-        local _message="FORMULA:${FORMULA_NAME} ROLE:${role_name} against PILLAR:${pillar_name}"
-        log_info "model_validate ${_message}"
-        # Rendered Example:
-        # python $(which salt-call) --local -c /test1/maas/tests/build/salt --id=maas_cluster modelschema.model_validate maas cluster
-        salt_run -m ${DEPSDIR}/salt-formula-salt --id=${pillar_name} modelschema.model_validate ${FORMULA_NAME} ${role_name} || { log_err "Execution of model_validate ${_message} failed"; exit 1 ; }
-      done
-    done
-  else
-    log_info "${SCHEMARDIR} not found!";
-  fi
-}
-
-dependency_check() {
-  local DEPENDENCY_COMMANDS=$*
-
-  for DEPENDENCY_COMMAND in $DEPENDENCY_COMMANDS; do
-    which $DEPENDENCY_COMMAND > /dev/null || ( log_err "Command \"$DEPENDENCY_COMMAND\" can not be found in default path."; exit 1; )
-  done
+    popd
 }
 
 _atexit() {
@@ -257,32 +190,22 @@
 }
 
 ## Main
-trap _atexit INT TERM EXIT
+[[ "$0" != "$BASH_SOURCE"  ]] || {
+  trap _atexit INT TERM EXIT
 
-case $1 in
-    clean)
-        clean
-        ;;
-    prepare)
-        prepare
-        ;;
-    lint)
-        lint
-        ;;
-    run)
-        run
-        ;;
-    real-run)
-        real_run
-        ;;
-    model-validate)
-       prepare
-       run_model_validate
-        ;;
-    *)
-        prepare
-#        lint
-        run
-        run_model_validate
-        ;;
-esac
+  case $1 in
+      clean)
+          clean
+          ;;
+      prepare)
+          prepare
+          ;;
+      run)
+          run
+          ;;
+      *)
+          prepare
+          run
+          ;;
+  esac
+}
