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
@@ -143,7 +144,6 @@ def basic_tx_out(
143144 """Test `tx_out` option."""
144145 db_config = db_sync_manager .get_config_builder ()
145146
146- # Test tx_out : enable
147147 db_sync_manager .restart_with_config (
148148 custom_config = db_config .with_tx_out (
149149 value = db_sync .TxOutMode .ENABLE , force_tx_in = False , use_address_table = False
@@ -158,7 +158,6 @@ def basic_tx_out(
158158 }
159159 )
160160
161- # Test tx_out : disable
162161 db_sync_manager .restart_with_config (
163162 custom_config = db_config .with_tx_out (
164163 value = db_sync .TxOutMode .DISABLE , force_tx_in = True , use_address_table = True
@@ -177,6 +176,106 @@ def basic_tx_out(
177176
178177 yield basic_tx_out
179178
179+ def governance (
180+ db_sync_manager : db_sync .DBSyncManager ,
181+ ):
182+ """Test `governance` option."""
183+ db_config = db_sync_manager .get_config_builder ()
184+
185+ db_sync_manager .restart_with_config (
186+ custom_config = db_config .with_governance (value = db_sync .SettingState .ENABLE )
187+ )
188+
189+ # Off-chain data is inserted into the DB a few minutes after the restart of db-sync
190+ def _query_func ():
191+ tables_to_check = [
192+ db_sync .Table .COMMITTEE_DE_REGISTRATION ,
193+ db_sync .Table .COMMITTEE_MEMBER ,
194+ db_sync .Table .COMMITTEE_REGISTRATION ,
195+ db_sync .Table .COMMITTEE ,
196+ db_sync .Table .CONSTITUTION ,
197+ db_sync .Table .DELEGATION_VOTE ,
198+ db_sync .Table .DREP_DISTR ,
199+ db_sync .Table .DREP_REGISTRATION ,
200+ db_sync .Table .EPOCH_STATE ,
201+ db_sync .Table .GOV_ACTION_PROPOSAL ,
202+ db_sync .Table .OFF_CHAIN_VOTE_DATA ,
203+ db_sync .Table .OFF_CHAIN_VOTE_DREP_DATA ,
204+ db_sync .Table .OFF_CHAIN_VOTE_EXTERNAL_UPDATE ,
205+ db_sync .Table .OFF_CHAIN_VOTE_FETCH_ERROR ,
206+ db_sync .Table .OFF_CHAIN_VOTE_GOV_ACTION_DATA ,
207+ db_sync .Table .OFF_CHAIN_VOTE_REFERENCE ,
208+ db_sync .Table .VOTING_ANCHOR ,
209+ db_sync .Table .VOTING_PROCEDURE ,
210+ db_sync .Table .TREASURY_WITHDRAWAL ,
211+ ]
212+
213+ empty_tables = [
214+ table for table in tables_to_check
215+ if dbsync_utils .table_empty (table )
216+ ]
217+
218+ if empty_tables :
219+ msg = f"Following tables are still empty: { empty_tables } "
220+ raise dbsync_utils .DbSyncNoResponseError (msg )
221+
222+ return True
223+
224+ dbsync_utils .retry_query (query_func = _query_func , timeout = 600 )
225+
226+ check_dbsync_state (
227+ expected_state = {
228+ db_sync .Table .COMMITTEE_DE_REGISTRATION : TableCondition .NOT_EMPTY ,
229+ db_sync .Table .COMMITTEE_MEMBER : TableCondition .NOT_EMPTY ,
230+ db_sync .Table .COMMITTEE_REGISTRATION : TableCondition .NOT_EMPTY ,
231+ db_sync .Table .COMMITTEE : TableCondition .NOT_EMPTY ,
232+ db_sync .Table .CONSTITUTION : TableCondition .NOT_EMPTY ,
233+ db_sync .Table .DELEGATION_VOTE : TableCondition .NOT_EMPTY ,
234+ db_sync .Table .DREP_DISTR : TableCondition .NOT_EMPTY ,
235+ db_sync .Table .DREP_REGISTRATION : TableCondition .NOT_EMPTY ,
236+ db_sync .Table .EPOCH_STATE : TableCondition .NOT_EMPTY ,
237+ db_sync .Table .GOV_ACTION_PROPOSAL : TableCondition .NOT_EMPTY ,
238+ db_sync .Table .OFF_CHAIN_VOTE_DATA : TableCondition .NOT_EMPTY ,
239+ db_sync .Table .OFF_CHAIN_VOTE_DREP_DATA : TableCondition .NOT_EMPTY ,
240+ db_sync .Table .OFF_CHAIN_VOTE_EXTERNAL_UPDATE : TableCondition .NOT_EMPTY ,
241+ db_sync .Table .OFF_CHAIN_VOTE_FETCH_ERROR : TableCondition .NOT_EMPTY ,
242+ db_sync .Table .OFF_CHAIN_VOTE_GOV_ACTION_DATA : TableCondition .NOT_EMPTY ,
243+ db_sync .Table .OFF_CHAIN_VOTE_REFERENCE : TableCondition .NOT_EMPTY ,
244+ db_sync .Table .VOTING_ANCHOR : TableCondition .NOT_EMPTY ,
245+ db_sync .Table .VOTING_PROCEDURE : TableCondition .NOT_EMPTY ,
246+ db_sync .Table .TREASURY_WITHDRAWAL : TableCondition .NOT_EMPTY ,
247+ }
248+ )
249+
250+ db_sync_manager .restart_with_config (
251+ custom_config = db_config .with_governance (value = db_sync .SettingState .DISABLE )
252+ )
253+ check_dbsync_state (
254+ expected_state = {
255+ db_sync .Table .COMMITTEE_DE_REGISTRATION : TableCondition .EMPTY ,
256+ db_sync .Table .COMMITTEE_MEMBER : TableCondition .EMPTY ,
257+ db_sync .Table .COMMITTEE_REGISTRATION : TableCondition .EMPTY ,
258+ db_sync .Table .COMMITTEE : TableCondition .EMPTY ,
259+ db_sync .Table .CONSTITUTION : TableCondition .EMPTY ,
260+ db_sync .Table .DELEGATION_VOTE : TableCondition .EMPTY ,
261+ db_sync .Table .DREP_DISTR : TableCondition .EMPTY ,
262+ db_sync .Table .DREP_REGISTRATION : TableCondition .EMPTY ,
263+ db_sync .Table .EPOCH_STATE : TableCondition .EMPTY ,
264+ db_sync .Table .GOV_ACTION_PROPOSAL : TableCondition .EMPTY ,
265+ db_sync .Table .OFF_CHAIN_VOTE_DATA : TableCondition .EMPTY ,
266+ db_sync .Table .OFF_CHAIN_VOTE_DREP_DATA : TableCondition .EMPTY ,
267+ db_sync .Table .OFF_CHAIN_VOTE_EXTERNAL_UPDATE : TableCondition .EMPTY ,
268+ db_sync .Table .OFF_CHAIN_VOTE_FETCH_ERROR : TableCondition .EMPTY ,
269+ db_sync .Table .OFF_CHAIN_VOTE_GOV_ACTION_DATA : TableCondition .EMPTY ,
270+ db_sync .Table .OFF_CHAIN_VOTE_REFERENCE : TableCondition .EMPTY ,
271+ db_sync .Table .VOTING_ANCHOR : TableCondition .EMPTY ,
272+ db_sync .Table .VOTING_PROCEDURE : TableCondition .EMPTY ,
273+ db_sync .Table .TREASURY_WITHDRAWAL : TableCondition .EMPTY ,
274+ }
275+ )
276+
277+ yield governance
278+
180279 def tx_cbor_value_enable (
181280 db_sync_manager : db_sync .DBSyncManager ,
182281 ):
0 commit comments