|
17 | 17 | import com.yugabyte.yw.common.ModelFactory; |
18 | 18 | import com.yugabyte.yw.common.PlatformServiceException; |
19 | 19 | import com.yugabyte.yw.common.TestHelper; |
| 20 | +import com.yugabyte.yw.common.config.UniverseConfKeys; |
20 | 21 | import com.yugabyte.yw.common.gflags.GFlagsValidation.AutoFlagDetails; |
21 | 22 | import com.yugabyte.yw.common.gflags.GFlagsValidation.AutoFlagsPerServer; |
22 | 23 | import com.yugabyte.yw.models.Universe; |
@@ -182,4 +183,85 @@ public void testYsqlMigrationFilesAllPresent() throws Exception { |
182 | 183 | task.initialize(params); |
183 | 184 | task.run(); |
184 | 185 | } |
| 186 | + |
| 187 | + @Test |
| 188 | + public void testYsqlMajorUpgradeRejectsStableBelowConfiguredMinimum() throws Exception { |
| 189 | + TestHelper.updateUniverseVersion(defaultUniverse, "2024.2.2.0-b1"); |
| 190 | + CheckUpgrade.Params params = new CheckUpgrade.Params(); |
| 191 | + params.setUniverseUUID(defaultUniverse.getUniverseUUID()); |
| 192 | + params.ybSoftwareVersion = "2024.2.3.0-b1"; |
| 193 | + when(mockGFlagsValidation.ysqlMajorVersionUpgrade(anyString(), anyString())).thenReturn(true); |
| 194 | + when(mockAutoFlagUtil.getPromotedAutoFlags(any(), any(), anyInt())) |
| 195 | + .thenReturn(ImmutableSet.of("FLAG_1")); |
| 196 | + AutoFlagDetails flag = new AutoFlagDetails(); |
| 197 | + flag.name = "FLAG_1"; |
| 198 | + AutoFlagsPerServer flagsPerServer = new AutoFlagsPerServer(); |
| 199 | + flagsPerServer.autoFlagDetails = Arrays.asList(flag); |
| 200 | + when(mockGFlagsValidation.extractAutoFlags(any(), anyString())).thenReturn(flagsPerServer); |
| 201 | + when(mockGFlagsValidation.getYsqlMigrationFilesList("2024.2.2.0-b1")) |
| 202 | + .thenReturn(ImmutableSet.of("file1.sql")); |
| 203 | + when(mockGFlagsValidation.getYsqlMigrationFilesList("2024.2.3.0-b1")) |
| 204 | + .thenReturn(ImmutableSet.of("file1.sql")); |
| 205 | + |
| 206 | + CheckUpgrade task = AbstractTaskBase.createTask(CheckUpgrade.class); |
| 207 | + task.initialize(params); |
| 208 | + PlatformServiceException exception = |
| 209 | + assertThrows(PlatformServiceException.class, () -> task.run()); |
| 210 | + assertEquals(BAD_REQUEST, exception.getHttpStatus()); |
| 211 | + assertTrue(exception.getMessage().contains("2024.2.3.0-b1")); |
| 212 | + } |
| 213 | + |
| 214 | + @Test |
| 215 | + public void testYsqlMajorUpgradePassesStableWhenRuntimeMinimumLowered() throws Exception { |
| 216 | + factory |
| 217 | + .forUniverse(defaultUniverse) |
| 218 | + .setValue(UniverseConfKeys.ysqlMajorUpgradeMinStableDbVersion.getKey(), "2024.2.1.0-b1"); |
| 219 | + TestHelper.updateUniverseVersion(defaultUniverse, "2024.2.2.0-b1"); |
| 220 | + CheckUpgrade.Params params = new CheckUpgrade.Params(); |
| 221 | + params.setUniverseUUID(defaultUniverse.getUniverseUUID()); |
| 222 | + params.ybSoftwareVersion = "2024.2.3.0-b1"; |
| 223 | + when(mockGFlagsValidation.ysqlMajorVersionUpgrade(anyString(), anyString())).thenReturn(true); |
| 224 | + when(mockAutoFlagUtil.getPromotedAutoFlags(any(), any(), anyInt())) |
| 225 | + .thenReturn(ImmutableSet.of("FLAG_1")); |
| 226 | + AutoFlagDetails flag = new AutoFlagDetails(); |
| 227 | + flag.name = "FLAG_1"; |
| 228 | + AutoFlagsPerServer flagsPerServer = new AutoFlagsPerServer(); |
| 229 | + flagsPerServer.autoFlagDetails = Arrays.asList(flag); |
| 230 | + when(mockGFlagsValidation.extractAutoFlags(any(), anyString())).thenReturn(flagsPerServer); |
| 231 | + when(mockGFlagsValidation.getYsqlMigrationFilesList("2024.2.2.0-b1")) |
| 232 | + .thenReturn(ImmutableSet.of("file1.sql")); |
| 233 | + when(mockGFlagsValidation.getYsqlMigrationFilesList("2024.2.3.0-b1")) |
| 234 | + .thenReturn(ImmutableSet.of("file1.sql")); |
| 235 | + |
| 236 | + CheckUpgrade task = AbstractTaskBase.createTask(CheckUpgrade.class); |
| 237 | + task.initialize(params); |
| 238 | + task.run(); |
| 239 | + } |
| 240 | + |
| 241 | + @Test |
| 242 | + public void testYsqlMajorUpgradeRejectsPreviewBelowHardcodedMinimum() throws Exception { |
| 243 | + TestHelper.updateUniverseVersion(defaultUniverse, "2.23.0.0-b1"); |
| 244 | + CheckUpgrade.Params params = new CheckUpgrade.Params(); |
| 245 | + params.setUniverseUUID(defaultUniverse.getUniverseUUID()); |
| 246 | + params.ybSoftwareVersion = "2.25.0.0-b1"; |
| 247 | + when(mockGFlagsValidation.ysqlMajorVersionUpgrade(anyString(), anyString())).thenReturn(true); |
| 248 | + when(mockAutoFlagUtil.getPromotedAutoFlags(any(), any(), anyInt())) |
| 249 | + .thenReturn(ImmutableSet.of("FLAG_1")); |
| 250 | + AutoFlagDetails flag = new AutoFlagDetails(); |
| 251 | + flag.name = "FLAG_1"; |
| 252 | + AutoFlagsPerServer flagsPerServer = new AutoFlagsPerServer(); |
| 253 | + flagsPerServer.autoFlagDetails = Arrays.asList(flag); |
| 254 | + when(mockGFlagsValidation.extractAutoFlags(any(), anyString())).thenReturn(flagsPerServer); |
| 255 | + when(mockGFlagsValidation.getYsqlMigrationFilesList("2.23.0.0-b1")) |
| 256 | + .thenReturn(ImmutableSet.of("file1.sql")); |
| 257 | + when(mockGFlagsValidation.getYsqlMigrationFilesList("2.25.0.0-b1")) |
| 258 | + .thenReturn(ImmutableSet.of("file1.sql")); |
| 259 | + |
| 260 | + CheckUpgrade task = AbstractTaskBase.createTask(CheckUpgrade.class); |
| 261 | + task.initialize(params); |
| 262 | + PlatformServiceException exception = |
| 263 | + assertThrows(PlatformServiceException.class, () -> task.run()); |
| 264 | + assertEquals(BAD_REQUEST, exception.getHttpStatus()); |
| 265 | + assertTrue(exception.getMessage().contains("2.25.0.0-b1")); |
| 266 | + } |
185 | 267 | } |
0 commit comments