Skip to content

Commit

Permalink
Tests for writing data into musicbrainz schema tables
Browse files Browse the repository at this point in the history
  • Loading branch information
rsh7 committed Jul 21, 2018
1 parent 711866c commit 69e4bb1
Show file tree
Hide file tree
Showing 2 changed files with 259 additions and 0 deletions.
7 changes: 7 additions & 0 deletions db/import_mb_data.py
Expand Up @@ -7,6 +7,13 @@

logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO)


def load_musicbrainz_schema_data(connection, table_name):
query = text("""SELECT * FROM musicbrainz.%s""" % (table_name))
result = connection.execute(query)
return result.fetchall()


def load_artist_credit(connection, MB_release_data, MB_release_group_data, MB_track_data, MB_artist_credit_name_data, artist_credit_from_recording):
"""Fetch artist_credit table data from MusicBrainz database for the
recording MBIDs in AcousticBrainz database.
Expand Down
252 changes: 252 additions & 0 deletions db/test/test_import_mb_data.py
@@ -0,0 +1,252 @@
from db.testing import DatabaseTestCase, TEST_DATA_PATH, gid_types
from brainzutils import musicbrainz_db
import db
import db.exceptions
import db.import_mb_data
import os.path
import mock
import uuid
import datetime
import psycopg2


class DataMusicBrainzDBTestCase(DatabaseTestCase):

def setUp(self):
super(DataMusicBrainzDBTestCase, self).setUp()


def test_write_to_musicbrainz_schema_tables(self):
# artist_credit
data = [(1418, u'Tangerine Dream', 1, 13729, datetime.datetime(2011, 5, 16, 16, 32, 11, 963929, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))),
(399541, u'Taylor Swift', 1, 3139, datetime.datetime(2011, 5, 16, 16, 32, 11, 963929, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))),
(73502, u'Georg Friedrich Handel', 1, 27041, datetime.datetime(2011, 5, 16, 16, 32, 11, 963929, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))),
(831440, u'George Frideric Handel', 1, 24955, datetime.datetime(2011, 6, 19, 7, 36, 56, 8576, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))),
(847994, u'Handel', 1, 717, datetime.datetime(2011, 8, 11, 19, 43, 1, 279447, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))),
(6747, u'Tampa Red', 1, 1600, datetime.datetime(2011, 5, 16, 16, 32, 11, 963929, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)))
]

with db.engine.begin() as connection:
db.import_mb_data.write_artist_credit(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'artist_credit'))

# area_type
data = [(1, u'Country', None, 1, u'Country is used for areas included (or previously included) in ISO 3166-1, e.g. United States.', uuid.UUID('06dd0ae4-8c74-30bb-b43d-95dcedf961de')),
(3, u'City', None, 3, u'City is used for settlements of any size, including towns and villages.', uuid.UUID('6fd8f29a-3d0a-32fc-980d-ea697b69da78'))
]

with db.engine.begin() as connection:
db.import_mb_data.write_area_type(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'area_type'))

# area
data = [(24482, uuid.UUID('915a5576-b30c-4160-93cd-e1185cebb6ac'), u'Smithville', 3, 0,
datetime.datetime(2013, 11, 14, 1, 33, 0, 377353, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), None, None, None, None, None, None, False, u''),
(222, uuid.UUID('489ce91b-6658-3307-9877-795b68554c98'), u'United States', 1, 0,
datetime.datetime(2013, 6, 15, 18, 6, 39, 593230, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), None, None, None, None, None, None, False, u''),
(5099, uuid.UUID('29a709d8-0320-493e-8d0c-f2c386662b7f'), u'Chicago', 3, 0,
datetime.datetime(2013, 5, 24, 20, 27, 13, 405462, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), None, None, None, None, None, None, False, u'')
]

with db.engine.begin() as connection:
db.import_mb_data.write_area(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'area'))

# artist_type
data = [(1, u'Person', None, 1, None, uuid.UUID('b6e035f4-3ce9-331c-97df-83397230b0df')),
(2, u'Group', None, 2, None, uuid.UUID('e431f5f6-b5d2-343d-8b36-72607fffb74b'))
]

with db.engine.begin() as connection:
db.import_mb_data.write_artist_type(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'artist_type'))

# gender
data = [(1, u'Male', None, 1, None, uuid.UUID('36d3d30a-839d-3eda-8cb3-29be4384e4a9')),
(2, u'Female', None, 2, None, uuid.UUID('93452b5a-a947-30c8-934f-6a4056b151c2'))
]

with db.engine.begin() as connection:
db.import_mb_data.write_gender(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'gender'))

# artist
data = [(6747, uuid.UUID('1b62df85-00d2-464f-81bc-a5c0cdcad278'), u'Tampa Red', u'Tampa Red', 1904, 1, 8, 1981, 3, 19, 1, 222, 1, u'', 0,
datetime.datetime(2016, 8, 21, 5, 0, 58, 662928, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), True, 24482, 5099)
]

with db.engine.begin() as connection:
db.import_mb_data.write_artist(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'artist'))

# artist_gid_redirect
data = [(uuid.UUID('6873559d-8cb9-494d-9f78-4c1eeab1f851'), 6747, datetime.datetime(2016, 3, 13, 23, 0, 21, 981437, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)))]

with db.engine.begin() as connection:
db.import_mb_data.write_artist_gid_redirect(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'artist_gid_redirect'))

# artist_credit_name
data = [(6747, 0, 6747, u'Tampa Red', u'')]

with db.engine.begin() as connection:
db.import_mb_data.write_artist_credit_name(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'artist_credit_name'))

# recording
data = [(11768371, uuid.UUID('d51cf7fb-97e1-4070-a40b-b03707f91c92'), u'(Rinaldo, HWV 7: Act I. "Combatti da forte" (Almirena)', 73502, 203000, u'', 0, None, False),
(8598260, uuid.UUID('9086b742-358b-4f73-9a14-84cb1a9ce4ce'), u'Love Story', 399541, 235000, u'', 0, None, False)
]

with db.engine.begin() as connection:
db.import_mb_data.write_recording(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'recording'))

# recording_gid_redirect
data = [(uuid.UUID('05e1ab2e-f54f-464b-a1fd-fcc6bceaaa20'), 8598260, datetime.datetime(2011, 5, 16, 16, 8, 20, 288158, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)))]

with db.engine.begin() as connection:
db.import_mb_data.write_recording_gid_redirect(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'recording_gid_redirect'))

# release_group_primary_type
data = [(1, u'Album', None, 1, None, uuid.UUID('f529b476-6e62-324f-b0aa-1f3e33d313fc'))]

with db.engine.begin() as connection:
db.import_mb_data.write_release_group_primary_type(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'release_group_primary_type'))

# release_group
data = [(631361, uuid.UUID('2ec35fc4-6797-3324-b775-9a3df3d4723a'), u'The Masterworks', 73502, 1, u'', 0,
datetime.datetime(2012, 5, 15, 19, 1, 58, 718541, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None))),
(617137, uuid.UUID('c834f5ee-d362-3da7-966b-8915a86e808c'), u'1981-08-29: Tangerine Tree Volume 53: Berlin 1981', 1418, 1, u'', 0,
datetime.datetime(2016, 9, 21, 23, 0, 26, 94608, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)))
]

with db.engine.begin() as connection:
db.import_mb_data.write_release_group(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'release_group'))

# release_group_gid_redirect
data = [(uuid.UUID('21f0a3e8-c37b-33a1-b769-daf16e4e252e'), 617137, datetime.datetime(2011, 5, 16, 14, 57, 6, 530063, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)))]

with db.engine.begin() as connection:
db.import_mb_data.write_release_group_gid_redirect(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'release_group_gid_redirect'))

# language
data = [(120, u'eng', u'eng', u'en', u'English', 2, None)]

with db.engine.begin() as connection:
db.import_mb_data.write_language(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'language'))

# release_status
data = [(1, u'Official', None, 1, u'Any release officially sanctioned by the artist and/or their record company. Most releases will fit into this category.',
uuid.UUID('4e304316-386d-3409-af2e-78857eec5cfe'))]

with db.engine.begin() as connection:
db.import_mb_data.write_release_status(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'release_status'))

# release_packaging
data = [(1, u'Jewel Case', None, 0, u'The traditional CD case, made of hard, brittle plastic.',
uuid.UUID('ec27701a-4a22-37f4-bfac-6616e0f9750a'))
]

with db.engine.begin() as connection:
db.import_mb_data.write_release_packaging(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'release_packaging'))

# script
data = [(28, u'Latn', u'215', u'Latin', 4)]

with db.engine.begin() as connection:
db.import_mb_data.write_script(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'script'))

# release
data = [(692283, uuid.UUID('a830f892-6be0-35f0-a392-b91d89d89a94'), u'The Masterworks', 847994, 631361, 1, None, 120, 28, u'5028421923901', u'', 0, -1,
datetime.datetime(2018, 5, 13, 11, 0, 22, 832493, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)))
]

with db.engine.begin() as connection:
db.import_mb_data.write_release(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'release'))

# release_gid_redirect
data = [(uuid.UUID('03c44c5d-cbe5-32b2-af20-376a30fd98a0'), 692283, datetime.datetime(2011, 5, 16, 15, 59, 0, 785958, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)))]

with db.engine.begin() as connection:
db.import_mb_data.write_release_gid_redirect(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'release_gid_redirect'))

# medium_format
data = [(1, u'CD', None, 0, 1982, True, None, uuid.UUID('9712d52a-4509-3d4b-a1a2-67c88c643e31'))]

with db.engine.begin() as connection:
db.import_mb_data.write_medium_format(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'medium_format'))

# medium
data = [(1089027, 692283, 20, 1, u'Rinaldo, Part 1', 0, datetime.datetime(2011, 10, 24, 21, 0, 13, 19209, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), 21)]

with db.engine.begin() as connection:
db.import_mb_data.write_medium(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'medium'))

# track
data = [(11261020, uuid.UUID('e0537cb9-4720-3eb3-a07a-d8a7477519ea'), 11768371, 1089027, 5, u'5', u'Rinaldo, HWV 7: Act I. "Combatti da forte" (Almirena)',
831440, 203000, 0, datetime.datetime(2013, 7, 13, 11, 0, 38, 285946, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)), False)]

with db.engine.begin() as connection:
db.import_mb_data.write_track(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'track'))

# track_gid_redirect
data = [(uuid.UUID('67a0d0cd-fd61-328d-80a2-ca888c5fd15c'), 11261020, datetime.datetime(2014, 10, 15, 0, 0, 9, 772435, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=0, name=None)))]

with db.engine.begin() as connection:
db.import_mb_data.write_track_gid_redirect(connection, data)
self.assertEqual(data, db.import_mb_data.load_musicbrainz_schema_data(connection, 'track_gid_redirect'))


# def test_write_artist_type(self):

# def test_write_area_type(self):

# def test_write_release_status(self):

# def test_write_release_group_primary_type(self):

# def test_write_medium_format(self):

# def test_write_release_packaging(self):

# def test_write_language(self):

# def test_write_script(self):

# def test_write_gender(self):

# def test_write_area_type_and_area(self):

# def test_write_artist_type_and_artist_and_artist_gid_redirect(self):

# def test_write_artist_credit_name(self):

# def test_write_artist_gid_redirect(self):

# def test_write_recording(sel

# def test_write_release(self):

# def test_write_release_gid_redirect(self):

# def test_write_release_group_gid_redirect(self):

# def test_write_track(self):

# def test_write_track_gid_redirect(self):

# def test_write_medium(self):

0 comments on commit 69e4bb1

Please sign in to comment.