| #!/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 |
| |