comparison NewTests/PostgresUpgrades/test_pg_upgrades.py @ 599:f3475c3e42e5

run integ tests after a PG downgrade
author Alain Mazy <am@osimis.io>
date Thu, 18 Jan 2024 17:46:54 +0100
parents b1e1c7149a37
children 58384ae69f41
comparison
equal deleted inserted replaced
598:b9ae7c59fee9 599:f3475c3e42e5
34 time.sleep(1) 34 time.sleep(1)
35 35
36 class TestPgUpgrades(unittest.TestCase): 36 class TestPgUpgrades(unittest.TestCase):
37 37
38 @classmethod 38 @classmethod
39 def setUpClass(cls): 39 def cleanup(cls):
40 os.chdir(here) 40 os.chdir(here)
41 print("Cleaning old compose") 41 print("Cleaning old compose")
42 subprocess.run(["docker", "compose", "down", "-v", "--remove-orphans"], check=True) 42 subprocess.run(["docker", "compose", "down", "-v", "--remove-orphans"], check=True)
43
44
45 @classmethod
46 def setUpClass(cls):
47 cls.cleanup()
48
49 @classmethod
50 def tearDownClass(cls):
51 pass
52 # cls.cleanup()
53
43 54
44 def test_upgrades_downgrades_with_pg_15(self): 55 def test_upgrades_downgrades_with_pg_15(self):
45 56
46 print("Launching PG-15 server") 57 print("Launching PG-15 server")
47 subprocess.run(["docker", "compose", "up", "pg-15", "-d"], check=True) 58 subprocess.run(["docker", "compose", "up", "pg-15", "-d"], check=True)
58 print("Stopping old Orthanc ") 69 print("Stopping old Orthanc ")
59 subprocess.run(["docker", "compose", "stop", "orthanc-pg-15-2"], check=True) 70 subprocess.run(["docker", "compose", "stop", "orthanc-pg-15-2"], check=True)
60 time.sleep(2) 71 time.sleep(2)
61 72
62 print("Launching newest Orthanc") 73 print("Launching newest Orthanc")
63 subprocess.run(["docker", "compose", "up", "orthanc-pg-15-under-tests", "-d"], check=True) 74 subprocess.run(["docker", "compose", "up", "orthanc-pg-15-under-tests", "-d"],
75 env= {
76 "ORTHANC_IMAGE_UNDER_TESTS": Helpers.orthanc_under_tests_docker_image
77 },
78 check=True)
64 79
65 o = OrthancApiClient("http://localhost:8050") 80 o = OrthancApiClient("http://localhost:8050")
66 o.wait_started() 81 o.wait_started()
67 82
68 # make sure we can 'play' with Orthanc 83 # make sure we can 'play' with Orthanc
69 o.instances.get_tags(orthanc_id=instances[0]) 84 o.instances.get_tags(orthanc_id=instances[0])
70 o.instances.delete_all() 85 o.instances.delete_all()
86 self.assertEqual(0, int(o.get_json('/statistics')['TotalDiskSize']))
71 instances = o.upload_folder(here / "../../Database/Knee") 87 instances = o.upload_folder(here / "../../Database/Knee")
88 size_before_downgrade = int(o.get_json('/statistics')['TotalDiskSize'])
72 89
73 print("Stopping new Orthanc ") 90 print("Stopping newest Orthanc ")
74 subprocess.run(["docker", "compose", "stop", "orthanc-pg-15-under-tests"], check=True) 91 subprocess.run(["docker", "compose", "stop", "orthanc-pg-15-under-tests"], check=True)
75 time.sleep(2) 92 time.sleep(2)
76 93
77 print("TODO Downgrading Orthanc DB and restart an Orthanc 23.12.1") 94 print("Downgrading Orthanc DB to v6.1")
78 # ... 95 subprocess.run(["docker", "exec", "pg-15", "./scripts/downgrade.sh"], check=True)
96 time.sleep(2)
97
98 print("Downgrading Orthanc DB to v6.1")
99 print("Launching previous Orthanc (DB v6.1)")
100 subprocess.run(["docker", "compose", "up", "orthanc-pg-15-61", "-d"], check=True)
101
102 o = OrthancApiClient("http://localhost:8052")
103 o.wait_started()
104
105 # make sure we can 'play' with Orthanc
106 o.instances.get_tags(orthanc_id=instances[0])
107 self.assertEqual(size_before_downgrade, int(o.get_json('/statistics')['TotalDiskSize']))
108 o.instances.delete_all()
109 self.assertEqual(0, int(o.get_json('/statistics')['TotalDiskSize']))
110 instances = o.upload_folder(here / "../../Database/Knee")
111 o.instances.delete_all()
112 self.assertEqual(0, int(o.get_json('/statistics')['TotalDiskSize']))
113
114 print("run the integration tests after a downgrade")
115 # first create the containers (orthanc-tests + orthanc-pg-15-61-for-integ-tests) so they know each other
116 # subprocess.run(["docker", "compose", "create", "orthanc-tests"], check=True)
117
118 # subprocess.run(["docker", "compose", "up", "orthanc-pg-15-61-for-integ-tests", "-d"], check=True)
119
120 # o = OrthancApiClient("http://localhost:8053", user="alice", pwd="orthanctest")
121 # o.wait_started()
122
123 # time.sleep(10000)
124 subprocess.run(["docker", "compose", "up", "orthanc-tests"], check=True)
125
126
79 127
80 def test_latest_orthanc_with_pg_9(self): 128 def test_latest_orthanc_with_pg_9(self):
81 print("Launching PG-9 server") 129 print("Launching PG-9 server")
82 subprocess.run(["docker", "compose", "up", "pg-9", "-d"], check=True) 130 subprocess.run(["docker", "compose", "up", "pg-9", "-d"], check=True)
83 wait_container_healthy("pg-9") 131 wait_container_healthy("pg-9")