@@ -143,10 +143,10 @@ public void testSyncAll() throws RemotingConnectException, RemotingSendRequestEx
143143 when (brokerOuterAPI .getAllMessageRequestMode (anyString ())).thenReturn (createMessageRequestModeWrapper ());
144144 when (brokerOuterAPI .getTimerMetrics (anyString ())).thenReturn (createTimerMetricsWrapper ());
145145
146- TopicConfigManager topicConfigManager = new TopicConfigManager ();
146+ TopicConfigManager topicConfigManager = new TopicConfigManager (brokerController );
147147 TopicConfigManager spiedTopicConfigManager = spy (topicConfigManager );
148148 doNothing ().when (spiedTopicConfigManager ).persist ();
149- SubscriptionGroupManager groupConfigManager = new SubscriptionGroupManager ();
149+ SubscriptionGroupManager groupConfigManager = new SubscriptionGroupManager (brokerController );
150150 SubscriptionGroupManager spiedGroupConfigManager = spy (groupConfigManager );
151151 doNothing ().when (spiedGroupConfigManager ).persist ();
152152 when (brokerController .getTopicConfigManager ()).thenReturn (spiedTopicConfigManager );
@@ -174,6 +174,70 @@ public void testSyncTimerCheckPoint() throws RemotingConnectException, RemotingS
174174 Assert .assertEquals (0 , timerCheckpoint .getDataVersion ().getStateVersion ());
175175 }
176176
177+ @ Test
178+ public void testSyncAllIncludesTopicConfig () throws RemotingConnectException , RemotingSendRequestException , RemotingTimeoutException ,
179+ MQBrokerException , InterruptedException , RemotingCommandException , UnsupportedEncodingException {
180+ TopicConfig newTopicConfig = new TopicConfig ("TestTopic" );
181+ TopicConfigAndMappingSerializeWrapper topicWrapper = createTopicConfigWrapper (newTopicConfig );
182+
183+ when (brokerOuterAPI .getAllTopicConfig (anyString ())).thenReturn (topicWrapper );
184+ when (brokerOuterAPI .getAllConsumerOffset (anyString ())).thenReturn (createConsumerOffsetWrapper ());
185+ when (brokerOuterAPI .getAllDelayOffset (anyString ())).thenReturn ("" );
186+ when (brokerOuterAPI .getAllSubscriptionGroupConfig (anyString ())).thenReturn (createSubscriptionGroupWrapper ());
187+ when (brokerOuterAPI .getAllMessageRequestMode (anyString ())).thenReturn (createMessageRequestModeWrapper ());
188+ when (brokerOuterAPI .getTimerMetrics (anyString ())).thenReturn (createTimerMetricsWrapper ());
189+
190+ TopicConfigManager topicConfigManager = new TopicConfigManager (brokerController );
191+ TopicConfigManager spiedTopicConfigManager = spy (topicConfigManager );
192+ doNothing ().when (spiedTopicConfigManager ).persist ();
193+ when (brokerController .getTopicConfigManager ()).thenReturn (spiedTopicConfigManager );
194+ SubscriptionGroupManager groupConfigManager = new SubscriptionGroupManager (brokerController );
195+ SubscriptionGroupManager spiedGroupConfigManager = spy (groupConfigManager );
196+ doNothing ().when (spiedGroupConfigManager ).persist ();
197+ when (brokerController .getSubscriptionGroupManager ()).thenReturn (spiedGroupConfigManager );
198+
199+ TopicConfigManager topicConfigManager1 = brokerController .getTopicConfigManager ();
200+ DataVersion dataVersion = topicConfigManager1 .getDataVersion ();
201+ Assert .assertEquals (0 , dataVersion .getStateVersion ());
202+ slaveSynchronize .syncAll ();
203+
204+ Assert .assertEquals (5 , brokerController .getTopicConfigManager ().getDataVersion ().getStateVersion ());
205+ Assert .assertTrue (brokerController .getTopicConfigManager ().getTopicConfigTable ().containsKey ("TestTopic" ));
206+ }
207+
208+ @ Test
209+ public void testSyncTopicConfigWithTopicDeletion () throws RemotingConnectException , RemotingSendRequestException , RemotingTimeoutException ,
210+ MQBrokerException , InterruptedException , RemotingCommandException , UnsupportedEncodingException {
211+ TopicConfig localTopic = new TopicConfig ("LocalTopic" );
212+ ConcurrentHashMap <String , TopicConfig > localTable = new ConcurrentHashMap <>();
213+ localTable .put ("LocalTopic" , localTopic );
214+
215+ TopicConfigManager topicConfigManager = new TopicConfigManager (brokerController );
216+ TopicConfigManager spiedTopicConfigManager = spy (topicConfigManager );
217+ spiedTopicConfigManager .setTopicConfigTable (localTable );
218+ doNothing ().when (spiedTopicConfigManager ).persist ();
219+ when (brokerController .getTopicConfigManager ()).thenReturn (spiedTopicConfigManager );
220+ SubscriptionGroupManager groupConfigManager = new SubscriptionGroupManager (brokerController );
221+ SubscriptionGroupManager spiedGroupConfigManager = spy (groupConfigManager );
222+ doNothing ().when (spiedGroupConfigManager ).persist ();
223+ when (brokerController .getSubscriptionGroupManager ()).thenReturn (spiedGroupConfigManager );
224+ when (brokerOuterAPI .getAllConsumerOffset (anyString ())).thenReturn (createConsumerOffsetWrapper ());
225+ when (brokerOuterAPI .getAllDelayOffset (anyString ())).thenReturn ("" );
226+ when (brokerOuterAPI .getAllSubscriptionGroupConfig (anyString ())).thenReturn (createSubscriptionGroupWrapper ());
227+ when (brokerOuterAPI .getAllMessageRequestMode (anyString ())).thenReturn (createMessageRequestModeWrapper ());
228+ when (brokerOuterAPI .getTimerMetrics (anyString ())).thenReturn (createTimerMetricsWrapper ());
229+
230+ TopicConfig newTopicConfig = new TopicConfig ("NewTopic" );
231+ TopicConfigAndMappingSerializeWrapper topicWrapper = createTopicConfigWrapper (newTopicConfig );
232+
233+ when (brokerOuterAPI .getAllTopicConfig (anyString ())).thenReturn (topicWrapper );
234+
235+ slaveSynchronize .syncAll ();
236+
237+ Assert .assertFalse (brokerController .getTopicConfigManager ().getTopicConfigTable ().containsKey ("LocalTopic" ));
238+ Assert .assertTrue (brokerController .getTopicConfigManager ().getTopicConfigTable ().containsKey ("NewTopic" ));
239+ }
240+
177241 private TopicConfigAndMappingSerializeWrapper createTopicConfigWrapper (TopicConfig topicConfig ) {
178242 TopicConfigAndMappingSerializeWrapper wrapper = new TopicConfigAndMappingSerializeWrapper ();
179243 wrapper .setTopicConfigTable (new ConcurrentHashMap <>());
0 commit comments