コード例 #1
0
ファイル: test_ocp_generator.py プロジェクト: dccurtis/nise
    def test_update_pod_data_usage_lt_request(self):
        """Test that _update_pod_data keeps usage <= limit <= request."""
        pods = self.attributes.get("nodes")[0].get("namespaces")[0].get("pods")
        kwargs = {
            "report_type": "test_report",
            "cpu_usage": self._usage_dict(),
            "mem_usage_gig": self._usage_dict(),
            "pod_seconds": 86400,
            "pod": pods[0],
        }

        generator = OCPGenerator(self.two_hours_ago, self.now)
        in_row = generator._init_data_row(self.two_hours_ago,
                                          self.now,
                                          report_type=OCP_POD_USAGE)
        out_row = generator._update_pod_data(copy(in_row), self.two_hours_ago,
                                             self.now, **kwargs)

        for x in ["cpu_core", "memory_byte"]:
            with self.subTest(row=out_row):
                with self.subTest(x=x):
                    self.assertLessEqual(
                        out_row.get(f"pod_usage_{x}_seconds"),
                        out_row.get(f"pod_request_{x}_seconds"))
                    self.assertLessEqual(out_row.get(f"pod_usage_{x}_seconds"),
                                         out_row.get(f"pod_limit_{x}_seconds"))
                    self.assertLessEqual(
                        out_row.get(f"pod_limit_{x}_seconds"),
                        out_row.get(f"pod_request_{x}_seconds"))
コード例 #2
0
ファイル: test_ocp_generator.py プロジェクト: dccurtis/nise
    def test_update_storage_data(self):
        """Test that _update_storage_data updates storage data."""
        kwargs = {
            "volume_claim_usage_gig":
            self._usage_dict(),
            "vc_capacity":
            self.fake.pyint(1, 100),
            "namespace":
            self.fake.word(),
            "pod":
            self.fake.word(),
            "volume_claim":
            self.fake.uuid4(),
            "volume_name":
            self.fake.word(),
            "storage_class":
            self.fake.word(),
            "volume_request":
            self.fake.pyint(1, 100),
            "volume_labels": (
                f"label_{self.fake.word()}:{self.fake.word()}",
                f"|label_{self.fake.word()}:{self.fake.word()}",
            ),
            "volume_claim_labels": (
                f"label_{self.fake.word()}:{self.fake.word()}",
                f"|label_{self.fake.word()}:{self.fake.word()}",
            ),
        }
        changed = {
            "namespace",
            "pod",
            "persistentvolumeclaim",
            "persistentvolume",
            "storageclass",
            "persistentvolumeclaim_capacity_bytes",
            "persistentvolumeclaim_capacity_byte_seconds",
            "volume_request_storage_byte_seconds",
            "persistentvolume_labels",
            "persistentvolumeclaim_labels",
            "persistentvolumeclaim_usage_byte_seconds",
        }

        generator = OCPGenerator(self.two_hours_ago, self.now)
        in_row = generator._init_data_row(self.two_hours_ago,
                                          self.now,
                                          report_type=OCP_STORAGE_USAGE)
        out_row = generator._update_storage_data(copy(in_row),
                                                 self.two_hours_ago, self.now,
                                                 **kwargs)

        for key in changed:
            with self.subTest(key=key):
                if key in kwargs:
                    self.assertEqual(out_row.get(key), kwargs.get(key))
                self.assertNotEqual(out_row.get(key), in_row.get(key))

        for key in list(set(out_row.keys()) - changed):
            with self.subTest(key=key):
                self.assertIsNotNone(out_row.get(key))
コード例 #3
0
    def test_init_data_row(self):
        """Test that init_data_row initializes a row of data."""
        generator = OCPGenerator(self.two_hours_ago, self.now, self.attributes)

        for report_type, columns in [
            (OCP_POD_USAGE, OCP_POD_USAGE_COLUMNS),
            (OCP_NODE_LABEL, OCP_NODE_LABEL_COLUMNS),
            (OCP_STORAGE_USAGE, OCP_STORAGE_COLUMNS),
        ]:
            with self.subTest(report_type=report_type):
                row = generator._init_data_row(self.two_hours_ago,
                                               self.now,
                                               report_type=report_type)
                self.assertIsInstance(row, dict)
                self.assertEqual(list(row.keys()), list(columns))
