Loading lib/galaxy/model/mapping.py +4 −3 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ from galaxy import model from galaxy.model.base import SharedModelMapping from galaxy.model.custom_types import ( JSONType, MetadataType, MutableJSONType, TrimmedString, UUIDType, Loading Loading @@ -248,7 +249,7 @@ model.HistoryDatasetAssociation.table = Table( Column("peek", TEXT, key="_peek"), Column("tool_version", TEXT), Column("extension", TrimmedString(64)), Column("metadata", JSONType, key="_metadata"), Column("metadata", MetadataType, key="_metadata"), Column("parent_id", Integer, ForeignKey("history_dataset_association.id"), nullable=True), Column("designation", TrimmedString(255)), Column("deleted", Boolean, index=True, default=False), Loading @@ -271,7 +272,7 @@ model.HistoryDatasetAssociationHistory.table = Table( Column("version", Integer), Column("name", TrimmedString(255)), Column("extension", TrimmedString(64)), Column("metadata", JSONType, key="_metadata"), Column("metadata", MetadataType, key="_metadata"), Column("extended_metadata_id", Integer, ForeignKey("extended_metadata.id"), index=True), ) Loading Loading @@ -527,7 +528,7 @@ model.LibraryDatasetDatasetAssociation.table = Table( Column("peek", TEXT, key="_peek"), Column("tool_version", TEXT), Column("extension", TrimmedString(64)), Column("metadata", JSONType, key="_metadata"), Column("metadata", MetadataType, key="_metadata"), Column("parent_id", Integer, ForeignKey("library_dataset_dataset_association.id"), nullable=True), Column("designation", TrimmedString(255)), Column("deleted", Boolean, index=True, default=False), Loading test/unit/data/test_metadata_limit.py 0 → 100644 +44 −0 Original line number Diff line number Diff line import pytest import galaxy.datatypes.registry as registry import galaxy.model.mapping as mapping from galaxy.model import ( custom_types, HistoryDatasetAssociation, set_datatypes_registry, ) METADATA_LIMIT = 500 @pytest.fixture(scope="module") def datatypes_registry(): r = registry.Registry() r.load_datatypes() set_datatypes_registry(r) @pytest.fixture def sa_session(datatypes_registry): custom_types.MAX_METADATA_VALUE_SIZE = METADATA_LIMIT return mapping.init("/tmp", "sqlite:///:memory:", create_tables=True).session def create_bed_data(sa_session, string_size): hda = HistoryDatasetAssociation(extension="bed") big_string = "0" * string_size sa_session.add(hda) hda.metadata.column_names = [big_string] assert hda.metadata.column_names sa_session.flush() return hda def test_hda_below_limit(sa_session): hda = create_bed_data(sa_session=sa_session, string_size=1) assert len(hda.metadata.column_names[0]) == 1 def test_hda_above_limit(sa_session): hda = create_bed_data(sa_session=sa_session, string_size=1000) assert not hda.metadata.column_names Loading
lib/galaxy/model/mapping.py +4 −3 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ from galaxy import model from galaxy.model.base import SharedModelMapping from galaxy.model.custom_types import ( JSONType, MetadataType, MutableJSONType, TrimmedString, UUIDType, Loading Loading @@ -248,7 +249,7 @@ model.HistoryDatasetAssociation.table = Table( Column("peek", TEXT, key="_peek"), Column("tool_version", TEXT), Column("extension", TrimmedString(64)), Column("metadata", JSONType, key="_metadata"), Column("metadata", MetadataType, key="_metadata"), Column("parent_id", Integer, ForeignKey("history_dataset_association.id"), nullable=True), Column("designation", TrimmedString(255)), Column("deleted", Boolean, index=True, default=False), Loading @@ -271,7 +272,7 @@ model.HistoryDatasetAssociationHistory.table = Table( Column("version", Integer), Column("name", TrimmedString(255)), Column("extension", TrimmedString(64)), Column("metadata", JSONType, key="_metadata"), Column("metadata", MetadataType, key="_metadata"), Column("extended_metadata_id", Integer, ForeignKey("extended_metadata.id"), index=True), ) Loading Loading @@ -527,7 +528,7 @@ model.LibraryDatasetDatasetAssociation.table = Table( Column("peek", TEXT, key="_peek"), Column("tool_version", TEXT), Column("extension", TrimmedString(64)), Column("metadata", JSONType, key="_metadata"), Column("metadata", MetadataType, key="_metadata"), Column("parent_id", Integer, ForeignKey("library_dataset_dataset_association.id"), nullable=True), Column("designation", TrimmedString(255)), Column("deleted", Boolean, index=True, default=False), Loading
test/unit/data/test_metadata_limit.py 0 → 100644 +44 −0 Original line number Diff line number Diff line import pytest import galaxy.datatypes.registry as registry import galaxy.model.mapping as mapping from galaxy.model import ( custom_types, HistoryDatasetAssociation, set_datatypes_registry, ) METADATA_LIMIT = 500 @pytest.fixture(scope="module") def datatypes_registry(): r = registry.Registry() r.load_datatypes() set_datatypes_registry(r) @pytest.fixture def sa_session(datatypes_registry): custom_types.MAX_METADATA_VALUE_SIZE = METADATA_LIMIT return mapping.init("/tmp", "sqlite:///:memory:", create_tables=True).session def create_bed_data(sa_session, string_size): hda = HistoryDatasetAssociation(extension="bed") big_string = "0" * string_size sa_session.add(hda) hda.metadata.column_names = [big_string] assert hda.metadata.column_names sa_session.flush() return hda def test_hda_below_limit(sa_session): hda = create_bed_data(sa_session=sa_session, string_size=1) assert len(hda.metadata.column_names[0]) == 1 def test_hda_above_limit(sa_session): hda = create_bed_data(sa_session=sa_session, string_size=1000) assert not hda.metadata.column_names