12 KiB
Final report — merge lts-viewer-validation-testing-phase into qt6-migration-basis-modules-merge
Status: VALIDATED (builds 100% green in all 3 Docker runs; runs 1–2 ctest fully green; run 3 ctest 558/585 with the 6 non-passing tests all classified as base-state first-run results, documented below with evidence). Not pushed.
Merge commit
- Hash:
9c1ac7cbef95efbe2bdc68d1b9c067a30493846d(9c1ac7cbe) - Branch:
feature/qt6-migration-basis-modules-merge-viewer-validation - Parents:
36f077bce(ours,feature/qt6-migration-basis-modules-merge) +c664611b8(theirs,feature/lts-viewer-validation-testing-phase) - Author = committer:
berrux_dev <berrux.kana@axilinx.com>, single author, no attribution lines - Signed:
Good "git" signature(SSH ED25519,SHA256:5vtoTt8IqQ8+OcyNHbg8w4aGQD8H0IvoGM3PYgD9RYU), created via explicitgit commit -S(repo hascommit.gpgsign=false) - 30 files, +375/−246; working tree clean after commit
Per-conflicted-file resolution
| File | Method | Reason |
|---|---|---|
qt6-after/qt6-migrated-legatus/new_docker_build.sh |
union (prompt merge recipe) | theirs added viewer-only/codification/prebuilt-image/--cmake_build_flags options; ours had the GROUP1–5 target sets — union keeps both, single Group-4 build call |
No other conflicts (all remaining files auto-merged).
new_docker_build.sh merge evidence
- Ours-side target set intact:
GROUP3_TARGETS(application + service targets) preserved;GROUP4_TARGETScontains the DDS tests (ddsGenericDataTests,ddsDataTopicTests,ddsFunctionTopicTests) plus all Proxies (BSM/VWM incl.BuildingControlTestBsm/TestVwm/TestVwmXml, TrainingAreaBase, TrainingAreaBaseOC incl.serialtest, WLSsvcWirelessLocationSystem+wlsJsonClientTest, CMO/CNR) with explanatory comments for excluded targets (BuildingControlJson/Qt6WebSockets, UAS-only targets) - Theirs-side features present:
--build-viewer-only(skips Groups 1–4, implies--group5 --codification),--codification,--group1..5/--no-*, KDReports-qt6 support, prebuilt image namelegatus-qt6-prebuilt:latest(6 occurrences: default + 4 usage examples +DOCKER_IMAGEfallback) - Post-resolution checks: usage text lists all options incl.
--cmake_build_flags FLAGS; single Group-4 invocation (run_build_group "Group 4 (DDS tests + Proxies)" ...);--cmake_build_flagsimplemented end-to-end (parse →CMAKE_BUILD_FLAGS→ env → docker-e→ cmake${CMAKE_BUILD_FLAGS:-}) and exercised successfully in run 3
Deletion-guard sweep
Files deleted on ours side since merge base: none present at merge HEAD (no restorations). Files deleted on theirs side since merge base: none present at merge HEAD. Deleted on both sides: 0. (Merge adds zero files vs ours: git diff --diff-filter=A HEAD^1 HEAD empty.)
Legacy comparison audit (qt5-before/qt5-legatus-legacy)
28 of 30 files have a legacy counterpart; new_docker_build.sh and cmake/FindKDReports.cmake are pipeline-new (no counterpart). Hunk counts (legacy → merged, incl. prior migration already in both branch histories):
| hunks | file | hunks | file |
|---|---|---|---|
| 9 | CMakeLists.txt (root) |
2 | BSM/bsm_telegrams_base.cpp |
| 3 | LtsSession/CMakeLists.txt |
3 | BSM/bsm_telegrams_direct_fire.cpp |
| 2 | LtsSession/lts_session.cpp |
3 | WLS/ism_handler.cpp |
| 2 | LtsSession/lts_session_data_dds.cpp |
12 | WLS/web_socket_handler.cpp |
| 1 | LtsSession/lts_session_data_dds.h |
16 | WLS/wls_handler.cpp |
| 1 | DdsUnitTests/function_topic_tests.h |
15 | WLS/wls_participant.cpp |
| 2 | BSM/CMakeLists.txt |
3 | WLS/wls_participant_handler.cpp |
| 3 | BSM/bsm_api.cpp |
1 | Viewer/CMakeLists.txt |
| 6 | BSM/bsm_socket.cpp |
3 | LtsDataView/CMakeLists.txt |
| 15 | BSM/bsm_socket_handler.cpp |
2 | LtsDataView/test.cpp |
| 2 | LtsFileDialog/CMakeLists.txt |
7 | LtsFileDialog/lts_dialog_model_file.cpp |
| 2 | LtsFileDialog/lts_file_dialog.cpp |
12 | LtsFileDialog/lts_dialog_model_folder.cpp |
| 8 | LtsFileDialog/lts_file_dialog_widget.cpp |
2 | LtsFileDialog/lts_file_dialog_widget.h |
| 2 | LtsFileDialog/test.cpp |
23 | cmake/NGLMacros.cmake |
Categories: the overwhelming majority of hunks are the mechanical Qt5→Qt6 / rtiddsgen migration (include rewrites, QString conversions, enum/optional/sequence APIs, RTI target naming) already established in the branch histories. Semantic-change hunks — all in the folded-in fixes, each justified:
FileManagement::Interface::DataModification→ globalDataModification(generated code removed the qualifier; invalid qualifier is a hard error)setDeleted(true)/ accessor calls on generated types → plain member access (data.isDeleted = true,data.id,fl.name…) — generated RTI IDL types are plain structs (established pattern, cf. commented legacy code inism_tests.cpp)Folder::mainFolder()/FileManagement::toInt→static_cast<int>(path[0])(legacy API gone; generatedFoldercarries the main folder inpath[0])- Dtc bulk-iteration overload removed → per-item
std::function<bool(const T&)>with explicit type (disambiguates void/bool overloads) andreturn false(bool overload = iterateUntil: true would stop iteration) - Qt6 removed implicit conversions →
QString::fromStdString,QVariantfrom integral types,arg(static_cast<int>(enum)) omg::types::optional<T>has no comparison operators →!opt.has_value() || opt.value() != xLtsSession::PartitionTypedeleted →IDL::PartitionType(matchesDdsConnector::getPartitionType()return type); deadtoIdlPartitionType/toPartitionTypeconverters removedlts_session.cppinclude guardBUILD_FILTERMANAGEMENT→BUILD_RTI(dynamic_pointer_castneeds the complete type only in the RTI path);ddscore+RTI::nddscoreadded to LtsSession link (no barenddscorealias exists; generatedCore::PartitionTimetype support lives inlibddscore.so)- Missing includes surfaced by first builds:
<NGLLogger/NGLLoggerBootstrap.h>(WLS×5, BSM×5),<TrainingAreaBase/logger.h>(BSM),NGL::INGLLogger& m_loggermember (function_topic_tests.h, compile-only)
Files changed beyond the conflicted set
23 files beyond the 7 theirs-side merge files (CMakeLists.txt root, Viewer/CMakeLists.txt, LtsDataView/{CMakeLists.txt,test.cpp}, FindKDReports.cmake, NGLMacros.cmake, new_docker_build.sh) — all folded-in fixes per the user's "Fix, fold into merge commit" decision, grouped: LtsSession (4), DdsUnitTests (1), BSM (6), WLS (5), LtsFileDialog sources (7). Each blocked a validation run with a hard compile/link error (pre-existing defects, not merge regressions).
CTest registration union
- Run 1: 584 tests. Run 2 (viewer-only): 34 (subset). Run 3: 585 = run 1's 584 +
wls_json_client_test(registered only with-DBUILD_WLS=ON, run 3 only). No loss of registrations; theirs-side additions all present. LtsDataViewTest: registered with the auto-exit property (CIQTimer1000 ms, offscreen,TIMEOUT 30); Passed in run 2 (1.04 s) and run 3 (1.13 s) — the theirs-side validation pattern works.LtsFileDialogTest: registered (same auto-exit pattern); built and executed in run 3, timed out at DDS init (see remaining items).
Docker and Jenkins CI
- Docker:
new_docker_build.shnow supports prebuilt-image build/use/delete +--cmake_build_flags; KDReports-qt6 2.3.95 only available in the prebuilt image → runs 2/3 used--use-prebuilt-image --docker-image legatus-qt6-prebuilt:latest(run 1 used the baseubuntu:26.04image with in-container Qt install, no KDReports — documented deviation). - Jenkins:
jenkins/Jenkinsfileunchanged by this merge (CI RPM build pipeline). Recorded pre-existing signature blocker: since merge baseed9fc51e7, branch scan shows 20 signed / 33 unsigned ancestor commits (e.g.36f077bce,b6a97c39e,fd3e5e838) — the signature gate would fail on pre-existing history. The new merge commit itself verifies Good (%G?= G).
Qt5 references
No active Qt5 references. All 11 matches in the 30 changed files are benign: comments in root CMakeLists.txt (incl. a stale "fallback to Qt5" comment — no find_package(Qt5...) exists anywhere; the code searches Qt6 only, and "Qt5Compat" is a Qt6 module), the qt5compat aqtinstall package name (= Qt6 Qt5Compat module) in new_docker_build.sh, and "Qt6 only – no Qt5 fallback" in FindKDReports.cmake.
Confirmations
- Removed modules not restored: merge adds no files vs ours side (deletion sweep +
--diff-filter=Aboth empty) - LogViewer preserved: 31 files under
Lts/Tools/LogViewer/at HEAD, untouched by the merge docker_build.shstayed deleted: absent from the tree (onlynew_docker_build.shexists)
Exact validation commands and results
All runs: BUILD_RTI=ON BUILD_GRANTLEE=ON, repo qt6-after/qt6-migrated-legatus, container build dir build4 (incremental).
- Run 1 —
./new_docker_build.sh(default groups 1–3, base image): build 100% green; ctest 584 tests: 554 passed, 30 Not Run (expected duplicate/registration class), 0 Failed/Timeout. Grantlee active (CppTopicGeneratorGrantleeTestpassed). KDReports not found in base image → ReportViewer GUI plugin skip (expected; deviation documented). - Run 2 —
./new_docker_build.sh --build-viewer-only --use-prebuilt-image --docker-image legatus-qt6-prebuilt:latest: build 100% green; ctest 34 tests: 1 passed (LtsDataViewTest, 1.04 s), 33 Not Run by viewer-only design, 0 Failed/Timeout.LtsFileDialogTestNot Run (executable not in the Group-5 build list at that point — added by the folded-in fix; run 3 built and ran it). - Run 3 —
./new_docker_build.sh --group4 --group5 --codification --use-prebuilt-image --docker-image legatus-qt6-prebuilt:latest --cmake_build_flags "-DUSE_IPO=ON -DUSE_UNITY_BUILD=ON -DGUEZ_MODE=ON -DBUILD_WLS=ON -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/": build 100% green (14 attempts, each fixing one layer: WLS → LtsSessionDataDds compile → ddscore link → lts_session.cpp → RTI::nddscore link → LtsFileDialog module ×3); ctest 585 tests: 558 passed (95.4%), 21 Not Run (expected class), 3 Failed + 3 Timeout (the 6 items below).
Their-side validation evidence in run 3: LtsDataViewTest Passed 1.13 s, wls_json_client_test Passed 0.18 s, ddsGenericDataTests/ddsDataTopicTests Passed, all ZProxiesIntegration Passed.
Remaining blockers / risks (all base-state, none merge regressions)
| Test | Result | Evidence |
|---|---|---|
ddsFunctionTopicTests |
Failed (32 s) | Deterministic on standalone container re-run (4 passed/2 failed; spyRequest.count() 2 vs 1, spyReply.count() 1 vs 2) — FTS/FTC signal-count defect in base state; the merge touched no FTS/FTC implementation (function_topic_tests.h change is a compile-only logger member) |
bld_bsm_test |
Timeout | waits for a BSM device on localhost:10001 (app.exec() in bsm_test_main.cpp) — no hardware in container |
taboc_serialtest |
Timeout | waits for serial hardware — not present in container |
bld_vwm_test, bld_vwm_xml_test |
Failed | require manual-test data bldg_7_building_config.xml, which is not in the repo or build tree (manual .sh test scripts) |
LtsFileDialogTest |
Timeout | interactive GUI that blocks on DDS init before app.exec(), so the 1 s CI auto-exit QTimer never fires in the headless container |
All six: add_test registrations exist at HEAD, and git diff HEAD MERGE_HEAD shows the theirs-side branch changed none of these registrations — they were Not Run in run 1 (executables never built in this pipeline before), so these are first-run results on base-state code.
Other documented pre-existing items:
Lts/Common/LtsSession/lts_session_data_dds.{h,cpp}stub branch (#else // !BUILD_RTI) still uses the oldPartitionTypespellings — never compiled underBUILD_RTI=ON(left as-is; would need the sameIDL::PartitionTypemigration ifBUILD_RTI=OFFis ever validated)Lts/Plugins/ReportManagement/Gui/ReportViewerplugin skipped in all runs: KDChart (and legacy-name KDReports) not available in the container image (LtsReportDisplay itself built fine against KDReports-qt6)- Duplicate
_gtestadd_testregistrations (e.g.ddsFunctionTopicTests_gtest) point at non-existent executables → Not Run; pre-existing CMake duplication - The 33 unsigned ancestor commits (signature gate blocker, see above)