Consolidate all markdown documentation into organized structure per CONSOLIDATION_DIRECTIVE. All files preserved (canonical, merged, or archived). - docs/integration/ - Integration documentation (7 files) - docs/platform/ios/ - iOS platform docs (12 files) - docs/platform/android/ - Android platform docs (9 files) - docs/testing/ - Testing documentation (15 files) - docs/design/ - Design & research (5 files) - docs/ai/ - AI/ChatGPT artifacts (7 files) - docs/archive/2025-legacy-doc/ - Historical docs (17 files) - Integration: Root INTEGRATION_GUIDE.md → docs/integration/ - Platform: Separated iOS and Android into platform/ subdirectories - Testing: Consolidated all testing docs to docs/testing/ - Legacy: Archived entire doc/ directory to archive/ - AI: Moved all ChatGPT artifacts to docs/ai/ - Added docs/00-INDEX.md - Central navigation hub - Added docs/CONSOLIDATION_SOURCE_MAP.md - Complete audit trail - Added docs/CONSOLIDATION_COMPLETE.md - Consolidation summary - Updated README.md with links to documentation index - All 139 files have destinations (see CONSOLIDATION_SOURCE_MAP.md) - Zero information loss (all files preserved) - Archive preserves original structure - Index provides clear navigation - 87 files moved/created/updated - Root-level docs consolidated - Legacy doc/ directory archived - Test app docs remain with test apps (indexed) Ref: CONSOLIDATION_DIRECTIVE Author: Matthew Raymer
217 lines
6.0 KiB
Markdown
217 lines
6.0 KiB
Markdown
# Reboot Testing Steps for DailyNotification Plugin
|
|
|
|
## 🎯 **Objective**
|
|
Test that scheduled notifications survive device reboots and are properly restored by the BootReceiver.
|
|
|
|
## ⏰ **Extended Testing Time**
|
|
- **Notification Delay**: 5 minutes (instead of 1 minute)
|
|
- **More Realistic**: Allows time for proper testing and verification
|
|
- **Better for Reboot Testing**: Gives time to reboot and verify recovery
|
|
|
|
## 🔄 **Complete Reboot Testing Procedure**
|
|
|
|
### **Step 1: Schedule Notification**
|
|
```bash
|
|
# Launch app
|
|
adb shell am start -n com.timesafari.dailynotification/.MainActivity
|
|
```
|
|
- Tap **"Test Notification"** button
|
|
- Verify message: **"Notification scheduled for [time]! Check your notification bar in 5 minutes."**
|
|
- **Note the scheduled time** (5 minutes from now)
|
|
|
|
### **Step 2: Verify Initial Scheduling**
|
|
```bash
|
|
# Check scheduled alarms
|
|
adb shell "dumpsys alarm | grep timesafari"
|
|
```
|
|
- Should show scheduled alarm with correct timestamp
|
|
- Note the alarm details
|
|
|
|
### **Step 3: Reboot Device**
|
|
```bash
|
|
# Reboot device
|
|
adb reboot
|
|
```
|
|
- **Wait 2-3 minutes** for device to fully boot
|
|
- Wait for boot animation to complete
|
|
- Wait for home screen to appear
|
|
|
|
### **Step 4: Verify Boot Recovery**
|
|
```bash
|
|
# Check recovery logs
|
|
adb logcat -d | grep -i "bootreceiver\|recovery"
|
|
```
|
|
**Look for these log messages:**
|
|
- `"Device boot completed - restoring notifications"`
|
|
- `"Found X notifications to recover"`
|
|
- `"Notification recovery completed: X/X recovered"`
|
|
|
|
### **Step 5: Verify Alarm Restoration**
|
|
```bash
|
|
# Check if alarm was restored
|
|
adb shell "dumpsys alarm | grep timesafari"
|
|
```
|
|
- Should show the same scheduled alarm as before reboot
|
|
- Alarm timestamp should match original schedule
|
|
|
|
### **Step 6: Wait for Notification**
|
|
- **Wait for the originally scheduled time** (5 minutes from when you scheduled it)
|
|
- **Check notification panel** for the test notification
|
|
- **Verify notification appears** with correct content
|
|
|
|
## 🧪 **Automated Reboot Test**
|
|
|
|
### **Run the Reboot Test Script:**
|
|
```bash
|
|
# Run automated reboot test
|
|
./scripts/reboot-test.sh
|
|
```
|
|
|
|
**What the script does:**
|
|
1. ✅ Checks boot receiver registration
|
|
2. 📅 Prompts you to schedule notification
|
|
3. 🔍 Verifies initial scheduling
|
|
4. 🔄 Reboots device automatically
|
|
5. ⏳ Waits for boot completion
|
|
6. 🔍 Checks recovery logs
|
|
7. ⏰ Verifies alarm restoration
|
|
8. 🎉 Reports success/failure
|
|
|
|
## 🔍 **Key Log Messages to Look For**
|
|
|
|
### **Successful Recovery:**
|
|
```
|
|
BootReceiver: Device boot completed - restoring notifications
|
|
BootReceiver: Found X notifications to recover
|
|
BootReceiver: Recovered notification: [notification-id]
|
|
BootReceiver: Notification recovery completed: X/X recovered
|
|
```
|
|
|
|
### **Recovery Issues:**
|
|
```
|
|
BootReceiver: No notifications to recover
|
|
BootReceiver: Failed to recover notification: [notification-id]
|
|
BootReceiver: Error during boot recovery
|
|
```
|
|
|
|
## 🚨 **Troubleshooting Reboot Recovery**
|
|
|
|
### **Issue 1: Boot Receiver Not Triggered**
|
|
**Symptoms**: No recovery logs after reboot
|
|
**Solutions**:
|
|
```bash
|
|
# Check boot receiver registration
|
|
adb shell "dumpsys package com.timesafari.dailynotification | grep -A10 -B10 receiver"
|
|
|
|
# Check BOOT_COMPLETED permission
|
|
adb shell "dumpsys package com.timesafari.dailynotification | grep permission"
|
|
```
|
|
|
|
### **Issue 2: Recovery Fails**
|
|
**Symptoms**: Recovery logs show errors
|
|
**Solutions**:
|
|
```bash
|
|
# Check notification storage
|
|
adb shell "run-as com.timesafari.dailynotification ls -la /data/data/com.timesafari.dailynotification/shared_prefs/"
|
|
|
|
# Check alarm permissions
|
|
adb shell "dumpsys alarm | grep SCHEDULE_EXACT_ALARM"
|
|
```
|
|
|
|
### **Issue 3: Alarms Not Restored**
|
|
**Symptoms**: No alarms after recovery
|
|
**Solutions**:
|
|
```bash
|
|
# Check exact alarm permissions
|
|
adb shell "dumpsys alarm | grep SCHEDULE_EXACT_ALARM"
|
|
|
|
# Check battery optimization
|
|
adb shell "dumpsys deviceidle | grep timesafari"
|
|
```
|
|
|
|
## 📊 **Success Criteria**
|
|
|
|
### ✅ **Test Passes When:**
|
|
- Boot receiver is triggered after reboot
|
|
- Recovery logs show successful restoration
|
|
- Alarms are rescheduled correctly
|
|
- Notification appears at the originally scheduled time
|
|
- All recovery log messages are present
|
|
|
|
### ❌ **Test Fails When:**
|
|
- Boot receiver is not triggered
|
|
- Recovery fails with errors
|
|
- Alarms are not restored
|
|
- Notification doesn't appear
|
|
- Recovery logs show failures
|
|
|
|
## 🎯 **Quick Test Commands**
|
|
|
|
### **One-Line Reboot Test:**
|
|
```bash
|
|
# Schedule notification, reboot, and verify
|
|
adb shell am start -n com.timesafari.dailynotification/.MainActivity && echo "Schedule notification, then:" && read -p "Press Enter to reboot..." && adb reboot && sleep 120 && adb logcat -d | grep -i "bootreceiver\|recovery"
|
|
```
|
|
|
|
### **Check Recovery Status:**
|
|
```bash
|
|
# Quick recovery check
|
|
adb logcat -d | grep -i "bootreceiver" | tail -10
|
|
```
|
|
|
|
### **Verify Alarms:**
|
|
```bash
|
|
# Quick alarm check
|
|
adb shell "dumpsys alarm | grep timesafari"
|
|
```
|
|
|
|
## 🔧 **Advanced Testing**
|
|
|
|
### **Test Multiple Reboots:**
|
|
```bash
|
|
# Test multiple reboot cycles
|
|
for i in {1..3}; do
|
|
echo "Reboot test $i/3"
|
|
./scripts/reboot-test.sh
|
|
sleep 60
|
|
done
|
|
```
|
|
|
|
### **Test with Different Notification Types:**
|
|
- Test with sound enabled/disabled
|
|
- Test with different priorities
|
|
- Test with different content
|
|
- Test with multiple notifications
|
|
|
|
### **Test Edge Cases:**
|
|
- Test with low battery
|
|
- Test with airplane mode
|
|
- Test with timezone changes
|
|
- Test with system updates
|
|
|
|
## 📱 **Production Considerations**
|
|
|
|
### **Real-World Scenarios:**
|
|
- Users rarely force-stop apps
|
|
- Device reboots are common (updates, crashes, etc.)
|
|
- App updates should preserve notifications
|
|
- Battery optimization can affect recovery
|
|
|
|
### **Best Practices:**
|
|
- Test on multiple Android versions
|
|
- Test on different OEMs
|
|
- Test with various battery optimization settings
|
|
- Test under different network conditions
|
|
|
|
## 🎉 **Expected Results**
|
|
|
|
After implementing the reboot recovery system:
|
|
|
|
1. **Notifications survive reboots** ✅
|
|
2. **Boot receiver activates automatically** ✅
|
|
3. **Recovery logs show success** ✅
|
|
4. **Alarms are properly restored** ✅
|
|
5. **Notifications appear at scheduled times** ✅
|
|
|
|
**The system is now robust and production-ready!** 🚀
|