|  | 
| 14 | 14 | from cardano_node_tests.utils import cluster_nodes | 
| 15 | 15 | from cardano_node_tests.utils import configuration | 
| 16 | 16 | from cardano_node_tests.utils import dbsync_service_manager as db_sync | 
|  | 17 | +from cardano_node_tests.utils import dbsync_queries | 
| 17 | 18 | from cardano_node_tests.utils import dbsync_utils | 
| 18 | 19 | from cardano_node_tests.utils import helpers | 
| 19 | 20 | 
 | 
| @@ -177,6 +178,125 @@ def basic_tx_out( | 
| 177 | 178 | 
 | 
| 178 | 179 |         yield basic_tx_out | 
| 179 | 180 | 
 | 
|  | 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 | +            # Test governance : enable | 
|  | 188 | +            db_sync_manager.restart_with_config( | 
|  | 189 | +                custom_config=db_config.with_governance( | 
|  | 190 | +                    value=db_sync.SettingState.ENABLE | 
|  | 191 | +                ) | 
|  | 192 | +            ) | 
|  | 193 | +            # Offchain vote data is inserted into database few minutes after start of a cluster | 
|  | 194 | +            def _query_func(): | 
|  | 195 | +                off_chain_vote_data = next( | 
|  | 196 | +                    iter(dbsync_queries.query_off_chain_vote_data()), None | 
|  | 197 | +                ) | 
|  | 198 | +                if off_chain_vote_data is None: | 
|  | 199 | +                    msg = f"no any off-chain vota data record found id db-sync database" | 
|  | 200 | +                    raise dbsync_utils.DbSyncNoResponseError(msg) | 
|  | 201 | +                return off_chain_vote_data | 
|  | 202 | +            # Left temporarirly for debugging purposes | 
|  | 203 | +            off_chain_vote_data_content = dbsync_utils.retry_query(query_func=_query_func, timeout=360) | 
|  | 204 | +            from IPython import embed; embed() | 
|  | 205 | +             | 
|  | 206 | +            check_dbsync_state( | 
|  | 207 | +                expected_state={ | 
|  | 208 | +                    db_sync.Table.COMMITTEE_DE_REGISTRATION: TableCondition.EXISTS, | 
|  | 209 | +                    db_sync.Table.COMMITTEE_DE_REGISTRATION: TableCondition.NOT_EMPTY, | 
|  | 210 | +                    db_sync.Table.COMMITTEE_MEMBER: TableCondition.EXISTS, | 
|  | 211 | +                    db_sync.Table.COMMITTEE_MEMBER: TableCondition.NOT_EMPTY, | 
|  | 212 | +                    db_sync.Table.COMMITTEE_REGISTRATION: TableCondition.EXISTS, | 
|  | 213 | +                    db_sync.Table.COMMITTEE_REGISTRATION: TableCondition.NOT_EMPTY, | 
|  | 214 | +                    db_sync.Table.COMMITTEE: TableCondition.EXISTS, | 
|  | 215 | +                    db_sync.Table.COMMITTEE: TableCondition.NOT_EMPTY, | 
|  | 216 | +                    db_sync.Table.CONSTITUTION: TableCondition.EXISTS, | 
|  | 217 | +                    db_sync.Table.CONSTITUTION: TableCondition.NOT_EMPTY, | 
|  | 218 | +                    db_sync.Table.DELEGATION_VOTE: TableCondition.EXISTS, | 
|  | 219 | +                    db_sync.Table.DELEGATION_VOTE: TableCondition.NOT_EMPTY, | 
|  | 220 | +                    db_sync.Table.DREP_DISTR: TableCondition.EXISTS, | 
|  | 221 | +                    db_sync.Table.DREP_DISTR: TableCondition.NOT_EMPTY, | 
|  | 222 | +                    db_sync.Table.DREP_REGISTRATION: TableCondition.EXISTS, | 
|  | 223 | +                    db_sync.Table.DREP_REGISTRATION: TableCondition.NOT_EMPTY, | 
|  | 224 | +                    db_sync.Table.EPOCH_STATE: TableCondition.EXISTS, | 
|  | 225 | +                    db_sync.Table.EPOCH_STATE: TableCondition.NOT_EMPTY, | 
|  | 226 | +                    db_sync.Table.GOV_ACTION_PROPOSAL: TableCondition.EXISTS, | 
|  | 227 | +                    db_sync.Table.GOV_ACTION_PROPOSAL: TableCondition.NOT_EMPTY, | 
|  | 228 | +                    db_sync.Table.OFF_CHAIN_VOTE_DATA: TableCondition.EXISTS, | 
|  | 229 | +                    db_sync.Table.OFF_CHAIN_VOTE_DATA: TableCondition.NOT_EMPTY, | 
|  | 230 | +                    db_sync.Table.OFF_CHAIN_VOTE_DREP_DATA: TableCondition.EXISTS, | 
|  | 231 | +                    db_sync.Table.OFF_CHAIN_VOTE_DREP_DATA: TableCondition.NOT_EMPTY, | 
|  | 232 | +                    db_sync.Table.OFF_CHAIN_VOTE_EXTERNAL_UPDATE: TableCondition.EXISTS, | 
|  | 233 | +                    db_sync.Table.OFF_CHAIN_VOTE_EXTERNAL_UPDATE: TableCondition.NOT_EMPTY, | 
|  | 234 | +                    db_sync.Table.OFF_CHAIN_VOTE_FETCH_ERROR: TableCondition.EXISTS, | 
|  | 235 | +                    db_sync.Table.OFF_CHAIN_VOTE_FETCH_ERROR: TableCondition.NOT_EMPTY, | 
|  | 236 | +                    db_sync.Table.OFF_CHAIN_VOTE_GOV_ACTION_DATA: TableCondition.EXISTS, | 
|  | 237 | +                    db_sync.Table.OFF_CHAIN_VOTE_GOV_ACTION_DATA: TableCondition.NOT_EMPTY, | 
|  | 238 | +                    db_sync.Table.OFF_CHAIN_VOTE_REFERENCE: TableCondition.EXISTS, | 
|  | 239 | +                    db_sync.Table.OFF_CHAIN_VOTE_REFERENCE: TableCondition.NOT_EMPTY, | 
|  | 240 | +                    db_sync.Table.VOTING_ANCHOR: TableCondition.EXISTS, | 
|  | 241 | +                    db_sync.Table.VOTING_ANCHOR: TableCondition.NOT_EMPTY, | 
|  | 242 | +                    db_sync.Table.VOTING_PROCEDURE: TableCondition.EXISTS, | 
|  | 243 | +                    db_sync.Table.VOTING_PROCEDURE: TableCondition.NOT_EMPTY, | 
|  | 244 | +                    db_sync.Table.TREASURY_WITHDRAWAL: TableCondition.EXISTS, | 
|  | 245 | +                    db_sync.Table.TREASURY_WITHDRAWAL: TableCondition.NOT_EMPTY, | 
|  | 246 | +                } | 
|  | 247 | +            ) | 
|  | 248 | + | 
|  | 249 | +            # Test governance : disable | 
|  | 250 | +            db_sync_manager.restart_with_config( | 
|  | 251 | +                custom_config=db_config.with_governance( | 
|  | 252 | +                    value=db_sync.SettingState.DISABLE | 
|  | 253 | +                ) | 
|  | 254 | +            ) | 
|  | 255 | +            check_dbsync_state( | 
|  | 256 | +                expected_state={ | 
|  | 257 | +                    db_sync.Table.COMMITTEE_DE_REGISTRATION: TableCondition.EXISTS, | 
|  | 258 | +                    db_sync.Table.COMMITTEE_DE_REGISTRATION: TableCondition.EMPTY, | 
|  | 259 | +                    db_sync.Table.COMMITTEE_MEMBER: TableCondition.EXISTS, | 
|  | 260 | +                    db_sync.Table.COMMITTEE_MEMBER: TableCondition.EMPTY, | 
|  | 261 | +                    db_sync.Table.COMMITTEE_REGISTRATION: TableCondition.EXISTS, | 
|  | 262 | +                    db_sync.Table.COMMITTEE_REGISTRATION: TableCondition.EMPTY, | 
|  | 263 | +                    db_sync.Table.COMMITTEE: TableCondition.EXISTS, | 
|  | 264 | +                    db_sync.Table.COMMITTEE: TableCondition.EMPTY, | 
|  | 265 | +                    db_sync.Table.CONSTITUTION: TableCondition.EXISTS, | 
|  | 266 | +                    db_sync.Table.CONSTITUTION: TableCondition.EMPTY, | 
|  | 267 | +                    db_sync.Table.DELEGATION_VOTE: TableCondition.EXISTS, | 
|  | 268 | +                    db_sync.Table.DELEGATION_VOTE: TableCondition.EMPTY, | 
|  | 269 | +                    db_sync.Table.DREP_DISTR: TableCondition.EXISTS, | 
|  | 270 | +                    db_sync.Table.DREP_DISTR: TableCondition.EMPTY, | 
|  | 271 | +                    db_sync.Table.DREP_REGISTRATION: TableCondition.EXISTS, | 
|  | 272 | +                    db_sync.Table.DREP_REGISTRATION: TableCondition.EMPTY, | 
|  | 273 | +                    db_sync.Table.EPOCH_STATE: TableCondition.EXISTS, | 
|  | 274 | +                    db_sync.Table.EPOCH_STATE: TableCondition.EMPTY, | 
|  | 275 | +                    db_sync.Table.GOV_ACTION_PROPOSAL: TableCondition.EXISTS, | 
|  | 276 | +                    db_sync.Table.GOV_ACTION_PROPOSAL: TableCondition.EMPTY, | 
|  | 277 | +                    db_sync.Table.OFF_CHAIN_VOTE_DATA: TableCondition.EXISTS, | 
|  | 278 | +                    db_sync.Table.OFF_CHAIN_VOTE_DATA: TableCondition.EMPTY,  | 
|  | 279 | +                    db_sync.Table.OFF_CHAIN_VOTE_DREP_DATA: TableCondition.EXISTS, | 
|  | 280 | +                    db_sync.Table.OFF_CHAIN_VOTE_DREP_DATA: TableCondition.EMPTY, | 
|  | 281 | +                    db_sync.Table.OFF_CHAIN_VOTE_EXTERNAL_UPDATE: TableCondition.EXISTS, | 
|  | 282 | +                    db_sync.Table.OFF_CHAIN_VOTE_EXTERNAL_UPDATE: TableCondition.EMPTY, | 
|  | 283 | +                    db_sync.Table.OFF_CHAIN_VOTE_FETCH_ERROR: TableCondition.EXISTS, | 
|  | 284 | +                    db_sync.Table.OFF_CHAIN_VOTE_FETCH_ERROR: TableCondition.EMPTY, | 
|  | 285 | +                    db_sync.Table.OFF_CHAIN_VOTE_GOV_ACTION_DATA: TableCondition.EXISTS, | 
|  | 286 | +                    db_sync.Table.OFF_CHAIN_VOTE_GOV_ACTION_DATA: TableCondition.EMPTY, | 
|  | 287 | +                    db_sync.Table.OFF_CHAIN_VOTE_REFERENCE: TableCondition.EXISTS, | 
|  | 288 | +                    db_sync.Table.OFF_CHAIN_VOTE_REFERENCE: TableCondition.EMPTY, | 
|  | 289 | +                    db_sync.Table.VOTING_ANCHOR: TableCondition.EXISTS, | 
|  | 290 | +                    db_sync.Table.VOTING_ANCHOR: TableCondition.EMPTY, | 
|  | 291 | +                    db_sync.Table.VOTING_PROCEDURE: TableCondition.EXISTS, | 
|  | 292 | +                    db_sync.Table.VOTING_PROCEDURE: TableCondition.EMPTY, | 
|  | 293 | +                    db_sync.Table.TREASURY_WITHDRAWAL: TableCondition.EXISTS, | 
|  | 294 | +                    db_sync.Table.TREASURY_WITHDRAWAL: TableCondition.EMPTY, | 
|  | 295 | +                } | 
|  | 296 | +            ) | 
|  | 297 | + | 
|  | 298 | +        yield governance | 
|  | 299 | + | 
| 180 | 300 |         def tx_cbor_value_enable( | 
| 181 | 301 |             db_sync_manager: db_sync.DBSyncManager, | 
| 182 | 302 |         ): | 
|  | 
0 commit comments