Skip to content

Commit c9463ba

Browse files
asmodehnAlexandre Vincent
andauthored
[tests] Enabled redis caching and session storage in automated tests
* [change] Sessions now cached in redis * [fix] Adjust count in config.tests.TestAdmin._verify_template_queries --------- Co-authored-by: Alexandre Vincent <[email protected]>
1 parent 4ea68be commit c9463ba

File tree

7 files changed

+118
-116
lines changed

7 files changed

+118
-116
lines changed

openwisp_controller/config/tests/test_admin.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1776,22 +1776,22 @@ def test_get_default_values(self):
17761776
path = reverse("admin:get_default_values")
17771777

17781778
with self.subTest("get default values for one template"):
1779-
with self.assertNumQueries(3):
1779+
with self.assertNumQueries(2):
17801780
r = self.client.get(path, {"pks": f"{t1.pk}"})
17811781
self.assertEqual(r.status_code, 200)
17821782
expected = {"default_values": {"name1": "test1"}}
17831783
self.assertEqual(r.json(), expected)
17841784

17851785
with self.subTest("get default values for multiple templates"):
17861786
t2 = self._create_template(name="t2", default_values={"name2": "test2"})
1787-
with self.assertNumQueries(3):
1787+
with self.assertNumQueries(2):
17881788
r = self.client.get(path, {"pks": f"{t1.pk},{t2.pk}"})
17891789
self.assertEqual(r.status_code, 200)
17901790
expected = {"default_values": {"name1": "test1", "name2": "test2"}}
17911791
self.assertEqual(r.json(), expected)
17921792

17931793
with self.subTest("get default values conflicting with device group"):
1794-
with self.assertNumQueries(4):
1794+
with self.assertNumQueries(3):
17951795
response = self.client.get(
17961796
path, {"pks": f"{t1.pk}", "group": str(group.pk)}
17971797
)
@@ -1803,7 +1803,7 @@ def test_get_default_values(self):
18031803
self.assertNotIn("name4", response_data)
18041804

18051805
with self.subTest("get default values conflicting with organization"):
1806-
with self.assertNumQueries(4):
1806+
with self.assertNumQueries(3):
18071807
response = self.client.get(
18081808
path, {"pks": f"{t1.pk}", "organization": str(org.pk)}
18091809
)
@@ -1814,7 +1814,7 @@ def test_get_default_values(self):
18141814
self.assertNotIn("name3", response_data)
18151815

