diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bacd7c7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+tests/build/
+*.swp
+*.pyc
+.ropeproject
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 9299a80..816a2b5 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,6 @@
 linux-formula
 =============
 
-0.0.1 (2015-08-03)
+0.1 (2015-08-03)
 
-- Initial formula setup
\ No newline at end of file
+- Initial formula setup
diff --git a/linux/system/apparmor.sls b/linux/system/apparmor.sls
index 1aa5109..f6737fe 100644
--- a/linux/system/apparmor.sls
+++ b/linux/system/apparmor.sls
@@ -16,8 +16,8 @@
 
 apparmor_service_disable:
   service.dead:
-    name: apparmor
-    enable: false
+  - name: apparmor
+  - enable: false
 
 apparmor_teardown:
   cmd.wait:
diff --git a/tests/pillar/network.sls b/tests/pillar/network.sls
new file mode 100644
index 0000000..a8dfee6
--- /dev/null
+++ b/tests/pillar/network.sls
@@ -0,0 +1,25 @@
+linux:
+  system:
+    enabled: true
+    domain: local
+  network:
+    enabled: true
+    hostname: test01
+    fqdn: test01.local
+    network_manager: false
+    interface:
+      eth0:
+        enabled: true
+        type: eth
+        address: 192.168.0.102
+        netmask: 255.255.255.0
+        gateway: 192.168.0.1
+        name_servers:
+        - 8.8.8.8
+        - 8.8.4.4
+        mtu: 1500
+      vlan69:
+        enabled: true
+        type: vlan
+        use_interfaces:
+        - interface: ${linux:interface:eth0}
diff --git a/tests/pillar/storage.sls b/tests/pillar/storage.sls
new file mode 100644
index 0000000..6c15b11
--- /dev/null
+++ b/tests/pillar/storage.sls
@@ -0,0 +1,19 @@
+linux:
+  storage:
+    enabled: true
+    swap:
+      file:
+        enabled: true
+        engine: file
+        device: /swapfile
+        size: 512
+    lvm:
+      vg0:
+        enabled: true
+        devices:
+          - /dev/vdb
+        volume:
+          lv01:
+            size: 512M
+            mount:
+              path: /srv
diff --git a/tests/pillar/system.sls b/tests/pillar/system.sls
new file mode 100644
index 0000000..2bebcba
--- /dev/null
+++ b/tests/pillar/system.sls
@@ -0,0 +1,62 @@
+linux:
+  system:
+    enabled: true
+    cluster: default
+    name: test01
+    timezone: Europe/Prague
+    domain: local
+    environment: prd
+    apparmor:
+      enabled: false
+    console:
+      tty0:
+        autologin: true
+    prompt:
+      default: "test01.local$"
+    motd:
+      - warning: |
+          #!/bin/sh
+          printf "WARNING: This is tcpcloud network.\n"
+          printf "  Unauthorized access is strictly prohibited.\n"
+          printf "\n"
+      - info: |
+          #!/bin/sh
+          printf -- "--[tcp cloud]---------------------------\n"
+          printf " Hostname  |  ${linux:system:name}\n"
+          printf " Domain    |  ${linux:system:domain}\n"
+          printf " System    |  %s\n" "$(lsb_release -s -d)"
+          printf " Kernel    |  %s\n" "$(uname -r)"
+          printf -- "----------------------------------------\n"
+          printf "\n"
+    user:
+      root:
+        enabled: true
+        home: /root
+        name: root
+      test:
+        enabled: true
+        name: test
+        sudo: true
+        uid: 9999
+        full_name: Test User
+        home: /home/test
+    group:
+      test:
+        enabled: true
+        name: test
+        gid: 9999
+        system: true
+    job:
+      test:
+        enabled: true
+        command: "/bin/sleep 3"
+        user: test
+        minute: 0
+        hour: 13
+    package:
+      htop:
+        version: latest
+    repo:
+      opencontrail:
+        source: "deb http://ppa.launchpad.net/tcpcloud/contrail-2.20/ubuntu trusty main"
+        architectures: amd64
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
new file mode 100755
index 0000000..1f1316f
--- /dev/null
+++ b/tests/run_tests.sh
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+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']")
+
+## Overrideable parameters
+PILLARDIR=${PILLARDIR:-${CURDIR}/pillar}
+BUILDDIR=${BUILDDIR:-${CURDIR}/build}
+VENV_DIR=${VENV_DIR:-${BUILDDIR}/virtualenv}
+DEPSDIR=${BUILDDIR}/deps
+
+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_OPTS="${SALT_OPTS} --retcode-passthrough --local -c ${SALT_CONFIG_DIR}"
+
+if [ "x${SALT_VERSION}" != "x" ]; then
+    PIP_SALT_VERSION="==${SALT_VERSION}"
+fi
+
+## Functions
+log_info() {
+    echo "[INFO] $*"
+}
+
+log_err() {
+    echo "[ERROR] $*" >&2
+}
+
+setup_virtualenv() {
+    log_info "Setting up Python virtualenv"
+    virtualenv $VENV_DIR
+    source ${VENV_DIR}/bin/activate
+    pip install salt${PIP_SALT_VERSION}
+}
+
+setup_pillar() {
+    [ ! -d ${SALT_PILLAR_DIR} ] && mkdir -p ${SALT_PILLAR_DIR}
+    echo "base:" > ${SALT_PILLAR_DIR}/top.sls
+    for pillar in ${PILLARDIR}/*; do
+        state_name=$(basename ${pillar%.sls})
+        echo -e "  ${state_name}:\n    - ${state_name}" >> ${SALT_PILLAR_DIR}/top.sls
+    done
+}
+
+setup_salt() {
+    [ ! -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}
+
+    echo "base:" > ${SALT_FILE_DIR}/top.sls
+    for pillar in ${PILLARDIR}/*.sls; do
+        state_name=$(basename ${pillar%.sls})
+        echo -e "  ${state_name}:\n    - ${FORMULA_NAME}" >> ${SALT_FILE_DIR}/top.sls
+    done
+
+    cat << EOF > ${SALT_CONFIG_DIR}/minion
+file_client: local
+cachedir: ${SALT_CACHE_DIR}
+verify_env: False
+
+file_roots:
+  base:
+  - ${SALT_FILE_DIR}
+  - ${CURDIR}/..
+
+pillar_roots:
+  base:
+  - ${SALT_PILLAR_DIR}
+  - ${PILLARDIR}
+EOF
+}
+
+fetch_dependency() {
+    dep_root="${DEPSDIR}/$(basename $1 .git)"
+    dep_metadata="${dep_root}/metadata.yml"
+
+    [ -d $dep_root ] && log_info "Dependency $1 already fetched" && return 0
+
+    log_info "Fetching dependency $1"
+    [ ! -d ${DEPSDIR} ] && mkdir -p ${DEPSDIR}
+    git clone $1 ${DEPSDIR}/$(basename $1 .git)
+
+    dep_name=$(cat $dep_metadata | python -c "import sys,yaml; print yaml.load(sys.stdin)['name']")
+    ln -s ${dep_root}/${dep_name} ${SALT_FILE_DIR}/${dep_name}
+
+    METADATA="${dep_metadata}" install_dependencies
+}
+
+install_dependencies() {
+    grep -E "^dependencies:" ${METADATA} >/dev/null || return 0
+    (python - | while read dep; do fetch_dependency "$dep"; done) << EOF
+import sys,yaml
+for dep in yaml.load(open('${METADATA}', 'ro'))['dependencies']:
+    print dep["source"]
+EOF
+}
+
+clean() {
+    log_info "Cleaning up ${BUILDDIR}"
+    [ -d ${BUILDDIR} ] && rm -rf ${BUILDDIR} || exit 0
+}
+
+salt_run() {
+    source ${VENV_DIR}/bin/activate
+    salt-call ${SALT_OPTS} $*
+}
+
+prepare() {
+    [ -d ${BUILDDIR} ] && mkdir -p ${BUILDDIR}
+
+    setup_virtualenv
+    setup_pillar
+    setup_salt
+    install_dependencies
+}
+
+run() {
+    for pillar in ${PILLARDIR}/*.sls; do
+        state_name=$(basename ${pillar%.sls})
+        salt_run --id=${state_name} state.show_sls ${FORMULA_NAME} || (log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1)
+    done
+}
+
+_atexit() {
+    RETVAL=$?
+    trap true INT TERM EXIT
+
+    if [ $RETVAL -ne 0 ]; then
+        log_err "Execution failed"
+    else
+        log_info "Execution successful"
+    fi
+    return $RETVAL
+}
+
+## Main
+trap _atexit INT TERM EXIT
+
+case $1 in
+    clean)
+        clean
+        ;;
+    prepare)
+        prepare
+        ;;
+    run)
+        run
+        ;;
+    *)
+        prepare
+        run
+        ;;
+esac
