This is an automated email from the ASF dual-hosted git repository.
CritasWang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb-extras.git
The following commit(s) were added to refs/heads/master by this push:
new 8b8df03 test: keep real ThingsBoard verification isolated (#127)
8b8df03 is described below
commit 8b8df0353a4f03fbd4136234a8c06377c6ad6242
Author: ZIHAN DAI <[email protected]>
AuthorDate: Tue Aug 25 18:32:56 2026 +1000
test: keep real ThingsBoard verification isolated (#127)
---
.../VERIFYING-AGAINST-THINGSBOARD.md | 29 +++++++++++++++-------
.../table/AttributesDaoConflictGuardTest.java | 7 ++++++
2 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/iotdb-thingsboard-table/VERIFYING-AGAINST-THINGSBOARD.md
b/iotdb-thingsboard-table/VERIFYING-AGAINST-THINGSBOARD.md
index 850e496..9410a35 100644
--- a/iotdb-thingsboard-table/VERIFYING-AGAINST-THINGSBOARD.md
+++ b/iotdb-thingsboard-table/VERIFYING-AGAINST-THINGSBOARD.md
@@ -131,7 +131,7 @@ A green build proves nothing on its own: if the
compile-only sources are still o
the source path, everything compiles exactly as before. Check the compiler
line.
```
-with the compile-only surface: Compiling 58 source files
+with the compile-only surface: Compiling 59 source files
with the real artifacts: Compiling 19 source files
```
@@ -142,26 +142,37 @@ tells you nothing about the real types.
`mvn -P with-thingsboard -pl iotdb-thingsboard-table dependency:list | grep
thingsboard`
should also list the real artifacts at `provided` scope.
-## Result on 2026-08-10, against ThingsBoard 4.3.1.2
+## Result on 2026-08-25, against ThingsBoard 4.3.1.2
```
-Compiling 19 source files (58 with the compile-only surface)
-Tests run: 190, Failures: 0, Errors: 0 unit
-Tests run: 57, Failures: 0, Errors: 0 container ITs, real IoTDB
+Compiling 19 source files (59 with the compile-only surface)
+Tests run: 204, Failures: 0, Errors: 0 unit
+Tests run: 58, Failures: 0, Errors: 0 container ITs, real IoTDB
BUILD SUCCESS
```
Integration tests by suite: `IoTDBTableLatestDaoIT` 19,
-`IoTDBTableTimeseriesAggregationIT` 13, `IoTDBTableAttributesDaoIT` 12,
+`IoTDBTableTimeseriesAggregationIT` 14, `IoTDBTableAttributesDaoIT` 12,
`IoTDBTableTimeseriesDaoIT` 10, `IoTDBTableTtlIT` 2,
`IoTDBTableIngestionBenchmarkIT` 1.
+The context-test fixture marks its test-only `JpaAttributeDao` bean lazy. With
+the genuine ThingsBoard class in place, eagerly constructing that bean would
+also require ThingsBoard's host-provided `jpaExecutorService`, which this
+isolated module test intentionally does not bootstrap. The tests exercise bean
+definition selection and removal; the lazy marker prevents an unrelated host
+dependency from changing that scope and does not affect production code. Those
+context assertions therefore do not prove that the host DAO itself can be
+constructed in this isolated runner; host-application compatibility requires a
+separate live ThingsBoard deployment.
+
No drift: every type in the compile-only surface matched, and all three
`implements` clauses bound against the real interfaces.
-This has not been run inside a live ThingsBoard instance. It establishes that
the
-types bind and that the DAO behaves correctly against a real IoTDB while using
-them; it does not establish that ThingsBoard as a whole runs on this DAO.
+This verification procedure does not launch a live ThingsBoard instance. It
+establishes that the types bind and that the DAO behaves correctly against a
+real IoTDB while using them; it does not establish that ThingsBoard as a whole
+runs on this DAO.
## When ThingsBoard publishes its artifacts
diff --git
a/iotdb-thingsboard-table/src/test/java/org/apache/iotdb/extras/thingsboard/table/AttributesDaoConflictGuardTest.java
b/iotdb-thingsboard-table/src/test/java/org/apache/iotdb/extras/thingsboard/table/AttributesDaoConflictGuardTest.java
index e802774..8bd6ae3 100644
---
a/iotdb-thingsboard-table/src/test/java/org/apache/iotdb/extras/thingsboard/table/AttributesDaoConflictGuardTest.java
+++
b/iotdb-thingsboard-table/src/test/java/org/apache/iotdb/extras/thingsboard/table/AttributesDaoConflictGuardTest.java
@@ -31,6 +31,7 @@ import
org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
import org.springframework.core.Ordered;
import org.springframework.core.PriorityOrdered;
import org.thingsboard.server.dao.attributes.AttributesDao;
@@ -228,10 +229,16 @@ class AttributesDaoConflictGuardTest {
* method would resolve only to {@code AttributesDao} and the guard would
classify it as
* unrecognised and refuse to start -- correctly, since at that point
nothing distinguishes it
* from a third-party backend.
+ *
+ * <p>The fixture is lazy because these tests exercise bean-definition
selection, not the host DAO
+ * itself. Constructing the genuine ThingsBoard class would otherwise
require host-only
+ * collaborators such as {@code jpaExecutorService}, which this isolated
module context does not
+ * bootstrap.
*/
@Configuration(proxyBeanMethods = false)
static class HostAttributesDaoConfiguration {
@Bean(name = HOST_DAO_BEAN)
+ @Lazy
JpaAttributeDao jpaAttributeDao() {
return new JpaAttributeDao();
}