diff --git a/tools/xen/test_functions.sh b/tools/xen/test_functions.sh
index 6817ec3..62393ca 100755
--- a/tools/xen/test_functions.sh
+++ b/tools/xen/test_functions.sh
@@ -23,15 +23,27 @@
 
     LIST_OF_ACTIONS=$(mktemp)
     truncate -s 0 $LIST_OF_ACTIONS
+
+    XE_RESPONSE=$(mktemp)
+    truncate -s 0 $XE_RESPONSE
+
+    XE_CALLS=$(mktemp)
+    truncate -s 0 $XE_CALLS
 }
 
 # Teardown
 function after_each_test {
     rm -f $LIST_OF_DIRECTORIES
     rm -f $LIST_OF_ACTIONS
+    rm -f $XE_RESPONSE
+    rm -f $XE_CALLS
 }
 
 # Helpers
+function setup_xe_response {
+    echo "$1" > $XE_RESPONSE
+}
+
 function given_directory_exists {
     echo "$1" >> $LIST_OF_DIRECTORIES
 }
@@ -44,6 +56,30 @@
     [ "$?" != "0" ] || exit 1
 }
 
+function assert_xe_min {
+    grep -qe "^--minimal\$" $XE_CALLS
+}
+
+function assert_xe_param {
+    grep -qe "^$1\$" $XE_CALLS
+}
+
+function mock_out {
+    local FNNAME="$1"
+    local OUTPUT="$2"
+
+    . <(cat << EOF
+function $FNNAME {
+    echo "$OUTPUT"
+}
+EOF
+)
+}
+
+function assert_symlink {
+    grep -qe "^ln -s $2 $1\$" $LIST_OF_ACTIONS
+}
+
 # Tests
 function test_plugin_directory_on_xenserver {
     given_directory_exists "/etc/xapi.d/plugins/"
@@ -80,9 +116,26 @@
 }
 
 function test_create_directory_for_kernels {
-    (. mocks && create_directory_for_kernels)
+    (
+        . mocks
+        mock_out get_local_sr uuid1
+        create_directory_for_kernels
+    )
 
-    assert_directory_exists "/boot/guest"
+    assert_directory_exists "/var/run/sr-mount/uuid1/os-guest-kernels"
+    assert_symlink "/boot/guest" "/var/run/sr-mount/uuid1/os-guest-kernels"
+}
+
+function test_create_directory_for_kernels_existing_dir {
+    (
+        . mocks
+        given_directory_exists "/boot/guest"
+        create_directory_for_kernels
+    )
+
+    diff -u $LIST_OF_ACTIONS - << EOF
+[ -d /boot/guest ]
+EOF
 }
 
 function test_extract_remote_zipball {
@@ -107,6 +160,23 @@
     rm -rf $tmpdir
 }
 
+function test_get_local_sr {
+    setup_xe_response "uuid123"
+
+    local RESULT=$(. mocks && get_local_sr)
+
+    [ "$RESULT" == "uuid123" ]
+
+    assert_xe_min
+    assert_xe_param "sr-list" "name-label=Local storage"
+}
+
+function test_get_local_sr_path {
+    local RESULT=$(mock_out get_local_sr "uuid1" && get_local_sr_path)
+
+    [ "/var/run/sr-mount/uuid1" == "$RESULT" ]
+}
+
 # Test runner
 [ "$1" = "" ] && {
     grep -e "^function *test_" $0 | cut -d" " -f2
