112 lines
3.2 KiB
Bash
112 lines
3.2 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Copyright (C) 2009 The Android Open Source Project
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
# you may not use this file except in compliance with the License.
|
||
|
# You may obtain a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
# See the License for the specific language governing permissions and
|
||
|
# limitations under the License.
|
||
|
|
||
|
# uncomment for debugging
|
||
|
#export DRY_RUN="echo"
|
||
|
source test_backup_common.sh
|
||
|
|
||
|
[ -z "$BUGREPORT_DIR" ] && BUGREPORT_DIR="$HOME/backup/bugreports"
|
||
|
|
||
|
function check_file
|
||
|
{
|
||
|
data=$(a shell cat /data/data/com.android.backuptest/$1)
|
||
|
if [ "$data" = "$2" ] ; then
|
||
|
echo "$1 has correct value [$2]"
|
||
|
return 0
|
||
|
else
|
||
|
echo $1 is INCORRECT
|
||
|
echo " value: [$data]"
|
||
|
echo " expected: [$2]"
|
||
|
return 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
function check_exists
|
||
|
{
|
||
|
# return 0 if file exists, 1 otherwise
|
||
|
data=$(a shell "ls $@ 2> /dev/null >/dev/null && echo -n exists")
|
||
|
if [ "$data" = "exists" ]; then
|
||
|
return 0
|
||
|
else
|
||
|
return 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# Make sure adb is root so we can poke at com.android.backuptest's data
|
||
|
adb_root
|
||
|
|
||
|
# delete the old data
|
||
|
echo --- Previous files
|
||
|
a shell "ls -l /data/data/com.android.backuptest/files"
|
||
|
a shell "rm /data/data/com.android.backuptest/files/*"
|
||
|
echo --- Previous shared_prefs
|
||
|
a shell "ls -l /data/data/com.android.backuptest/shared_prefs"
|
||
|
a shell "rm /data/data/com.android.backuptest/shared_prefs/*"
|
||
|
echo --- Erased files and shared_prefs
|
||
|
a shell "ls -l /data/data/com.android.backuptest/files"
|
||
|
a shell "ls -l /data/data/com.android.backuptest/shared_prefs"
|
||
|
echo ---
|
||
|
|
||
|
echo
|
||
|
echo
|
||
|
|
||
|
# FIXME: there's probably a smarter way to do this
|
||
|
# FIXME: if we can get the android ID, that's probably the safest thing to do
|
||
|
# pick the most recent set and restore from it
|
||
|
restore_set=$(a shell bmgr list sets | head -n1 | awk '{print $1}')
|
||
|
|
||
|
# run the restore
|
||
|
echo "Restoring from set [$restore_set]"
|
||
|
a shell bmgr restore "$restore_set"
|
||
|
|
||
|
echo
|
||
|
echo
|
||
|
|
||
|
# check the results
|
||
|
export need_bug=0
|
||
|
|
||
|
# make sure files have the expected contents
|
||
|
check_file files/file.txt "first file" || need_bug=1
|
||
|
check_file files/another_file.txt "asdf" || need_bug=1
|
||
|
#check_file files/3.txt "3" || need_bug=1
|
||
|
check_file files/empty.txt "" || need_bug=1
|
||
|
check_file shared_prefs/raw.xml '<map><int name="pref" value="1" /></map>' || need_bug=1
|
||
|
|
||
|
# make sure that missing files weren't somehow created
|
||
|
check_exists files/file_doesnt_exist.txt && need_bug=1
|
||
|
check_exists files/no_files_here.txt && need_bug=1
|
||
|
|
||
|
if [ \( "$need_bug" -ne 0 \) -a -d "$BUGREPORT_DIR" ]; then
|
||
|
dev_id=$(a get-serialno)
|
||
|
filename="${dev_id}_`date +%s`"
|
||
|
echo "Grabbing bugreport; filename is $filename"
|
||
|
a bugreport > "$BUGREPORT_DIR/$filename.txt"
|
||
|
fi
|
||
|
|
||
|
echo
|
||
|
echo --- Restored files
|
||
|
a shell "ls -l /data/data/com.android.backuptest/files"
|
||
|
echo --- Restored shared_prefs
|
||
|
a shell "ls -l /data/data/com.android.backuptest/shared_prefs"
|
||
|
echo ---
|
||
|
echo
|
||
|
|
||
|
echo "Last 3 timestamps in 3.txt:"
|
||
|
a shell cat /data/data/com.android.backuptest/files/3.txt | tail -n 3
|
||
|
|
||
|
exit $need_bug
|
||
|
|