18161816
with self.subTest("get default values conflicting with organization and group"):
1817-
with self.assertNumQueries(5):
1817+
with self.assertNumQueries(4):
18181818
response = self.client.get(
18191819
path,
18201820
{
@@ -2103,13 +2103,13 @@ def _verify_template_queries(self, config, count):
21032103
path = reverse(f"admin:{self.app_label}_device_change", args=[config.device.pk])
21042104
for i in range(count):
21052105
self._create_template(name=f"template-{i}")
2106-
expected_count = 24
2106+
expected_count = 22
21072107
if django.VERSION < (5, 2):
21082108
# In django version < 5.2, there is an extra SAVEPOINT query
21092109
# leading to extra RELEASE SAVEPOINT query, thus 2 extra queries
21102110
expected_count += 2
21112111
with self.assertNumQueries(expected_count):
2112-
# contains 22 queries for fetching normal device data
2112+
# contains 20 queries for fetching normal device data
21132113
response = self.client.get(path)
21142114
# contains 2 queries, 1 for fetching organization
21152115
# and 1 for fetching templates

openwisp_controller/config/tests/test_api.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ def test_device_create_with_devicegroup(self):
249249
def test_device_list_api(self):
250250
device = self._create_device()
251251
path = reverse("config_api:device_list")
252-
with self.assertNumQueries(4):
252+
with self.assertNumQueries(3):
253253
r = self.client.get(path)
254254
self.assertEqual(r.status_code, 200)
255255
with self.subTest("device list should show most recent first"):
@@ -395,7 +395,7 @@ def test_device_filter_templates(self):
395395
def test_device_detail_api(self):
396396
d1 = self._create_device()
397397
path = reverse("config_api:device_detail", args=[d1.pk])
398-
with self.assertNumQueries(3):
398+
with self.assertNumQueries(2):
399399
r = self.client.get(path)
400400
self.assertEqual(r.status_code, 200)
401401
self.assertEqual(r.data["config"], None)
@@ -405,7 +405,7 @@ def test_device_detail_config_api(self):
405405
d1 = self._create_device()
406406
self._create_config(device=d1)
407407
path = reverse("config_api:device_detail", args=[d1.pk])
408-
with self.assertNumQueries(4):
408+
with self.assertNumQueries(3):
409409
r = self.client.get(path)
410410
self.assertEqual(r.status_code, 200)
411411
self.assertNotEqual(r.data["config"], None)
@@ -547,7 +547,7 @@ def test_device_download_api(self):
547547
d1 = self._create_device()
548548
self._create_config(device=d1)
549549
path = reverse("config_api:download_device_config", args=[d1.pk])
550-
with self.assertNumQueries(8):
550+
with self.assertNumQueries(7):
551551
r = self.client.get(path)
552552
self.assertEqual(r.status_code, 200)
553553

@@ -708,7 +708,7 @@ def test_template_list_api(self):
708708
org1 = self._get_org()
709709
self._create_template(name="t1", organization=org1)
710710
path = reverse("config_api:template_list")
711-
with self.assertNumQueries(5):
711+
with self.assertNumQueries(4):
712712
r = self.client.get(path)
713713
self.assertEqual(r.status_code, 200)
714714
self.assertEqual(Template.objects.count(), 1)
@@ -801,7 +801,7 @@ def test_template_list_for_shared_objects(self):
801801
def test_template_detail_api(self):
802802
t1 = self._create_template(name="t1")
803803
path = reverse("config_api:template_detail", args=[t1.pk])
804-
with self.assertNumQueries(4):
804+
with self.assertNumQueries(3):
805805
r = self.client.get(path)
806806
self.assertEqual(r.status_code, 200)
807807
self.assertEqual(r.data["organization"], None)
@@ -834,7 +834,7 @@ def test_template_patch_api(self):
834834
def test_template_download_api(self):
835835
t1 = self._create_template(name="t1")
836836
path = reverse("config_api:download_template_config", args=[t1.pk])
837-
with self.assertNumQueries(3):
837+
with self.assertNumQueries(2):
838838
r = self.client.get(path)
839839
self.assertEqual(r.status_code, 200)
840840

@@ -873,7 +873,7 @@ def test_vpn_list_api(self):
873873
org = self._get_org()
874874
self._create_vpn(organization=org)
875875
path = reverse("config_api:vpn_list")
876-
with self.assertNumQueries(4):
876+
with self.assertNumQueries(3):
877877
r = self.client.get(path)
878878
self.assertEqual(r.status_code, 200)
879879

@@ -935,7 +935,7 @@ def test_vpn_list_for_shared_objects(self):
935935
def test_vpn_detail_no_org_api(self):
936936
vpn1 = self._create_vpn(name="test-vpn")
937937
path = reverse("config_api:vpn_detail", args=[vpn1.pk])
938-
with self.assertNumQueries(3):
938+
with self.assertNumQueries(2):
939939
r = self.client.get(path)
940940
self.assertEqual(r.status_code, 200)
941941
self.assertEqual(r.data["organization"], None)
@@ -945,7 +945,7 @@ def test_vpn_detail_with_org_api(self):
945945
org = self._get_org()
946946
vpn1 = self._create_vpn(name="test-vpn", organization=org)
947947
path = reverse("config_api:vpn_detail", args=[vpn1.pk])
948-
with self.assertNumQueries(3):
948+
with self.assertNumQueries(2):
949949
r = self.client.get(path)
950950
self.assertEqual(r.status_code, 200)
951951
self.assertEqual(r.data["organization"], org.pk)
@@ -980,7 +980,7 @@ def test_vpn_patch_api(self):
980980
def test_vpn_download_api(self):
981981
vpn1 = self._create_vpn(name="test-vpn")
982982
path = reverse("config_api:download_vpn_config", args=[vpn1.pk])
983-
with self.assertNumQueries(5):
983+
with self.assertNumQueries(4):
984984
r = self.client.get(path)
985985
self.assertEqual(r.status_code, 200)
986986

@@ -1054,7 +1054,7 @@ def test_devicegroup_list_api(self):
10541054
dg = self._create_device_group()
10551055
path = reverse("config_api:devicegroup_list")
10561056
with self.subTest("assert number of queries"):
1057-
with self.assertNumQueries(5):
1057+
with self.assertNumQueries(4):
10581058
r = self.client.get(path)
10591059
self.assertEqual(r.status_code, 200)
10601060
with self.subTest("should not contain default or required templates"):
@@ -1123,7 +1123,7 @@ def test_devicegroup_detail_api(self):
11231123
path = reverse("config_api:devicegroup_detail", args=[device_group.pk])
11241124

11251125
with self.subTest("Test GET"):
1126-
with self.assertNumQueries(4):
1126+
with self.assertNumQueries(3):
11271127
response = self.client.get(path)
11281128
self.assertEqual(response.status_code, 200)
11291129
self.assertEqual(response.data["name"], device_group.name)
@@ -1354,11 +1354,11 @@ def _build_cache(path, org_slug):
13541354
self.assertEqual(response.status_code, 200)
13551355

13561356
def _assert_cache_invalidation(path, org_slug):
1357-
with self.assertNumQueries(6):
1357+
with self.assertNumQueries(5):
13581358
response = self.client.get(path, data={"org": org_slug})
13591359
self.assertEqual(response.status_code, 200)
13601360

1361-
with self.assertNumQueries(6):
1361+
with self.assertNumQueries(5):
13621362
response = self.client.get(path)
13631363
self.assertEqual(response.status_code, 200)
13641364

@@ -1369,11 +1369,11 @@ def _assert_cache_invalidation(path, org_slug):
13691369

13701370
with self.subTest("Test caching works"):
13711371
_build_cache(path, org.slug)
1372-
with self.assertNumQueries(3):
1372+
with self.assertNumQueries(2):
13731373
response = self.client.get(path, data={"org": org.slug})
13741374
self.assertEqual(response.status_code, 200)
13751375

1376-
with self.assertNumQueries(3):
1376+
with self.assertNumQueries(2):
13771377
response = self.client.get(path)
13781378
self.assertEqual(response.status_code, 200)
13791379

@@ -1415,11 +1415,11 @@ def test_devicegroup_commonname_cache_invalidates_on_devicegroup_delete(self):
14151415
"config_api:devicegroup_x509_commonname", args=[cert.common_name]
14161416
)
14171417

1418-
with self.assertNumQueries(6):
1418+
with self.assertNumQueries(5):
14191419
response = self.client.get(path, data={"org": org.slug})
14201420
self.assertEqual(response.status_code, 200)
14211421

1422-
with self.assertNumQueries(3):
1422+
with self.assertNumQueries(2):
14231423
response = self.client.get(path, data={"org": org.slug})
14241424
self.assertEqual(response.status_code, 200)
14251425

@@ -1433,11 +1433,11 @@ def test_devicegroup_commonname_cache_invalidates_on_organization_delete(self):
14331433
"config_api:devicegroup_x509_commonname", args=[cert.common_name]
14341434
)
14351435

