1313from cardano_node_tests .tests import common
1414from cardano_node_tests .utils import cluster_nodes
1515from cardano_node_tests .utils import configuration
16+ from cardano_node_tests .utils import dbsync_queries
1617from cardano_node_tests .utils import dbsync_service_manager as db_sync
1718from cardano_node_tests .utils import dbsync_utils
1819from cardano_node_tests .utils import helpers
@@ -145,7 +146,6 @@ def basic_tx_out(
145146 """Test `tx_out` option."""
146147 db_config = db_sync_manager .get_config_builder ()
147148
148- # Test tx_out : enable
149149 db_sync_manager .restart_with_config (
150150 custom_config = db_config .with_tx_out (
151151 value = db_sync .TxOutMode .ENABLE , force_tx_in = False , use_address_table = False
@@ -160,7 +160,6 @@ def basic_tx_out(
160160 }
161161 )
162162
163- # Test tx_out : disable
164163 db_sync_manager .restart_with_config (
165164 custom_config = db_config .with_tx_out (
166165 value = db_sync .TxOutMode .DISABLE , force_tx_in = True , use_address_table = True
@@ -179,6 +178,106 @@ def basic_tx_out(
179178
180179 yield basic_tx_out
181180
181+ def governance (
182+ db_sync_manager : db_sync .DBSyncManager ,
183+ ):
184+ """Test `governance` option."""
185+ db_config = db_sync_manager .get_config_builder ()
186+
187+ db_sync_manager .restart_with_config (
188+ custom_config = db_config .with_governance (value = db_sync .SettingState .ENABLE )
189+ )
190+
191+ # Off-chain data is inserted into the DB a few minutes after the restart of db-sync
192+ def _query_func ():
193+ tables_to_check = [
194+ db_sync .Table .COMMITTEE_DE_REGISTRATION ,
195+ db_sync .Table .COMMITTEE_MEMBER ,
196+ db_sync .Table .COMMITTEE_REGISTRATION ,
197+ db_sync .Table .COMMITTEE ,
198+ db_sync .Table .CONSTITUTION ,
199+ db_sync .Table .DELEGATION_VOTE ,
200+ db_sync .Table .DREP_DISTR ,
201+ db_sync .Table .DREP_REGISTRATION ,
202+ db_sync .Table .EPOCH_STATE ,
203+ db_sync .Table .GOV_ACTION_PROPOSAL ,
204+ db_sync .Table .OFF_CHAIN_VOTE_DATA ,
205+ db_sync .Table .OFF_CHAIN_VOTE_DREP_DATA ,
206+ db_sync .Table .OFF_CHAIN_VOTE_EXTERNAL_UPDATE ,
207+ db_sync .Table .OFF_CHAIN_VOTE_FETCH_ERROR ,
208+ db_sync .Table .OFF_CHAIN_VOTE_GOV_ACTION_DATA ,
209+ db_sync .Table .OFF_CHAIN_VOTE_REFERENCE ,
210+ db_sync .Table .VOTING_ANCHOR ,
211+ db_sync .Table .VOTING_PROCEDURE ,
212+ db_sync .Table .TREASURY_WITHDRAWAL ,
213+ ]
214+
215+ empty_tables = [
216+ table for table in tables_to_check
217+ if dbsync_utils .table_empty (table )
218+ ]
219+
220+ if empty_tables :
221+ msg = f"Following tables are still empty: { empty_tables } "
222+ raise dbsync_utils .DbSyncNoResponseError (msg )
223+
224+ return True
225+
226+ dbsync_utils .retry_query (query_func = _query_func , timeout = 600 )
227+
228+ check_dbsync_state (
229+ expected_state = {
230+ db_sync .Table .COMMITTEE_DE_REGISTRATION : TableCondition .NOT_EMPTY ,
231+ db_sync .Table .COMMITTEE_MEMBER : TableCondition .NOT_EMPTY ,
232+ db_sync .Table .COMMITTEE_REGISTRATION : TableCondition .NOT_EMPTY ,
233+ db_sync .Table .COMMITTEE : TableCondition .NOT_EMPTY ,
234+ db_sync .Table .CONSTITUTION : TableCondition .NOT_EMPTY ,
235+ db_sync .Table .DELEGATION_VOTE : TableCondition .NOT_EMPTY ,
236+ db_sync .Table .DREP_DISTR : TableCondition .NOT_EMPTY ,
237+ db_sync .Table .DREP_REGISTRATION : TableCondition .NOT_EMPTY ,
238+ db_sync .Table .EPOCH_STATE : TableCondition .NOT_EMPTY ,
239+ db_sync .Table .GOV_ACTION_PROPOSAL : TableCondition .NOT_EMPTY ,
240+ db_sync .Table .OFF_CHAIN_VOTE_DATA : TableCondition .NOT_EMPTY ,
241+ db_sync .Table .OFF_CHAIN_VOTE_DREP_DATA : TableCondition .NOT_EMPTY ,
242+ db_sync .Table .OFF_CHAIN_VOTE_EXTERNAL_UPDATE : TableCondition .NOT_EMPTY ,
243+ db_sync .Table .OFF_CHAIN_VOTE_FETCH_ERROR : TableCondition .NOT_EMPTY ,
244+ db_sync .Table .OFF_CHAIN_VOTE_GOV_ACTION_DATA : TableCondition .NOT_EMPTY ,
245+ db_sync .Table .OFF_CHAIN_VOTE_REFERENCE : TableCondition .NOT_EMPTY ,
246+ db_sync .Table .VOTING_ANCHOR : TableCondition .NOT_EMPTY ,
247+ db_sync .Table .VOTING_PROCEDURE : TableCondition .NOT_EMPTY ,
248+ db_sync .Table .TREASURY_WITHDRAWAL : TableCondition .NOT_EMPTY ,
249+ }
250+ )
251+
252+ db_sync_manager .restart_with_config (
253+ custom_config = db_config .with_governance (value = db_sync .SettingState .DISABLE )
254+ )
255+ check_dbsync_state (
256+ expected_state = {
257+ db_sync .Table .COMMITTEE_DE_REGISTRATION : TableCondition .EMPTY ,
258+ db_sync .Table .COMMITTEE_MEMBER : TableCondition .EMPTY ,
259+ db_sync .Table .COMMITTEE_REGISTRATION : TableCondition .EMPTY ,
260+ db_sync .Table .COMMITTEE : TableCondition .EMPTY ,
261+ db_sync .Table .CONSTITUTION : TableCondition .EMPTY ,
262+ db_sync .Table .DELEGATION_VOTE : TableCondition .EMPTY ,
263+ db_sync .Table .DREP_DISTR : TableCondition .EMPTY ,
264+ db_sync .Table .DREP_REGISTRATION : TableCondition .EMPTY ,
265+ db_sync .Table .EPOCH_STATE : TableCondition .EMPTY ,
266+ db_sync .Table .GOV_ACTION_PROPOSAL : TableCondition .EMPTY ,
267+ db_sync .Table .OFF_CHAIN_VOTE_DATA : TableCondition .EMPTY ,
268+ db_sync .Table .OFF_CHAIN_VOTE_DREP_DATA : TableCondition .EMPTY ,
269+ db_sync .Table .OFF_CHAIN_VOTE_EXTERNAL_UPDATE : TableCondition .EMPTY ,
270+ db_sync .Table .OFF_CHAIN_VOTE_FETCH_ERROR : TableCondition .EMPTY ,
271+ db_sync .Table .OFF_CHAIN_VOTE_GOV_ACTION_DATA : TableCondition .EMPTY ,
272+ db_sync .Table .OFF_CHAIN_VOTE_REFERENCE : TableCondition .EMPTY ,
273+ db_sync .Table .VOTING_ANCHOR : TableCondition .EMPTY ,
274+ db_sync .Table .VOTING_PROCEDURE : TableCondition .EMPTY ,
275+ db_sync .Table .TREASURY_WITHDRAWAL : TableCondition .EMPTY ,
276+ }
277+ )
278+
279+ yield governance
280+
182281 def tx_cbor_value_enable (
183282 db_sync_manager : db_sync .DBSyncManager ,
184283 ):
0 commit comments