Skip to content

Tests

Tests #3

Manually triggered April 2, 2024 11:46
Status Failure
Total duration 2h 24m 5s
Artifacts 31

ci.yaml

on: workflow_dispatch
Build charm  /  ...  /  Get workflow version
8s
Build charm / Get workflow version / Get workflow version
Lint  /  Lint .github/workflows/
4s
Lint / Lint .github/workflows/
Lint  /  tox run -e lint
16s
Lint / tox run -e lint
Unit test charm
32s
Unit test charm
Build charm  /  Collect bases for charm | .
9s
Build charm / Collect bases for charm | .
Matrix: Build charm / build
Matrix: integration-test
Fit to window
Zoom out
Zoom in

Annotations

5 errors and 151 warnings
Integration test charm | 3.1.7 / ha_tests/test_self_healing.py | group 1
Process completed with exit code 1.
Integration test charm | 3.1.7 / test_tls.py | group 1
Process completed with exit code 1.
Integration test charm | 2.9.46 / ha_tests/test_self_healing.py | group 1
Process completed with exit code 1.
Integration test charm | 2.9.46 / test_db_admin.py | group 1
Process completed with exit code 1.
Integration test charm | 2.9.46 / test_tls.py | group 1
Process completed with exit code 1.
Unit test charm
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: codecov/codecov-action@v3. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
Integration test charm | 3.1.7 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 3.1.7 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_restore_cluster.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_backups.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_upgrade_from_stable.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_replication.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / ha_tests/test_self_healing.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_plugins.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_config.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / new_relations/test_new_relations.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_subordinates.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_password_rotation.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db_admin.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_charm.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_tls.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.
Integration test charm | 2.9.46 / test_db.py | group 1
Can't add secret mask for empty string in ##[add-mask] command.

Artifacts

Produced during runtime
Name Size
logs-intergration-test-charm-lxd-juju-2.9.46-ha_tests-test_replication.py-group-1 Expired
50.6 KB
logs-intergration-test-charm-lxd-juju-2.9.46-ha_tests-test_restore_cluster.py-group-1 Expired
55.5 KB
logs-intergration-test-charm-lxd-juju-2.9.46-ha_tests-test_self_healing.py-group-1 Expired
61.3 KB
logs-intergration-test-charm-lxd-juju-2.9.46-ha_tests-test_upgrade.py-group-1 Expired
38.1 KB
logs-intergration-test-charm-lxd-juju-2.9.46-ha_tests-test_upgrade_from_stable.py-group-1 Expired
36.9 KB
logs-intergration-test-charm-lxd-juju-2.9.46-new_relations-test_new_relations.py-group-1 Expired
127 KB
logs-intergration-test-charm-lxd-juju-2.9.46-test_backups.py-group-1 Expired
755 Bytes
logs-intergration-test-charm-lxd-juju-2.9.46-test_charm.py-group-1 Expired
85.6 KB
logs-intergration-test-charm-lxd-juju-2.9.46-test_config.py-group-1 Expired
7.08 KB
logs-intergration-test-charm-lxd-juju-2.9.46-test_db.py-group-1 Expired
249 KB
logs-intergration-test-charm-lxd-juju-2.9.46-test_db_admin.py-group-1 Expired
111 KB
logs-intergration-test-charm-lxd-juju-2.9.46-test_password_rotation.py-group-1 Expired
29.6 KB
logs-intergration-test-charm-lxd-juju-2.9.46-test_plugins.py-group-1 Expired
14.2 KB
logs-intergration-test-charm-lxd-juju-2.9.46-test_subordinates.py-group-1 Expired
761 Bytes
logs-intergration-test-charm-lxd-juju-2.9.46-test_tls.py-group-1 Expired
36.9 KB
logs-intergration-test-charm-lxd-juju-3.1.7-ha_tests-test_replication.py-group-1 Expired
49.2 KB
logs-intergration-test-charm-lxd-juju-3.1.7-ha_tests-test_restore_cluster.py-group-1 Expired
58.4 KB
logs-intergration-test-charm-lxd-juju-3.1.7-ha_tests-test_self_healing.py-group-1 Expired
61.7 KB
logs-intergration-test-charm-lxd-juju-3.1.7-ha_tests-test_upgrade.py-group-1 Expired
35.7 KB
logs-intergration-test-charm-lxd-juju-3.1.7-ha_tests-test_upgrade_from_stable.py-group-1 Expired
27.6 KB
logs-intergration-test-charm-lxd-juju-3.1.7-new_relations-test_new_relations.py-group-1 Expired
128 KB
logs-intergration-test-charm-lxd-juju-3.1.7-test_backups.py-group-1 Expired
774 Bytes
logs-intergration-test-charm-lxd-juju-3.1.7-test_charm.py-group-1 Expired
88.7 KB
logs-intergration-test-charm-lxd-juju-3.1.7-test_config.py-group-1 Expired
7.68 KB
logs-intergration-test-charm-lxd-juju-3.1.7-test_db.py-group-1 Expired
211 KB
logs-intergration-test-charm-lxd-juju-3.1.7-test_db_admin.py-group-1 Expired
108 KB
logs-intergration-test-charm-lxd-juju-3.1.7-test_password_rotation.py-group-1 Expired
28.6 KB
logs-intergration-test-charm-lxd-juju-3.1.7-test_plugins.py-group-1 Expired
12.5 KB
logs-intergration-test-charm-lxd-juju-3.1.7-test_subordinates.py-group-1 Expired
771 Bytes
logs-intergration-test-charm-lxd-juju-3.1.7-test_tls.py-group-1 Expired
30.4 KB
packed-charm-cache-true-.-base-0 Expired
24.8 MB