def test_subnet_stats(self): subnet = factory.make_Subnet(cidr='1.2.0.0/16', gateway_ip='1.2.0.254') factory.make_IPRange(subnet=subnet, start_ip='1.2.0.11', end_ip='1.2.0.20', alloc_type=IPRANGE_TYPE.DYNAMIC) factory.make_IPRange(subnet=subnet, start_ip='1.2.0.51', end_ip='1.2.0.70', alloc_type=IPRANGE_TYPE.RESERVED) factory.make_StaticIPAddress(ip='1.2.0.12', alloc_type=IPADDRESS_TYPE.DHCP, subnet=subnet) for n in (60, 61): factory.make_StaticIPAddress( ip='1.2.0.{}'.format(n), alloc_type=IPADDRESS_TYPE.USER_RESERVED, subnet=subnet) for n in (80, 90, 100): factory.make_StaticIPAddress(ip='1.2.0.{}'.format(n), alloc_type=IPADDRESS_TYPE.STICKY, subnet=subnet) metrics = create_metrics( STATS_DEFINITIONS, registry=prometheus_client.CollectorRegistry()) update_prometheus_stats(metrics) output = metrics.generate_latest().decode('ascii') self.assertIn( 'maas_net_subnet_ip_count' '{cidr="1.2.0.0/16",status="available"} 65500.0', output) self.assertIn( 'maas_net_subnet_ip_count' '{cidr="1.2.0.0/16",status="unavailable"} 34.0', output) self.assertIn( 'maas_net_subnet_ip_dynamic' '{cidr="1.2.0.0/16",status="available"} 9.0', output) self.assertIn( 'maas_net_subnet_ip_dynamic{cidr="1.2.0.0/16",status="used"} 1.0', output) self.assertIn( 'maas_net_subnet_ip_reserved' '{cidr="1.2.0.0/16",status="available"} 18.0', output) self.assertIn( 'maas_net_subnet_ip_reserved{cidr="1.2.0.0/16",status="used"} 2.0', output) self.assertIn('maas_net_subnet_ip_static{cidr="1.2.0.0/16"} 3.0', output)
def test_update_prometheus_stats(self): self.patch(stats, 'prom_cli') # general values values = { "machine_status": { "random_status": 0, }, "controllers": { "regions": 0, }, "nodes": { "machines": 0, }, "network_stats": { "spaces": 0, }, "machine_stats": { "total_cpus": 0, }, } mock = self.patch(stats, "get_maas_stats") mock.return_value = json.dumps(values) # architecture arches = { "amd64": 0, "i386": 0, } mock_arches = self.patch(stats, "get_machines_by_architecture") mock_arches.return_value = arches # pods pods = { "kvm_pods": 0, "kvm_machines": 0, } mock_pods = self.patch(stats, "get_kvm_pods_stats") mock_pods.return_value = pods metrics = create_metrics( STATS_DEFINITIONS, registry=prometheus_client.CollectorRegistry()) update_prometheus_stats(metrics) self.assertThat(mock, MockCalledOnce()) self.assertThat(mock_arches, MockCalledOnce()) self.assertThat(mock_pods, MockCalledOnce())
def test_update_prometheus_stats(self): self.patch(stats, "prom_cli") # general values values = { "machine_status": { "random_status": 0 }, "controllers": { "regions": 0 }, "nodes": { "machines": 0 }, "network_stats": { "spaces": 0 }, "machine_stats": { "total_cpu": 0 }, } mock = self.patch(stats, "get_maas_stats") mock.return_value = json.dumps(values) # architecture arches = {"amd64": 0, "i386": 0} mock_arches = self.patch(stats, "get_machines_by_architecture") mock_arches.return_value = arches # pods pods = { "kvm_pods": 0, "kvm_machines": 0, "kvm_available_resources": { "cores": 10, "memory": 20, "storage": 30, "over_cores": 100, "over_memory": 200, }, "kvm_utilized_resources": { "cores": 5, "memory": 10, "storage": 15, }, } mock_pods = self.patch(stats, "get_kvm_pods_stats") mock_pods.return_value = pods subnet_stats = { "1.2.0.0/16": { "available": 2**16 - 3, "dynamic_available": 0, "dynamic_used": 0, "reserved_available": 0, "reserved_used": 0, "static": 0, "unavailable": 1, }, "::1/128": { "available": 1, "dynamic_available": 0, "dynamic_used": 0, "reserved_available": 0, "reserved_used": 0, "static": 0, "unavailable": 0, }, } mock_subnet_stats = self.patch(stats, "get_subnets_utilisation_stats") mock_subnet_stats.return_value = subnet_stats metrics = create_metrics( STATS_DEFINITIONS, registry=prometheus_client.CollectorRegistry()) update_prometheus_stats(metrics) self.assertThat(mock, MockCalledOnce()) self.assertThat(mock_arches, MockCalledOnce()) self.assertThat(mock_pods, MockCalledOnce()) self.assertThat(mock_subnet_stats, MockCalledOnce())