コード例 #4
0
ファイル: test_ocp_generator.py プロジェクト: dccurtis/nise
    def test_update_storage_data_usage_lt_request(self):
        """Test that _update_storge_data keeps usage <= capacity <= request."""
        kwargs = {
            "volume_claim_usage_gig":
            self._usage_dict(),
            "vc_capacity":
            self.fake.pyint(1, 100),
            "namespace":
            self.fake.word(),
            "pod":
            self.fake.word(),
            "volume_claim":
            self.fake.uuid4(),
            "volume_name":
            self.fake.word(),
            "storage_class":
            self.fake.word(),
            "volume_request":
            self.fake.pyint(1, 100),
            "volume_labels": (
                f"label_{self.fake.word()}:{self.fake.word()}",
                f"|label_{self.fake.word()}:{self.fake.word()}",
            ),
            "volume_claim_labels": (
                f"label_{self.fake.word()}:{self.fake.word()}",
                f"|label_{self.fake.word()}:{self.fake.word()}",
            ),
        }

        generator = OCPGenerator(self.two_hours_ago, self.now)
        in_row = generator._init_data_row(self.two_hours_ago,
                                          self.now,
                                          report_type=OCP_STORAGE_USAGE)
        out_row = generator._update_storage_data(copy(in_row),
                                                 self.two_hours_ago, self.now,
                                                 **kwargs)

        self.assertLessEqual(
            out_row.get("persistentvolumeclaim_usage_byte_seconds"),
            out_row.get("persistentvolumeclaim_capacity_byte_seconds") *
            GIGABYTE,
        )
        self.assertLessEqual(
            out_row.get("persistentvolumeclaim_capacity_byte_seconds"),
            out_row.get("volume_request_storage_byte_seconds"),
        )
コード例 #5
0
ファイル: test_ocp_generator.py プロジェクト: dccurtis/nise
    def test_update_node_label_data(self):
        """Test that _update_node_label_data updates label data"""
        node = self.attributes.get("nodes")[0]
        kwargs = {
            "node": node.get("node"),
            "node_labels": node.get("node_labels")
        }

        generator = OCPGenerator(self.two_hours_ago, self.now)
        in_row = generator._init_data_row(self.two_hours_ago,
                                          self.now,
                                          report_type=OCP_NODE_LABEL)
        out_row = generator._update_node_label_data(copy(in_row),
                                                    self.two_hours_ago,
                                                    self.now, **kwargs)

        self.assertEqual(out_row.get("node"), node.get("node"))
        self.assertNotEqual(out_row.get("node"), in_row.get("node"))
        self.assertEqual(out_row.get("node_labels"), node.get("node_labels"))
        self.assertNotEqual(out_row.get("node_labels"),
                            in_row.get("node_labels"))
コード例 #6
0
ファイル: test_ocp_generator.py プロジェクト: dccurtis/nise
    def test_update_pod_data(self):
        """Test that _update_pod_data updates pod data"""
        pods = self.attributes.get("nodes")[0].get("namespaces")[0].get("pods")
        usage_dict = self._usage_dict()
        kwargs = {
            "report_type": "test_report",
            "cpu_usage": usage_dict,
            "mem_usage_gig": usage_dict,
            "pod_seconds": 86400,
            "pod": pods[0],
        }
        changed = {
            "pod_usage_cpu_core_seconds",
            "pod_request_cpu_core_seconds",
            "pod_limit_cpu_core_seconds",
            "pod_usage_memory_byte_seconds",
            "pod_request_memory_byte_seconds",
            "pod_limit_memory_byte_seconds",
        }

        generator = OCPGenerator(self.two_hours_ago, self.now)
        generator.nodes = self.attributes
        in_row = generator._init_data_row(self.two_hours_ago,
                                          self.now,
                                          report_type=OCP_POD_USAGE)
        out_row = generator._update_pod_data(
            copy(in_row),
            datetime.strptime(random.choice(list(usage_dict.keys())),
                              "%m-%d-%Y"), self.now, **kwargs)

        for key in changed:
            with self.subTest(key=key):
                self.assertIsNotNone(out_row.get(key))
                self.assertNotEqual(out_row.get(key), in_row.get(key))

        for key in list(set(out_row.keys()) - changed):
            with self.subTest(key=key):
                self.assertIsNotNone(out_row.get(key))
コード例 #7
0
    def test_update_pod_data(self):
        """Test that _update_pod_data updates pod data"""
        pods = next(
            iter(self.attributes.get("nodes")[0].get(
                "namespaces").values())).get("pods")
        kwargs = {
            "cpu_usage": self._usage_dict(),
            "mem_usage_gig": self._usage_dict(),
            "pod_seconds": 86400,
            "pod": pods[0],
        }
        changed = {
            "pod_usage_cpu_core_seconds",
            "pod_request_cpu_core_seconds",
            "pod_limit_cpu_core_seconds",
            "pod_usage_memory_byte_seconds",
            "pod_request_memory_byte_seconds",
            "pod_limit_memory_byte_seconds",
        }

        generator = OCPGenerator(self.two_hours_ago, self.now, {})
        in_row = generator._init_data_row(self.two_hours_ago,
                                          self.now,
                                          report_type=OCP_POD_USAGE)
        out_row = generator._update_pod_data(copy(in_row), self.two_hours_ago,
                                             self.now, **kwargs)

        for key in changed:
            with self.subTest(key=key):
                self.assertEqual(out_row.get(key), pods[0].get(key))
                self.assertNotEqual(out_row.get(key), in_row.get(key))

        for key in list(set(out_row.keys()) - changed):
            with self.subTest(key=key):
                self.assertIn(
                    out_row.get(key),
                    [pods[0].get(key), in_row.get(key)])