Search in sources :

Example 6 with CUT

use of org.evosuite.xsd.CUT in project evosuite by EvoSuite.

the class ProjectStaticDataTest method testIsToTest_LastestGenerationFailed.

@Test
public void testIsToTest_LastestGenerationFailed() {
    Project project = new Project();
    project.setTotalNumberOfTestableClasses(XSDUtils.convert(1));
    CUT cut = new CUT();
    cut.setFullNameOfTargetClass("foo.Bar");
    cut.setFullNameOfTestSuite("foo.BarTest");
    Generation generation = new Generation();
    generation.setId(XSDUtils.convert(0));
    generation.setFailed(true);
    cut.getGeneration().add(generation);
    project.getCut().add(cut);
    ProjectStaticData data = new ProjectStaticData();
    data.setProject(project);
    // if EvoSuite failed to generate a new test suite
    // for CUT and because we need to get N passing
    // generations to know whether the coverage improved
    // or not, this CUT has to be re-tested
    Assert.assertTrue(data.isToTest("foo.Bar", 3));
}
Also used : Project(org.evosuite.xsd.Project) Generation(org.evosuite.xsd.Generation) CUT(org.evosuite.xsd.CUT) Test(org.junit.Test)

Example 7 with CUT

use of org.evosuite.xsd.CUT in project evosuite by EvoSuite.

the class ProjectStaticDataTest method testIsToTest_ActuallyImproved.

@Test
public void testIsToTest_ActuallyImproved() {
    Project project = new Project();
    project.setTotalNumberOfTestableClasses(XSDUtils.convert(1));
    CUT cut = new CUT();
    cut.setFullNameOfTargetClass("foo.Bar");
    cut.setFullNameOfTestSuite("foo.BarTest");
    Generation g0 = new Generation();
    g0.setId(XSDUtils.convert(0));
    g0.setFailed(false);
    g0.setModified(true);
    g0.setTimeBudgetInSeconds(XSDUtils.convert(60));
    // empty dummy test suite
    g0.setSuite(new TestSuite());
    // add first generation
    cut.getGeneration().add(g0);
    for (int i = 1; i <= 3; i++) {
        Generation g = new Generation();
        g.setId(XSDUtils.convert(i));
        g.setFailed(false);
        g.setModified(false);
        g.setTimeBudgetInSeconds(XSDUtils.convert(60));
        g.setSuite(new TestSuite());
        cut.getGeneration().add(g);
    }
    project.getCut().add(cut);
    ProjectStaticData data = new ProjectStaticData();
    data.setProject(project);
    // coverage has improved
    Assert.assertTrue(data.isToTest("foo.Bar", 3));
}
Also used : Project(org.evosuite.xsd.Project) Generation(org.evosuite.xsd.Generation) CUT(org.evosuite.xsd.CUT) TestSuite(org.evosuite.xsd.TestSuite) Test(org.junit.Test)

Example 8 with CUT

use of org.evosuite.xsd.CUT in project evosuite by EvoSuite.

the class ProjectStaticDataTest method testIsToTest_OneLastNGenerationsFailed.

@Test
public void testIsToTest_OneLastNGenerationsFailed() {
    Project project = new Project();
    project.setTotalNumberOfTestableClasses(XSDUtils.convert(1));
    CUT cut = new CUT();
    cut.setFullNameOfTargetClass("foo.Bar");
    cut.setFullNameOfTestSuite("foo.BarTest");
    for (int i = 0; i < 5; i++) {
        Generation generation = new Generation();
        generation.setId(XSDUtils.convert(i));
        generation.setFailed(i % 2 != 0);
        generation.setModified(false);
        generation.setTimeBudgetInSeconds(XSDUtils.convert(60));
        cut.getGeneration().add(generation);
    }
    project.getCut().add(cut);
    ProjectStaticData data = new ProjectStaticData();
    data.setProject(project);
    // to be considered has improved, all N generations
    // have to end successfully
    Assert.assertTrue(data.isToTest("foo.Bar", 3));
}
Also used : Project(org.evosuite.xsd.Project) Generation(org.evosuite.xsd.Generation) CUT(org.evosuite.xsd.CUT) Test(org.junit.Test)

Example 9 with CUT

use of org.evosuite.xsd.CUT in project evosuite by EvoSuite.

the class StorageManager method updateDatabase.

/**
 * Not only modify the state of <code>db</code>, but
 * also copy/replace new test cases on file disk
 *
 * @param ondisk
 * @param db
 */