1436-
with self.assertNumQueries(6):
1436+
with self.assertNumQueries(5):
14371437
response = self.client.get(path, data={"org": org.slug})
14381438
self.assertEqual(response.status_code, 200)
14391439

1440-
with self.assertNumQueries(3):
1440+
with self.assertNumQueries(2):
14411441
response = self.client.get(path, data={"org": org.slug})
14421442
self.assertEqual(response.status_code, 200)
14431443

@@ -1451,11 +1451,11 @@ def test_devicegroup_commonname_cache_invalidates_on_cert_delete(self):
14511451
"config_api:devicegroup_x509_commonname", args=[cert.common_name]
14521452
)
14531453

1454-
with self.assertNumQueries(6):
1454+
with self.assertNumQueries(5):
14551455
response = self.client.get(path, data={"org": org.slug})
14561456
self.assertEqual(response.status_code, 200)
14571457

1458-
with self.assertNumQueries(3):
1458+
with self.assertNumQueries(2):
14591459
response = self.client.get(path, data={"org": org.slug})
14601460
self.assertEqual(response.status_code, 200)
14611461

openwisp_controller/config/tests/test_views.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def test_get_relevant_templates_without_backend_filter(self):
7070
inactive_t,
7171
) = self._create_template_test_data()
7272
self._login()
73-
with self.assertNumQueries(4):
73+
with self.assertNumQueries(3):
7474
response = self.client.get(
7575
reverse("admin:get_relevant_templates", args=[org1.pk])
7676
)
@@ -92,7 +92,7 @@ def test_get_relevant_templates_without_backend_filter(self):
9292
default=False,
9393
required=True,
9494
)
95-
with self.assertNumQueries(4):
95+
with self.assertNumQueries(3):
9696
response = self.client.get(
9797
reverse("admin:get_relevant_templates", args=[org1.pk])
9898
)
@@ -130,7 +130,7 @@ def test_get_relevant_templates_with_backend_filtering(self):
130130
)
131131
self._login()
132132

