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