package alien4cloud.tosca;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.annotation.Resource;
import org.alien4cloud.tosca.catalog.ArchiveParser;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import alien4cloud.common.AlienConstants;
import alien4cloud.git.RepositoryManager;
import alien4cloud.tosca.model.ArchiveRoot;
import alien4cloud.tosca.parser.ParsingError;
import alien4cloud.tosca.parser.ParsingErrorLevel;
import alien4cloud.tosca.parser.ParsingException;
import alien4cloud.tosca.parser.ParsingResult;
import alien4cloud.utils.FileUtil;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:tosca/archive-parser-application-context.xml")
public class ArchiveParserTest {
private Path artifactsDirectory = Paths.get("../target/it-artifacts");
private RepositoryManager repositoryManager = new RepositoryManager();
@Resource
private ArchiveParser archiveParser;
@Test
public void parseNormativeTypesWd03() throws ParsingException, IOException {
String localName = "tosca-normative-types";
repositoryManager.cloneOrCheckout(artifactsDirectory, "https://github.com/alien4cloud/tosca-normative-types.git", "master", localName);
Path normativeTypesPath = artifactsDirectory.resolve(localName);
Path normativeTypesZipPath = artifactsDirectory.resolve(localName + ".zip");
// Update zip
FileUtil.zip(normativeTypesPath, normativeTypesZipPath);
// Path normativeTypesZipPath = Paths.get("../target/it-artifacts/zipped/apache-lb-types-0.1.csar");
ParsingResult<ArchiveRoot> parsingResult = archiveParser.parse(normativeTypesZipPath, AlienConstants.GLOBAL_WORKSPACE_ID);
displayErrors(parsingResult);
Assert.assertFalse(parsingResult.hasError(ParsingErrorLevel.ERROR));
}
public static void displayErrors(ParsingResult<?> parsingResult) {
System.out.println("\n\nERRORS: \n");
for (int i = 0; i < parsingResult.getContext().getParsingErrors().size(); i++) {
ParsingError error = parsingResult.getContext().getParsingErrors().get(i);
if (error.getErrorLevel().equals(ParsingErrorLevel.ERROR)) {
System.out.println(parsingResult.getContext().getFileName() + "\n" + error);
}
}
System.out.println("\n\nWARNING: \n");
for (int i = 0; i < parsingResult.getContext().getParsingErrors().size(); i++) {
ParsingError error = parsingResult.getContext().getParsingErrors().get(i);
if (error.getErrorLevel().equals(ParsingErrorLevel.WARNING)) {
System.out.println(parsingResult.getContext().getFileName() + "\n" + error);
}
}
System.out.println("\n\nINFO: \n");
for (int i = 0; i < parsingResult.getContext().getParsingErrors().size(); i++) {
ParsingError error = parsingResult.getContext().getParsingErrors().get(i);
if (error.getErrorLevel().equals(ParsingErrorLevel.INFO)) {
System.out.println(parsingResult.getContext().getFileName() + "\n" + error);
}
}
}
}