55import com .codingapi .dbstream .event .DBEvent ;
66import com .codingapi .dbstream .event .DBEventPusher ;
77import com .codingapi .dbstream .query .JdbcQuery ;
8+ import com .codingapi .dbstream .scanner .DBMetaData ;
9+ import com .example .dbstream .entity .User3 ;
810import com .example .dbstream .repository .User3Repository ;
11+ import org .junit .jupiter .api .Order ;
912import org .junit .jupiter .api .Test ;
1013import org .springframework .beans .factory .annotation .Autowired ;
1114import org .springframework .boot .test .context .SpringBootTest ;
1215import org .springframework .test .annotation .Rollback ;
1316
1417import javax .transaction .Transactional ;
1518import java .util .List ;
19+ import java .util .concurrent .atomic .AtomicBoolean ;
1620
1721import static org .junit .jupiter .api .Assertions .*;
1822
@@ -30,15 +34,16 @@ class User3RepositoryTest {
3034 @ Test
3135 @ Transactional
3236 @ Rollback (value = false )
37+ @ Order (1 )
3338 void test1 () {
3439 DBStreamContext .getInstance ().cleanEventPushers ();
3540 DBStreamContext .getInstance ().addEventPusher (new DBEventPusher () {
3641 @ Override
3742 public void push (JdbcQuery jdbcQuery , List <DBEvent > events ) {
38- assertEquals (1 ,events .size ());
39- for (DBEvent event : events ){
43+ assertEquals (1 , events .size ());
44+ for (DBEvent event : events ) {
4045 assertTrue (event .hasPrimaryKeys ());
41- assertEquals ("default" ,event .getData ().get ("ID" ));
46+ assertEquals ("default" , event .getData ().get ("ID" ));
4247 }
4348 }
4449 });
@@ -47,4 +52,74 @@ public void push(JdbcQuery jdbcQuery, List<DBEvent> events) {
4752 }
4853
4954
55+ /**
56+ * 测试指定表的 metadata更新
57+ */
58+ @ Test
59+ @ Transactional
60+ @ Rollback (value = false )
61+ @ Order (2 )
62+ void test2 () {
63+ List <String > jdbcKeys = DBStreamContext .getInstance ().loadDbKeys ();
64+ assertEquals (1 , jdbcKeys .size ());
65+ for (String jdbcKey : jdbcKeys ) {
66+ DBMetaData dbMetaData = DBStreamContext .getInstance ().getMetaData (jdbcKey );
67+ assertNotNull (dbMetaData );
68+ dbMetaData .addUpdateSubscribe ("m_user_3" );
69+ }
70+ DBStreamContext .getInstance ().cleanEventPushers ();
71+
72+ DBStreamContext .getInstance ().addEventPusher (new DBEventPusher () {
73+ @ Override
74+ public void push (JdbcQuery jdbcQuery , List <DBEvent > events ) {
75+ assertEquals (1 , events .size ());
76+ for (DBEvent event : events ) {
77+ assertTrue (event .hasPrimaryKeys ());
78+ assertTrue (event .isInsert ());
79+ }
80+ }
81+ });
82+
83+ User3 user = new User3 ();
84+ user .setEmail ("admin@example.com" );
85+ user .setUsername ("admin" );
86+ user .setPassword ("123" );
87+ user .setNickname ("admin" );
88+ userRepository .save (user );
89+
90+ }
91+
92+
93+ /**
94+ * 测试清空 metadata
95+ */
96+ @ Test
97+ @ Transactional
98+ @ Rollback (value = false )
99+ @ Order (3 )
100+ void test3 () {
101+ DBStreamContext .getInstance ().clearAll ();
102+ DBStreamContext .getInstance ().cleanEventPushers ();
103+
104+ AtomicBoolean running = new AtomicBoolean (false );
105+
106+ DBStreamContext .getInstance ().addEventPusher (new DBEventPusher () {
107+ @ Override
108+ public void push (JdbcQuery jdbcQuery , List <DBEvent > events ) {
109+ running .set (true );
110+ }
111+ });
112+
113+ User3 user = new User3 ();
114+ user .setEmail ("admin@example.com" );
115+ user .setUsername ("admin" );
116+ user .setPassword ("123" );
117+ user .setNickname ("admin" );
118+ userRepository .save (user );
119+
120+ assertFalse (running .get ());
121+ }
122+
123+
124+
50125}
0 commit comments