133-
with self.assertNumQueries(4):
133+
with self.assertNumQueries(3):
134134
response = self.client.get(
135135
reverse("admin:get_relevant_templates", args=[org1.pk]),
136136
{"backend": "netjsonconfig.OpenWrt"},

openwisp_controller/connection/tests/test_api.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ def setUp(self):
397397
def test_get_credentials_list(self):
398398
self._create_credentials()
399399
path = reverse("connection_api:credential_list")
400-
with self.assertNumQueries(4):
400+
with self.assertNumQueries(3):
401401
response = self.client.get(path)
402402
self.assertEqual(response.status_code, 200)
403403
with self.subTest("Check ordering of credentials"):
@@ -421,7 +421,7 @@ def test_filter_credentials_list(self):
421421
OrganizationUser.objects.create(user=user, organization=org1, is_admin=True)
422422
self.client.force_login(user)
423423
path = reverse("connection_api:credential_list")
424-
with self.assertNumQueries(6):
424+
with self.assertNumQueries(5):
425425
response = self.client.get(path)
426426
self.assertEqual(response.status_code, 200)
427427
self.assertEqual(response.data["count"], 1)
@@ -437,14 +437,14 @@ def test_post_credential_list(self):
437437
"auto_add": False,
438438
"params": {"username": "roOT", "password": "Pa$$w0Rd", "port": 22},
439439
}
440-
with self.assertNumQueries(8):
440+
with self.assertNumQueries(7):
441441
response = self.client.post(path, data, content_type="application/json")
442442
self.assertEqual(response.status_code, 201)
443443

444444
def test_get_credential_detail(self):
445445
cred = self._create_credentials()
446446
path = reverse("connection_api:credential_detail", args=(cred.pk,))
447-
with self.assertNumQueries(3):
447+
with self.assertNumQueries(2):
448448
response = self.client.get(path)
449449
self.assertEqual(response.status_code, 200)
450450

