コード例 #1
0
    def test_can_unload_this_format_true(self, mock_RecordsUnloadPlan,
                                         mock_redshift_unload_options):
        mock_db = Mock(name='db')
        mock_table = Mock(name='table')

        mock_target_records_format = Mock(name='target_records_format',
                                          spec=DelimitedRecordsFormat)
        mock_unload_plan = mock_RecordsUnloadPlan.return_value
        mock_unload_plan.records_format = mock_target_records_format

        mock_processing_instructions = mock_unload_plan.processing_instructions
        mock_s3_temp_base_loc = Mock(name='s3_temp_base_loc')
        mock_target_records_format.hints = {}

        redshift_unloader =\
            RedshiftUnloader(db=mock_db,
                             table=mock_table,
                             s3_temp_base_loc=mock_s3_temp_base_loc)
        out = redshift_unloader.can_unload_this_format(
            mock_target_records_format)
        mock_RecordsUnloadPlan.\
            assert_called_with(records_format=mock_target_records_format)
        mock_redshift_unload_options.\
            assert_called_with(set(),
                               mock_unload_plan.records_format,
                               mock_processing_instructions.fail_if_cant_handle_hint)
        self.assertEqual(True, out)
コード例 #2
0
    def test_can_unload_to_scheme_file_without_temp_bucket_true(self):
        mock_db = Mock(name='db')
        mock_table = Mock(name='table')

        redshift_unloader =\
            RedshiftUnloader(db=mock_db,
                             table=mock_table,
                             s3_temp_base_loc=None)
        self.assertFalse(redshift_unloader.can_unload_to_scheme('file'))
コード例 #3
0
    def test_can_unload_to_scheme_s3_true(self):
        mock_db = Mock(name='db')
        mock_table = Mock(name='table')

        redshift_unloader =\
            RedshiftUnloader(db=mock_db,
                             table=mock_table,
                             s3_temp_base_loc=None)
        self.assertTrue(redshift_unloader.can_unload_to_scheme('s3'))
コード例 #4
0
    def test_temporary_unloadable_directory_loc_unset(self):
        mock_db = Mock(name='db')
        mock_table = Mock(name='table')
        mock_s3_temp_base_loc = None

        redshift_unloader =\
            RedshiftUnloader(db=mock_db,
                             table=mock_table,
                             s3_temp_base_loc=mock_s3_temp_base_loc)
        with self.assertRaises(NoTemporaryBucketConfiguration):
            with redshift_unloader.temporary_unloadable_directory_loc():
                pass
コード例 #5
0
    def test_temporary_unloadable_directory_loc(self):
        mock_db = Mock(name='db')
        mock_table = Mock(name='table')
        mock_s3_temp_base_loc = MagicMock(name='s3_temp_base_loc')

        redshift_unloader =\
            RedshiftUnloader(db=mock_db,
                             table=mock_table,
                             s3_temp_base_loc=mock_s3_temp_base_loc)
        with redshift_unloader.temporary_unloadable_directory_loc() as loc:
            self.assertEqual(
                loc, mock_s3_temp_base_loc.temporary_directory.return_value.
                __enter__.return_value)
コード例 #6
0
    def test_known_supported_records_formats_for_unload(self):
        mock_db = Mock(name='db')
        mock_table = Mock(name='table')
        mock_s3_temp_base_loc = Mock(name='s3_temp_base_loc')

        redshift_unloader =\
            RedshiftUnloader(db=mock_db,
                             table=mock_table,
                             s3_temp_base_loc=mock_s3_temp_base_loc)
        formats = redshift_unloader.known_supported_records_formats_for_unload(
        )

        self.assertEqual([f.__class__ for f in formats],
                         [DelimitedRecordsFormat, ParquetRecordsFormat])