def test_gen_volumes_usage_lt_capacity(self): """Test that gen_volumes generates requests and usage values which don't exceed capacity.""" for attributes in [self.attributes, {}]: with self.subTest(attributes=attributes): generator = OCPGenerator(self.two_hours_ago, self.now, attributes) # gen_volumes depends on the output formatting of gen_namespaces and gen_pods. out_volumes = generator._gen_volumes(generator.namespaces, generator.namespace2pods) for volume in out_volumes.values(): with self.subTest(volume=volume): total_capacity = 0 for claim in volume.get("volume_claims").values(): with self.subTest(claim=claim): capacity = claim.get("capacity") total_capacity += capacity if attributes: for value in claim.get( "volume_claim_usage_gig").values(): self.assertLessEqual( value * GIGABYTE, capacity) self.assertLessEqual( total_capacity, volume.get("volume_request_gig", 80.0 * GIGABYTE))
def test_gen_volumes_with_namespaces(self): """Test that gen_volumes arranges the output dict in the expected way. If namespaces with volumes are specified, defined volumes are used. """ generator = OCPGenerator(self.two_hours_ago, self.now, self.attributes) # gen_volumes depends on the output formatting of gen_namespaces and gen_pods. out_volumes = generator._gen_volumes(generator.namespaces, generator.namespace2pods) namespaces = self.attributes.get("nodes")[0].get("namespaces") volume_names = [ vol.get("volume_name") for ns in namespaces for vol in namespaces.get(ns).get("volumes") ] self.assertEqual(list(out_volumes.keys()), volume_names) expected = [ "namespace", "volume", "storage_class", "volume_request", "labels", "volume_claims" ] for vol in out_volumes.values(): with self.subTest(volume=vol): self.assertEqual(list(vol.keys()), expected)
def test_gen_volumes_with_namespaces(self): """Test that gen_volumes arranges the output dict in the expected way. If namespaces with volumes are specified, defined volumes are used. """ generator = OCPGenerator(self.two_hours_ago, self.now) namespaces = self.attributes.get("nodes")[0].get("namespaces") in_pods = namespaces[0].get("pods") out_volumes = generator._gen_volumes(in_pods) expected = [ "namespace", "volume_name", "storage_class", "volume_request_gig", "labels", "volume_claims" ] for vol in out_volumes: with self.subTest(volume=vol): self.assertEqual(list(vol.keys()), expected) self.assertEqual(vol.get("namespace"), namespaces[0].get("namespace_name"))
def test_gen_volumes_without_namespaces(self): """Test that gen_volumes arranges the output dict in the expected way. If no namespaces are specified, volumes are generated. """ generator = OCPGenerator(self.two_hours_ago, self.now, {}) # gen_volumes depends on the output formatting of gen_namespaces and gen_pods. out_volumes = generator._gen_volumes(generator.namespaces, generator.namespace2pods) # these magic numbers are the random ranges defined in the OCP generator. self.assertGreaterEqual(len(out_volumes), 2 * 2 * 1) self.assertLessEqual(len(out_volumes), 6 * 12 * 3) expected = [ "namespace", "volume", "storage_class", "volume_request", "labels", "volume_claims" ] for vol in out_volumes.values(): with self.subTest(volume=vol): self.assertEqual(list(vol.keys()), expected)