Integrate TaskDumpRecorder into scripts for enhanced error tracking and proper handling of nested scopes.
This commit is contained in:
parent
afe83e17c2
commit
52d261a060
@ -9,6 +9,7 @@
|
||||
#include "dao/MaterialDAO.h"
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "net/NetworkService.h"
|
||||
|
||||
namespace Black {
|
||||
@ -35,6 +36,9 @@ void GetCardInfoScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("black", "FETCH_CARDS", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
// Читаем текущий экран
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#include "dao/MaterialDAO.h"
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "net/NetworkService.h"
|
||||
|
||||
namespace Black {
|
||||
@ -34,6 +35,9 @@ void GetProfileInfoScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("black", "FETCH_PROFILE_INFO", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
// Читаем текущий экран
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
#include "adb/AdbUtils.h"
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "AppLogger.h"
|
||||
#include "GetProfileInfoScript.h"
|
||||
|
||||
@ -35,6 +36,9 @@ void LoginAndCheckAccountsScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("black", "FETCH_PROFILE", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
if (!runAppAndGoToHomeScreen(m_deviceId, app.package, app.pinCode, device.screenWidth, device.screenHeight)) {
|
||||
|
||||
@ -289,10 +289,18 @@ void TaskDumpRecorder::finishInternal(const QString &errorMessage) {
|
||||
TaskDumpRecorder::Scope::Scope(const QString &bank, const QString &taskKind,
|
||||
const QString &adbDeviceId, const TaskDumpMeta &meta,
|
||||
const QString *errorPtr)
|
||||
: m_errorPtr(errorPtr) {
|
||||
: m_errorPtr(errorPtr), m_owned(false) {
|
||||
// Вложенные скоупы не перетирают рекордер родителя — иначе внутренний
|
||||
// скрипт прервал бы запись внешней задачи и сгенерировал ложный дамп
|
||||
// с пометкой "interrupted".
|
||||
if (TaskDumpRecorder::current() == nullptr) {
|
||||
TaskDumpRecorder::begin(bank, taskKind, adbDeviceId, meta);
|
||||
m_owned = true;
|
||||
}
|
||||
}
|
||||
|
||||
TaskDumpRecorder::Scope::~Scope() {
|
||||
if (m_owned) {
|
||||
TaskDumpRecorder::finish(m_errorPtr ? *m_errorPtr : QString());
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,6 +29,9 @@ public:
|
||||
|
||||
// RAII-скоуп: при создании регистрирует рекордер на текущий поток,
|
||||
// при разрушении — финализирует (успех/ошибка определяются по errorPtr).
|
||||
// Если в текущем потоке уже есть активный рекордер (вложенный вызов из
|
||||
// другого скрипта), новый скоуп становится no-op — родитель остаётся
|
||||
// владельцем дампа, а внутренние скрины пишутся в его папку.
|
||||
class Scope {
|
||||
public:
|
||||
Scope(const QString &bank, const QString &taskKind,
|
||||
@ -39,6 +42,7 @@ public:
|
||||
Scope &operator=(const Scope &) = delete;
|
||||
private:
|
||||
const QString *m_errorPtr;
|
||||
bool m_owned;
|
||||
};
|
||||
|
||||
// Сохраняет XML-дамп в папку задачи. Имя файла: NNNN_<screenTag>.xml.
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#include "dao/MaterialDAO.h"
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "net/NetworkService.h"
|
||||
|
||||
namespace Dushanbe {
|
||||
@ -34,6 +35,9 @@ void GetCardInfoScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("dushanbe", "FETCH_CARDS", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
if (!xmlScreenParser.isHomeScreen()) {
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
#include "dao/MaterialDAO.h"
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "net/NetworkService.h"
|
||||
|
||||
namespace Dushanbe {
|
||||
@ -35,6 +36,9 @@ void GetProfileInfoScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("dushanbe", "FETCH_PROFILE_INFO", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
if (!xmlScreenParser.isHomeScreen()) {
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
#include "adb/AdbUtils.h"
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "AppLogger.h"
|
||||
#include "GetProfileInfoScript.h"
|
||||
|
||||
@ -40,6 +41,9 @@ void LoginAndCheckAccountsScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("dushanbe", "FETCH_PROFILE", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
if (!runAppAndGoToHomeScreen(m_deviceId, app.package, app.pinCode, device.screenWidth, device.screenHeight)) {
|
||||
|
||||
@ -11,6 +11,7 @@
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dao/SettingsDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "net/NetworkService.h"
|
||||
#include "AppLogger.h"
|
||||
|
||||
@ -40,6 +41,9 @@ void GetCardInfoScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("ozon", "FETCH_CARDS", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
// Читаем текущий экран
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
@ -526,7 +530,7 @@ void GetCardInfoScript::doStart() {
|
||||
QJsonObject materialBody;
|
||||
materialBody["bank_profile_id"] = updatedApp.bankProfileId;
|
||||
materialBody["card_number"] = dbCard.cardNumber;
|
||||
materialBody["account_number"] = dbCard.accountNumber;
|
||||
// materialBody["account_number"] = dbCard.accountNumber;
|
||||
materialBody["name"] = updatedApp.fullName;
|
||||
materialBody["state"] = materialStatusToString(dbCard.status) == "active" ? "enabled" : "disabled";
|
||||
materialBody["currency"] = currencyCodes.value(dbCard.currency.toUpper(), 643);
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
#include "dao/MaterialDAO.h"
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "net/NetworkService.h"
|
||||
#include "AppLogger.h"
|
||||
|
||||
@ -36,6 +37,9 @@ void GetProfileInfoScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("ozon", "FETCH_PROFILE_INFO", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
// Читаем текущий экран
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#include "dao/MaterialDAO.h"
|
||||
#include "dao/BankProfileDAO.h"
|
||||
#include "dao/DeviceDAO.h"
|
||||
#include "dump/TaskDumpRecorder.h"
|
||||
#include "AppLogger.h"
|
||||
#include "GetCardInfoScript.h"
|
||||
|
||||
@ -39,6 +40,9 @@ void LoginAndCheckAccountsScript::doStart() {
|
||||
return;
|
||||
}
|
||||
|
||||
const TaskDumpMeta dumpMeta{};
|
||||
TaskDumpRecorder::Scope dumpScope("ozon", "FETCH_PROFILE", m_deviceId, dumpMeta, &m_error);
|
||||
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter));
|
||||
|
||||
if (!runAppAndGoToHomeScreen(m_deviceId, app.package, app.pinCode, device.screenWidth, device.screenHeight)) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user