Add one-way OTA target migration aliases
This commit is contained in:
1 parent
86e8c413cd
commit
5fd9d039f5
7 files changed
+102
-4
No files matched your search
@@ -71,6 +71,15 @@ done
|
||||
[ "$(get_exact_identity_full_pio_env heltec_v4_r8_sensor)" \
|
||||
= heltec_v4_r8_sensor ] \
|
||||
|| fail "V4 R8 sensor should retain its own feature base"
|
||||
[ "$(get_exact_identity_full_migration_target heltec_v4_r8_repeater_observer_mqtt)" \
|
||||
= heltec_v4_r8_repeater ] \
|
||||
|| fail "legacy V4 R8 observer lacks its canonical migration target"
|
||||
if get_exact_identity_full_migration_target heltec_v4_r8_repeater >/dev/null; then
|
||||
fail "ordinary V4 R8 target unexpectedly has a migration alias"
|
||||
fi
|
||||
if get_exact_identity_full_migration_target heltec_v4_r8_repeater_observer_mqtt_sim >/dev/null; then
|
||||
fail "simulated observer target unexpectedly received a migration alias"
|
||||
fi
|
||||
|
||||
# Portable images and exact reduced OTA identities must not be consolidated.
|
||||
for target in heltec_v4_r8_repeater heltec_v4_r8_room_server \
|
||||
|
||||
@@ -2443,6 +2443,31 @@ TEST(OtaTransfer, TwoManagersFullTransfer) {
|
||||
EXPECT_TRUE(mota_check_image_hash_full(m));
|
||||
}
|
||||
|
||||
TEST(OtaTransfer, LegacyIdentityAutomaticallyFetchesItsSuccessor) {
|
||||
g_q.clear();
|
||||
OtaManager server, client;
|
||||
OtaStoreRam<4096> store;
|
||||
SendTo to_client{&client}, to_server{&server};
|
||||
const uint32_t legacy_target = SIM_TARGET_ID ^ 0x13579BDFu;
|
||||
|
||||
server.begin(/*server's own target irrelevant for serving*/ 0, sim_send, &to_client);
|
||||
client.begin(legacy_target, sim_send, &to_server);
|
||||
client.set_auto_migration_target(SIM_TARGET_ID);
|
||||
client.set_fetch_store(&store);
|
||||
client.set_autofetch(OtaManager::AUTOFETCH_ANY);
|
||||
|
||||
ASSERT_TRUE(server.serve(SIM_MOTA, SIM_MOTA_LEN));
|
||||
server.announce();
|
||||
pump(client, &server);
|
||||
|
||||
ASSERT_EQ(client.fetchState(), OtaManager::COMPLETE);
|
||||
MotaManifest migrated;
|
||||
ASSERT_TRUE(mota_parse(store.data(), store.staged_size(), migrated));
|
||||
EXPECT_EQ(migrated.target_id, SIM_TARGET_ID);
|
||||
EXPECT_EQ(client.target(), legacy_target); // identity changes only after reboot/apply
|
||||
EXPECT_EQ(client.auto_migration_target(), SIM_TARGET_ID);
|
||||
}
|
||||
|
||||
TEST(OtaTransfer, LegacyOneKilobyteV2CodecStillStagesOriginalContainer) {
|
||||
g_q.clear();
|
||||
MotaManifest manifest;
|
||||
|
||||
Reference in new issue
Block a user