@@ -464,7 +464,7 @@ def test_put_credential_detail(self):
464464
},
465465
}
466466
expected_queries = (
467-
9 if parse_version(REST_FRAMEWORK_VERSION) >= parse_version("3.15") else 8
467+
8 if parse_version(REST_FRAMEWORK_VERSION) >= parse_version("3.15") else 7
468468
)
469469
with self.assertNumQueries(expected_queries):
470470
response = self.client.put(path, data, content_type="application/json")
@@ -482,22 +482,22 @@ def test_patch_credential_detail(self):
482482
cred = self._create_credentials()
483483
path = reverse("connection_api:credential_detail", args=(cred.pk,))
484484
data = {"name": "Change Test credentials"}
485-
with self.assertNumQueries(8):
485+
with self.assertNumQueries(7):
486486
response = self.client.patch(path, data, content_type="application/json")
487487
self.assertEqual(response.status_code, 200)
488488
self.assertEqual(response.data["name"], "Change Test credentials")
489489

490490
def test_delete_credential_detail(self):
491491
cred = self._create_credentials()
492492
path = reverse("connection_api:credential_detail", args=(cred.pk,))
493-
with self.assertNumQueries(5):
493+
with self.assertNumQueries(4):
494494
response = self.client.delete(path)
495495
self.assertEqual(response.status_code, 204)
496496

497497
def test_get_deviceconnection_list(self):
498498
d1 = self._create_device()
499499
path = reverse("connection_api:deviceconnection_list", args=(d1.pk,))
500-
with self.assertNumQueries(4):
500+
with self.assertNumQueries(3):
501501
response = self.client.get(path)
502502
self.assertEqual(response.status_code, 200)
503503
self.assertEqual(response.data["count"], 0)
@@ -525,7 +525,7 @@ def test_post_deviceconnection_list(self):
525525
"enabled": True,
526526
"failure_reason": "",
527527
}
528-
with self.assertNumQueries(13):
528+
with self.assertNumQueries(12):
529529
response = self.client.post(path, data, content_type="application/json")
530530
self.assertEqual(response.status_code, 201)
531531

@@ -538,7 +538,7 @@ def test_post_deviceconenction_with_no_config_device(self):
538538
"enabled": True,
539539
"failure_reason": "",
540540
}
541-
with self.assertNumQueries(13):
541+
with self.assertNumQueries(12):
542542
response = self.client.post(path, data, content_type="application/json")
543543
error_msg = """
544544
the update strategy can be determined automatically only if
@@ -555,7 +555,7 @@ def test_get_deviceconnection_detail(self):
555555
dc = self._create_device_connection()
556556
d1 = dc.device.id
557557
path = reverse("connection_api:deviceconnection_detail", args=(d1, dc.pk))
558-
with self.assertNumQueries(5):
558+
with self.assertNumQueries(4):
559559
response = self.client.get(path)
560560
self.assertEqual(response.status_code, 200)
561561

@@ -570,7 +570,7 @@ def test_put_devceconnection_detail(self):
570570
"enabled": False,
571571
"failure_reason": "",
572572
}
573-
with self.assertNumQueries(14):
573+
with self.assertNumQueries(13):
574574
response = self.client.put(path, data, content_type="application/json")
575575
self.assertEqual(response.status_code, 200)
576576
self.assertEqual(
@@ -584,7 +584,7 @@ def test_patch_deviceconnectoin_detail(self):
584584
path = reverse("connection_api:deviceconnection_detail", args=(d1, dc.pk))
585585
self.assertEqual(dc.update_strategy, app_settings.UPDATE_STRATEGIES[0][0])
586586
data = {"update_strategy": app_settings.UPDATE_STRATEGIES[1][0]}
587-
with self.assertNumQueries(13):
587+
with self.assertNumQueries(12):
588588
response = self.client.patch(path, data, content_type="application/json")
589589
self.assertEqual(response.status_code, 200)
590590
self.assertEqual(
@@ -595,7 +595,7 @@ def test_delete_deviceconnection_detail(self):
595595
dc = self._create_device_connection()
596596
d1 = dc.device.id
597597
path = reverse("connection_api:deviceconnection_detail", args=(d1, dc.pk))
598-
with self.assertNumQueries(10):
598+
with self.assertNumQueries(9):
599599
response = self.client.delete(path)
600600
self.assertEqual(response.status_code, 204)
601601

0 commit comments

Comments
 (0)