blob: a7fa068d13ea128bd70c492d2920640105e5abd1 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License
*/
package org.apache.unomi.itests.migration;
import org.apache.unomi.itests.BaseIT;
import org.junit.Assert;
import org.junit.Test;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static org.junit.Assert.fail;
public class MigrationIT extends BaseIT {
protected static final Path BASE_DIRECTORIES = Paths.get(System.getProperty( "karaf.data" ), "migration", "scripts");
private static final String FAILING_SCRIPT_NAME = "migrate-11.0.0-01-failingMigration.groovy";
private static final String SUCCESS_SCRIPT_NAME = "migrate-11.0.0-01-successMigration.groovy";
private static final String FAILING_SCRIPT_RESOURCE = "migration/" + FAILING_SCRIPT_NAME;
private static final String SUCCESS_SCRIPT_RESOURCE = "migration/" + SUCCESS_SCRIPT_NAME;
protected static final Path FAILING_SCRIPT_FS_PATH = Paths.get(System.getProperty( "karaf.data" ), "migration", "scripts", FAILING_SCRIPT_NAME);
protected static final Path SUCCESS_SCRIPT_FS_PATH = Paths.get(System.getProperty( "karaf.data" ), "migration", "scripts", SUCCESS_SCRIPT_NAME);
@Test
public void checkMigrationRecoverySystem() throws Exception {
try {
Files.createDirectories(BASE_DIRECTORIES);
Files.write(FAILING_SCRIPT_FS_PATH, bundleResourceAsString(FAILING_SCRIPT_RESOURCE).getBytes(StandardCharsets.UTF_8));
try {
executeCommand("unomi:migrate 10.0.0 true");
fail("Migration should have failed and crashed by Exception throwing");
} catch (Exception e) {
// this is expected, the script fail at step 3
}
Files.deleteIfExists(FAILING_SCRIPT_FS_PATH);
Files.write(SUCCESS_SCRIPT_FS_PATH, bundleResourceAsString(SUCCESS_SCRIPT_RESOURCE).getBytes(StandardCharsets.UTF_8));
String successResult = executeCommand("unomi:migrate 10.0.0 true");
System.out.println("Success recovered from failing migration result:");
System.out.println(successResult);
// step 1 and 2 should not be contains, they passed on first attempt.
// Only step 3, 4 and 5 should be performed.
Assert.assertFalse(successResult.contains("inside step 1"));
Assert.assertFalse(successResult.contains("inside step 2"));
Assert.assertTrue(successResult.contains("inside step 3"));
Assert.assertTrue(successResult.contains("inside step 4"));
Assert.assertTrue(successResult.contains("inside step 5"));
Files.deleteIfExists(SUCCESS_SCRIPT_FS_PATH);
} finally {
Files.deleteIfExists(FAILING_SCRIPT_FS_PATH);
Files.deleteIfExists(SUCCESS_SCRIPT_FS_PATH);
}
}
}