private void updateDatabase(String targetClass, TestsOnDisk ondisk, Project db, ProjectStaticData current) {
    // extractClassName(tmpTests, ondisk.testSuite);
    String testName = targetClass + Properties.JUNIT_SUFFIX;
    // CUT data
    CUT cut = ProjectUtil.getCUT(db, targetClass);
    if (cut == null) {
        // first generation
        cut = new CUT();
        cut.setFullNameOfTargetClass(targetClass);
        cut.setFullNameOfTestSuite(testName);
        db.getCut().add(cut);
    }
    // Generation data
    Generation generation = new Generation();
    generation.setId(BigInteger.valueOf(cut.getGeneration().size()));
    // by default
    generation.setFailed(false);
    generation.setModified(current.getClassInfo(targetClass).hasChanged());
    generation.setTimeBudgetInSeconds(BigInteger.valueOf(current.getClassInfo(targetClass).getTimeBudgetInSeconds()));
    generation.setMemoryInMB(BigInteger.valueOf(current.getClassInfo(targetClass).getMemoryInMB()));
    if (!current.getClassInfo(targetClass).isToTest()) {
        // if a class was not considered for testing purpose,
        // we still want to keep some information about it.
        // that information will be crucial to, for example,
        // determine how much time EvoSuite spent over all classes
        cut.getGeneration().add(generation);
        // we do not have more information, so return
        return;
    }
    File std_err_CLIENT = new File(this.tmpLogs + File.separator + targetClass + File.separator + "std_err_CLIENT.log");
    assert std_err_CLIENT.exists();
    File std_out_CLIENT = new File(this.tmpLogs + File.separator + targetClass + File.separator + "std_out_CLIENT.log");
    assert std_out_CLIENT.exists();
    File std_err_MASTER = new File(this.tmpLogs + File.separator + targetClass + File.separator + "std_err_MASTER.log");
    assert std_err_MASTER.exists();
    File std_out_MASTER = new File(this.tmpLogs + File.separator + targetClass + File.separator + "std_out_MASTER.log");
    assert std_out_MASTER.exists();
    generation.setStdErrCLIENT(std_err_CLIENT.getAbsolutePath());
    generation.setStdOutCLIENT(std_out_CLIENT.getAbsolutePath());
    generation.setStdErrMASTER(std_err_MASTER.getAbsolutePath());
    generation.setStdOutMASTER(std_out_MASTER.getAbsolutePath());
    cut.getGeneration().add(generation);
    if (ondisk == null) {
        // was it supposed to happen?
        if (current.getClassInfo(targetClass).isToTest()) {
            // it should have generated test cases
            generation.setFailed(true);
        /*
	             * TODO to properly update failure data, we will first need
	             * to change how we output such info in EvoSuite (likely
	             * we will need something more than statistics.csv) 
	             */
        }
        return;
    }
    assert ondisk.isValid();
    CsvJUnitData csv = ondisk.csvData;
    if (!isBetterThanAnyExistingTestSuite(db, current, ondisk)) {
        // about EvoSuite execution.
        return;
    }
    // Test Suite data
    TestSuite suite = new TestSuite();
    suite.setFullPathOfTestSuite(ondisk.testSuite.getAbsolutePath());
    suite.setNumberOfTests(BigInteger.valueOf(csv.getNumberOfTests()));
    suite.setTotalNumberOfStatements(BigInteger.valueOf(csv.getTotalNumberOfStatements()));
    suite.setTotalEffortInSeconds(BigInteger.valueOf(csv.getDurationInSeconds()));
    List<Coverage> coverageValues = new ArrayList<Coverage>();
    for (String criterion : csv.getCoverageVariables()) {
        Coverage coverage = new Coverage();
        coverage.setCriterion(criterion);
        coverage.setCoverageValue(Double.parseDouble(this.df.format(csv.getCoverage(criterion))));
        coverage.setCoverageBitString(csv.getCoverageBitString(criterion));
        coverageValues.add(coverage);
    }
    suite.getCoverage().addAll(coverageValues);
    generation.setSuite(suite);
    /*
		 * So far we have modified only the content of db.
		 * Need also to update the actual test cases 
		 */
    removeBestTestSuite(testName);
    addBestTestSuite(ondisk.testSuite);
    File scaffolding = getScaffoldingIfExists(ondisk.testSuite);
    if (scaffolding != null) {
        addBestTestSuite(scaffolding);
    }
    if (ondisk.serializedSuite != null) {
        File target = new File(getSeedInFolder(), ondisk.serializedSuite.getName());
        target.delete();
        try {
            FileUtils.copyFile(ondisk.serializedSuite, target);
        } catch (IOException e) {
            logger.error("Failed to copy over a new generated serialized test suite: " + e.getMessage(), e);
        }
    }
}
Also used : Generation(org.evosuite.xsd.Generation) CUT(org.evosuite.xsd.CUT) TestSuite(org.evosuite.xsd.TestSuite) Coverage(org.evosuite.xsd.Coverage) IOException(java.io.IOException) File(java.io.File)

Example 10 with CUT

use of org.evosuite.xsd.CUT in project evosuite by EvoSuite.

the class ModuleAction method build.

/**
 * @param project_info
 * @return
 */
public boolean build(VirtualChannel channel, ByteArrayInputStream stream, BuildListener listener) {
    try {
        JAXBContext jaxbContext = JAXBContext.newInstance(Project.class);
        SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = factory.newSchema(new StreamSource(ContinuousTestGeneration.class.getResourceAsStream("/xsd/ctg_project_report.xsd")));
        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        jaxbUnmarshaller.setSchema(schema);
        this.project = (Project) jaxbUnmarshaller.unmarshal(stream);
        for (CUT cut : this.project.getCut()) {
            ClassAction c = new ClassAction(this.getBuild(), cut);
            c.highlightSource(channel, listener);
            this.classes.add(c);
        }
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
    return true;
}
Also used : SchemaFactory(javax.xml.validation.SchemaFactory) CUT(org.evosuite.xsd.CUT) Schema(javax.xml.validation.Schema) StreamSource(javax.xml.transform.stream.StreamSource) JAXBContext(javax.xml.bind.JAXBContext) Unmarshaller(javax.xml.bind.Unmarshaller)

Aggregations

CUT (org.evosuite.xsd.CUT)10 Generation (org.evosuite.xsd.Generation)8 Project (org.evosuite.xsd.Project)5 Test (org.junit.Test)5 TestSuite (org.evosuite.xsd.TestSuite)4 File (java.io.File)2 Coverage (org.evosuite.xsd.Coverage)2 IOException (java.io.IOException)1 JAXBContext (javax.xml.bind.JAXBContext)1 Unmarshaller (javax.xml.bind.Unmarshaller)1 StreamSource (javax.xml.transform.stream.StreamSource)1 Schema (javax.xml.validation.Schema)1 SchemaFactory (javax.xml.validation.SchemaFactory)1