Skip to content

Commit a11590d

Browse files
committed
test: Add test
1 parent 48cf9e2 commit a11590d

1 file changed

Lines changed: 51 additions & 0 deletions

File tree

press/press/doctype/server/test_server.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,3 +332,54 @@ def test_process_running_benches_on_server(self, mock_get):
332332
self.assertEqual(
333333
len(agent_job_created), 1
334334
) # Benches marked as archived, so agent job should be created to force remove zombie benches
335+
336+
def test_server_with_more_memory_is_shortlisted_for_new_benches_and_incident_created_against_shortlisted_server_with_insufficient_memory(
337+
self,
338+
):
339+
"""The server with higher available memory must be selected (use_for_new_benches=1)."""
340+
from press.press.doctype.cluster.test_cluster import create_test_cluster
341+
from press.press.doctype.incident.incident import Incident
342+
from press.press.doctype.server.server import _refresh_bench_pool_and_raise_capacity_incidents
343+
344+
self.cluster = create_test_cluster("Default", public=True)
345+
# Two servers in the same cluster with different memory levels
346+
self.low_mem_server = create_test_server(cluster=self.cluster.name, public=True)
347+
self.high_mem_server = create_test_server(cluster=self.cluster.name, public=True)
348+
349+
memory_map = {
350+
self.low_mem_server.name: 200 * 1024 * 1024, # 200 MiB
351+
self.high_mem_server.name: 500 * 1024 * 1024, # 500 MiB
352+
}
353+
354+
_refresh_bench_pool_and_raise_capacity_incidents(
355+
server_names=[self.low_mem_server.name, self.high_mem_server.name],
356+
servers_by_cluster={self.cluster.name: [self.low_mem_server.name, self.high_mem_server.name]},
357+
memory_map=memory_map,
358+
)
359+
360+
self.assertEqual(frappe.db.get_value("Server", self.high_mem_server.name, "use_for_new_benches"), 1)
361+
self.assertEqual(frappe.db.get_value("Server", self.low_mem_server.name, "use_for_new_benches"), 0)
362+
363+
# Set both servers below threshold; high_mem_server is still the best candidate
364+
memory_map = {
365+
self.low_mem_server.name: 50 * 1024 * 1024, # 50 MiB
366+
self.high_mem_server.name: 100 * 1024 * 1024, # 100 MiB — best, but still < 300 MiB
367+
}
368+
369+
with patch.object(Incident, "after_insert", new=Mock()):
370+
_refresh_bench_pool_and_raise_capacity_incidents(
371+
server_names=[self.low_mem_server.name, self.high_mem_server.name],
372+
servers_by_cluster={self.cluster.name: [self.low_mem_server.name, self.high_mem_server.name]},
373+
memory_map=memory_map,
374+
)
375+
376+
incidents = frappe.get_all(
377+
"Incident",
378+
{
379+
"cluster": self.cluster.name,
380+
"subject": f"Insufficient bench capacity in cluster {self.cluster.name}",
381+
},
382+
["name", "server"],
383+
)
384+
self.assertEqual(len(incidents), 1)
385+
self.assertEqual(incidents[0].server, self.high_mem_server.name)

0 commit comments

Comments
 (0)