Add some helpful tests scripts for backup and make bmgr restore wait until the backup is done.
This commit is contained in:
@@ -35,16 +35,6 @@ public final class Bmgr {
|
|||||||
private String[] mArgs;
|
private String[] mArgs;
|
||||||
private int mNextArg;
|
private int mNextArg;
|
||||||
private String mCurArgData;
|
private String mCurArgData;
|
||||||
private RestoreObserver mObserver = new RestoreObserver();
|
|
||||||
|
|
||||||
class RestoreObserver extends IRestoreObserver.Stub {
|
|
||||||
public void restoreStarting(int numPackages) {
|
|
||||||
}
|
|
||||||
public void onUpdate(int nowBeingRestored) {
|
|
||||||
}
|
|
||||||
public void restoreFinished(int error) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
try {
|
try {
|
||||||
@@ -191,6 +181,25 @@ public final class Bmgr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class RestoreObserver extends IRestoreObserver.Stub {
|
||||||
|
boolean done;
|
||||||
|
public void restoreStarting(int numPackages) {
|
||||||
|
System.out.println("restoreStarting: " + numPackages + " packages");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onUpdate(int nowBeingRestored) {
|
||||||
|
System.out.println("onUpdate: " + nowBeingRestored);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void restoreFinished(int error) {
|
||||||
|
System.out.println("restoreFinished: " + error);
|
||||||
|
synchronized (this) {
|
||||||
|
done = true;
|
||||||
|
this.notify();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void doRestore() {
|
private void doRestore() {
|
||||||
int token;
|
int token;
|
||||||
try {
|
try {
|
||||||
@@ -200,6 +209,8 @@ public final class Bmgr {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RestoreObserver observer = new RestoreObserver();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
int curTransport = mBmgr.getCurrentTransport();
|
int curTransport = mBmgr.getCurrentTransport();
|
||||||
mRestore = mBmgr.beginRestoreSession(curTransport);
|
mRestore = mBmgr.beginRestoreSession(curTransport);
|
||||||
@@ -211,7 +222,7 @@ public final class Bmgr {
|
|||||||
for (RestoreSet s : sets) {
|
for (RestoreSet s : sets) {
|
||||||
if (s.token == token) {
|
if (s.token == token) {
|
||||||
System.out.println("Scheduling restore: " + s.name);
|
System.out.println("Scheduling restore: " + s.name);
|
||||||
mRestore.performRestore(token, mObserver);
|
mRestore.performRestore(token, observer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -220,6 +231,17 @@ public final class Bmgr {
|
|||||||
System.err.println(e.toString());
|
System.err.println(e.toString());
|
||||||
System.err.println(BMGR_NOT_RUNNING_ERR);
|
System.err.println(BMGR_NOT_RUNNING_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// now wait for it to be done
|
||||||
|
synchronized (observer) {
|
||||||
|
while (!observer.done) {
|
||||||
|
try {
|
||||||
|
observer.wait();
|
||||||
|
} catch (InterruptedException ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("done");
|
||||||
}
|
}
|
||||||
|
|
||||||
private String nextArg() {
|
private String nextArg() {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class BackupTestAgent extends BackupHelperAgent
|
|||||||
{
|
{
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
addHelper("data_files", new FileBackupHelper(this, BackupTestActivity.FILE_NAME));
|
addHelper("data_files", new FileBackupHelper(this, BackupTestActivity.FILE_NAME));
|
||||||
addHelper("more_data_files", new FileBackupHelper(this, "another_file.txt"));
|
addHelper("more_data_files", new FileBackupHelper(this, "another_file.txt", "3.txt"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
21
tests/backup/test_backup.sh
Executable file
21
tests/backup/test_backup.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#adb kill-server
|
||||||
|
|
||||||
|
# set the transport
|
||||||
|
adb shell bmgr transport 1
|
||||||
|
|
||||||
|
# load up the three files
|
||||||
|
adb shell "rm /data/data/com.android.backuptest/files/* ; \
|
||||||
|
mkdir /data/data/com.android.backuptest ; \
|
||||||
|
mkdir /data/data/com.android.backuptest/files ; \
|
||||||
|
echo -n first file > /data/data/com.android.backuptest/files/file.txt ; \
|
||||||
|
echo -n asdf > /data/data/com.android.backuptest/files/another_file.txt ; \
|
||||||
|
echo -n 3 > /data/data/com.android.backuptest/files/3.txt ; \
|
||||||
|
"
|
||||||
|
|
||||||
|
# say that the data has changed
|
||||||
|
adb shell bmgr backup com.android.backuptest
|
||||||
|
|
||||||
|
# run the backup
|
||||||
|
adb shell bmgr run
|
||||||
45
tests/backup/test_restore.sh
Executable file
45
tests/backup/test_restore.sh
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function check_file
|
||||||
|
{
|
||||||
|
data=$(adb shell cat /data/data/com.android.backuptest/files/$1)
|
||||||
|
if [ "$data" = "$2" ] ; then
|
||||||
|
echo "$1 has correct value [$2]"
|
||||||
|
else
|
||||||
|
echo $1 is INCORRECT
|
||||||
|
echo " value: [$data]"
|
||||||
|
echo " expected: [$2]"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# delete the old data
|
||||||
|
echo --- Previous files
|
||||||
|
adb shell "ls -l /data/data/com.android.backuptest/files"
|
||||||
|
adb shell "rm /data/data/com.android.backuptest/files/*"
|
||||||
|
echo --- Erased files
|
||||||
|
adb shell "ls -l /data/data/com.android.backuptest/files"
|
||||||
|
echo ---
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
|
||||||
|
# run the restore
|
||||||
|
adb shell bmgr restore 0
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
|
||||||
|
# check the results
|
||||||
|
check_file file.txt "first file"
|
||||||
|
check_file another_file.txt "asdf"
|
||||||
|
check_file 3.txt "3"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo
|
||||||
|
echo --- Restored files
|
||||||
|
adb shell "ls -l /data/data/com.android.backuptest/files"
|
||||||
|
echo ---
|
||||||
|
echo
|
||||||
Reference in New Issue
Block a user