[dependency]: Bump plotly from 5.24.1 to 6.9.0 in /explorer/nodewatch - #2396
Open
dependabot[bot] wants to merge 1 commit into
Open
[dependency]: Bump plotly from 5.24.1 to 6.9.0 in /explorer/nodewatch#2396dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Symbol-Github-Bot / Jenkins CI - Explorer Nodewatch
failed
Jul 27, 2026 in 5m 40s
CI pipeline/run tests: error in 'sh (scripts/ci/test.sh code-coverage arm64)' step
CI pipeline / run tests / scripts/ci/test.sh code-coverage arm64
Error in sh (scripts/ci/test.sh code-coverage arm64) step, with arguments bash -c 'scripts/ci/test.sh code-coverage arm64'.
script returned exit code 1
Build log
[2026-07-27T17:04:56.256Z] + bash -c scripts/ci/test.sh code-coverage arm64
[2026-07-27T17:04:56.256Z] ++ '[' code-coverage = code-coverage ']'
[2026-07-27T17:04:56.257Z] ++ echo 'coverage run --append'
[2026-07-27T17:04:56.257Z] + TEST_RUNNER='coverage run --append'
[2026-07-27T17:04:56.257Z] + coverage run --append -m pytest --asyncio-mode=auto -v
[2026-07-27T17:04:58.166Z] ============================= test session starts ==============================
[2026-07-27T17:04:58.166Z] platform linux -- Python 3.12.3, pytest-9.1.1, pluggy-1.6.0 -- /home/ubuntu/venv/bin/python3
[2026-07-27T17:04:58.166Z] cachedir: .pytest_cache
[2026-07-27T17:04:58.166Z] rootdir: /home/ubuntu/jenkins/workspace/explorer/nodewatch
[2026-07-27T17:04:58.166Z] plugins: aiohttp-1.1.1, asyncio-1.4.0, anyio-4.14.2
[2026-07-27T17:04:58.166Z] asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
[2026-07-27T17:05:00.710Z] collecting ... collected 108 items
[2026-07-27T17:05:00.710Z]
[2026-07-27T17:05:01.667Z] tests/test_HeightChartBuilder.py::HeightChartBuilderTest::test_can_create_power_chart_with_min_cluster_size FAILED [ 0%]
[2026-07-27T17:05:01.926Z] tests/test_HeightChartBuilder.py::HeightChartBuilderTest::test_can_create_power_chart_without_min_cluster_size FAILED [ 1%]
[2026-07-27T17:05:01.926Z] tests/test_NetworkConnector.py::test_can_update_nem_heights_single_batch PASSED [ 2%]
[2026-07-27T17:05:01.926Z] tests/test_NetworkConnector.py::test_can_update_nem_heights_multiple_batch PASSED [ 3%]
[2026-07-27T17:05:01.926Z] tests/test_NetworkConnector.py::test_can_update_nem_heights_with_some_errors PASSED [ 4%]
[2026-07-27T17:05:01.926Z] tests/test_NetworkConnector.py::test_can_update_symbol_heights_single_batch PASSED [ 5%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkConnector.py::test_can_update_symbol_heights_multiple_batch PASSED [ 6%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkConnector.py::test_can_update_symbol_heights_only_via_api PASSED [ 7%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkConnector.py::test_can_update_symbol_heights_with_some_errors PASSED [ 8%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkConnector.py::test_can_update_symbol_height_and_finalization_info PASSED [ 9%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_format_node_descriptor_as_json PASSED [ 10%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_format_node_descriptor_with_node_public_key_as_json PASSED [ 11%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_nem_geo_location_descriptors PASSED [ 12%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_nem_harvester_descriptors PASSED [ 12%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_nem_node_descriptors PASSED [ 13%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_nem_time_series_nodes_count PASSED [ 14%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_symbol_geo_location_descriptors PASSED [ 15%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_symbol_harvester_descriptors PASSED [ 16%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_symbol_node_descriptors PASSED [ 17%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_symbol_time_series_nodes_count PASSED [ 18%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_symbol_voter_descriptors PASSED [ 19%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_zero_nem_node_descriptors PASSED [ 20%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_can_load_zero_symbol_node_descriptors PASSED [ 21%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_node_has_null_nem_geo_location_in_json_when_not_available PASSED [ 22%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_node_has_null_symbol_geo_location_in_json_when_not_available PASSED [ 23%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_node_includes_nem_geo_location_in_json_when_available PASSED [ 24%]
[2026-07-27T17:05:02.184Z] tests/test_NetworkRepository.py::NetworkRepositoryTest::test_node_includes_symbol_geo_location_in_json_when_available PASSED [ 25%]
[2026-07-27T17:05:02.443Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_generate_height_chart_json PASSED [ 25%]
[2026-07-27T17:05:02.443Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_generate_height_chart_with_metadata_json PASSED [ 26%]
[2026-07-27T17:05:02.443Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_generate_nodes_json PASSED [ 27%]
[2026-07-27T17:05:02.443Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_map_version_to_css_class PASSED [ 28%]
[2026-07-27T17:05:02.443Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_reload_all PASSED [ 29%]
[2026-07-27T17:05:02.443Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_render_harvesters_html PASSED [ 30%]
[2026-07-27T17:05:02.443Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_render_nodes_html PASSED [ 31%]
[2026-07-27T17:05:02.443Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_render_nodes_html_testnet PASSED [ 32%]
[2026-07-27T17:05:03.014Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_render_summary_html PASSED [ 33%]
[2026-07-27T17:05:03.014Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_reset_refresh_time PASSED [ 34%]
[2026-07-27T17:05:03.014Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_retrieve_estimated_network_height_json PASSED [ 35%]
[2026-07-27T17:05:03.014Z] tests/test_RoutesFacade.py::NemRoutesFacadeTest::test_can_skip_reload_when_noop PASSED [ 36%]
[2026-07-27T17:05:03.014Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_find_known_node_by_main_public_key PASSED [ 37%]
[2026-07-27T17:05:03.014Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_find_known_node_with_geo_location_by_main_public_key PASSED [ 37%]
[2026-07-27T17:05:03.273Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_generate_height_chart_json PASSED [ 38%]
[2026-07-27T17:05:03.273Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_generate_height_chart_with_metadata_json PASSED [ 39%]
[2026-07-27T17:05:03.273Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_generate_nodes_json PASSED [ 40%]
[2026-07-27T17:05:03.273Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_generate_nodes_json_filtered PASSED [ 41%]
[2026-07-27T17:05:03.273Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_generate_nodes_json_filtered_exact_match PASSED [ 42%]
[2026-07-27T17:05:03.273Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_generate_nodes_json_filtered_limit_5 PASSED [ 43%]
[2026-07-27T17:05:03.273Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_generate_nodes_json_filtered_only_ssl PASSED [ 44%]
[2026-07-27T17:05:03.273Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_generate_nodes_json_filtered_order_random_subset PASSED [ 45%]
[2026-07-27T17:05:03.531Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_map_version_to_css_class PASSED [ 46%]
[2026-07-27T17:05:03.531Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_reload_all PASSED [ 47%]
[2026-07-27T17:05:03.531Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_render_harvesters_html PASSED [ 48%]
[2026-07-27T17:05:03.531Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_render_nodes_html PASSED [ 49%]
[2026-07-27T17:05:03.531Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_render_nodes_html_testnet PASSED [ 50%]
[2026-07-27T17:05:04.097Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_render_summary_html PASSED [ 50%]
[2026-07-27T17:05:04.097Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_render_voters_html PASSED [ 51%]
[2026-07-27T17:05:04.097Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_reset_refresh_time PASSED [ 52%]
[2026-07-27T17:05:04.097Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_retrieve_estimated_network_height_json PASSED [ 53%]
[2026-07-27T17:05:04.097Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_retrieve_finalized_epoch_json PASSED [ 54%]
[2026-07-27T17:05:04.097Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_retrieve_network_config_json PASSED [ 55%]
[2026-07-27T17:05:04.097Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_retrieve_time_series_nodes_count_json PASSED [ 56%]
[2026-07-27T17:05:04.492Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_skip_daily_reload_when_noop PASSED [ 57%]
[2026-07-27T17:05:04.492Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_can_skip_reload_when_noop PASSED [ 58%]
[2026-07-27T17:05:04.492Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_cannot_find_unknown_node_by_main_public_key PASSED [ 59%]
[2026-07-27T17:05:04.492Z] tests/test_RoutesFacade.py::SymbolRoutesFacadeTest::test_json_node_with_invalid_field PASSED [ 60%]
[2026-07-27T17:05:04.492Z] tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_count_chart_associated_with_power FAILED [ 61%]
[2026-07-27T17:05:04.492Z] tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_count_chart_unassociated_with_power FAILED [ 62%]
[2026-07-27T17:05:04.775Z] tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_power_chart_with_threshold FAILED [ 62%]
[2026-07-27T17:05:04.775Z] tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_power_chart_without_allnodes FAILED [ 63%]
[2026-07-27T17:05:05.033Z] tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_power_chart_without_threshold FAILED [ 64%]
[2026-07-27T17:05:05.033Z] tests/test_app.py::test_redirect_root_to_symbol_summary PASSED [ 65%]
[2026-07-27T17:05:05.292Z] tests/test_app.py::test_get_nem_harvesters PASSED [ 66%]
[2026-07-27T17:05:05.292Z] tests/test_app.py::test_get_nem_nodes PASSED [ 67%]
[2026-07-27T17:05:05.292Z] tests/test_app.py::test_get_symbol_harvesters PASSED [ 68%]
[2026-07-27T17:05:05.557Z] tests/test_app.py::test_get_symbol_nodes PASSED [ 69%]
[2026-07-27T17:05:05.557Z] tests/test_app.py::test_get_symbol_voters PASSED [ 70%]
[2026-07-27T17:05:06.137Z] tests/test_app.py::test_get_nem_summary PASSED [ 71%]
[2026-07-27T17:05:06.704Z] tests/test_app.py::test_get_symbol_summary PASSED [ 72%]
[2026-07-27T17:05:06.704Z] tests/test_app.py::test_get_api_openapi PASSED [ 73%]
[2026-07-27T17:05:06.704Z] tests/test_app.py::test_get_api_nem_nodes PASSED [ 74%]
[2026-07-27T17:05:06.963Z] tests/test_app.py::test_get_api_nem_network_height PASSED [ 75%]
[2026-07-27T17:05:06.963Z] tests/test_app.py::test_get_api_nem_network_height_chart PASSED [ 75%]
[2026-07-27T17:05:06.963Z] tests/test_app.py::test_get_api_nem_nodes_count PASSED [ 76%]
[2026-07-27T17:05:06.963Z] tests/test_app.py::test_get_api_symbol_nodes_api PASSED [ 77%]
[2026-07-27T17:05:07.223Z] tests/test_app.py::test_get_api_symbol_nodes_peer PASSED [ 78%]
[2026-07-27T17:05:07.223Z] tests/test_app.py::test_get_api_symbol_nodes_peer_with_only_ssl PASSED [ 79%]
[2026-07-27T17:05:07.223Z] tests/test_app.py::test_get_api_symbol_nodes_peer_with_only_ssl_true PASSED [ 80%]
[2026-07-27T17:05:07.223Z] tests/test_app.py::test_get_api_symbol_nodes_peer_with_only_ssl_false PASSED [ 81%]
[2026-07-27T17:05:07.223Z] tests/test_app.py::test_get_api_symbol_network_height PASSED [ 82%]
[2026-07-27T17:05:07.482Z] tests/test_app.py::test_get_api_symbol_network_height_chart PASSED [ 83%]
[2026-07-27T17:05:07.482Z] tests/test_app.py::test_get_api_symbol_node_with_invalid_main_public_key PASSED [ 84%]
[2026-07-27T17:05:07.482Z] tests/test_app.py::test_get_api_symbol_node_with_invalid_node_public_key PASSED [ 85%]
[2026-07-27T17:05:07.482Z] tests/test_app.py::test_get_api_symbol_node_with_main_public_key_not_found PASSED [ 86%]
[2026-07-27T17:05:07.482Z] tests/test_app.py::test_get_api_symbol_node_with_node_public_key_not_found PASSED [ 87%]
[2026-07-27T17:05:07.482Z] tests/test_app.py::test_get_api_symbol_node_with_main_public_key PASSED [ 87%]
[2026-07-27T17:05:07.482Z] tests/test_app.py::test_get_api_symbol_node_with_node_public_key PASSED [ 88%]
[2026-07-27T17:05:07.743Z] tests/test_app.py::test_get_api_symbol_nodes_count PASSED [ 89%]
[2026-07-27T17:05:07.743Z] tests/test_app.py::test_get_api_symbol_epoch PASSED [ 90%]
[2026-07-27T17:05:07.743Z] tests/test_app.py::test_get_api_symbol_voting_config PASSED [ 91%]
[2026-07-27T17:05:07.743Z] tests/test_chart_utils.py::ChartUtilsTest::test_can_map_pods_to_dataframe PASSED [ 92%]
[2026-07-27T17:05:07.743Z] tests/test_chart_utils.py::ChartUtilsTest::test_version_aggregator_can_build_while_only_aggregating_balance PASSED [ 93%]
[2026-07-27T17:05:07.743Z] tests/test_chart_utils.py::ChartUtilsTest::test_version_aggregator_can_build_while_only_aggregating_count PASSED [ 94%]
[2026-07-27T17:05:07.743Z] tests/test_chart_utils.py::ChartUtilsTest::test_version_aggregator_can_build_with_nested_secondary_key PASSED [ 95%]
[2026-07-27T17:05:07.743Z] tests/test_chart_utils.py::ChartUtilsTest::test_version_aggregator_can_build_with_secondary_key PASSED [ 96%]
[2026-07-27T17:05:07.743Z] tests/test_chart_utils.py::ChartUtilsTest::test_version_aggregator_can_build_without_secondary_key PASSED [ 97%]
[2026-07-27T17:05:07.743Z] tests/test_chart_utils.py::ChartUtilsTest::test_version_customizations_can_create_version_to_color_map PASSED [ 98%]
[2026-07-27T17:05:07.743Z] tests/test_chart_utils.py::ChartUtilsTest::test_version_customizations_can_get_weight_for_known_version PASSED [ 99%]
[2026-07-27T17:05:07.744Z] tests/test_chart_utils.py::ChartUtilsTest::test_version_customizations_can_get_zero_weight_for_unknown_version PASSED [100%]
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] =================================== FAILURES ===================================
[2026-07-27T17:05:07.744Z] ___ HeightChartBuilderTest.test_can_create_power_chart_with_min_cluster_size ___
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] self = <tests.test_HeightChartBuilder.HeightChartBuilderTest testMethod=test_can_create_power_chart_with_min_cluster_size>
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] def test_can_create_power_chart_with_min_cluster_size(self):
[2026-07-27T17:05:07.744Z] # Act:
[2026-07-27T17:05:07.744Z] chart_json = self._create_chart(2)
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] # Assert: only scatterpoints with at least two datapoints are preserved
[2026-07-27T17:05:07.744Z] chart_data = chart_json['data']
[2026-07-27T17:05:07.744Z] self.assertEqual(3, len(chart_data))
[2026-07-27T17:05:07.744Z] > self._assert_scatterpoint(chart_data, '0.0.3.3, height', {
[2026-07-27T17:05:07.744Z] 'size': [500000000 - 3],
[2026-07-27T17:05:07.744Z] 'x': [12345],
[2026-07-27T17:05:07.744Z] 'y': [2],
[2026-07-27T17:05:07.744Z] 'text': ['500M']
[2026-07-27T17:05:07.744Z] })
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] tests/test_HeightChartBuilder.py:118:
[2026-07-27T17:05:07.744Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2026-07-27T17:05:07.744Z] tests/test_HeightChartBuilder.py:55: in _assert_scatterpoint
[2026-07-27T17:05:07.744Z] self.assertEqual({
[2026-07-27T17:05:07.744Z] E AssertionError: {'col[16 chars]'sizeref': 319999.99964444444, 'size': [499999[40 chars]cle'} != {'col[16 chars]'size': {'dtype': 'i4', 'bdata': '/WTNHQ=='}, [65 chars]cle'}
[2026-07-27T17:05:07.744Z] E {'color': '#008A00',
[2026-07-27T17:05:07.744Z] E - 'size': [499999997],
[2026-07-27T17:05:07.744Z] E + 'size': {'bdata': '/WTNHQ==', 'dtype': 'i4'},
[2026-07-27T17:05:07.744Z] E 'sizemode': 'area',
[2026-07-27T17:05:07.744Z] E 'sizeref': 319999.99964444444,
[2026-07-27T17:05:07.744Z] E 'symbol': 'circle'}
[2026-07-27T17:05:07.744Z] _ HeightChartBuilderTest.test_can_create_power_chart_without_min_cluster_size __
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] self = <tests.test_HeightChartBuilder.HeightChartBuilderTest testMethod=test_can_create_power_chart_without_min_cluster_size>
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] def test_can_create_power_chart_without_min_cluster_size(self):
[2026-07-27T17:05:07.744Z] # Act:
[2026-07-27T17:05:07.744Z] chart_json = self._create_chart(1)
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] # Assert:
[2026-07-27T17:05:07.744Z] chart_data = chart_json['data']
[2026-07-27T17:05:07.744Z] self.assertEqual(6, len(chart_data))
[2026-07-27T17:05:07.744Z] > self._assert_scatterpoint(chart_data, '0.0.3.3, height', {
[2026-07-27T17:05:07.744Z] 'size': [500000000 - 3, 800000000 + 2],
[2026-07-27T17:05:07.744Z] 'x': [12345, 12355],
[2026-07-27T17:05:07.744Z] 'y': [2, 1],
[2026-07-27T17:05:07.744Z] 'text': ['500M', '800M']
[2026-07-27T17:05:07.744Z] })
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] tests/test_HeightChartBuilder.py:74:
[2026-07-27T17:05:07.744Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2026-07-27T17:05:07.744Z] tests/test_HeightChartBuilder.py:55: in _assert_scatterpoint
[2026-07-27T17:05:07.744Z] self.assertEqual({
[2026-07-27T17:05:07.744Z] E AssertionError: {'col[16 chars]'sizeref': 319999.99964444444, 'size': [499999[51 chars]cle'} != {'col[16 chars]'size': {'dtype': 'i4', 'bdata': '/WTNHQIIry8=[69 chars]cle'}
[2026-07-27T17:05:07.744Z] E {'color': '#008A00',
[2026-07-27T17:05:07.744Z] E - 'size': [499999997, 800000002],
[2026-07-27T17:05:07.744Z] E + 'size': {'bdata': '/WTNHQIIry8=', 'dtype': 'i4'},
[2026-07-27T17:05:07.744Z] E 'sizemode': 'area',
[2026-07-27T17:05:07.744Z] E 'sizeref': 319999.99964444444,
[2026-07-27T17:05:07.744Z] E 'symbol': 'circle'}
[2026-07-27T17:05:07.744Z] __ VersionChartBuilderTest.test_can_create_count_chart_associated_with_power ___
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] self = <tests.test_VersionChartBuilder.VersionChartBuilderTest testMethod=test_can_create_count_chart_associated_with_power>
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] def test_can_create_count_chart_associated_with_power(self):
[2026-07-27T17:05:07.744Z] # Act:
[2026-07-27T17:05:07.744Z] chart_json = self._create_chart('harvesting_count')
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] # Assert:
[2026-07-27T17:05:07.744Z] chart_data = chart_json['data']
[2026-07-27T17:05:07.744Z] self.assertEqual(3, len(chart_data))
[2026-07-27T17:05:07.744Z] > self._assert_bar_segment(chart_data, '0.0.3.3', {
[2026-07-27T17:05:07.744Z] 'x': [2 * 100 / 5, 1 * 100 / 3, 1 * 100 / 2],
[2026-07-27T17:05:07.744Z] 'text': ['40.00%<br>(2)', '33.33%<br>(1)', '50.00%<br>(1)']
[2026-07-27T17:05:07.744Z] })
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:146:
[2026-07-27T17:05:07.744Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:57: in _assert_bar_segment
[2026-07-27T17:05:07.744Z] self.assertEqual(expected['x'], chart_bar_segment['x'])
[2026-07-27T17:05:07.744Z] E AssertionError: [40.0, 33.333333333333336, 50.0] != {'dtype': 'f8', 'bdata': 'AAAAAAAARECrqqqqqqpAQAAAAAAAAElA'}
[2026-07-27T17:05:07.744Z] _ VersionChartBuilderTest.test_can_create_count_chart_unassociated_with_power __
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] self = <tests.test_VersionChartBuilder.VersionChartBuilderTest testMethod=test_can_create_count_chart_unassociated_with_power>
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] def test_can_create_count_chart_unassociated_with_power(self):
[2026-07-27T17:05:07.744Z] # Act:
[2026-07-27T17:05:07.744Z] chart_json = self._create_chart('node_count')
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] # Assert:
[2026-07-27T17:05:07.744Z] chart_data = chart_json['data']
[2026-07-27T17:05:07.744Z] self.assertEqual(3, len(chart_data))
[2026-07-27T17:05:07.744Z] > self._assert_bar_segment(chart_data, '0.0.3.3', {
[2026-07-27T17:05:07.744Z] 'x': [3 * 100 / 7, 2 * 100 / 4, 1 * 100 / 3],
[2026-07-27T17:05:07.744Z] 'text': ['42.86%<br>(3)', '50.00%<br>(2)', '33.33%<br>(1)']
[2026-07-27T17:05:07.744Z] })
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:168:
[2026-07-27T17:05:07.744Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:57: in _assert_bar_segment
[2026-07-27T17:05:07.744Z] self.assertEqual(expected['x'], chart_bar_segment['x'])
[2026-07-27T17:05:07.744Z] E AssertionError: [42.857142857142854, 50.0, 33.333333333333336] != {'dtype': 'f8', 'bdata': '27Zt27ZtRUAAAAAAAABJQKuqqqqqqkBA'}
[2026-07-27T17:05:07.744Z] ______ VersionChartBuilderTest.test_can_create_power_chart_with_threshold ______
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] self = <tests.test_VersionChartBuilder.VersionChartBuilderTest testMethod=test_can_create_power_chart_with_threshold>
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] def test_can_create_power_chart_with_threshold(self):
[2026-07-27T17:05:07.744Z] # Act:
[2026-07-27T17:05:07.744Z] chart_json = self._create_chart('voting_power', 67)
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] # Assert:
[2026-07-27T17:05:07.744Z] chart_data = chart_json['data']
[2026-07-27T17:05:07.744Z] self.assertEqual(3, len(chart_data))
[2026-07-27T17:05:07.744Z] > self._assert_bar_segment(chart_data, '0.0.3.3', {
[2026-07-27T17:05:07.744Z] 'x': [200 * 100 / 700, 0, 200 * 100 / 300],
[2026-07-27T17:05:07.744Z] 'text': ['28.57%<br>(200)', '0.00%<br>(0)', '66.67%<br>(200)']
[2026-07-27T17:05:07.744Z] })
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:75:
[2026-07-27T17:05:07.744Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:57: in _assert_bar_segment
[2026-07-27T17:05:07.744Z] self.assertEqual(expected['x'], chart_bar_segment['x'])
[2026-07-27T17:05:07.744Z] E AssertionError: [28.571428571428573, 0, 66.66666666666667] != {'dtype': 'f8', 'bdata': 'JUmSJEmSPEAAAAAAAAAAAKuqqqqqqlBA'}
[2026-07-27T17:05:07.744Z] _____ VersionChartBuilderTest.test_can_create_power_chart_without_allnodes _____
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] self = <tests.test_VersionChartBuilder.VersionChartBuilderTest testMethod=test_can_create_power_chart_without_allnodes>
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] def test_can_create_power_chart_without_allnodes(self):
[2026-07-27T17:05:07.744Z] # Act:
[2026-07-27T17:05:07.744Z] chart_json = self._create_chart('harvesting_power', allnodes_host='allnodes.dead')
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] # Assert:
[2026-07-27T17:05:07.744Z] chart_data = chart_json['data']
[2026-07-27T17:05:07.744Z] self.assertEqual(3, len(chart_data))
[2026-07-27T17:05:07.744Z] > self._assert_bar_segment(chart_data, '0.0.3.3', {
[2026-07-27T17:05:07.744Z] 'y': ['All', 'Ex All Nodes'],
[2026-07-27T17:05:07.744Z] 'x': [1600 * 100 / 3100, 1600 * 100 / 3100],
[2026-07-27T17:05:07.744Z] 'text': ['51.61%<br>(1,600)', '51.61%<br>(1,600)']
[2026-07-27T17:05:07.744Z] })
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:121:
[2026-07-27T17:05:07.744Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:57: in _assert_bar_segment
[2026-07-27T17:05:07.744Z] self.assertEqual(expected['x'], chart_bar_segment['x'])
[2026-07-27T17:05:07.744Z] E AssertionError: [51.61290322580645, 51.61290322580645] != {'dtype': 'f8', 'bdata': 'zjnnnHPOSUDOOeecc85JQA=='}
[2026-07-27T17:05:07.744Z] ____ VersionChartBuilderTest.test_can_create_power_chart_without_threshold _____
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] self = <tests.test_VersionChartBuilder.VersionChartBuilderTest testMethod=test_can_create_power_chart_without_threshold>
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] def test_can_create_power_chart_without_threshold(self):
[2026-07-27T17:05:07.744Z] # Act:
[2026-07-27T17:05:07.744Z] chart_json = self._create_chart('harvesting_power')
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] # Assert:
[2026-07-27T17:05:07.744Z] chart_data = chart_json['data']
[2026-07-27T17:05:07.744Z] self.assertEqual(3, len(chart_data))
[2026-07-27T17:05:07.744Z] > self._assert_bar_segment(chart_data, '0.0.3.3', {
[2026-07-27T17:05:07.744Z] 'x': [1600 * 100 / 3100, 1300 * 100 / 2000, 300 * 100 / 1100],
[2026-07-27T17:05:07.744Z] 'text': ['51.61%<br>(1,600)', '65.00%<br>(1,300)', '27.27%<br>(300)']
[2026-07-27T17:05:07.744Z] })
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:99:
[2026-07-27T17:05:07.744Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[2026-07-27T17:05:07.744Z] tests/test_VersionChartBuilder.py:57: in _assert_bar_segment
[2026-07-27T17:05:07.744Z] self.assertEqual(expected['x'], chart_bar_segment['x'])
[2026-07-27T17:05:07.744Z] E AssertionError: [51.61290322580645, 65.0, 27.272727272727273] != {'dtype': 'f8', 'bdata': 'zjnnnHPOSUAAAAAAAEBQQEYXXXTRRTtA'}
[2026-07-27T17:05:07.744Z] =============================== warnings summary ===============================
[2026-07-27T17:05:07.744Z] tests/test_NetworkConnector.py: 10 warnings
[2026-07-27T17:05:07.744Z] /home/ubuntu/venv/lib/python3.12/site-packages/zenlog/__init__.py:49: DeprecationWarning: The 'warn' method is deprecated, use 'warning' instead
[2026-07-27T17:05:07.744Z] self.logger.warn(line,
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:07.744Z] tests/test_NetworkRepository.py: 42 warnings
[2026-07-27T17:05:07.744Z] tests/test_RoutesFacade.py: 182 warnings
[2026-07-27T17:05:07.744Z] tests/test_app.py: 290 warnings
[2026-07-27T17:05:07.744Z] /home/ubuntu/jenkins/workspace/explorer/nodewatch/nodewatch/NetworkRepository.py:177: DeprecationWarning: NotImplemented should not be used in a boolean context
[2026-07-27T17:05:07.744Z] self.node_descriptors = list(filter(None.__ne__, [
[2026-07-27T17:05:07.744Z]
[2026-07-27T17:05:08.015Z] -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
[2026-07-27T17:05:08.015Z] =========================== short test summary info ============================
[2026-07-27T17:05:08.015Z] FAILED tests/test_HeightChartBuilder.py::HeightChartBuilderTest::test_can_create_power_chart_with_min_cluster_size - AssertionError: {'col[16 chars]'sizeref': 319999.99964444444, 'size': [499999[40 chars]cle'} != {'col[16 chars]'size': {'dtype': 'i4', 'bdata': '/WTNHQ=='}, [65 chars]cle'}
[2026-07-27T17:05:08.015Z] {'color': '#008A00',
[2026-07-27T17:05:08.015Z] - 'size': [499999997],
[2026-07-27T17:05:08.015Z] + 'size': {'bdata': '/WTNHQ==', 'dtype': 'i4'},
[2026-07-27T17:05:08.015Z] 'sizemode': 'area',
[2026-07-27T17:05:08.015Z] 'sizeref': 319999.99964444444,
[2026-07-27T17:05:08.015Z] 'symbol': 'circle'}
[2026-07-27T17:05:08.015Z] FAILED tests/test_HeightChartBuilder.py::HeightChartBuilderTest::test_can_create_power_chart_without_min_cluster_size - AssertionError: {'col[16 chars]'sizeref': 319999.99964444444, 'size': [499999[51 chars]cle'} != {'col[16 chars]'size': {'dtype': 'i4', 'bdata': '/WTNHQIIry8=[69 chars]cle'}
[2026-07-27T17:05:08.015Z] {'color': '#008A00',
[2026-07-27T17:05:08.015Z] - 'size': [499999997, 800000002],
[2026-07-27T17:05:08.015Z] + 'size': {'bdata': '/WTNHQIIry8=', 'dtype': 'i4'},
[2026-07-27T17:05:08.015Z] 'sizemode': 'area',
[2026-07-27T17:05:08.015Z] 'sizeref': 319999.99964444444,
[2026-07-27T17:05:08.015Z] 'symbol': 'circle'}
[2026-07-27T17:05:08.015Z] FAILED tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_count_chart_associated_with_power - AssertionError: [40.0, 33.333333333333336, 50.0] != {'dtype': 'f8', 'bdata': 'AAAAAAAARECrqqqqqqpAQAAAAAAAAElA'}
[2026-07-27T17:05:08.015Z] FAILED tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_count_chart_unassociated_with_power - AssertionError: [42.857142857142854, 50.0, 33.333333333333336] != {'dtype': 'f8', 'bdata': '27Zt27ZtRUAAAAAAAABJQKuqqqqqqkBA'}
[2026-07-27T17:05:08.015Z] FAILED tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_power_chart_with_threshold - AssertionError: [28.571428571428573, 0, 66.66666666666667] != {'dtype': 'f8', 'bdata': 'JUmSJEmSPEAAAAAAAAAAAKuqqqqqqlBA'}
[2026-07-27T17:05:08.015Z] FAILED tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_power_chart_without_allnodes - AssertionError: [51.61290322580645, 51.61290322580645] != {'dtype': 'f8', 'bdata': 'zjnnnHPOSUDOOeecc85JQA=='}
[2026-07-27T17:05:08.015Z] FAILED tests/test_VersionChartBuilder.py::VersionChartBuilderTest::test_can_create_power_chart_without_threshold - AssertionError: [51.61290322580645, 65.0, 27.272727272727273] != {'dtype': 'f8', 'bdata': 'zjnnnHPOSUAAAAAAAEBQQEYXXXTRRTtA'}
[2026-07-27T17:05:08.015Z] ================= 7 failed, 101 passed, 524 warnings in 9.78s ==================
Details
- Declarative: Checkout SCM (32 sec)
- setup environment (3.4 sec)
- CI pipeline (2 min 26 sec)
- display environment (2.6 sec)
- checkout (1.2 sec)
- setup docker environment (7.1 sec)
- verify conventional commit message (1.4 sec)
- setup lint (57 sec)
- run lint (22 sec)
- setup build (1.2 sec)
- run build (1.3 sec)
- setup tests (1.4 sec)
- run tests (15 sec)
Error: script returned exit code 1 - logs - run tests (examples) (1.5 sec)
- run tests (vectors) (1.4 sec)
- code coverage (1.3 sec)
- CD pipeline (4.3 sec)
- publish RC (1.3 sec)
- publish Release (1.2 sec)
- Declarative: Post Actions (1.6 sec)
Loading