Beispiel #1
0
    def test_divide_csv_daily(self):
        """Test the divide_csv_daily method."""

        with tempfile.TemporaryDirectory() as td:
            filename = "storage_data.csv"
            file_path = f"{td}/{filename}"
            with patch("masu.external.downloader.ocp.ocp_report_downloader.pd"
                       ) as mock_pd:
                with patch(
                        "masu.external.downloader.ocp.ocp_report_downloader.utils.detect_type",
                        return_value=("storage_usage", None),
                ):
                    mock_report = {
                        "interval_start": [
                            "2020-01-01 00:00:00 +UTC",
                            "2020-01-02 00:00:00 +UTC"
                        ],
                        "persistentvolumeclaim_labels": ["label1", "label2"],
                    }
                    df = pd.DataFrame(data=mock_report)
                    mock_pd.read_csv.return_value = df
                    daily_files = divide_csv_daily(file_path, filename)
                    self.assertNotEqual([], daily_files)
                    self.assertEqual(len(daily_files), 2)
                    gen_files = [
                        "storage_usage.2020-01-01.csv",
                        "storage_usage.2020-01-02.csv"
                    ]
                    expected = [{
                        "filename": gen_file,
                        "filepath": f"{td}/{gen_file}"
                    } for gen_file in gen_files]
                    for expected_item in expected:
                        self.assertIn(expected_item, daily_files)
Beispiel #2
0
    def test_divide_csv_daily_failure(self):
        """Test the divide_csv_daily method throw error on reading CSV."""

        with tempfile.TemporaryDirectory() as td:
            filename = "storage_data.csv"
            file_path = f"{td}/{filename}"
            errorMsg = "CParserError: Error tokenizing data. C error: Expected 53 fields in line 1605634, saw 54"
            with patch("masu.external.downloader.ocp.ocp_report_downloader.pd"
                       ) as mock_pd:
                with patch(
                        "masu.external.downloader.ocp.ocp_report_downloader.utils.detect_type",
                        return_value=("storage_usage", None),
                ):
                    mock_pd.read_csv.side_effect = Exception(errorMsg)
                    with patch(
                            "masu.external.downloader.ocp.ocp_report_downloader.LOG.error"
                    ) as mock_debug:
                        with self.assertRaises(Exception):
                            divide_csv_daily(file_path, filename)
                        mock_debug.assert_called_once_with(
                            f"File {file_path} could not be parsed. Reason: {errorMsg}"
                        )