def test_rt_table_with_owner(self) -> None: user = Fixtures.next_user(is_active=True) self.get_proxy().put_user(data=user) application = Fixtures.next_application(application_id=user.user_id) expected = Fixtures.next_table(application=application) self.get_proxy().put_table(table=expected) actual: Table = self.get_proxy().get_table( table_uri=checkNotNone(expected.key)) self.assertEqual(user.user_id, actual.owners[0].user_id)
def test_rt_table_with_non_existent_app(self) -> None: application = Fixtures.next_application() # purposefully don't insert application expected_table = Fixtures.next_table(application=application) self.get_proxy().put_table(table=expected_table) actual_table: Table = self.get_proxy().get_table( table_uri=checkNotNone(expected_table.key)) self.assertEqual(actual_table.table_writer, None) self.assertEqual(actual_table.owners, [])
def test_rt_table(self) -> None: """ it'd be nice to check that the result could be deserialized as a client of the metadata_service would """ expected = Fixtures.next_table() expected.description = '"hello!" said no one' expected.tags.sort() self.get_proxy().put_table(table=expected) actual: Table = self.get_proxy().get_table( table_uri=checkNotNone(expected.key)) actual.last_updated_timestamp = None actual.tags.sort() self.assertEqual(expected, actual)
def test_get_latest_updated_ts(self) -> None: application = Fixtures.next_application() self.get_proxy().put_app(data=application) table = Fixtures.next_table(application=application) table_uri: str = checkNotNone(table.key) self.get_proxy().put_table(table=table) res = self.get_proxy().get_latest_updated_ts() self.assertEqual(type(res), int) actual: Table = self.get_proxy().get_table(table_uri=table_uri) self.assertEqual(actual.last_updated_timestamp, res) # try posting the same table again and make sure the timestamp updates time.sleep(1) self.get_proxy().put_table(table=table) res2 = self.get_proxy().get_latest_updated_ts() self.assertNotEqual(res, res2) actual = self.get_proxy().get_table(table_uri=table_uri) self.assertEqual(actual.last_updated_timestamp, res2)
def test_tag_rt(self) -> None: table = Fixtures.next_table() self.get_proxy().put_table(table=table) test_tag_detail = TagDetail(tag_name='a', tag_count=1) self.get_proxy().add_tag(id=checkNotNone(table.key), tag=test_tag_detail.tag_name, tag_type='default', resource_type=ResourceType.Table) tags_added = self.get_proxy().get_tags() self.assertIn(test_tag_detail, tags_added) self.get_proxy().delete_tag(id=checkNotNone(table.key), tag=test_tag_detail.tag_name, tag_type='default', resource_type=ResourceType.Table) tags_removed = self.get_proxy().get_tags() self.assertNotIn(test_tag_detail, tags_removed) relations = self.get_relationship(node_type1='Table', node_key1=checkNotNone(table.key), node_type2='Tag', node_key2=test_tag_detail.tag_name) self.assertEqual(0, len(relations))
def test_get_popular_tables(self) -> None: application = Fixtures.next_application() self.get_proxy().put_app(data=application) # Add 10 tables tables: List[Table] = [ Fixtures.next_table(application=application) for _ in range(10) ] self.get_proxy().post_tables(tables=tables) user = Fixtures.next_user() self.get_proxy().put_user(data=user) # add reads to 6 of them, expecting that only the top five will be "popular" expected_popular_tables = [] reads = 0 for i in range(6): table_name: str = checkNotNone(tables[i].name) table_uri: str = checkNotNone(tables[i].key) self.get_proxy().add_read_count(table_uri=table_uri, user_id=f'{user.user_id}', read_count=reads) if reads > 0: expected_popular_tables.append(table_name) reads += 1000 # ensure popular tables returns those 5 we added actual_popular_tables = self.get_proxy().get_popular_tables( num_entries=5) self.assertEqual(len(actual_popular_tables), 5) popular_tables = [] for table in tables: if table.name in expected_popular_tables: popular_tables.append( PopularTable(database=table.database, cluster=table.cluster, schema=table.schema, name=table.name, description=table.description)) self.assertEqual(sorted(actual_popular_tables), sorted(popular_tables))
def test_owner_rt(self) -> None: application = Fixtures.next_application() self.get_proxy().put_app(data=application) table = Fixtures.next_table(application=application) self.get_proxy().put_table(table=table) user = Fixtures.next_user() self.get_proxy().put_user(data=user) user_id: str = user.user_id or 'test' self.get_proxy().add_owner(table_uri=checkNotNone(table.key), owner=user_id) table = self.get_proxy().get_table(table_uri=checkNotNone(table.key)) self.assertEqual([user_id], [u.user_id for u in table.owners]) self.get_proxy().delete_owner(table_uri=checkNotNone(table.key), owner=user_id) no_owner_table: Table = self.get_proxy().get_table( table_uri=checkNotNone(table.key)) self.assertEqual([], no_owner_table.owners) relations = self.get_relationship(node_type1='User', node_key1=user_id, node_type2='Table', node_key2=checkNotNone(table.key)) self.assertEqual(0, len(relations))